GNU/Linux >> Tutoriales Linux >  >> Linux

¿Negar todas las conexiones entrantes con iptables?

Prueba esto con acceso de root:

# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept on localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow established sessions to receive traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Tenga en cuenta que esto cortará brutalmente todas las conexiones en ejecución - esto incluye cosas como la conexión SSH que puede usar para administrar el servidor. Solo use esto si tiene acceso a una consola local.

Consulte la respuesta de Miphix sobre cómo agregar una excepción para SSH.


Si está trabajando de forma remota a través de SSH, es posible que desee agregar esto (-I lo inserta antes que todas las demás reglas en INPUT ):

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

Si su servicio SSH está escuchando en otro puerto, deberá usar ese puerto en lugar de 22 .

De lo contrario, podría perder el acceso accidentalmente.


¡Tenga en cuenta que las otras respuestas no cubren IPv6! Si su sistema acepta tráfico IPv6, ninguna regla de iptables se aplicará al tráfico ipv6.

en lugar de usar iptables/ip6tables directamente, recomiendo usar iptables-restore and save. Estas herramientas permiten especificar una configuración de iptables con varias reglas y cargarla fácilmente con un solo comando.

cree un archivo (lo llamé iptables.rules) con el siguiente contenido:

*filter

# drop forwarded traffic. you only need it of you are running a router
:FORWARD DROP [0:0]

# Accept all outgoing traffic
:OUTPUT ACCEPT [623107326:1392470726908]


# Block all incoming traffic, all protocols (tcp, udp, icmp, ...) everything.
# This is the base rule we can define exceptions from.
:INPUT DROP [11486:513044]

# do not block already running connections (important for outgoing)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# do not block localhost
-A INPUT -i lo -j ACCEPT

# do not block icmp for ping and network diagnostics. Remove if you do not want this
# note that -p icmp has no effect on ipv6, so we need an extra ipv6 rule
-4 -A INPUT -p icmp -j ACCEPT
-6 -A INPUT -p ipv6-icmp -j ACCEPT

# allow some incoming ports for services that should be public available
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# commit changes
COMMIT

Tenga en cuenta que he agregado un ejemplo adicional si desea permitir ICMP y tráfico a puertos específicos.

ahora puedes cargarlo con estos comandos:

iptables-restore < iptables.rules
ip6tables-restore < iptables.rules

Ahora sus reglas también cubren ipv6 y son fáciles de administrar.

Nota adicional para los usuarios de Debian:si está satisfecho con sus reglas, puede apt install iptables-persistent para que las reglas se restablezcan después de reiniciar. Las reglas no se guardan automáticamente al apagar, así que ejecute netfilter-persistent save para actualizar las reglas persistentes.


Linux
  1. Comando DD de Linux:15 ejemplos con todas las opciones

  2. ¿Cómo reinstalar todos los paquetes instalados con Zypper?

  3. Encuentra todos los archivos con un nombre que contenga una cadena

  4. ¿Debo limitar la velocidad de los paquetes con iptables?

  5. la mejor manera de borrar todas las reglas de iptables

Supervise las conexiones y consultas de MySQL con mytop

¿Eliminar todos los comentarios de C con Sed?

¿Encontrar todos los paquetes "esenciales" con Apt?

Introducción a las iptables

Usar iptables con CentOS 7

Cómo proteger un firewall de Linux con reglas de IPTables