Sunteți pe pagina 1din 6

CURSO

DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS



IPTABLES

CentOS tiene una estructura de cortafuegos conocida comnmente


como iptables la forma correcta de referirse a ella es
iptables/netfilter.

Iptables es el mdulo para el espacio de usuario, desde la cual el


usuario, interacta mediente la lnea de comandos para escribir las
reglas del cortafuegos en las tablas predefinidas.

Netfilter es el mdulo del kernel, que se encarga del filtrado. Iptables


usa el concepto de direcciones IP, protocolos (tcp, udp, icmp) y
puertos.

Iptables ubica todas las reglas dentro de 3 cadenas predefinidas, las


cuales son:

INPUT - Todos los paquetes que se dirigen a nuestra


computadora.

OUTPUT - Todos los paquetes originados desde nuestra


computadora.

FORWARD - Todos los paquetes que no son originados o


dirigidos a nuestra computadora, pero pasan a travs
(enrutados) de nuestra computadora. Esta cadena es usada si
usted est usando su computadora como un enrutador.

Iptables se instala por defecto en todas las versiones de CentOS. A


partir de la versin 7, se implementa una nueva capa de abstraccin
para trabajar con iptables conocido como FirewallD, que es el que
se instala por defecto, el cual lo veremos en la siguiente unidad.

Trabajando con iptables

Para verificar si tenemos instalado iptables podemos usar el


siguiente comando desde la terminal:

[root@localhost ~]# rpm -qa|grep iptables


iptables-services-1.4.21-16.el7.x86_64
iptables-1.4.21-16.el7.x86_64
CURSO DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS

verificar si iptables se est ejecutando:


[root@localhost ~]# lsmod|grep ip_tables
ip_tables 27240 5
iptable_security,iptable_filter,iptable_mangle,iptable_nat,ipt
able_raw

Para inspeccionar las reglas que se estn ejecutando, usamos la


opcin -L:

[root@localhost ~]# iptables -L

Para inspeccionar las reglas, con un formato ms ordenado, adems


del nmero de lneas podemos usar el siguiente comando:

[root@localhost ~]# iptables -n -L -v --line-numbers

El siguiente ejemplo, muestra un conjunto de reglas que permite


todas las conexiones salientes, y bloquea todas las conexiones
entrantes.

[root@localhost ~]# iptables F


[root@localhost ~]# iptables P INPUT DROP
[root@localhost ~]# iptables P FORWARD DROP
[root@localhost ~]# iptables P OUTPUT ACCEPT
[root@localhost ~]# iptables A INPUT i lo j ACCEPT
[root@localhost ~]# iptables A INPUT m state -state
ESTABLISHED, RELATED j ACCEPT
[root@localhost ~]# iptables L -v

Analicemos las siete reglas de arriba lnea por lnea:


1. iptables F: Con el parmetro F se elimina todas las reglas
definidas previamente.
2. iptables P INPUT DROP: La opcin P fija una poltica por
defecto en la cadena especificada. con este comando estamos
fijando DROP(rechazar) como la poltica por defecto a la
cadena INPUT.
3. iptables P FORWARD DROP: de la misma forma que la anterior
regla, estamos fijando DROP como poltica por defecto para la
cadena FORWARD, esto porque no estamos usando nuestra
computadora como enrutador, por tanto no deberan pasar
paquetes por nuestra computadora.
4. iptables P OUTPUT ACCEPT: fija ACCEPT(aceptar) como la
poltica por defecto para la cadena OUTPUT, porque
CURSO DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS

queremos permitir todo el trfico saliente de nuestra
computadora.
5. iptables A INPUT i lo j ACCEPT: La opcin A adiciona una
nueva regla a una cadena especfica, en este caso INPUT. La
opcin i (interface) se utiliza para especificar la interface, en
este caso lo (localhost, 127.0.0.1)y finalmente j (jump) para
enlazar el objetivo de accin para el paquete que coincide con
la regla, en este caso ACCEPT(aceptar). Esta regla permitir
que todos los paquetes entrantes con destino a la interface
localhost sean aceptados.
6. iptables A INPUT m state -state ESTABLISHED, RELATED j
ACCEPT: adicionamos una regla a la cadena INPUT. m se
utiliza para indicar el nombre de un mdulo, en este caso state.
El mdulo state se encarga de examinar el estado de un
paquete que puede ser: nuevo, establecido, o relacionado:
o NEW, se refiere a los paquetes que son conexiones
entrantes nuevas que fueron iniciadas por el sistema
anfitrion.
o ESTABLISHED, RELATED se refieren a paquetes entrantes
que ya son parte de una conexin ya establecida o
relaciona a la conexin ya establecida.
7. iptables L v permitir visualizar las reglas que acabamos de
adicionar.

Para que las reglas anteriores que acabamos de definir, sean


persistentes es decir que se carguen automticamente la siguiente
vez que reiniciemos el servidor, debemos ejecutar el siguiente
comando:

[root@localhost ~]# service iptables save

La instruccin anterior guardar las reglas actuales en el archivo


/etc/sysconfig/iptables, Desde la cual se cargarn
automticamente las siguientes veces.

La forma ms cmoda de trabajar con iptables es guardar las reglas


en un archivo de script por ejemplo firewall.sh:

#!/bin/bash
iptables F
iptables P INPUT DROP
iptables P FORWARD DROP
iptables P OUTPUT ACCEPT
CURSO DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS

iptables A INPUT i lo j ACCEPT
iptables A INPUT m state -state ESTABLISHED, RELATED j
ACCEPT
iptables L -v

damos permisos de ejecucin:

[root@localhost ~]# chmod a+x firewall.sh

La siguiente vez que modificamos o adicionamos alguna nueva regla


tan solo editamos el archivo, para luego ejecutar el archivo:
[root@localhost ~]# ./firewall

Interfaces
En nuestro ejemplo anterior vimos que podemos aplicar reglas a una
interface en particular, en este caso localhost:

[root@localhost ~]# iptables A INPUT i lo j ACCEPT

Tambin se puede aplicar reglas a otras interfaces, esto se hace de


la siguiente manera:

[root@localhost ~]# iptables A INPUT i ens32 j ACCEPT

Donde ens32 es el nombre de la interfaz.


Para visualizar las interfaces conectadas en nuestra computadora
podemos ejecutar el comando ifconfig o ip add
[root@localhost ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

veth5893fb7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu
1500

En el ejemplo anterior podemos ver que tenemos las siguientes


interfaces: docker0, ens32, veth5893fb7 y otros.
CURSO DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS

Iptables y Direcciones IP

Abrir una interface completa a los paquetes no es una prctica


segura, para tener un control ms estricto de que paquetes permitir
o rechazar, se puede hacer uso de direcciones IP o subredes.

Por ejemplo supongamos que tenemos una red de servidores que


usan la red 192.168.0.x. Podemos abrir nuestro cortafuegos para
aceptar solamente paquetes entrantes de una direccin por ejemplo
la ip: 192.168.0.10. La regla iptables quedara de la siguiente forma:

[root@localhost ~]#iptables A INPUT s 192.168.0.10 j ACCEPT

Si queremos permitir paquetes entrantes desde un rango de


direcciones, se puede aplicar la siguiente regla:

iptables A INPUT s 192.168.0.0/24 j ACCEPT

La anterior regla tambin se puede escribir de la siguiente forma:

iptables A INPUT s 192.168.0.0/255.255.255.0 j ACCEPT

Si adems de la direccin deseamos hacer un filtrado por direccin


MAC debemos cargar el mdulo mac. La regla iptables quedara de
la siguiente forma:

iptables A INPUT s 192.168.0.10 m mac --mac-source


00:32:3C:FD:E6:32 j ACCEPT

Puertos y Protocolos
Iptables tambin permite realizar el filtrado de protocolos y puertos,
para ello debemos conocer el nombre del protocolo y el puerto por
el cual se ejecuta. Por ejemplo para permitir conexiones de tipo SSH
que usa el protocolo tcp por el puerto 22, la regla iptables quedara
de la siguiente forma:

iptables A INPUT p tcp -dport 22 j ACCEPT

Si deseamos especificar un rango de puertos por ejemplo 6881 a


6891, la regla iptables sera de la siguiente forma:
CURSO DE IMPLEMENTACION DE SERVICIOS CON SOFTWARE LIBRE - UAJMS

iptables A INPUT p tcp -dport 6881:6890 j ACCEPT

Si deseamos permitir conexiones a nuestro servidor ssh desde una


determinada red (192.168.0.0/24), la regla iptables quedara de la
siguiente forma:

iptables A INPUT p tcp s 192.168.0.0/24 -dport 22 j


ACCEPT

Actividad 3.1

1. Escribir la regla iptables correspondiente para:


o Bloquear solicitudes ICMP ping.
o Aceptar conexiones desde una direccin MAC
especfica.
o Bloquear todo el trfico de salida a un dominio
especfico.
o Bloquear todas las conexiones de la red 192.168.1.0/24

2. Indagar en diferentes fuentes, las reglas de iptables que se


utiliza, para cuando un servidor est configurado para reenviar
paquetes (modo router).

S-ar putea să vă placă și