¿Cómo permito ciertos ips y bloqueo todas las demás conexiones en iptables?
¿Cómo permito ciertos ips y bloqueo todas las demás conexiones en iptables?
Respuestas:
Escribí una publicación de blog sobre reglas básicas de Iptables para el usuario de escritorio hace mucho tiempo y probablemente debería leerlo, y su artículo vinculado sobre el diseño de firewall con estado . Pero antes del kernel 2.6.39 (que incluye ipsety es posible que desee usarlo para incluir en la lista blanca las IP si tiene más de 10 para incluir en la lista blanca (donde 10 es arbitrario)).
Primero maneje los estados que sabemos que queremos aceptar o descartar, e interfaces.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
Si solo desea hacer un permiso solo por IP, sin estado
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Sin embargo, es probable que tenga problemas para hacer esto, y le sugiero que use el estado para facilitarle la vida. Por ejemplo, no permitir -i loy -o lociertamente causará problemas para ciertas aplicaciones.
iptables -Feso, se supone que borra todas las reglas, ni siquiera puedo hacer ping a ubuntu.com
Aquí hay un ejemplo (¡no probado!) Que bloquea solo las conexiones entrantes . Se permiten conexiones a través de la interfaz de bucle invertido, que proviene de 192.168.3.x, ICMP o al puerto SSH. Todas las demás conexiones son rechazadas.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
loen el ejemplo anterior se excluye de la coincidencia de estado y siempre se permite.
La siguiente regla permitirá solo su IP y bloqueará todas las demás IP a través del puerto 22 o ssh. Pruebe con un nuevo terminal antes de desconectar.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddresspodría agregar algunas direcciones IP y rangos? Y si estoy usando SSH en un puerto no estándar como 2888, entonces el comando cambiaría 22en su ejemplo a 2288? Además, ¿esto también bloqueará rsync, sftp, etc. a este servidor de todas las IP excepto las permitidas?
-p tcpaquí es importante porque --dportno funciona sin él. También sugeriría usar en -j REJECTlugar de DROPporque REJECThace que el puerto sea idéntico al puerto cerrado y DROPhace que los paquetes destinados a ese puerto estén negros. En la práctica, el atacante remoto puede detectar DROPpuertos configurados desde puertos realmente cerrados.
Aquí está el ejemplo de trabajo completo.
También hace que las aplicaciones funcionen (re: mi comentario sobre keepass no se inicia)