Con las iptables del kernel completamente vacías ( iptables -F
), esto hará lo que le pidas:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Esto dice que todas las direcciones LAN pueden comunicarse con el puerto TCP 22, que el host local recibe la misma consideración (sí, 127. * no solo 127.0.0.1), y los paquetes de cualquier otra dirección que no coincida con esas dos primeras reglas se dejan caer sin ceremonias El cubo de bits . Puede usar en REJECT
lugar de DROP
si desea un rechazo activo (TCP RST) en lugar de convertir el puerto 22 de TCP en un agujero negro para los paquetes.
Si su LAN no usa el bloque 192.168.0. *, Naturalmente necesitará cambiar la IP y la máscara en la primera línea para que coincida con el esquema de IP de su LAN.
Es posible que estos comandos no hagan lo que desea si su firewall ya tiene algunas reglas configuradas. (Diga iptables -L
como root para averiguarlo). Lo que sucede con frecuencia es que una de las reglas existentes toma los paquetes que está tratando de filtrar, por lo que agregar nuevas reglas no tiene efecto. Si bien puede usar en -I
lugar de -A
con el iptables
comando para empalmar nuevas reglas en el medio de una cadena en lugar de agregarlas, generalmente es mejor averiguar cómo se llenan las cadenas en el arranque del sistema y modificar ese proceso para que sus nuevas reglas siempre se instalen en El orden correcto.
RHEL 7+
En los sistemas de tipo RHEL recientes, la mejor manera de hacerlo es usar firewall-cmd
su equivalente de GUI. Esto le dice al firewalld
demonio del sistema operativo lo que desea, que es lo que realmente llena y manipula lo que ve a través de iptables -L
.
RHEL 6 y anteriores
En los sistemas de tipo RHEL más antiguos, la forma más fácil de modificar las cadenas de firewall cuando se ordenan es editar /etc/sysconfig/iptables
. Las herramientas de cortafuegos GUI y TUI del sistema operativo son bastante simplistas, por lo que una vez que comience a agregar reglas más complejas como esta, es mejor volver a los viejos archivos de configuración. Tenga cuidado, una vez que comience a hacer esto, corre el riesgo de perder sus cambios si alguna vez usa las herramientas de firewall del sistema operativo para modificar la configuración, ya que es posible que no sepa cómo lidiar con reglas artesanales como estas.
Agregue algo como esto a ese archivo:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
Donde lo agregas es la parte difícil. Si encuentra una línea en ese archivo hablando --dport 22
, simplemente reemplácela con las tres líneas anteriores. De lo contrario, probablemente debería ir antes de la primera línea existente que termina en -j ACCEPT
. En general, necesitará familiarizarse con la forma en que funciona iptables , momento en el cual será obvio el punto de inserción correcto.
Guarde ese archivo, luego diga service iptables restart
que vuelva a cargar las reglas del firewall. ¡Asegúrate de hacer esto mientras estás conectado a la consola, en caso de que aprietes las ediciones! No desea bloquear su máquina mientras está conectado a través de SSH.
La similitud con los comandos anteriores no es una coincidencia. La mayor parte de este archivo consta de argumentos para el iptables
comando. Las diferencias con respecto a lo anterior son que el iptables
comando se descarta y el INPUT
nombre de la cadena se convierte en la cadena especial específica de RHEL RH-Firewall-1-INPUT
. (Si desea examinar el archivo con más detalle, verá anteriormente en el archivo donde esencialmente han cambiado el nombre de la INPUT
cadena. ¿Por qué? No podría decirlo).