Este es mi /etc/sysconfig/iptables:
Tiene dos puertos abiertos: 80 apache y 22 para ssh.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Para el puerto 22 (SSH) quiero asegurarme de que nadie pueda conectarse a este puerto, excepto una dirección IP específica.
ejemplo ip:
1.2.3.4
Haga caso omiso de cualquier supervisión / inquietud con respecto a si mi ip cambia y ya no puedo enviar SSH a mi servidor.

iptablesadmite la inversión con el operador de explosión en caso de que desee hacer un objetivoDROP. Ejemplo:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROPDROPno son realmente necesarios, simplemente puede configurar la política predeterminada en el firewalliptables -P INPUT DROPy dejar que funcione. Probablemente también desee hacerlos como un anexo si lo hace de esta manera, de lo contrario, todo el tráfico será atrapado por elDROPy nunca alcanzará suACCEPTregla.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROPyiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROPEl "3" después de INPUT significa insertar como INPUT rule # 3 (suponiendo que está insertando dos ACCEPTS, de lo contrario, si solo acepta un ACCEPT, use "2" para INPUT.-Iinsertará las nuevas reglas de iptables en la parte superior. Como tal, puede terminar insertando su caída antes de su permiso. Sugiero usar en su-AlugarAunque recomiendo usar claves SSH, te daré una explicación.
No tiene que usar IPtables para lo que está tratando de lograr, hay varias formas. Esta es la forma de IPtables:
[YOUR_HOME_IP]= La IP de su casa (bastante sencilla)[SSH_PORT]= El puerto en el que ejecuta SSH (por defecto 22)Esto asegura que nadie, excepto su IP, pueda iniciar sesión en SSH.
Hay otra forma, que es agregar algo al
sshd_config.Agregue lo siguiente:
Esto le permite iniciar sesión en SSH como
rootusuario desde su IP sin solicitar una contraseña.Tenga en cuenta que un cronjob con
puede ser inteligente para que no se bloquee su servidor con SSH (el cronjob restablecerá IPtables para que pueda acceder nuevamente). Si aún tiene acceso, puede eliminar el cronjob y configurar sus IPtables nuevamente.
fuente
iptablesen primer lugar? Alguna forma de acceso fuera de banda es el método habitual.knockdes otro.athace eso.Without-Passwordsignifica que la autenticación de contraseña no está permitida, por lo que tendrá que usar la autenticación de clave SSH en su lugar. De hecho, es un poco un nombre poco claro para este método de autenticación. Pero esto no significa que no necesite una contraseña para iniciar sesión como root. Sin embargo, un método más seguro es establecerPermitRootLogin noy utilizar una cuenta sudo diferente de inicio de sesión, como la raíz es un objetivo comúnOtras respuestas están usando
iptables -Ien sus ejemplos, que a menudo no es lo que debe usar.iptables ejecutará la primera regla que coincida, por lo que el orden de las reglas es muy importante.
-Ies el comando "insertar", y debe usarse con un parámetro de índice para especificar a qué lugar de la lista pertenece una regla determinada.-Aes el comando "agregar", que agregará la regla al final de la lista.En algunas distribuciones (quizás todas), el uso
-Isin un parámetro de índice agregará la regla al índice, convirtiéndola en la primera regla verificada. En este escenario, si el último comando que ejecuta esiptables -I INPUT -s tcp 0.0.0.0/0 -j DROPiptables, eliminará todo el tráfico, independientemente de si tiene o no algunaACCEPTregla más adelante en la cadena.Aquí hay una muestra de cómo configurar una regla que solo permite SSH desde una sola IP:
Comenzando sin reglas:
Agregue una nueva regla "permitir SSH desde 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPTBloquee SSH de todas las demás IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROPAhora su cadena de ENTRADA se verá así:
Más adelante, si necesita incluir una segunda IP en la lista blanca, puede usar el
-Iparámetro para colocarla antes de la regla de la lista negra.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPTObserve que al usar
-I INPUT 2agregó la nueva regla como regla número 2 y superó la regla DROP al número 3.fuente