Saudações...
Esta dica é o resultado de uma implementação que fiz em um firewall usando Conectiva 10, que nada mais é do uma compilação de várias informações que garimpei na web com um leve toque pessoal ;-), como me ajudou resolvi compartilhar com a comunidade, as referencias no final. Vamos lá:
1 - Instalar o iptables:
# apt-get install iptables
2 - Crie no diretório /etc/init.d/ um arquivo chamado iptables com o seguinte conteúdo:
#! /bin/sh
# description: Inicialização do iptables
#
# chkconfig: 2345 80 30
# processname: iptables
# pidfile: /var/run/iptabless.pid
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
IPTABLES="/usr/sbin/iptables"
varok(){
success
echo -en "\n"
return 0
}
if [ ${NETWORKING} = "no" ]
then
exit 0
fi
case "$1" in
start)
gprintf "Iniciando o serviço de %s: " "Firewall"
success
############ Regras do firewall #######
# Ativa roteamento de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward
echo -en "\nFirewall: Ativa roteamento:"
varok
# Anula pacotes ICMP (Ping)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo -en "Firewall: Protege contra Ping:"
varok
# Protege contra ICMP Broadcasting
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo -en "Firewall: Protege contra ICMP Broadcasting:"
varok
# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo -en "Firewall: Protege contra synflood:"
varok
# Proteções contra portscanners
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
# $IPTABLES -A FORWARD -m unclean -j DROP
echo -en "Firewall: Protege contra portscanners:"
varok
# Proteções diversas
$IPTABLES -N VALID_CHECK
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP
echo -en "Firewall: Protege contra ataques diversos:"
varok
# Políticas Default
$IPTABLES -t filter -P INPUT ACCEPT
echo -en "Firewall: Política Default: INPUT ACCEPT:"
varok
$IPTABLES -t filter -P FORWARD DROP
echo -en "Firewall: Política Default: FORWARD DROP:"
varok
$IPTABLES -t filter -P OUTPUT ACCEPT
echo -en "Firewall: Política Default: OUTPUT ACCEPT:"
varok
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j MASQUERADE
echo -en "Firewall:MASQUERADE (NAT) da Rede 192.168.1.0"
varok
########## Coloques suas regras aqui ############
# Se quiser que apareça OK no final da regra acrescente as linhas
# seguintes após a regra.
# echo -en "Firewall:MASQUERADE (NAT) da Rede 192.168.1.0"
# varok
#####################################
;;
stop)
gprintf "Parando o serviço de %s: " "IPtables"
echo
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X VALID_CHECK
success
;;
*)
gprintf "Uso: iptables (start|stop)"
echo
;;
esac
exit 0
3 - Em seguida, forneça as permissões necessárias:
# chmod 755 iptables
4 - Você deve colocar o script criado para que ele possa ser iniciado:
# chkconfig --add iptables
# chkconfig --level 35 iptables on
5 - Pronto, agora é só iniciar como serviço:
# service iptables start
OBS: Para parar é só digitar:
# service iptables stop
Você irá ver algo parecido com:
Iniciando o serviço de Firewall: [ OK ]
Firewall: Ativa roteamento: [ OK ]
Firewall: Protege contra Ping: [ OK ]
Firewall: Protege contra ICMP Broadcasting: [ OK ]
Firewall: Protege contra synflood: [ OK ]
Firewall: Protege contra portscanners: [ OK ]
Firewall: Protege contra ataques diversos: [ OK ]
Firewall: Política Default: INPUT ACCEPT: [ OK ]
Firewall: Política Default: FORWARD DROP: [ OK ]
Firewall: Política Default: OUTPUT ACCEPT: [ OK ]
Firewall:MASQUERADE (NAT) da Rede 192.168.1.0 [ OK ]
Bem, é isso aí, espero que ajude...
Referências
Conectiva:
http://www.conectiva.com/doc/livros/.../ch14s03.html#netfilter
DICA: Segurança no Iptables por Diego Apolinario G. da Silva
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1375
Site oficial do Iptables:
http://www.netfilter.org
[1] Comentário enviado por
leo_mineiro em 12/02/2005 - 13:03h:
Excelente tutorial, me ajudou muito!
[2] Comentário enviado por
Cannabis.r0x em 15/03/2005 - 22:21h:
Porque quando vc da :: service iptables stop ......... o OK fica la linha de baixo ?
Porque quando vc da :: service iptables status .... ele não mostra ??
Porque quando vc STOPA o serviço ele realmente não para ??
[3] Comentário enviado por
tgonet em 01/12/2005 - 11:30h:
Olá. Muito bom seu tutorial, mas não estou conseguindo executar aqui na minha maquina. quando digito "service iptables start" parece o seguinte erro na tela:
: bad interpreter: Arquivo ou diretório não encontrado
Por que isso? :(
OBS: Utilizo o Conectiva Linux 10
[4] Comentário enviado por
hardboot em 10/02/2006 - 10:28h:
vc deve fazer o seguinte ./iptables start para inicializer o serviço
e ./iptables stop para parar o serviço.
[5] Comentário enviado por
econt_linux em 05/05/2006 - 12:06h:
Camarada!
Mto bom! Parabens!
Só tive um problema igual ao do "Cannabis", quando dou um STOP no serviço ele não pára realmente. Por exemplo, não consigo mais pingar o servidor na rede.
Grato!
[6] Comentário enviado por
lizander em 26/06/2006 - 16:34h:
Aewww
Mto bom cara..So que estou com alguns problemas!
na linha 9 : /etc/sysconfig/network
ta dando o seguinte erro: ACCESSO NEGADO
na linha 18 : if [ ${NETWORKING} ="no"]
ta dando o seguinte erro: [=no]: command not found
alguem poderia me ajudar???
USO CL 10 tbm...
[7] Comentário enviado por
bigfootmachado em 01/11/2006 - 08:37h:
Eaee, cara, sou novato no linux, uso o CL 10, qd vou instalar o iptbles (apt-get install iptables) aparece:
error: cannot get exclusive lock on /var/lib/rpm/Packages
error: cannot open Packages index using db3 - Operação não permitida (1)
error: cannot open Packages database in /var/lib/rpm
E: não foi possivel abrir a base de dados RPM
se puder me ajudar agradeço
T+
[8] Comentário enviado por
crolip em 14/12/2006 - 20:24h:
isso funfa no redhat tambem?
[9] Comentário enviado por
rnduart em 27/04/2011 - 09:50h:
Ainda não usei esse iptables, mas achei muito organizado, da para achar o que se quer rápidinho.