sábado, 23 de janeiro de 2010

Stateless

iptables -A INPUT -i eth0 -d 192.168.0.0/24 -p tcp -m multiport --sports 20,21,22,25,80,110,443 -m tcp --tcp-flags ACK ACK -j ACCEPT

iptables -A OUTPUT -o eth0 -s 192.168.0.0/24 -p tcp -m multiport --dports 20,21,22,25,80,110,443 -m tcp --tcp-flags SYN SYN -j ACCEPT

iptables -A OUTPUT -o eth0 -s 192.168.0.0/24 -p tcp -m multiport --dports 20,21,22,25,80,110,443 -m tcp --tcp-flags ACK ACK -j ACCEPT

Statefull

iptables -A FORWARD -s 192.160.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A FORWARD -d 192.160.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -m state --state INVALID -j DROP

Datagrama IPTABLES


MSN

Bloquear MSN via Firewall

iptables -I FORWARD -p tcp --dport 1863 -j DROP

ATENÇÃO: Ao fazer isso o MSN tentará se conectar pela porta 80, você então deverá bloquea-lo através do squid.

REDIRECT

Redirecionar trafego da porta 80 para a porta 3128 ( squid )

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

FTP

Liberando conexões FTP para as máquinas da rede

iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 20 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT

Carregue os módulos de acompanhamento de conexão para o serviço FTP

modprobe ip_nat_ftp

modprobe ip_conntrack_ftp

MASQUERADE - Compartilhar internet no Linux

Limitando o tamanho de pacotes IP com tamanho MSS

iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

Mascarando a conexão

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE

Habilitando o repasse de pacotes

echo 1 > /proc/sys/net/ipv4/ip_forward

ATENÇÃO: Para as máquinas da rede acessarem servidores FTP através de SNAT/MASQUERADE é necessário carregar alguns módulos.

modprobe ip_nat_ftp

modprobe ip_conntrack_ftp

Módulo geoip

Bloqueando as máquinas da rede para acessarem servidores do Brasil

iptables -A FORWARD -m geoip --dst-cc BR -j DROP

Bloqueando o acesso a servidores do Estados Unidos, França e Canadá

iptables -A FORWARD -m geoip --dst-cc US,FR,CA -j DROP

Fazendo o servidor recusar conexões vindas do Afeganistão e Argentina

iptables -A INPUT -m geoip --src-cc AF,AR -j DROP

IMPORTÂNTE: A lista de países usadas pelo geoip segue a ISO3166

sexta-feira, 22 de janeiro de 2010

Módulo iprange

Liberando acesso a porta 80 para as máquinas 192.168.0.131 até 192.168.0.140

iptables -A FORWARD -p tcp --dport 80 -m iprange --src-range 192.168.0.131-192.168.0.140 -j ACCEPT

Módulo condition

iptables -A FORWARD -p tcp --dport 80 -m condition --condition internet -j DROP

echo 1 > /proc/net/nf_condition/internet

Módulo layer7

Liberando acesso ao msn para uma máquina da rede

iptables -A FORWARD -s 192.168.0.3 -m layer7 --l7proto msnmessenger -j ACCEPT

Módulo time

Liberando acesso para as máquinas da rede na porta 80 de 8 ás 9 da manhã

iptables -A FORWARD -p tcp --dport 80 -m time --timestart 8:00 --timestop 9:00 -j ACCEPT

Módulo connlimit

Limitando número de conexões a um serviço por host

iptables -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 1 -j DROP

Módulo comment

Comentando uma regra

iptables -A INPUT -m comment --comment "Fazendo teste" -j ACCEPT

Módulo quota

iptables -A FORWARD -p tcp --dport 80 -m quota --quota 3000 -j ACCEPT

Trabalhando com NAT

iptables -t nat -A PREROUTING -d 200.157.231.195 -p tcp --dport 5900 -j DNAT
--to-destination 192.168.0.253

iptables -t nat -A POSTROUTING -s 192.168.0.253 -p tcp --dport 5900 -j SNAT
--to-source 200.157.231.195

iptables -A FORWARD -d 192.168.0.253 -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT

Liberando acesso remoto por ssh com módulo recent

iptables -A INPUT -p tcp --dport 2221 -m recent --set --name SSH --rsource -j DROP

iptables -A INPUT -p tcp --dport 22 -m recent --rcheck --name SSH --rsource -j ACCEPT

Módulo multiport

Liberando acesso a serviços específicos da máquina de firewall

iptables -A INPUT -p tcp -m multiport --dports 21,25,80,110 -m state --state NEW,ESTABLISHED -j ACCEPT

Permitindo que firewall e rede estabeleçam conexão com outras máquinas

iptables -A INPUT -p ! icmp -m state --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -p ! icmp -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A FORWARD -d 192.168.0.0/24 -p ! icmp -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p ! icmp -m state --state NEW,ESTABLISHED -j ACCEPT

Liberando ping para máquina de firewall e para a rede

iptables -A INPUT -p icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT

iptables -A FORWARD -p icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT

iptables -A FORWARD -p icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT

Módulo recent

Proteção contra "port scanner"

iptables -A INPUT -p tcp -m multiport --dports 1,5,10 -m recent --set --name DENY --rsource -j DROP

iptables -A INPUT -m recent --rcheck --name DENY --rsource -j DROP

Liberando acesso para a interface local

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Setando a política padrão para DROP

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP