EJERCICIOS DE REDES 1. Configurar por completo la red mostrada en el siguiente diagrama: NOTA: no tenemos la posibilidad de configurar el router con ip 192.168.1.1 (manejado por otro administrador), de ahí que hemos introducido un router que gestionará toda nuestra red (192.168.1.10). Aspectos a tener en cuenta a la hora de realizar el diseño: Las redes 172.16.0.0/16 y 172.17.0.0/16 no deben estar comunicadas, a excepción de los equipos U4 y U7 que deben estarlo para poder establecer una VPN entre ellos (no son accesibles a través de internet, por eso se tendrá que añadir una ruta estática a mayores). En U2 y U5 hay firewalls que impiden el acceso del exterior, pero permiten que los PCs de la red interna puedan acceder a internet a través de los puertos destinados a servicios web, dns y ftp. Mediante el acceso desde la red 192.168.1.0 al router U1 se deben servir los servicios FTP, Web y Servidor multimedia al exterior (NAT). El resto de servicios serán servidos por el PC situado en la zona desmilitarizada (U8). SOLUCIONES U1 Fichero de configuración: #!/bin/bash #Permitir reenvío de paquetes IP echo 1 > /proc/sys/net/ipv4/ip_forward #Establecer direcciones ip de las interfaces ip addr add 192.168.1.10/24 dev eth0 ip addr add 192.168.0.1/24 label eth0:0 dev eth0 #Activar la interfaz ip link set eth0 up #Definir rutas para este router ip route add default via 192.168.1.1 #Iniciar el firewall (iptables - netfilter) /etc/init.d/firewall start #Nota: se debe crear un enlace simbólico (ln -s) en /etc/init.d/firewall que apunte al fichero ./iptables_001 Fichero iptables #!/bin/bash IPTABLES="/sbin/iptables" MODPROBE="/sbin/modprobe" RMMOD="/sbin/rmmod" case $1 in start) #Políticas por defecto: aceptar todos los paquetes $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT #redirigimos al servidor en la zona DMZ todas las peticiones de la red externa $IPTABLES -t nat -A PREROUTING -s 192.168.1.0 -j DNAT --to 192.168.0.2 #redirigimos a los respectivos servidores las peticiones externas #servidor web $IPTABLES -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.10:80 $IPTABLES -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 443 -j DNAT --to 192.168.0.10:80 #servidor multimedia $IPTABLES -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 14220 -j DNAT --to 192.168.0.10:14220 #servidor ftp $IPTABLES -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 21 -j DNAT --to 192.168.0.20:21 #ip masking: dar internet a toda la red interna $IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE #módulos para trabajar con FTP (connection tracking y nat) $MODPROBE nf_conntrack_ftp $MODPROBE nf_nat_ftp ;; stop) #Política no restrictiva al detener el servicio $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT #Eliminar las reglas definidas $IPTABLES -t filter -F INPUT $IPTABLES -t filter -F OUTPUT $IPTABLES -t filter -F FORWARD $IPTABLES -t nat -F PREROUTING $IPTABLES -t nat -F POSTROUTING #Desactivar los módulos para trabajar con FTP $RMMOD nf_nat_ftp $RMMOD nf_conntrack_ftp ;; restart) $0 stop $0 start ;; esac U2 Fichero de configuración #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ip addr add 192.168.0.10/24 dev eth0 ip addr add 172.16.0.1/16 label eth0:0 dev eth0 ip link set eth0 up ip route add default via 192.168.0.1 /etc/init.d/firewall restart Fichero de iptables #!/bin/bash IPTABLES="/sbin/iptables" MODPROBE="/sbin/modprobe" RMMOD="/sbin/rmmod" case $1 in start) #Políticas por defecto: ignorar todos los paquetes $IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P OUTPUT DROP $IPTABLES -t filter -P FORWARD ACCEPT #Aceptar peticiones icmp $IPTABLES -t filter -A INPUT -p icmp -j ACCEPT $IPTABLES -t filter -A OUTPUT -p icmp -j ACCEPT #Aceptar peticiones DNS (necesario para resolución de nombres) $IPTABLES -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT #Aceptar peticiones de páginas web en el exterior $IPTABLES -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT #Aceptar peticiones FTP salientes $IPTABLES -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT #Servicios de la red #Aceptar conexiones por SSH de la red 192.168.0.0/24 $IPTABLES -t filter -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT #aceptar los paquetes relacionados con la web y el servidor multimedia $IPTABLES -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -t filter -A INPUT -s 172.16.0.0/16 -p tcp --dport 14220 -j ACCEPT #Redirigimos a los respectivos servidores $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.0.2:80 $IPTABLES -t nat -A PREROUTING -p tcp --dport 14220 -j DNAT --to 172.16.0.3:14220 #ip masking $IPTABLES -t nat -A POSTROUTING -s 172.16.0.0/16 -j MASQUERADE #Connection tracking, necesario para dar y recibir respuestas $IPTABLES -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $MODPROBE nf_conntrack_ftp $MODPROBE nf_nat_ftp ;; stop) #Política no restrictiva al detener el servicio $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT #Eliminar las reglas definidas $IPTABLES -t filter -F INPUT $IPTABLES -t filter -F OUTPUT $IPTABLES -t filter -F FORWARD $IPTABLES -t nat -F PREROUTING $IPTABLES -t nat -F POSTROUTING $RMMOD nf_nat_ftp $RMMOD nf_conntrack_ftp ;; restart) $0 stop $0 start ;; esac U3 Fichero de configuración #!/bin/bash ip addr add 172.16.0.2/16 dev eth0 ip link set eth0 up ip route add default via 172.16.0.1 U4 Fichero de configuración #!/bin/bash ip addr add 172.16.0.3/16 dev eth0 ip link set eth0 up ip route add default via 172.16.0.1 #Iniciar el servidor multimedia en segundo plano /home/bruno/multimedia_server.sh & Fichero multimedia_server.sh #!/bin/bash while [ 0 = 0 ] do #Escuchar en el puerto 14220, a la espera de la entrega de ficheros multimedia a partir de una tubería de datos con socat (se guarda un log en el directorio home del usuario) socat tcp4-listen:14220 stdio | madplay - >> $HOME/multimedia.log done U5 Fichero de configuración #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ip addr add 192.168.0.20/24 dev eth0 ip addr add 172.17.0.1/16 label eth0:0 dev eth0 ip link set eth0 up ip route add default via 192.168.0.1 #ruta necesaria para la creación de túneles con 172.16.0.3 ip route add 172.16.0.3 via 192.168.0.10 /etc/init.d/firewall restart Fichero de iptables #!/bin/bash IPTABLES="/sbin/iptables" MODPROBE="/sbin/modprobe" RMMOD="/sbin/rmmod" case $1 in start) #Denegar todos los paquetes de entrada o salida $IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P OUTPUT DROP $IPTABLES -t filter -P FORWARD ACCEPT #Aceptar peticiones icmp $IPTABLES -t filter -A INPUT -p icmp -j ACCEPT $IPTABLES -t filter -A OUTPUT -p icmp -j ACCEPT #Permitir acceder a sitios web (puerto 80 y 443) $IPTABLES -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT #Y a peticiones dns $IPTABLES -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT #Y peticiones FTP $IPTABLES -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT #Y peticiones del servidor multimedia $IPTABLES -t filter -A OUTPUT -p tcp --dport 14220 -j ACCEPT #Y conexiones por SSH provenientes de la red 192.168.0.0/24 $IPTABLES -t filter -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT #Aceptar puerto FTP $IPTABLES -t filter -A INPUT -p tcp --dport 21 -j ACCEPT #Redirigilo a la máquina que lo gestiona $IPTABLES -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to 172.17.0.2:21 #ip masking -> dar internet a toda la red $IPTABLES -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE #Respuesta para conexiones necesarias para comunicaciones o ya establecidas $IPTABLES -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #FTP Connection tracking necesita el módulo correspondiente $MODPROBE nf_conntrack_ftp $MODPROBE nf_nat_ftp ;; stop) #Política no restrictiva al detener el servicio $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT #Eliminar las reglas definidas $IPTABLES -t filter -F INPUT $IPTABLES -t filter -F OUTPUT $IPTABLES -t filter -F FORWARD $IPTABLES -t nat -F PREROUTING $IPTABLES -t nat -F POSTROUTING #Desactivar el módulo connection tracking de ftp $RMMOD nf_nat_ftp $RMMOD nf_conntrack_ftp ;; restart) $0 stop $0 start ;; esac U6 Fichero de configuración #!/bin/bash ip addr add 172.17.0.2/16 dev eth0 ip link set eth0 up ip route add default via 172.17.0.1 U7 Fichero de configuración #!/bin/bash ip addr add 172.17.0.3/16 dev eth0 ip link set eth0 up ip route add default via 172.17.0.1 #Crear el túnel con 172.16.0.3 (ssh y socat) #NOTA: necesita configuración previa con ssh-keygen (creación de claves asimétricas para autenticación) socat tun:10.0.0.1/8 exec:"ssh -i /root/.ssh/id_rsa [email protected] 'socat tun:10.0.0.2/8 stdio'" & ip link set tun0 up ssh -i /root/.ssh/id_rsa [email protected] "ip link set tun0 up" U8 Fichero de configuración #!/bin/bash ip addr add 192.168.0.2/24 dev eth0 ip link set eth0 up ip route add default via 192.168.0.1