linux 03 practica 15
TRANSCRIPT
Administración de sistemas de software libre. Práctica 15 1
Práct ica 15
Configuración de f i rewal l 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 asociado. Elimina la
regla que acabamos de añadir y en su lugar añade una en PERSONALIZADO
que haga que se descarten todos los paquetes sin dar ningún motivo.
Prueba a hacer ping ahora desde la máquina ubuntu a centos. Salva las
reglas del firewall.
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 2
10. 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 puedes hacer ftp desde tu equipo físico.
11. 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. Necesitarás consultar los puertos en los que está escuchando samba
(smb) y (nmb). Comprueba que puedes acceder desde tu máquina ubuntu
mediante smbclient -U pedro //centos/rrhh. Si no recuerdas la contraseña
del usuario pedro puedes asignarle otra mediante smbpasswd. Salva las
reglas del firewall.
12. 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. Necesitarás comprobar los puertos que utiliza cups.
Comprueba que funciona correctamente intentando acceder a la interfaz web
de cups desde tu equipo físico.
13. Añade las reglas necesarias a la cadena PERSONALIZADO para permitir el
acceso a cualquier equipo a los puertos utilizados por apache. Comprueba
que funciona correctamente intentando acceder desde el navegador a
https://www.cursosl.com. Salva las reglas del firewall.
14. Añade una regla a la cadena PERSONALIZADO para permitir a cualquier
equipo de tu red acceder al servicio dns de tu equipo centos. El servicio
utiliza el puerto 53/tcp y 53/udp. Para comprobar que funciona
correctamente prueba a preguntar por dns.cursosl.com desde tu máquina
centos.
15. 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. Comprueba que funciona intentando visualizar cualquier
página desde tu máquina centos. ¿te ha dejado? No debería dejarte. 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. Comprueba que funciona. Asegúrate de que esta
regla permanece como la primera del firewall a partir de ahora. Salva las
reglas del firewall.
16. 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. Para comprobar que funciona
correctamente prueba a hacer telnet a cualquiera de los puertos.
17. 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.
Averigua a qué tabla y a qué cadena debes añadir la regla para que funcione
correctamente. Comprueba que funciona correctamente.
Guarda las reglas del firewall.
18. 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. Comprueba que no puedes acceder a ninguna página web desde tu
máquina centos.
Administración de sistemas de software libre. Práctica 15 3
19. Añade una regla para no permitir a la máquina centos realizar consultas dns.
Comprueba que al preguntar por la ip de www.google.es no se te da
respuesta. Guarda las reglas del firewall.
20. Modifica la política por defecto de la cadena OUTPUT de manera que se
descarten todos los paquetes. Prueba a hacer un ping a la máquina ubuntu.
21. Vuelve a cambiar la política por defecto de la cadena OUTPUT a ACCEPT.
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. Asegúrate de que esta regla es la primera.
Prueba a hacer un ping a www.google.es y después a la ip de tu máquina
ubuntu. Guarda las reglas del firewall.
22. Elimina todas las reglas de la cadena OUTPUT. Prueba a hacer ping a
www.google.es ahora. Muestra todas las reglas de la tabla filter de forma
detallado y mostrando las ips en lugar de los nombres asociados a cada ip.
23. Elimina la regla de la cadena PERSONALIZADO que registra los
eventos(LOG). Vuelve a mostrar las reglas del firewall para comprobar que
ya no está. Guarda las reglas del firewall.
24. Deshabilita el servicio iptables y haz que no arranque con el inicio del
sistema.
Solución
1. 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. Creamos la nueva cadena:
iptables -N PERSONALIZADO
3. Creamos la regla que haga que todo lo que vaya a INPUT se redirija a PERSONALIZADO:
iptables -A INPUT -j PERSONALIZADO
4. Agregamos la regla:
iptables -A PERSONALIZADO -j REJECT --reject-with icmp-host-unreachable
Administración de sistemas de software libre. Práctica 15 4
Si probamos a hacer un ping desde ubuntu a centos:
ping centos
Comprobamos que efectivamente obtenemos la respuesta "host unreachable" tal y como habíamos configurado.
5. Mostramos las reglas existentes en el firewall:
iptables --line -L
Comprobamos que la regla añadida ocupa la posición 1 de la cadena PERSONALIZADO.
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. De esta forma
conseguimos ganar seguridad y ancho de banda.
Administración de sistemas de software libre. Práctica 15 5
A continuación salvamos las reglas del firewall:
/etc/init.d/iptables save
6. Insertamos la regla justo encima de la ya existente:
iptables -I PERSONALIZADO -j LOG
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 origen ubuntu (SRC=10.0.0.72) y con destino centos (DST=10.0.0.71)
7. Si intentamos hacer un telnet a localhost:
telnet localhost 25
Comprobamos que no nos está permitido.
A continuación insertamos la nueva regla en el firewall:
iptables -I PERSONALIZADO -i lo -j ACCEPT
Asegúrate de que utilizas -I y no -A para insertarla encima o de
lo contrario no funcionará, el orden es importante
OJO
Administración de sistemas de software libre. Práctica 15 6
Si probamos a hacer el telnet ahora:
telnet localhost 25
A continuación salvamos las reglas del firewall:
/etc/init.d/iptables save
8. 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.
A continuación, 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.0.0/255.255.255.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. Práctica 15 7
A continuación, si probamos a hacer ping desde nuestra máquina física:
Comprobamos que no tenemos ningún problema.
A continuación salvamos las reglas del firewall:
/etc/init.d/iptables save
10. 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.0.0.71
(modifica la ip por la de tu máquina centos)
11. Consultamos los puertos utilizados por el servicio samba:
netstat -lnp | grep smb
Administración de sistemas de software libre. Práctica 15 8
netstat -lnp | grep nmb
Una vez que sabemos los puertos en los que está escuchando el servicio, incorporamos las reglas al firewall:
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p tcp --dport 139 -j ACCEPT
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p tcp --dport 445 -j ACCEPT
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p udp -
-dport 137 -j ACCEPT
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p udp --dport 138 -j ACCEPT
(modifica los valores con los de tu red)
Ahora si intentamos acceder a centos usando el cliente samba comprobaremos que no tenemos ningún problema:
smbclient -U pedro //centos/rrhh
A continuación salvamos las reglas del firewall:
/etc/init.d/iptables save
Administración de sistemas de software libre. Práctica 15 9
12. 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.0.0.0/255.255.255.0 -p tcp --dport 631 -j ACCEPT
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.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. Comprobamos los puertos utilizados por apache:
netstat -lnp | grep http
Administración de sistemas de software libre. Práctica 15 10
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.cursosl.com:
Salvamos las reglas del firewall:
/etc/init.d/iptables save
14. Añadimos las reglas:
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p tcp --dport 53 -j ACCEPT
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.0 -p udp -
-dport 53 -j
ACCEPT
(modifica las ips por las de tu red)
Comprobamos que las reglas funcionan correctamente:
ping dns.cursosl.com
Administración de sistemas de software libre. Práctica 15 11
15. Comprobamos el puerto utilizado por squid:
cat /etc/services | grep squid
Añadimos la regla a la cadena PERSONALIZADO:
iptables -I PERSONALIZADO -s 10.0.0.0/255.255.255.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 -m state --state ESTABLISHED,RELATED -j ACCEPT
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.d/iptables save
16. Comprobamos los puertos en los que están escuchando los servicios:
netstat -lnp | grep master
Administración de sistemas de software libre. Práctica 15 12
netstat -lnp | grep dovecot
Una vez que sabemos los puertos que debemos desbloquear, 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.0.0.0/255.255.255.0 -p tcp
--dport 25 -j ACCEPT
iptables -I PERSONALIZADO 2 -s 10.0.0.0/255.255.255.0 -p tcp --dport 995 -j ACCEPT
iptables -I PERSONALIZADO 2 -s 10.0.0.0/255.255.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.0.0.71 25
(modifica la ip por la de tu máquina centos)
17. Para que funcione correctamente deberemos añadir la regla a la cadena PREROUTING:
iptables -t nat -A PREROUTING -s 10.0.0.0/255.255.255.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. Práctica 15 13
Guardamos las reglas del firewall:
/etc/init.d/iptables save
18. 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.
19. 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, si probamos a hacer un ping a www.google.es desde la
máquina centos comprobaremos que no nos resolverá:
ping www.google.es
/etc/init.d/iptables save
20. 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.0.0.72
(modifica la ip por la de tu máquina Ubuntu)
Administración de sistemas de software libre. Práctica 15 14
21. Volvemos a modificar la política por defecto:
iptables -P OUTPUT ACCEPT
A continuación agregamos la regla especificada:
iptables -I OUTPUT ! -d 10.0.0.0/255.255.255.0 -j REJECT
A continuación si probamos a hacerle un ping a www.google.es no obtendremos respuesta:
ping www.google.es
Si hacemos el ping a la máquina ubuntu no tendremos problemas:
ping 10.0.0.72
(modifica la ip por la de tu máquina Ubuntu)
Guardamos las reglas del firewall:
/etc/init.d/iptables save
22. Eliminamos todas las reglas de la tabla OUTPUT:
iptables -F OUTPUT
Probamos a hacer ping a www.google.es ahora:
ping www.google.es
Administración de sistemas de software libre. Práctica 15 15
Mostramos las reglas del firewall con los parámetros especificados:
iptables -nvL
23. 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 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 save
24. Deshabilitamos el servicio iptables:
/etc/init.d/iptables stop
Lo dejamos deshabilitado por defecto:
chkconfig iptables off