Actualizado o domingo, 19 de xuño de 2016
Iptables é un sistema de firewall ligado ao kernel de Linux. Ao contrario do que pode parecer Iptables non son como un servidor que o iniciamos ou paramos, houbo algunha vulnerabilidade que un DDoS permitiu, pero sempre será máis eficaz que as aplicacións que escoitan nun certo porto TCP. Iptable está integrado co kernel, é parte do sistema operativo. Podemos crear, modificar, eliminar todo tipo de regras, aquí propoñeremos algúns exemplos.
Restablecer as regras de firewall de iptables
iptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -Fiptables -t nat -F
Ver o estado do seu firewall e as regras da lista
Escriba o seguinte comando como root:
iptables -L -n -viptables -n -L -v --line-numbers iptables -L INPUT -n -viptables -L OUTPUT -n -v --line-numbers
Eliminar regras 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
pode ser eliminado por número de regra
iptables -D INPUT 4
ou especifique unha regra que coincide con
iptables -D INPUT -s 202.54.1.1 -j DROP
Establece as políticas predeterminadas de firewall a Eliminar todo o tráfico:
iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROPiptables -L -v -n
Só ten que bloquear o tráfico entrante
para eliminar todos os paquetes de entrada / enviados, pero permiten o tráfico saínte, o tipo :
iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPTiptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPTiptables -L -v -n
Eliminar enderezos de rede privada na interface pública (asumindo eth1 como público interface)
bloque IP:
iptables -A INPUT -s 192.168.1.5 -j DROPiptables -A INPUT -s 192.114.71.13 -j DROP
Gardar regras:
iptables-save > /root/iptables.fw
en CentOS / Rhel / Fedora Linux,:
service iptables save
RESULTAR Regras :
iptables-restore < /root/iptables.fw
Restaurar en CentOS / RHEL / Fedora Linux:
service iptables restart
pode Recarga as regras automaticamente ao reiniciar o servidor:
vi /etc/rc.local
# Reload IPTABLES Rules automatically on restart/sbin/iptables-restore < /root/iptables.fw
en CentOS pode gardar as regras para recargalas Automáticamente:
/etc/sysconfig/iptables
Permitir todo o tráfico de loopback e eliminar todo o tráfico a 127/8 que non usa LO0
iptables -A INPUT -i lo -j ACCEPTiptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
Eliminar calquera paquete TCP que non se iniciou coa bandeira activa
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Aceptar todas as conexións entrantes establecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Eliminar calquera paquete non válido que non pode ser Identificado
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
bloquear o tráfico ao dominio de Facebook.com, miramos a IP de Facebook.com e despois o seu intervalo IPS
Creamos a regra para non permitir o acceso
iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP
tamén por nome de dominio, pero non é 100% efectivo.
iptables -A OUTPUT -p tcp -d www.facebook.com -j DROPiptables -A OUTPUT -p tcp -d facebook.com -j DROP
Permitir conexións entrantes ao porto 21 dun IP 11.22.33.44
iptables -A INPUT -p tcp -m state --state NEW --dport 21 --source 11.22.33.44
permitir todo o tráfico entrante 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
permitir a saída SSH
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
Permitir tráfico 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
permitir https saíntes.
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 regras con multipport
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
negar Todas as conexións entrantes ao porto 21.
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -j DROP
Eliminar a primeira regra de entrada
Bloom. Permitir ou permitir a solicitude ICMP Ping
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:
### ** Asumiu que a política de entrada por defecto está definida para caer ** ######## ## ## iptables -a entrada -p -p ICMP -ICMP-Type Echo-Reply -j Acepta Iptables -a entrada -P icmp -Icmp-Tipo de destino: inaccesible -j aceptar o tempo de IPTables -A tempo -J acepta
## ** Todo o noso servidor para responder a ping ** ## Iptables -a entrada -P icmp -Icmp-type echo-petición -j acepta
iptables -a entrada -p icmp -Icmp-tipo eco-petición -j aceptar iptables -a saída -p icmp – ICMP- Tipo eco-reply -j acepta
Permitir PING de dentro a fuera.
iptables -a saída -p ICMP -Icmp-tipo echo-petición -j acepta iptables -a entrada – p icmp -Imp-type echo-reply -j acepta
Permitir tráfico DNS saliente.
iptables -a saída -p udp -o eth0 -dport 53 -j aceptar iptables -a entrada – P udp -i eth0 -sport 53 -j acepta
Abrir un rango de puertos de entrada
iptables -a entrada -m State State ne ne ne W -m TCP -P TCP DPT 7000: 7010 -J Aceptar
Abrir un rango de IPs
## só acepta a conexión a TCP Port 80 (Apache) IP IP está entre 192.168 .1.100 e 192.168.1.200 ## iptables -A entrada -P TCP destino-Port 80 -M iprange src-Range 192.168.1.100-192.168.1.200 J ACCEPT
## NAT Exemplo ## iptables – T nat -a postruting -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-enriba 3 -j rexeitar
Limitar el número de conexiones HTTP a 20:
iptables -p tcp syt dport 80 – m Connlimit Connlimit-Arriba 20 Connlimit-Máscara 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-fonte 00: 0F: EA: 91 : 04: 08 -J caída
## * só acepta o tráfico para o porto TCP # 22 de Mac 00: 0F: EA: 91: 04: 07 * ## Iptables -a entrada -P TCPdestinación-Port 22 -m Mac Mac-fonte 00: 0f: EA: 91: 04: 07 -J Aceptar
%%%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 -p tcp dport 80 -m límite límite 25 / minuto -Limit-Burst 100 -j acepta
%%%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 prerrouting -p tcp -d 192.168.102.37 DPport 422 -j dnat a 192.168.102.37:22 Iptables -a entrada -i Eth0 -p TCP DPORT 422-MT Estado Estado novo, establecido -J aceptar Iptables -a saída -o eth0 -p TCPSport 422 -m Estado Estado establecido -J Aceptar
Logar y eliminar paquetes:
iptables -a entrada -i ETH1 -S 10.0.00/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ímite límite 5 / m Limit-Burst 7 – j log -log-prefix “ip_spoof a:” iptables -a entrada -i eth1 -s 10.0.00/8 -j gota
Sacar en el log los paquetes caídos.* Primero creamos una cadena llamada LOGGING:
iptables -n Rexistro
Luego todas las conexiones entrantes vayan por la cadena LOGGING
iptables -a entrada -j Rexistro de rexistro
IV id = ”
iptables -a rexistro de límite de rexistro 2 / min -j prefixo de rexistro de rexistro” Packet Iptables caeu: “-Log-nivel 7
Y los bloqueamos:
Iptables -a exceso de rexistro -J
%%%Listado de reglas ejemplo para puertos TCP/UDP comunes:* Replace ACCEPT with DROP to block port:
## Open Port SSH TCP Port 22 ## Iptables -a entrada – m State State New-M TCP -P TCP DPORT 22 -J Acepta Iptables -a Input -s 192.168.10/24 -m State State New -p TCP DPORT 22 -J Aceptar
## APERA CUPS (servizo de impresión) UDP / TCP Port 631 para usuarios de LAN ## Iptables -a entrada -s 192.168.1.0/2 -p udp -m UDP -DPORT 631 -J Acepta Iptables -a entrada -S 192.168.10/2 -p TCP -m TCP -Dport 631 -J Acepta
## Permitir Time Sync a través de NTP para usuarios de LAN (Open UDP Port 123) ## Iptables -a entrada -S 192.168.10/24 -m Statestate New -p UDP DPORT 123 -J Aceptar
## Open TCP PORT 25 (SMTP) para todos ## Iptables -a entrada -m State State New -p TCP DPORT 25 -J Acepta
- Portos de servidor DNS Aberto para todos ##
iptables -a entrada -m State State New -p UDP DPORT 53 -J Aceptar Iptables -a entrada -m State State New -p TCPDPort 53 -j acepta
## Abra http / https (Apache) Porto do servidor a todos ## Iptables -a entrada -m State State New -p TCP DPORT 80 -J Acepta Iptables -a entrada -M State State New -p TCP DPORT 443 -J Aceptar
## Open TCP Port 110 (POP3) para todos ## Iptables -a entrada -m State State New -p TCP DPORT 110 -J Aceptar
## Open TCP Porto 143 (IMAP) para todos ## Iptables -a entrada -m State State New -p TCP DPORT 143 -J Aceptar
## Open Access to samba f Ile Server para usuarios de LAN só ## Iptables -a Input -s 192.168.1.0/24 -m State State New -p TCP DPORT 137 -J Acepta Iptables -a Input -s 192.168.10/24 -m State State New -p TCP DPORT 138 -J Acepta Iptables -a Input -S 192.168.10/24 -m State State New -p TCP DPORT 139 -J Acepta Iptables -a Input -S 192.168.10/200 -m State State New -p TCP DPORT 445 -j acepta
## Open Acceso ao servidor proxy para usuarios de LAN só ## Iptables -a entrada de entrada 192.168.10/0/200 -m State State New -p TCP DPORT 3128 -J Aceptar
## Open Access ao servidor MySQL para usuarios de LAN só ## Iptables -i Input -P TCP -Dport 3306 -j acepta ///