Vous êtes sur la page 1sur 11

Linux viene con un firewall basado en hosts llamado Netfilter.

Segn el sitio oficial del proyecto:


netfilter es un conjunto de hooks dentro del kernel de Linux que permite a los mdulos del ncleo
registrar las funciones de devolucin de llamadas con la pila de red. Una funcin de devolucin 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 rpido que explica cmo configurar un firewall
basado en host llamado Netfilter (iptables) en CentOS / RHEL / Fedora / Red Hat Enterprise Linux. Este post
muestra las listas ms 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 estn escritos con la suposicin 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 propsito de la demostracin que he usado Red Hat Enterprise Linux 6.x, pero el siguiente
comando debera funcionar con cualquier distribucin de Linux moderna.

Esto no es un tutorial sobre cmo configurar iptables. Ver tutorial aqu . Se trata de una hoja de trucos
rpido a los comandos comunes de iptables.

# 1: Visualizacin 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 produccin indica que el firewall no est activa. El siguiente ejemplo muestra un firewall
activo:

# iptables -L -n -v
Salidas de la muestra:
Chain
pkts
0
394
93
1
Chain
pkts
0
0
0
0
0
0
0

INPUT (policy DROP 0 packets, 0 bytes)


bytes target
prot opt in
out
0 DROP
all -- *
*
43586 ACCEPT
all -- *
*
17292 ACCEPT
all -- br0
*
142 ACCEPT
all -- lo
*
FORWARD (policy DROP 0 packets, 0 bytes)
bytes target
prot opt in
out
0 ACCEPT
all -- br0
br0
0 DROP
all -- *
*
0 TCPMSS
tcp -- *
*
0 ACCEPT
all -- *
*
0 wanin
all -- vlan2 *
0 wanout
all -- *
vlan2
0 ACCEPT
all -- br0
*

Chain
pkts
Chain
pkts
Chain
pkts

OUTPUT (policy ACCEPT


bytes target
prot
wanin (1 references)
bytes target
prot
wanout (1 references)
bytes target
prot

source
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

destination
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

source
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

destination
0.0.0.0/0
0.0.0.0/0 state INVALID
0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
0.0.0.0/0 state RELATED,ESTABLISHED
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

state INVALID
state RELATED,ESTABLISHED

425 packets, 113K bytes)


opt in
out
source

destination

opt in

out

source

destination

opt in

out

source

destination

Cuando,

-L: Lista de reglas.


-V: Muestra informacin detallada. Esta opcin hace que el comando de la lista muestra el nombre de
la interfaz, las opciones de la regla, y las mscaras TOS. Los contadores de bytes y de paquetes tambin
estn 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 direccin IP y el puerto de visualizacin en formato numrico. No utilizar DNS para resolver
nombres. Esto acelerar la lista.

# 1.1: Para inspeccionar firewall con los nmeros de lnea, escriba:


# iptables -n -L -v --line-numbers
Salidas de la muestra:
Chain INPUT (policy DROP)
num target
prot opt source
1
DROP
all -- 0.0.0.0/0
2
ACCEPT
all -- 0.0.0.0/0
3
ACCEPT
all -- 0.0.0.0/0
4
ACCEPT
all -- 0.0.0.0/0
Chain FORWARD (policy DROP)
num target
prot opt source
1
ACCEPT
all -- 0.0.0.0/0
2
DROP
all -- 0.0.0.0/0
3
TCPMSS
tcp -- 0.0.0.0/0
4
ACCEPT
all -- 0.0.0.0/0
5
wanin
all -- 0.0.0.0/0
6
wanout
all -- 0.0.0.0/0
7
ACCEPT
all -- 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target
prot opt source
Chain wanin (1 references)
num target
prot opt source
Chain wanout (1 references)
num target
prot opt source

destination
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
destination
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

state INVALID
state RELATED,ESTABLISHED

state INVALID
tcp flags:0x06/0x02 TCPMSS clamp to PMTU
state RELATED,ESTABLISHED

destination
destination
destination

Puede utilizar los nmeros de lnea 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 eliminacin (rubor) todas las reglas.


-X: Eliminar la cadena.
-T table_name: mesa de seleccin (llamado nat o mangle) y borrar / normas de descarga.
-P: Establece la poltica por defecto (como DROP, REJECT, o aceptar).

# 3: Eliminar reglas de Firewall


Para mostrar el nmero de lnea junto con otra informacin por las normas existentes, entre:
#
#
#
#

iptables
iptables
iptables
iptables

-L
-L
-L
-L

INPUT -n --line-numbers
OUTPUT -n --line-numbers
OUTPUT -n --line-numbers | less
OUTPUT -n --line-numbers | grep 202.54.1.1

Usted recibir la lista de IP. Mira el nmero de la izquierda, a continuacin, utilizar el nmero para eliminarlo.
Por ejemplo, borrar el nmero de lnea 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 ms reglas de la cadena seleccionada

# 4: Coloque las reglas del cortafuegos


Para insertar una o ms reglas en la cadena seleccionado como el nmero de la regla dada, utilice la
siguiente sintaxis. En primer lugar saber los nmeros de lnea, escriba:
# Iptables-L INPUT-n - line-numbers
Salidas de la muestra:

Chain INPUT (policy DROP)


num target
prot opt source
1
DROP
all -- 202.54.1.1
2
ACCEPT
all -- 0.0.0.0/0

destination
0.0.0.0/0
0.0.0.0/0

state NEW,ESTABLISHED

destination
0.0.0.0/0
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
1
DROP
all -- 202.54.1.1
2
DROP
all -- 202.54.1.2
3
ACCEPT
all -- 0.0.0.0/0

# 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 polticas de firewall por defecto


Para eliminar todo el trfico:
# 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: Slo a bloquear el trfico entrante


Para eliminar todos los paquetes entrantes / enviado, pero permitir el trfico 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: Cada de direcciones de red privada En la interfaz


pblica
IP spoofing no es ms que para detener a los siguientes rangos de direcciones IPv4 para redes privadas en
sus interfaces pblicas. 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 (asegrese de que


se bloquean en la interfaz pblica)

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 direccin IP (direcciones IP


bloqueadas)
Para bloquear una direccin 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 slo para una direccin 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 trfico 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 direccin 75.126.153.206
Anote su direccin IP y escriba lo siguiente para bloquear todo el trfico 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 direccin 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
Tambin 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 pgina 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 direccin IP de la red (con / mscara), o
una simple direccin IP ...

# 12: Los paquetes de registro y soltar


Escriba lo siguiente para iniciar la sesin y bloquear el IP spoofing en la interfaz pblica 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 nmero


limitado de entradas de registro
El mdulo M-lmite puede limitar el nmero de entradas de registro creadas por el tiempo. Esto se utiliza
para prevenir la inundacin de su archivo de registro. Para registrar y descartar la suplantacin por 5
minutos, en rfagas de ms 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: Cada o aceptar trfico 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 tambin 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 continuacin slo 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 mdulos 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 crtico 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 continuacin 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
iptables -A INPUT
iptables -A INPUT
iptables -A INPUT
iptables -A INPUT

Samba file server


-s 192.168.1.0/24
-s 192.168.1.0/24
-s 192.168.1.0/24
-s 192.168.1.0/24

for lan users only ##


-m state --state NEW -p
-m state --state NEW -p
-m state --state NEW -p
-m state --state NEW -p

tcp
tcp
tcp
tcp

--dport
--dport
--dport
--dport

137
138
139
445

-j
-j
-j
-j

ACCEPT
ACCEPT
ACCEPT
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 nmero de conexiones paralelas a un servidor por IP del cliente


Usted puede utilizar el mdulo 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,

- Connlimit-por encima de 3: Coincidir si el nmero de conexiones existentes est por encima

1.
de 3.
2.

- Connlimit mscara de 24: Grupo de los ejrcitos con la longitud del prefijo. Para IPv4, este
debe ser un nmero entre (incluido) 0 y 32.

# 22: COMO: Uso de iptables como un profesional


Para obtener ms informacin sobre iptables, consulte la pgina de manual escribiendo man iptables desde
la lnea de comandos:
$ man iptables
Usted puede ver la ayuda con la siguiente sintaxis tambin:
# iptables -h
Para ver la ayuda con los comandos y objetivos especficos, entre:

# iptables -j DROP -h

# 22.1: Realizar pruebas de Firewall


Averige si los puertos estn abiertos o no entrar,:
# netstat -tulpn
Averige 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 conexin 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
Tambin te recomiendo que instalar y utilizar sniffer como tcpdupm y ngrep para probar la configuracin del
firewall.

Conclusin:
Este mensaje slo una lista de reglas bsicas para los nuevos usuarios de Linux. Usted puede crear y
construir reglas ms complejas. Esto requiere una comprensin adecuada de TCP / IP, optimizacin del
kernel de Linux a travs de sysctl.conf, y un buen conocimiento de su propia configuracin. Mantngase
atento a los temas siguientes:

Stateful Packet Inspection.

Uso de ayudantes de seguimiento de conexiones.

Traduccin de direcciones de red.

Capa 2 de filtrado.

Herramientas de pruebas de Firewall.

Tratar con VPN, DNS, Web, Proxy, y otros protocolos.

Vous aimerez peut-être aussi