Paso 6: Configurar el firewall mediante iptables
El objetivo de este paso es activar el firewall en frambuesa pi para proteger la Junta y que aMule funcione correctamente.
Esto puede lograrse fácilmente usando iptables. Configura el conjunto de reglas usado por el kernel de Linux en la Junta Directiva de filtrado de paquetes.
6.1. definir las reglas del firewall
Había definido algunas reglas a fin de:
- hacer el SSH puerto (3295) y el servidor Web de puerto (8080) disponibles en red local solamente. Si necesita acceder al servidor Web desde fuera de la red local debe cambiar estas reglas.
- hacer el aMule puerto (4662) disponible para todo el mundo a través de tcp
- disposición el aMule puertos (4672 y 4665) a todo el mundo a través de udp, consulte https://en.wikipedia.org/wiki/AMule para información sobre el puerto utilizado por aMule
- hacer el aMule puertos de conexión externa (4712) disponible a través de tcp en la red local solamente. Si desea conectarse a la placa de aMule con aMuleGUI desde fuera de la red local debe cambiar esta regla.
- caída de tráfico en otros puertos
- habilitar ping desde la red local sólo
Te voy a mostrar cómo implementar estas reglas en la sección 6.3.
6.2. Obtén información sobre tu red local
Escriba el comando siguiente para obtener información sobre su red local:
pi ~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:cf:b5:16 inet addr:192.168.1.128 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19965227 errors:0 dropped:101 overruns:0 frame:0 TX packets:20545261 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:456059094 (434.9 MiB) TX bytes:1869433273 (1.7 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:170888 errors:0 dropped:0 overruns:0 frame:0 TX packets:170888 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:29218418 (27.8 MiB) TX bytes:29218418 (27.8 MiB)
Usted puede obtener su información de la red local buscando en la inet addr y la máscara.
En mi ejemplo tengo:
inet addr:192.168.1.128 Mask:255.255.255.0
Entonces puedo identificar mi red local con la notación CIDR Subnet Mask: 192.168.1.0/24 .
Si no sabes cómo hacer la notación de CIDR Subnet máscara a partir de "Máscara" y "inet addr" usted puede obtener más información aquí CIDR; o, si lo prefiere, puede instalar ipcalc:
pi ~ $ sudo apt-get install ipcalc
a continuación, escriba el comando siguiente después de reemplazar * inet addr * y * máscara * con los encontrados en la salida de ifconfig:
pi ~ $ ipcalc -n *inet addr* *Mask*
en mi ejemplo:
pi ~ $ ipcalc -n 192.168.1.128 255.255.255.0 Address: 192.168.1.128 11000000.10101000.00000001. 10000000<br>Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.1.0/24 11000000.10101000.00000001. 00000000 HostMin: 192.168.1.1 11000000.10101000.00000001. 00000001 HostMax: 192.168.1.254 11000000.10101000.00000001. 11111110 Broadcast: 192.168.1.255 11000000.10101000.00000001. 11111111 Hosts/Net: 254 Class C, Private Internet
Observa la línea comenzando con red y copiar la dirección de subred máscara notación de CIDR, se utilizará en la siguiente sección.
6.3 crear un iptables script de configuración
Después de definidas las reglas e identificaron la red local, vamos a escribir un script simple para agregar las reglas de netfilter.
pi ~ $ sudo nano /etc/init.d/iptablesconf
Editar el archivo de esta y vuelva a colocar la red "192.168.1.0/24" con la que has encontrado en la sección anterior.
#! /bin/sh ### BEGIN INIT INFO # Provides: iptablesconfig # Required-Start: $network $remote_fs $syslog # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: firewall # Description: This file sets firewall ### END INIT INFO iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 3295 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 4712 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 4662 -j ACCEPT iptables -A INPUT -p udp --dport 4665 -j ACCEPT iptables -A INPUT -p udp --dport 4672 -j ACCEPT iptables -A INPUT -j LOG --log-prefix="INPUT: " iptables -A FORWARD -j LOG --log-prefix="FORWARD: "
continuación, presione Ctrl + o para guardar y Ctrl + x para salir.
Si usted necesita ayuda para cambiar estas reglas no dude ponerse en contacto conmigo escribiendo un comentario.
Haga el script ejecutable:
pi ~ $ sudo chmod +x /etc/init.d/iptablesconf
Puede hacer que el script de configuración que se ejecuta automáticamente cuando comienza a Raspbian:
pi ~ $ sudo update-rc.d iptablesconf start 65 2 3 4 5 .
6.4 reiniciar y prueba
Después de reiniciar puede comprobar que las reglas se aplican automáticamente ejecuta iptables -L-v y obtener algo como esto:
pi ~ $ sudo reboot anzalone ssh pi -p3295 pi ~ $ sudo iptables -L -v Chain INPUT (policy DROP 1492 packets, 288K bytes) pkts bytes target prot opt in out source destination 172K 29M ACCEPT all -- lo any anywhere anywhere 20M 18G ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- any any 192.168.1.0/24 anywhere 22 948 ACCEPT tcp -- any any 192.168.1.0/24 anywhere tcp dpt:3295 43277 1904K ACCEPT tcp -- any any 192.168.1.0/24 anywhere tcp dpt:http-alt 4 176 ACCEPT tcp -- any any 192.168.1.0/24 anywhere tcp dpt:4712 32 1812 ACCEPT tcp -- any any anywhere anywhere tcp dpt:4662 0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:4665 290 28565 ACCEPT udp -- any any anywhere anywhere udp dpt:4672 1657 428K LOG all -- any any anywhere anywhere LOG level warning prefix "INPUT: " Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 LOG all -- any any anywhere anywhere LOG level warning prefix "FORWARD: " Chain OUTPUT (policy ACCEPT 20M packets, 14G bytes) pkts bytes target prot opt in out source destination