Buckminster
(usa Debian)
Enviado em 20/05/2013 - 20:17h
Antes de mais nada apague aquela gambiarra braba de dentro do /etc/rc.local. Chegou a me dar um nervoso aquilo.
Crie um arquivo vazio em /etc/init.d com o nome de firewall.sh ou dê o nome que você quiser.
#vim /etc/init.d/firewall.sh << você use o teu editor de texto preferido.
Coloque as regras abaixo dentro dele.
Salve e saia.
#!/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 das chains
iptables -F # Remove as regras das chains
iptables -X # Apaga 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
#
#Carregando os módulos.
###############
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
##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 # adiciona regra na chain INPUT para liberar a loopback
#
##Regras de segurança na internet e de aceitação de pacotes
######################################
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 eth0 -j DROP # << Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i eth0 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
##Liberando portas somente para a rede interna (essas 10 regras abaixo você pode comentar as que você não quer liberar)
#########################################
iptables -A INPUT -p tcp --dport 3128 -i eth1 -j ACCEPT #Proxy
iptables -A INPUT -p tcp --dport 80 -i eth1 -j ACCEPT #HTTP
iptables -A INPUT -p tcp --dport 21 -i eth1 -j ACCEPT #FTP
iptables -A INPUT -p tcp --dport 53 -i eth1 -j ACCEPT #DNS
iptables -A INPUT -p udp --dport 53 -i eth1 -j ACCEPT #DNS
iptables -A INPUT -p tcp --dport 25 -i eth1 -j ACCEPT #SMTP
iptables -A INPUT -p tcp --dport 110 -i eth1 -j ACCEPT #SSL
iptables -A INPUT -p udp --dport 110 -i eth1 -j ACCEPT #SSL
#iptables -A INPUT -p tcp --dport 8080 -j ACCEPT #HTTP - Apache
#iptables -A INPUT -p udp --dport 8080 -j ACCEPT #HTTP - Apache
#
# Habilita o roteamento no kernel #
######################
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Redirecionando para o Squid
###################
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
#
# Compartilha a internet
#############
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 200.xxx.xxx.xxx # << aqui você coloca o IP que está fixo na placa de rede do servidor, a eth0, que é a placa de entrada da Internet.
#
# Acesso externo
##########
iptables -A FORWARD -p tcp --sport 8080 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.149:8080
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 8080 -j DNAT --to-destination 10.0.0.149:8080
#
iptables -A FORWARD -p tcp --sport 37778 -j ACCEPT
iptables -A FORWARD -p tcp --dport 37778 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 37778 -j DNAT --to-destination 10.0.0.149:37778
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 37778 -j DNAT --to-destination 10.0.0.149:37778
#
iptables -A FORWARD -p tcp --sport 34567 -j ACCEPT
iptables -A FORWARD -p tcp --dport 34567 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 34567 -j DNAT --to-destination 10.0.0.149:34567
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j DNAT --to-destination 10.0.0.149:34567
#
iptables -A FORWARD -p tcp --sport 8081 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8081 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8081 -j DNAT --to-destination 10.0.0.150:8081
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 8081 -j DNAT --to-destination 10.0.0.150:8081
#
iptables -A FORWARD -p tcp --sport 37778 -j ACCEPT
iptables -A FORWARD -p tcp --dport 37778 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 37778 -j DNAT --to-destination 10.0.0.150:37778
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 37778 -j DNAT --to-destination 10.0.0.150:37778
#
iptables -A FORWARD -p tcp --sport 34567 -j ACCEPT
iptables -A FORWARD -p tcp --dport 34567 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 34567 -j DNAT --to-destination 10.0.0.150:34567
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j DNAT --to-destination 10.0.0.150:34567
#
####################### FIM ############################
Dê permissão de execução:
#chmod +x /etc/init.d/firewall.sh
E coloque em /etc/rc.local antes de 'exit 0', assim:
/etc/init.d/firewall.sh start
exit 0
Dessa maneira o iptables inicia junto com o sistema e você pode iniciar, parar e reiniciar no terminal com o comando:
#/etc/init.d/firewall.sh start, stop ou restart
Segue link para o Manual do IPtables traduzido para te auxiliar futuramente:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/