Práctica 15 Configuración de firewall mediante iptables

Configuración del firewall
1. Conéctate a tu máquina virtual Centos y utiliza la cuenta de root. 2. Crea una nueva cadena llamada PERSONALIZADO. 3. Haz que todos los paquetes que lleguen a la cadena INPUT vayan a la cadena PERSONALIZADO. 4. Agrega una regla en la cadena PERSONALIZADO para que todos los paquetes sean rechazados con el motivo icmp-host-unreachable. Si estabas conectado por putty a centos comprobarás que te has quedado sin conexión. Comprueba que no puedes hacer un ping a tu máquina centos desde ubuntu y comprueba que el mensaje que obtienes es el que nosotros hemos establecido. 5. Muestra las reglas del firewall con el número de línea regla que acabamos de añadir y en su lugar añade una que haga que se descarten todos los paquetes sin Prueba a hacer ping ahora desde la máquina ubuntu reglas del firewall. asociado. Elimina la en PERSONALIZADO dar ningún motivo. a centos. Salva las

6. Añade una regla encima de la que acabamos de configurar de tal forma que todas las conexiones que se vayan a rechazar desde la máquina centos se registren en el log. Prueba a hacer un telnet desde ubuntu al puerto 22 de centos y comprueba en el log de la máquina centos (/var/log/messages) que se están registrando los intentos de conexión. 7. Intenta conectarte desde centos al puerto 25 de tu propia máquina centos. Comprobarás que no es posible realizar la conexión. Crea una nueva regla en PERSONALIZADO para permitir todas las conexiones que utilicen la interfaz de red de loopback (lo), es decir, todas las conexiones que se produzcan desde la propia máquina y vayan a la propia máquina. Prueba a hacer el telnet ahora. Salva las reglas del firewall. 8. Añade las reglas necesarias a la cadena PERSONALIZADO de tal forma que se permitan las conexiones por ssh a la máquina centos desde cualquier equipo de tu red. Para crear las reglas necesitarás saber los puertos utilizados por el servicio ssh así como el protocolo que utilizan. Comprueba que funciona correctamente intentando conectarte por ssh a tu máquina centos. 9. Añade una regla a la cadena PERSONALIZADO de tal forma que se permita hacer ping a la máquina centos a todos los equipos. Comprueba que puedes hacer ping desde tu equipo físico. Salva las reglas del firewall.
Administración de sistemas de software libre. Práctica 15

1

13. Comprueba que no puedes acceder a ninguna página web desde tu máquina centos. 16. 17. Comprueba que funciona correctamente. Práctica 15 2 . Comprueba que funciona. Añade una regla para rechazar todas las conexiones que se produzcan desde la máquina centos y tengan como destino el puerto 80/tcp de cualquier equipo. Necesitarás comprobar los puertos que utiliza cups. El servicio utiliza el puerto 53/tcp y 53/udp. 18. Añade las reglas necesarias a la cadena PERSONALIZADO de tal forma que se permita hacer ftp a la máquina centos desde cualquier equipo. Comprueba que funciona correctamente intentando acceder a la interfaz web de cups desde tu equipo físico. Averigua a qué tabla y a qué cadena debes añadir la regla para que funcione correctamente.10. Para comprobar que funciona correctamente prueba a preguntar por dns. 11. ¿te ha dejado? No debería dejarte.com. Añade las reglas necesarias a la cadena PERSONALIZADO para permitir el acceso a cualquier equipo a los puertos utilizados por apache. Comprueba que puedes acceder desde tu máquina ubuntu mediante smbclient -U pedro //centos/rrhh. Asegúrate de que esta regla permanece como la primera del firewall a partir de ahora. Para solucionar el problema deberás añadir una regla a la cadena PERSONALIZADO para que se acepten todas las conexiones con estado ESTABLISHED y RELATED. Salva las reglas del firewall. Añade las reglas necesarias a la cadena PERSONALIZADO de tal forma que se permita la conexión desde cualquier equipo de la red a los puertos utilizados por postfix (master) y dovecot. Comprueba que puedes hacer ftp desde tu equipo físico. Añade las reglas necesarias a la cadena PERSONALIZADO de tal forma que se permitan las conexiones al servicio samba desde cualquier equipo de tu red. 14. Crea una regla de tal forma que cuando cualquier equipo de la red intente acceder a través del navegador a la ip de la máquina centos al puerto 80/tcp se le redirija al puerto 631 y vea por lo tanto la interfaz web de cups. Si no recuerdas la contraseña del usuario pedro puedes asignarle otra mediante smbpasswd. Salva las reglas del firewall. 15. Añade las reglas necesarias a la cadena PERSONALIZADO de tal forma que puedas acceder desde cualquier equipo de la red al servicio cups de la máquina centos. Para comprobar que funciona correctamente prueba a hacer telnet a cualquiera de los puertos. Comprueba que funciona correctamente intentando acceder desde el navegador a https://www. Comprueba que funciona intentando visualizar cualquier página desde tu máquina centos. 12.cursosl. Guarda las reglas del firewall. Salva las reglas del firewall. Comprueba el puerto utilizado por squid y permite el acceso al mismo a todos los equipos de la red añadiendo una regla a la cadena PERSONALIZADO.cursosl. Administración de sistemas de software libre. Añade una regla a la cadena PERSONALIZADO para permitir a cualquier equipo de tu red acceder al servicio dns de tu equipo centos. Necesitarás consultar los puertos en los que está escuchando samba (smb) y (nmb).com desde tu máquina centos.

Prueba a hacer ping a www.es ahora. Añade una regla para no permitir a la máquina centos realizar consultas dns. Práctica 15 3 .google. Solución 1. Creamos la regla que haga que todo lo que vaya a INPUT se redirija a PERSONALIZADO: iptables -A INPUT -j PERSONALIZADO 4.es y después a la ip de tu máquina ubuntu. Elimina la regla de la cadena PERSONALIZADO que registra los eventos(LOG). Asegúrate de que esta regla es la primera. Deshabilita el servicio iptables y haz que no arranque con el inicio del sistema. Agrega una regla de tal forma que se rechacen todos los paquetes que vayan a cualquier red distinta de la red en la que se encuentran las máquinas virtuales.google. Guarda las reglas del firewall. Modifica la política por defecto de la cadena OUTPUT de manera que se descarten todos los paquetes. 22. Elimina todas las reglas de la cadena OUTPUT. Prueba a hacer un ping a la máquina ubuntu. Creamos la nueva cadena: iptables -N PERSONALIZADO 3.google. Prueba a hacer un ping a www. 21. 24. Accedemos a la máquina vía putty o bien a través de la propia terminal que lleva incorporada y usamos la cuenta de root: su 2.19. Vuelve a mostrar las reglas del firewall para comprobar que ya no está. Muestra todas las reglas de la tabla filter de forma detallado y mostrando las ips en lugar de los nombres asociados a cada ip. Guarda las reglas del firewall. Agregamos la regla: iptables -A PERSONALIZADO -j REJECT --reject-with icmp-hostunreachable Administración de sistemas de software libre. 23. Comprueba que al preguntar por la ip de www. 20. Vuelve a cambiar la política por defecto de la cadena OUTPUT a ACCEPT. Guarda las reglas del firewall.es no se te da respuesta.

Si probamos a hacer un ping desde ubuntu a centos: ping centos Comprobamos que efectivamente obtenemos unreachable" tal y como habíamos configurado. Administración de sistemas de software libre. 5. Práctica 15 4 . De esta forma conseguimos ganar seguridad y ancho de banda. Eliminamos la regla que acabamos de añadir: iptables -D PERSONALIZADO 1 A continuación añadimos una regla que haga que se descarten todos los paquetes en lugar de rechazarlos: iptables -A PERSONALIZADO -j DROP Probamos a hacer ping desde ubuntu a centos: Comprobamos que no responde nada la máquina centos. Mostramos las reglas existentes en el firewall: iptables --line -L la respuesta "host Comprobamos que la regla añadida ocupa la posición 1 de la cadena PERSONALIZADO.

71) 7. A continuación insertamos la nueva regla en el firewall: iptables -I PERSONALIZADO -i lo -j ACCEPT Administración de sistemas de software libre.0.d/iptables save 6. el orden es importante A continuación probamos a hacer un telnet desde la máquina ubuntu: telnet centos 22 Si comprobamos el log en la máquina centos: tail /var/log/messages Comprobamos que se registra una conexión con (SRC=10.0.A continuación salvamos las reglas del firewall: /etc/init. Práctica 15 5 .0. Si intentamos hacer un telnet a localhost: telnet localhost 25 origen ubuntu Comprobamos que no nos está permitido.72) y con destino centos (DST=10.0. Insertamos la regla justo encima de la ya existente: iptables -I PERSONALIZADO -j LOG OJO Asegúrate de que utilizas -I y no -A para insertarla encima o de lo contrario no funcionará.

Práctica 15 6 .0.255.d/iptables save 8. añadimos la regla al firewall para permitir realizar la conexión al servicio ssh a cualquier equipo de la red: iptables -I PERSONALIZADO -s 10.0/255. Lo primero que hacemos es comprobar en qué puerto o puertos está escuchando el servicio ssh: netstat -lnp | grep ssh Comprobamos que utiliza el puerto 22/tcp.0.0 -p tcp -dport 22 -j ACCEPT (modificar la ip de la red por la de tu red) A continuación si probamos a conectarnos desde el equipo físico usando putty a la máquina centos comprobaremos que no hay ningún problema. 9. Añadimos una regla que permita todos los paquetes de tipo icmp: iptables -I PERSONALIZADO -p icmp -j ACCEPT (modificar la ip de la red por la de tu red) Administración de sistemas de software libre. A continuación.255.Si probamos a hacer el telnet ahora: telnet localhost 25 A continuación salvamos las reglas del firewall: /etc/init.

Comprobamos los puertos usados por ftp: netstat -lnp | grep ftp A continuación introducimos la regla: iptables -I PERSONALIZADO -p tcp --dport 21 -j ACCEPT Comprobamos que podemos hacer ftp a la máquina centos después del cambio: ftp 10. A continuación salvamos las reglas del firewall: /etc/init. Consultamos los puertos utilizados por el servicio samba: netstat -lnp | grep smb Administración de sistemas de software libre. Práctica 15 7 . si probamos a hacer ping desde nuestra máquina física: Comprobamos que no tenemos ningún problema.0.71 (modifica la ip por la de tu máquina centos) 11.0.A continuación.d/iptables save 10.

0.0.0.255.0. Práctica 15 8 .255.0 -p udp -dport 137 -j ACCEPT iptables -I PERSONALIZADO -s 10.255.0/255.0.255. incorporamos las reglas al firewall: iptables -I PERSONALIZADO -s 10.255.255.0.255.255.0/255.0/255.0.0 -p tcp -dport 139 -j ACCEPT iptables -I PERSONALIZADO -s 10.netstat -lnp | grep nmb Una vez que sabemos los puertos en los que está escuchando el servicio.0.d/iptables save Administración de sistemas de software libre.0/255.0 -p tcp -dport 445 -j ACCEPT iptables -I PERSONALIZADO -s 10.0 -p udp -dport 138 -j ACCEPT (modifica los valores con los de tu red) Ahora si intentamos acceder a centos usando comprobaremos que no tenemos ningún problema: smbclient -U pedro //centos/rrhh el cliente samba A continuación salvamos las reglas del firewall: /etc/init.

0/255.0.0 -p tcp -dport 631 -j ACCEPT iptables -I PERSONALIZADO -s 10.0.0 -p udp -dport 631 -j ACCEPT (modifica los valores con los de tu red) A continuación si pruebas a acceder a la interfaz web de cups desde tu equipo físico comprobarás que no tienes ningún problema: (modifica la ip por la de tu máquina centos) 13.0.255. Práctica 15 9 . Comprobamos los puertos en los que está escuchando cups: netstat -lnp | grep cups A continuación establecemos las reglas en el firewall: iptables -I PERSONALIZADO -s 10.255.0/255.255. Comprobamos los puertos utilizados por apache: netstat -lnp | grep http Administración de sistemas de software libre.12.0.255.

255.0/255.0 -p tcp -dport 53 -j ACCEPT iptables -I PERSONALIZADO -s 10.255. Añadimos las reglas: iptables -I PERSONALIZADO -s 10.com Administración de sistemas de software libre.0.0.Añadimos las reglas en cuestión: iptables -I PERSONALIZADO -p tcp --dport 200 -j ACCEPT iptables -I PERSONALIZADO -p tcp --dport 443 -j ACCEPT Probamos a acceder a la web configurada en apache a través del navegador https://www.0/255.cursosl.255.cursosl. Práctica 15 10 .0.com: Salvamos las reglas del firewall: /etc/init.0.0 -p udp -dport 53 -j ACCEPT (modifica las ips por las de tu red) Comprobamos que las reglas funcionan correctamente: ping dns.d/iptables save 14.255.

255.0/255.255. Práctica 15 11 .0.RELATED -j ACCEPT -m state --state A continuación si probamos a visualizar cualquier web desde la máquina centos comprobaremos que no tenemos ningún problema: Guardamos las reglas del firewall: /etc/init. Comprobamos el puerto utilizado por squid: cat /etc/services | grep squid Añadimos la regla a la cadena PERSONALIZADO: iptables -I PERSONALIZADO -s 10.15.0 -p tcp -dport 3128 -j ACCEPT Si probamos a visualizar cualquier web desde centos comprobaremos que no es posible. Añadimos la regla para permitir las conexiones con estado ESTABLISHED O RELATED: iptables -I PERSONALIZADO ESTABLISHED.d/iptables save 16.0. Comprobamos los puertos en los que están escuchando los servicios: netstat -lnp | grep master Administración de sistemas de software libre.

0.255.0 -p tcp --dport 25 -j ACCEPT iptables -I PERSONALIZADO 2 -s 10.0.0.0/255.0.255.255.255.0.255.0/255.255. añadimos las reglas al firewall asegurándonos de que se insertan debajo de la regla que comprueba el estado de las conexiones: iptables -I PERSONALIZADO 2 -s 10. Para que funcione correctamente deberemos añadir la regla a la cadena PREROUTING: iptables -t nat -A PREROUTING -s 10.netstat -lnp | grep dovecot Una vez que sabemos los puertos que debemos desbloquear.0/255.0.0 -p tcp --dport 995 -j ACCEPT iptables -I PERSONALIZADO 2 -s 10. Práctica 15 12 .0.0.0/255.0.0.0 -p tcp --dport 80 -j DNAT --to :631 Si probamos a acceder a la ip de la máquina centos desde un navegador comprobaremos que se nos redirige a la interfaz web de cups: Administración de sistemas de software libre.255.0 -p tcp --dport 993 -j ACCEPT (cambia las ips por las correspondientes para tu red) Si probamos a hacer telnet al puerto 25 por ejemplo comprobamos que funciona correctamente: telnet 10.71 25 (modifica la ip por la de tu máquina centos) 17.255.

si probamos a hacer un ping a www.0. 19.72 (modifica la ip por la de tu máquina Ubuntu) Administración de sistemas de software libre. Práctica 15 13 . Añadimos las reglas a la cadena OUTPUT: iptables -A OUTPUT -p tcp --dport 53 -j REJECT iptables -A OUTPUT -p udp --dport 53 -j REJECT A continuación. Modificamos la política por defecto de la cadena OUTPUT: iptables -P OUTPUT DROP Ahora si probamos a hacer un ping a la máquina ubuntu comprobaremos que no somos capaces: ping 10.d/iptables save 20.d/iptables save 18.es desde la máquina centos comprobaremos que no nos resolverá: ping www.es /etc/init.google. Añadimos la regla en cuestión a la cadena OUTPUT: iptables -A OUTPUT -p tcp --dport 80 -j REJECT Ahora si probamos a acceder a través del navegador a cualquier página web comprobaremos que no nos es posible.Guardamos las reglas del firewall: /etc/init.google.0.

d/iptables save 22.es no obtendremos respuesta: ping www.72 (modifica la ip por la de tu máquina Ubuntu) Guardamos las reglas del firewall: /etc/init.google.es Administración de sistemas de software libre.es Si hacemos el ping a la máquina ubuntu no tendremos problemas: ping 10.255.google.0.0.0 -j REJECT A continuación si probamos a hacerle un ping a www.google.21.0/255.google.es ahora: ping www.255.0.0. Eliminamos todas las reglas de la tabla OUTPUT: iptables -F OUTPUT Probamos a hacer ping a www. Práctica 15 14 . Volvemos a modificar la política por defecto: iptables -P OUTPUT ACCEPT A continuación agregamos la regla especificada: iptables -I OUTPUT ! -d 10.

Mostramos las reglas con el número de línea: iptables -nvL --line Ahora borramos la regla del LOG que ocupa la línea 20: iptables -D PERSONALIZADO 20 Administración de sistemas de software libre. Práctica 15 15 .Mostramos las reglas del firewall con los parámetros especificados: iptables -nvL 23.

Práctica 15 16 .Mostramos las reglas de nuevo y comprobamos que la cadena en cuestión ya no está: iptables -nvL Guardamos las reglas del firewall: /etc/init.d/iptables stop Lo dejamos deshabilitado por defecto: chkconfig iptables off Administración de sistemas de software libre. Deshabilitamos el servicio iptables: /etc/init.d/iptables save 24.