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.
iptables
admite 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 DROP
DROP
no son realmente necesarios, simplemente puede configurar la política predeterminada en el firewalliptables -P INPUT DROP
y 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 elDROP
y nunca alcanzará suACCEPT
regla.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
yiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
El "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.-I
insertará 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-A
lugarAunque 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
root
usuario 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
iptables
en primer lugar? Alguna forma de acceso fuera de banda es el método habitual.knockd
es otro.at
hace eso.Without-Password
significa 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 no
y utilizar una cuenta sudo diferente de inicio de sesión, como la raíz es un objetivo comúnOtras respuestas están usando
iptables -I
en 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.
-I
es el comando "insertar", y debe usarse con un parámetro de índice para especificar a qué lugar de la lista pertenece una regla determinada.-A
es el comando "agregar", que agregará la regla al final de la lista.En algunas distribuciones (quizás todas), el uso
-I
sin 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 DROP
iptables, eliminará todo el tráfico, independientemente de si tiene o no algunaACCEPT
regla 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 ACCEPT
Bloquee SSH de todas las demás IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Ahora su cadena de ENTRADA se verá así:
Más adelante, si necesita incluir una segunda IP en la lista blanca, puede usar el
-I
pará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 ACCEPT
Observe que al usar
-I INPUT 2
agregó la nueva regla como regla número 2 y superó la regla DROP al número 3.fuente