Segue abaixo, uma sugestão de configuração básica para o
IPtables.
É somente um cabeçalho com regras iniciais, sendo que você pode adaptá-las livremente, acrescentar suas próprias regras, comentar o que não precisa, etc.
#!/bin/bash
#
#Desabilitando o tráfego entre as placas
#################################
echo 0 > /proc/sys/net/ipv4/ip_forward
#
##Apagando e restaurando as chains e tabelas
######################################
iptables -Z # Zera as regras de todas as chains
iptables -F # Remove as regras de todas as chains
iptables -X # Apaga todas as chains
#iptables -t nat -Z
#iptables -t nat -F
#iptables -t nat -X
#iptables -t mangle -Z
#iptables -t mangle -F
#iptables -t mangle -X
#
##Proteção contra ping, SYN Cookies, IP Spoofing e proteções do kernel
##########################################################
echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Syn Flood (DoS)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Port scanners
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Sem resposta remota
for i in /proc/sys/net/ipv4/conf/*; do
echo 0 > $i/accept_redirects # Sem redirecionar rotas
echo 0 > $i/accept_source_route # Sem traceroute
echo 1 > $i/log_martians # Loga pacotes suspeitos no kernel
echo 1 > $i/rp_filter # Ip Spoofing
echo 1 > $i/secure_redirects; done # Redirecionamento seguro de pacotes
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # Sem ping e tracert
#
# Carregando os módulos - Não é necessário todos os módulos,
# somente aqueles que você irá utilizar.
# O iptables, por padrão, carrega os módulos principais automaticamente.
# Para identificar qual módulo adicional carregar, você deve elaborar todo o script
# e depois de acordo com o nome do alvo utilizado, você carrega o mesmo módulo.
# Por exemplo, se você utilizar a seguinte regra:
# iptables -A FORWARD -p udp -m multiport --dport 80,1024:65535 -j DROP
# o módulo "ipt_multiport" deve ser carregado.
# Abaixo estão quase todos os módulos.
################################
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_gre
#
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_NETMAP
#
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tos
modprobe ipt_mark
modprobe ipt_tcpmss
modprobe ipt_string
modprobe ipt_statistic
#
modprobe nf_nat_pptp
modprobe nf_nat_proto_gre
#
# Definindo políticas padrões
######################
iptables -P INPUT DROP # iptables a política padrão da chain INPUT é proibir tudo
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
# Liberando a Loopback
####################
iptables -A INPUT -i lo -j ACCEPT
#
## Regras de segurança na internet e acessos
#####################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i ethx -j DROP # Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i ethx -j DROP # Interface de entrada da internet
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
# Redirecionamento para o Squid e mascaramento/compartilhamento
###########################################
iptables -t nat -A PREROUTING -i ethx -p tcp --dport 80 -j REDIRECT --to-port 3128 # Interface da rede interna
iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE # Interface de entrada da internet
#
# A partir daqui você pode inserir as regras de liberação e bloqueio, não esqueça habilitar no final o tráfego entre as placas.
#
# Habilitando o tráfego entre as placas
##########################
echo 1 > /proc/sys/net/ipv4/ip_forward
#
Depois de criar o script (com o nome de, por exemplo,
firewall.sh), lembre de dar permissão de execução:
# chmod +x /caminho/do/script/firewall.sh
Exemplos:
- No Debian é em: /ect/init.d/firewall.sh
- No Slackware é em: /etc/rc.d/init.d/firewall.sh
- No Red Hat é em: /etc/rc.d/init.d/firewall.sh
- No openSuse é em: /ect/init.d/firewall.sh
O nome do script, aconselho a não colocar
firewall.sh, pois é muito óbvio, coloque outro nome de sua escolha.
Aqui tem uma regra simples, feita pelo próprio
Rusty Russel, à qual você pode acrescentar para dar maior segurança na sua rede interna:
## Carregando módulos de acompanhamento de conexões (desnecessário se compilados diretamente no kernel).
insmod ip_conntrack
insmod ip_conntrack_ftp
## Cria chain que rejeita novas conexões, exceto as vindas da rede interna.
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT # em ppp0 coloque a sua interface de entrada da internet
iptables -A block -j DROP
## Saltar das chains INPUT e FORWARD para a chain block.
iptables -A INPUT -j block
iptables -A FORWARD -j block
Retirado deste documento feito pelo próprio:
Conclusão: Estude o IPtables. Estude o IPtables. Estude o IPtables...