11 votos

IPTables: permitir sólo el acceso SSH, nada más dentro o fuera

¿Cómo se configura IPTables para que sólo permitir la entrada de SSH, y no permitir la entrada de ningún otro tráfico o fuera ?

¿Alguien puede recomendar alguna medida de seguridad?

Tengo un servidor que creer ha sido migrado fuera de GoDaddy con éxito y yo creer ya no está en uso.

Pero quiero asegurarme porque... nunca se sabe. :)

Tenga en cuenta que este es un servidor dedicado virtual de GoDaddy... Eso significa que no hay copia de seguridad y prácticamente ningún apoyo.

13voto

Khaled Puntos 21517

Basta con establecer la política por defecto en DROP en las cadenas INPUT y OUTPUT.

Para permitir la entrada de SSH, necesitas los siguientes comandos:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Los dos últimos comandos permiten el tráfico de bucle invertido, ya que es necesario para que algunas aplicaciones funcionen correctamente. Puede restringir el acceso a SSH desde una IP específica utilizando -s source_ip opción.

Ejecutar los comandos en orden como se muestra arriba hará que su sesión SSH actual se cuelgue. Esto se debe a que los comandos iptables tienen efecto inmediato. Necesita ejecutarlos en un Shell ShellscriptShell para evitar perder la capacidad de conectarse a su máquina al ejecutarlos remotamente.

4voto

Nathan Lee Puntos 1127

Algo así:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

1voto

Jayakrishnan T Puntos 103

Este es un escenario muy común. Usted quiere permitir el acceso a una máquina remota sólo por SSH. Desea bloquear todo el tráfico entrante a su sistema excepto la conexión ssh en Linux.

Añade las siguientes reglas a tu iptables Shell ShellscriptShell:

/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

La primera regla aceptará la conexión tcp entrante (INPUT) en el puerto 22 (servidor ssh) y la segunda regla enviará la respuesta del servidor ssh entrante al cliente (OUTPUT) desde el puerto fuente 22 de nuestro servidor ssh.

Sin embargo, iptables con el kernel 2.4/2.6 proporciona una facilidad muy poderosa para filtrar reglas basadas en diferentes estados de conexión, como por ejemplo, conexión establecida o nueva, etc. Aquí hay un pequeño y completo script para hacer esta tarea:

#! /bin/sh

  • La IP de mi sistema/la dirección IP del servidor

SERVER_IP="65.55.12.13"

  • Descarga de todas las reglas

iptables -F

iptables -X

  • Establecer la política de filtros por defecto

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

  • Permitir tráfico ilimitado en el loopback

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

  • Permitir sólo ssh entrante

iptables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT

  • asegúrese de que nada sale de esta caja

iptables -A INPUT -j DROP

iptables -A OUTPUT -j DROP

Este script es puramente un firewall estricto. Sólo permite ssh entrante. Ningún otro servicio entrante o solicitud de ping o ningún servicio saliente o solicitud permitida. La conexión ssh entrante puede ser nueva o ya establecida y eso es lo que especifica la regla de estado '-m state --state NEW,ESTABLISHED'.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: