Actualitzat el diumenge, 19 juny, 2016
IPtables és un sistema de tallafocs vinculat a l’nucli de linux. A l’contrari del que pugui semblar unes iptables no són com un servidor que el vam iniciar o aturem, ha hagut alguna vulnerabilitat que a permès un DdoS, però sempre serà més efectiu que les aplicacions que escolten en determinat port TCP. Iptables aquesta integrat amb el nucli, és part de el sistema operatiu. Podem crear, modificar, esborrar tot tipus de regles, aquí proposarem uns exemples. A
Reset iptables tallafocs rules
iptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -Fiptables -t nat -F
Veure l’estat de la teva tallafocs i llistar regles a Type the following command as root:
iptables -L -n -viptables -n -L -v --line-numbers iptables -L INPUT -n -viptables -L OUTPUT -n -v --line-numbers
eliminar regles de Firewall
iptables -L INPUT -n --line-numbersiptables -L OUTPUT -n --line-numbersiptables -L OUTPUT -n --line-numbers | lessiptables -L OUTPUT -n --line-numbers | grep 202.54.1.1
Es pot eliminar per nombre de regla
iptables -D INPUT 4
O especificar una regla que coincideixi
iptables -D INPUT -s 202.54.1.1 -j DROP
Establir les polítiques de tallafocs per defecte per eliminar tot el trànsit:
iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROPiptables -L -v -n
Només a bloquejar el tràfic entrant
per eliminar tots els paquets entrants / enviat, però permetre el trànsit sortint, escriviu:
iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPTiptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPTiptables -L -v -n
Eliminar adreces de xarxa privada a la interfície pública ( suposant eth1 com a interfície pública)
Bloquejar IP:
iptables -A INPUT -s 192.168.1.5 -j DROPiptables -A INPUT -s 192.114.71.13 -j DROP
Guardar regles:
iptables-save > /root/iptables.fw
En CentOS / RHEL / Fedora Linux,:
service iptables save
Restaurar regles :
iptables-restore < /root/iptables.fw
Restaura en CentOS / RHEL / Fedora Linux:
service iptables restart
Pots recarregar les regles automàticament a l’reiniciar el servidor:
vi /etc/rc.local
# Reload IPTABLES Rules automatically on restart/sbin/iptables-restore < /root/iptables.fw
En CentOS pots guardar les regles per recarregar-automàticament:
/etc/sysconfig/iptables
Permet tot el trànsit de loopback, i eliminar tot el trànsit a 127/8 que no fa servir lo0
iptables -A INPUT -i lo -j ACCEPTiptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
Eliminar qualsevol paquet TCP que no s’ha iniciat amb el Flag SYN actiu
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
D’acord totes les connexions entrants establertes
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Eliminar qualsevol paquet invàlid que no pugui ser identificat
iptables -A INPUT -m state --state INVALID -j DROPDrop all inbound telnet trafficiptables -I INPUT -p tcp --dport 23 -j DROPDrop all outbound web trafficiptables -I OUTPUT -p tcp --dport 80 -j DROPDrop all outbound traffic to 192.168.0.1iptables -I OUTPUT -p tcp --dest 192.168.0.1 -j DROPAllow all inbound web trafficiptables -I INPUT -p tcp --dport 80 -j ACCEPTAllow inbound port traffic for localhostiptables -I INPUT -s 12.0.0.1 -p tcp --dport 2003 -j ACCEPTAllow inbound HTTPS traffic from 10.2.2.4iptables -I INPUT -s 10.2.2.4 -p tcp -m tcp --dport 443 -j DROPDeny outbound traffic to 192.2.4.0-192.2.4.255iptables -I OUTPUT -d 192.2.4.6.0/24 -j DROP
Bloquejar trànsit a l’domini facebook.com, mirem la IP de facebook.com i després el seu rang de IPs
host -t a www.facebook.comwhois 69.171.228.40 | grep CIDR
Creem la regla per no permetre accés
iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP
També per nom de domini, però no és 100% efectiu.
iptables -A OUTPUT -p tcp -d www.facebook.com -j DROPiptables -A OUTPUT -p tcp -d facebook.com -j DROP
Permetre connexions entrants a port 21 des d’una la IP 11.22.33.44
iptables -A INPUT -p tcp -m state --state NEW --dport 21 --source 11.22.33.44
Permet tot el trànsit entrant SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Permet SSH sortint
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Permet tràfic HTTP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Permet HTTPS sortint.
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Combinar regles amb multiport
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
Denegar totes les connexions entrants a port 21.
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -j DROP
Eliminar la primera regla d’entrada
iptables -D INPUT 1
blo jar o Permetre sol·licitud d’ICMP Tennis
iptables -A INPUT -p icmp --icmp-type echo-request -j DROPiptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT/// A continuación sólo acepta tipo limitado de peticiones ICMP:
### ** assumed that default INPUT policy setembre to DROP ** ######### #### iptables -A INPUT -p icmp -icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp -icmp-type destination-unreachable -j ACCEPT iptables -A INPUT -p icmp -icmp-type time -exceeded -j ACCEPT a ## ** all our server to responia to pings ** ## iptables -A INPUT -p icmp -icmp-type echo-request -j ACCEPT
Permitir ping de fuera hacia adentro
iptables -A INPUT -p icmp -icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp – icmp-type echo-reply -j ACCEPT
Permitir PING de dentro a fuera.
iptables -A OUTPUT -p icmp -icmp-type echo-request -j ACCEPT iptables -A INPUT – p icmp -icmp-type echo-reply -j ACCEPT
Permitir tráfico DNS saliente.
iptables -A OUTPUT -p udp -o eth0 -dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 -Sport 53 -j ACCEPT
Abrir un rango de puertos de entrada
iptables -A INPUT -m state state NE W -m tcp -p tcp dport 7000: 7010 -j ACCEPT
Abrir un rango de IPs
## only accept connection to tcp port 80 (Apache) if ip is between 192.168 .1.100 and 192.168.1.200 ## iptables -A INPUT -p tcp destination-port 80 -m iprange src-range 192.168.1.100-192.168.1.200 -j ACCEPT
## nat example ## iptables – t nat -A POSTROUTING -j SNAT -to-source 192.168.1.20-192.168.1.25
%%%Restringir el número de conexiones concurrentes a un servidor por IP%%%Puedes utilizar el módulo connlimit para crear estas restricciones. Permitir 3 conexiones SSH por cliente:
iptables -a entrada -p tcp syn dport 22 -m connlimit -connlimit-dalt 3 -j Rebutjar
Limitar el número de conexiones HTTP a 20:
iptables -p tcp syn duport 80 – M Connlimit Connlimit-A dalt 20 Connlimit-mask 24 -j Drop
Donde:* --connlimit-above 3 : Match if the number of existing connections is above 3.* --connlimit-mask 24 : Group hosts using the prefix length. For IPv4, this must be a number between (including) 0 and 32.%%%Eliminar o aceptar paquetes desde una MAC Address
iptables -a entrada -m mac -mac-font 00: 0f: ea: 91 : 04: 08 -V Drop
## * Només accepta trànsit per al port TCP # 22 de Mac 00: 0f: EA: 91: 04: 07 * ## iptables -a entrada -p tcpdestination-port 22 -m mac Mac-Font 00: 0f: EA: 91: 04: 07 -j accepta
%%%Prevenir ataques DoS* -Limit 25/minute : Limita a sólo 25 conexiones por minuto.* -Limit-burst 100: Indica que el valor de limit/minute será forzado sólo después del número de conexiones en este nivel
iptables -a entrada -p tcp dport 80 -m límit límit 25 / Minut -Limit-Burst 100 -J accept
%%%Permitir redirección de puertos.* Ejemplo puerto 422 redirigimos al 22, con lo que podemos tener conexiones al puerto 22 y al puerto 422 por ssh.
iptables -t nat -a prerouting -p tcp -d 192.168.102.37 dport 422 -j dnat a 192.168.102.37:22 Iptables -a entrada -i eth0 -p TCP DPort 422 -M State State New, establert -j accepta iptables -a sortida -o eth0 -P tcpsport 422 -m estat estatal establert -j accepta
Logar y eliminar paquetes:
iptables -a entrada -i eth1 -s 10.0.0.0/8 -j log-log-prefix ‘ip_spoof A: “iptables -a entrada -i eth1 -s 10.0.0.0 / 8 -J Drop
Logar y eliminar paquetes limitando el número de entradas repetidas en el LOG
iptables -a entrada -i eth1 -s 10.0.0.0/8 -M límit límit límit 5 / m limit-esclatar 7 – j Log-Log-Prefix “IP_SPOOF A:” IPTABLES -Un Entrada -i eth1 -s 10.0.0.0/8-D Drop
Sacar en el log los paquetes caídos.* Primero creamos una cadena llamada LOGGING:
iptables -n Registre
Luego todas las conexiones entrantes vayan por la cadena LOGGING
iptables -a entrada -j registre
iptables -a registre -m Límit límit 2 / min -j Log-log-prefix de registre de registre ‘iptables va caure: “-Log-Nivell 7
Y los bloqueamos:
iptables -a registre -j drops
%%%Listado de reglas ejemplo para puertos TCP/UDP comunes:* Replace ACCEPT with DROP to block port:
## Obrir port ssh tcp port 22 ## iptables -a entrada – m Estat Estat nou -m TCP -P TCP DPort 22 -C accepta iptables -a entrada -s 192.168.1.0/24 -M Estat Estat nou -P TCP DPort 22 -C accepta
## obre tasses (Servei d’impressió) UDP / TCP Port 631 per a usuaris de LAN ## iptables -a entrada -s 192.168.1.0/24 -P UDP -M UDP -DPORT 631 -JAc accepta iptables -a entrada -s 192.168.1.0/24 -P tcp -m tcp -dport 631 -j accept
## permetre Time Sync a través de NTP per a usuaris de LAN (Open UDP Port 123) ## iptables -a entrada -s 192.168.1.0/24 -M StatestaTate New -p UDP DPort 123 -J accepta
## obre el port TCP 25 (SMTP) Per a tots els ## iptables -a entrada -m Estat Estat nou -P TCP DPort 25 -C accepta
- Obriu els ports del servidor DNS per a tots ##
iptables -a entrada -m estat de l’estat nou -p udp dport 53 -j accepta iptables -a entrada -m estat estat nou -p tcpdport 53 -S accepta
## Obre http / https (Apache) Port de servidor a tots els ## iptables -a entrada -M Estat State New -p TCP DPort 80 -JAC accepta iptables -a entrada -M Estat Estat nou -P TCP DPort 443 -J accepta
## Obriu el port TCP 110 (POP3) per a tots els ## iptables -a entrada -M estat de l’estat nou -P TCP DPort 110 -j accepta
## Obriu el port TCP 143 (IMAP) per a tots ## iptables -a entrada -m estat estatal nou -P tcp dport 143 -j accepta
## accés obert a samba f Servidor d’Ile per a usuaris de LAN només ## iptables -a entrada -s 192.168.1.0/24 -m Estat Estat nou -P TCP DPort 137 -J accepta iptables -a entrada -s 192.168.1.0/24-State State State New -p TCP DPort 138 -Ac accepta iptables -a entrada -s 192.168.1.0/24 -M Estat Estat nou -P TCP DPort 139 -C accepta iptables -a entrada -s 192.168.1.12 -m State State State nou -p TCP DPort 445 -JAC accepta
## accés obert al servidor intermediari per a usuaris de LAN només ## iptables -a entrada -s 192.168.1.0/24 -M Estat Estat nou -P TCP DPort 3128 -J accept
## accés obert al servidor mySQL per a usuaris de lan només ## iptables -i entrada -p tcp -dport 3306 -j accepta ///