LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

Linux viene con un firewall basado en hosts llamado Netfilter. Según el sitio oficial del proyecto:

netfilter es un conjunto de hooks dentro del kernel de Linux que permite a los módulos del núcleo registrar las funciones de devolución de llamadas con la pila de red. Una función de devolución de llamadas registradas entonces se llamó de nuevo para cada paquete que atraviese el hooks correspondiente dentro de la pila de red.

Este firewall basado en Linux está controlada por el programa llamado iptables para el filtrado para IPv4 e ip6tables. Recomiendo que primero lea nuestro tutorial rápido que explica cómo configurar un firewall basado en host llamado Netfilter (iptables) en CentOS / RHEL / Fedora / Red Hat Enterprise Linux. Este post muestra las listas más comunes de iptables con las soluciones requeridas por un nuevo usuario de Linux que quiera asegurar su sistema operativo Linux de intrusos.

Iptables Las reglas de ejemplo

  • La mayor parte de las acciones enumeradas en este post están escritos con la suposición de que será ejecutado por el usuario root o cualquier otro con usuario con privilegios. No escriba los comandos en un sistema remoto, ya que desconecte el acceso.
  • Para propósito de la demostración que he usado Red Hat Enterprise Linux 6.x, pero el siguiente comando debería funcionar con cualquier distribución de Linux moderna.
  • Esto no es un tutorial sobre cómo configurar iptables. Ver tutorial aquí . Se trata de una hoja de trucos rápido a los comandos comunes de iptables.

# 1: Visualización del estado de su firewall

Escriba el siguiente comando como root:
# iptables -L -n -v
Salidas de la muestra:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Por encima de la producción indica que el firewall no está activa. El siguiente ejemplo muestra un firewall activo:
# iptables -L -n -v
Salidas de la muestra:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
  394 43586 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
   93 17292 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
    1   142 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 wanin      all  --  vlan2  *       0.0.0.0/0            0.0.0.0/0
    0     0 wanout     all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
Chain wanout (1 references)
 pkts bytes target     prot opt in     out     source               destination

 

Cuando,

  • -L: Lista de reglas.
  • -V: Muestra información detallada. Esta opción hace que el comando de la lista muestra el nombre de la interfaz, las opciones de la regla, y las máscaras TOS. Los contadores de bytes y de paquetes también están en la lista, con 'K' el sufijo 'M' o 'G' para 1000, 1.000.000 y multiplicadores de 1,000,000,000, respectivamente.
  • -N: la dirección IP y el puerto de visualización en formato numérico. No utilizar DNS para resolver nombres. Esto acelerará la lista.

# 1.1: Para inspeccionar firewall con los números de línea, escriba:

# iptables -n -L -v --line-numbers
Salidas de la muestra:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
3    TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
5    wanin      all  --  0.0.0.0/0            0.0.0.0/0
6    wanout     all  --  0.0.0.0/0            0.0.0.0/0
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Chain wanin (1 references)
num  target     prot opt source               destination
Chain wanout (1 references)
num  target     prot opt source               destination

Puede utilizar los números de línea para eliminar o insertar nuevas reglas en el cortafuegos.

# 1.2: para mostrar los datos o de reglas de salida de cadena, escriba:

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v --line-numbers

# 2: Detener / iniciar / reiniciar el servidor de seguridad

Si utiliza CentOS / Linux Red Hat Enterprise Linux / Fedora, escriba:
# service iptables stop
# service iptables start
# service iptables restart
Puede utilizar el comando iptables sí mismo para detener el firewall y eliminar todas las reglas:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
Cuando,

  • -F: La eliminación (rubor) todas las reglas.
  • -X: Eliminar la cadena.
  • -T table_name: mesa de selección (llamado nat o mangle) y borrar / normas de descarga.
  • -P: Establece la política por defecto (como DROP, REJECT, o aceptar).

# 3: Eliminar reglas de Firewall

Para mostrar el número de línea junto con otra información por las normas existentes, entre:


# iptables -L INPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers | less
# iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1

Usted recibirá la lista de IP. Mira el número de la izquierda, a continuación, utilizar el número para eliminarlo. Por ejemplo, borrar el número de línea 4, escriba:


# iptables -D INPUT 4

O buscar IP de origen 202.54.1.1 y eliminar del dominio:


# iptables -D INPUT -s 202.54.1.1 -j DROP
Cuando,

  • -D: Eliminar una o más reglas de la cadena seleccionada

# 4: Coloque las reglas del cortafuegos

Para insertar una o más reglas en la cadena seleccionado como el número de la regla dada, utilice la siguiente sintaxis. En primer lugar saber los números de línea, escriba:
# Iptables-L INPUT-n - line-numbers
Salidas de la muestra:

 

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  202.54.1.1           0.0.0.0/0
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED 

 

Para insertar la regla entre el 1 y 2, escriba:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

Para ver las reglas actualizadas, escriba:

# iptables -L INPUT -n --line-numbers

Salidas de la muestra:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  202.54.1.1           0.0.0.0/0
2    DROP       all  --  202.54.1.2           0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED

# 5: Guardar las reglas del cortafuegos

Para guardar las reglas de firewall en CentOS / RHEL / Fedora Linux, escriba:


# service iptables save


En este ejemplo, colocar un IP y guarda las reglas de firewall:


# iptables -A INPUT -s 202.5.4.1 -j DROP
# service iptables save

Para el resto de distros utilizar el comando iptables-save:


# iptables-save > /root/my.active.firewall.rules
# cat /root/my.active.firewall.rules

# 6: Reglas de restaurar el cortafuegos

Para restaurar las reglas del cortafuegos formar un archivo llamado / root / my.active.firewall.rules, escriba:


# iptables-restore < /root/my.active.firewall.rules

Para restaurar las reglas del firewall en CentOS / RHEL / Fedora Linux, escriba:


# service iptables restart

# 7: Establecer las políticas de firewall por defecto

Para eliminar todo el tráfico:

# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n
#### you will not able to connect anywhere as all traffic is dropped ###
# ping cyberciti.biz
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2

# 7.1: Sólo a bloquear el tráfico entrante

Para eliminar todos los paquetes entrantes / enviado, pero permitir el tráfico saliente, escriba:


# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n
### *** now ping and wget should work *** ###
# ping cyberciti.biz
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2

# 8: Caída de direcciones de red privada En la interfaz pública

IP spoofing no es más que para detener a los siguientes rangos de direcciones IPv4 para redes privadas en sus interfaces públicas. Los paquetes con direcciones de origen no se pueden enrutar debe ser rechazado con la siguiente sintaxis:


# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

# 8.1: rangos de direcciones IPv4 para redes privadas (asegúrese de que se bloquean en la interfaz pública)

  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 (C)
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (LOOPBACK)

# 9: El bloqueo de una dirección IP (direcciones IP bloqueadas)

Para bloquear una dirección IP atacantes llamados 1.2.3.4, escriba:


# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

# 10: bloquear las solicitudes de puertos entrantes (BLOQUE DE PUERTO)

Para bloquear todas las solicitudes de servicio en el puerto 80, escriba:


# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Para bloquear el puerto 80 sólo para una dirección IP 1.2.3.4, escriba:


# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

# 11: Bloque de direcciones IP de salida

Para bloquear el tráfico saliente a un host en particular o de dominio, como cyberciti.biz, escriba:


# host -ta cyberciti.biz


Salidas de la muestra:

  cyberciti.biz tiene la dirección 75.126.153.206 

Anote su dirección IP y escriba lo siguiente para bloquear todo el tráfico saliente a 75.126.153.206:


# iptables -A OUTPUT -d 75.126.153.206 -j DROP


Puede utilizar una subred de la siguiente manera:


# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP
# iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP

# 11.1: Ejemplo - Bloque de dominio Facebook.com

En primer lugar, saber todas las direcciones ip de facebook.com, escriba:
# host -ta www.facebook.com

Salidas de la muestra:

  www.facebook.com tiene la dirección 69.171.228.40 

Buscar CIDR para 69.171.228.40, escriba:


# whois 69.171.228.40 | grep CIDR


Salidas de la muestra:

  CIDR: 69.171.224.0/19 

Para prevenir el acceso externo a www.facebook.com, escriba:


# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

También puede usar el nombre de dominio, escriba:


# iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP
# iptables -A OUTPUT -p tcp -d facebook.com -j DROP

Desde la página del manual de iptables:

... especificar cualquier nombre que se resuelve con una consulta a distancia, tales como DNS (por ejemplo, facebook.com es realmente una mala idea), una dirección IP de la red (con / máscara), o una simple dirección IP ...

# 12: Los paquetes de registro y soltar

Escriba lo siguiente para iniciar la sesión y bloquear el IP spoofing en la interfaz pública denominada eth1


# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP


Por defecto todo lo que se registra en / var / log / messages.


# tail -f /var/log/messages
# grep --color 'IP SPOOF' /var/log/messages

# 13: registrar y descartar paquetes con un número limitado de entradas de registro

El módulo M-límite puede limitar el número de entradas de registro creadas por el tiempo. Esto se utiliza para prevenir la inundación de su archivo de registro. Para registrar y descartar la suplantación por 5 minutos, en ráfagas de más de 7 entradas.


# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

# 14: Caída o aceptar tráfico de direcciones de Mac

Utilice la siguiente sintaxis:

# iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
## *only accept traffic for TCP port # 8080 from mac 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT

# 15: Bloquear o Permitir solicitud de ICMP Ping

Escriba el siguiente comando para bloquear las solicitudes de ping ICMP:


# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

Respuestas Ping también puede estar limitada a ciertas redes o hosts:


# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT

 

A continuación sólo acepta tipo limitado de peticiones ICMP:

 

### ** assumed that default INPUT policy set to DROP ** #############
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
## ** all our server to respond to pings ** ##
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 16: Open Range de Puertos

Utilice la siguiente sintaxis para abrir un rango de puertos:

 

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

# 17: Open Range de direcciones IP

Utilice la siguiente sintaxis para abrir un rango de direcciones IP:

## only accept connection to tcp port 80 (Apache) if ip is between 192.168.1.100 and 192.168.1.200 ##
iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

# # # # Ejemplo de NAT
iptables-t nat-A POSTROUTING-j SNAT - to-source 192.168.1.20-192.168.1.25

# 18: las conexiones establecidas y recomenzar el servidor de seguridad

Al reiniciar el servicio iptables que las conexiones, establecidas como descargar los módulos del sistema con RHEL / Fedora / CentOS Linux. Editar / etc / sysconfig / iptables-config y establecer IPTABLES_MODULES_UNLOAD de la siguiente manera:

  IPTABLES_MODULES_UNLOAD = no 

# 19: Iptables Ayuda Inundaciones Mi pantalla del servidor

Utilice el nivel de registro crítico para enviar mensajes a un archivo de registro en vez de la consola:

iptables -A INPUT -s 1.2.3.4 -p tcp --destination-port 80 -j LOG --log-level crit

# 20: Bloquear o abrir puertos comunes

A continuación se muestra la sintaxis para abrir y cerrar los puertos TCP y UDP comunes:

 Vuelva a colocar con ACEPTAR DROP para bloquear el puerto:
Replace ACCEPT with DROP to block port: ## open port ssh tcp port 22 ## iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT ## open cups (printing service) udp/tcp port 631 for LAN users ## iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## allow time sync via NTP for lan users (open udp port 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT ## open tcp port 25 (smtp) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # open dns server ports for all ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ## open http/https (Apache) server port to all ## iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT ## open tcp port 110 (pop3) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT ## open tcp port 143 (imap) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT ## open access to Samba file server for lan users only ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT ## open access to proxy server for lan users only ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT ## open access to mysql server for lan users only ## iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

# 21: Restringir el número de conexiones paralelas a un servidor por IP del cliente

Usted puede utilizar el módulo connlimit para imponer restricciones. Para permitir las conexiones ssh 3 por host cliente, entre:


# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Establecer las peticiones HTTP a 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
Cuando,

  1. - Connlimit-por encima de 3: Coincidir si el número de conexiones existentes está por encima de 3.
  2. - Connlimit máscara de 24: Grupo de los ejércitos con la longitud del prefijo. Para IPv4, este debe ser un número entre (incluido) 0 y 32.

# 22: COMO: Uso de iptables como un profesional

Para obtener más información sobre iptables, consulte la página de manual escribiendo man iptables desde la línea de comandos:


$ man iptables
Usted puede ver la ayuda con la siguiente sintaxis también:


# iptables -h


Para ver la ayuda con los comandos y objetivos específicos, entre:


# iptables -j DROP -h

# 22.1: Realizar pruebas de Firewall

Averigüe si los puertos están abiertos o no entrar,:


# netstat -tulpn
Averigüe si el puerto TCP 80 abierto o no, escriba:
# netstat -tulpn | grep :80
Si el puerto 80 no está abierto, inicie el Apache, escriba:
# service httpd start
Haga iptables seguro que permite el acceso al puerto 80:
# iptables -L INPUT -v -n | grep 80
De lo contrario abrir el puerto 80 utilizando los iptables para todos los usuarios:
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# service iptables save
Utilice el comando telnet para ver si el firewall permite la conexión al puerto 80:
$ telnet www.cyberciti.biz 80
Salidas de la muestra:

Trying 75.126.153.206...
Connected to www.cyberciti.biz.
Escape character is '^]'.
^]
telnet> quit
Connection closed.

Usted puede utilizar nmap para probar su propio servidor con la siguiente sintaxis:


$ nmap -sS -p 80 www.cyberciti.biz

Salidas de la muestra:

Starting Nmap 5.00 ( http://nmap.org ) at 2011-12-13 13:19 IST
Interesting ports on www.cyberciti.biz (75.126.153.206):
PORT   STATE SERVICE
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 1.00 seconds

También te recomiendo que instalar y utilizar sniffer como tcpdupm y ngrep para probar la configuración del firewall.

Conclusión:

Este mensaje sólo una lista de reglas básicas para los nuevos usuarios de Linux. Usted puede crear y construir reglas más complejas. Esto requiere una comprensión adecuada de TCP / IP, optimización del kernel de Linux a través de sysctl.conf, y un buen conocimiento de su propia configuración. Manténgase atento a los temas siguientes:

  • Stateful Packet Inspection.
  • Uso de ayudantes de seguimiento de conexiones.
  • Traducción de direcciones de red.
  • Capa 2 de filtrado.
  • Herramientas de pruebas de Firewall.
  • Tratar con VPN, DNS, Web, Proxy, y otros protocolos.
Puede contratar ExtreHost para temas profesionales con sus servidores. No lo dude, contáctenos.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías