Ajuda com firewall iptables...

Iniciado por marieldejesus12, 17 de Abril de 2008, 23:13

tópico anterior - próximo tópico

marieldejesus12

Bom galera,

to fazendo um script de firewall pra mim  e queria que vc's dessem uma olhada, tipo, nas regras, se a ordem das regras estao certas e tbm se as regras estao certas pq eu coletei tudo na net...

aki funciona assim o meu servidor:

>servidor de impressao
>controlador master browser do samba

preciso dos servicos
>msn
>skype
>torrent (azureus)
>navegacao de internet
>eu acesso algumas makinas de fora por ssh e vnc (22 e 9800 la na remota)
>downloads
>ftp externo (de um kra la no sul)

sera que isso vai funcionar??? vejam se ta tudo certo pra mim e se tiverem algo a acrescentar e bem vindo...


#!/bin/bash

firewall_start(){

echo "Carregando o Firewall..."
modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

echo "Ativando politica DROP..."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Abre para uma faixa de endereços da rede local
echo "Liberando Acesso Local..."
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT

# Ignora pings
echo "Ignorando Pings..."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Proteção contra ping de morte
echo "Protegendo contra ping-de-morte..."
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Proteção contra Port scanners ocultos
echo "Protegendo contra Port scanners ocultos..."
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Proteção contra IP spoofing
echo "Protegendo contra IP Spoofing..."
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

# Protege contra synflood
echo "Protegendo contra Synflood..."
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Proteção contra ICMP Broadcasting
echo "Protegendo contra ICMP Broadcasting..."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Bloqueia traceroute
echo "Bloqueando Traceroute..."
iptables -A INPUT -p udp --dport 33435:33525 -j DROP

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
echo "Protegendo contra Portscanners, Ping of Death, Ataques DoS, etc..."
iptables -A INPUT -m state --state INVALID -j DROP

# Abre para a interface de loopback.
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.
echo "Abrindo para a interface loopback..."
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Fecha as portas udp de 1 a 1024
echo "Fechando portas udp de 1 a 1024..."
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 59229 -j DROP

#Impedindo repasse de pacotes prejudiciais
echo "Impedindo repasse de pacotes prejudiciais..."
iptables -A FORWARD -M unclean -j DROP

#Libera acesso ao MSN: Troque os ACCEPT por DROP para bloquear.
echo "Liberando acesso ao MSN..."
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT
iptables -A INPUT -d loginnet.passport.com -j ACCEPT

# Libera o acesso ao Skype
echo "Liberando acesso ao Skype..."
iptables -A INPUT -p tcp --dport 23399 -j ACCEPT

#Liberando acesso sevidor DHCP
echo "Liberando acesso ao servidor DHCP..."
iptables -t filter -A INPUT -s 192.168.0.0/24 -i eth1 --dport 67 -j ACCEPT

#Habilitando porta de SSH
echo "Liberando acesso SSH..."
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

# Redirecionamento de porta para o Proxy transparente
echo "Redirecionando porta para o Squid..."
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Compartilhando a internet: troque o eth0 pela interface que recebe a conexão com a net.
echo "Compartilhando a Internet..."
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#liberando o acesso a P2P e Torrent
echo "Liberando P2P & Torrent..."
iptables -A INPUT -p tcp --dport 6881:6999 -j ACCEPT
iptables -A INPUT -p tcp --sport 6881:6999 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6881:6999 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6881:6999 -j ACCEPT

# Estas regras são o coração do Firewall,
# elas bloqueiam qualquer conexão que não tenha sido permitida acima, justamente por isso são a última da cadeia.
echo "Aplicando 'coração' do firewall..."
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -p icmp -j DROP


echo "O Firewall está carregado..."
sleep 1
echo "Configured By Mariel de Jesus"
sleep 1
}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT   ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT  ACCEPT
}

case "$1" in
"start")
firewall_start
        ;;
"stop")
        firewall_stop
echo "O Firewall está sendo desativado"
sleep 2
echo "ok."
        ;;
  "restart")
echo "O Firewall está sendo desativado"
sleep 1
echo "ok."
        firewall_stop; firewall_start
        ;;
      *)
        iptables -L -n
esac

csat

Citação de: marieldejesus12 online 17 de Abril de 2008, 23:13
Bom galera,

to fazendo um script de firewall pra mim  e queria que vc's dessem uma olhada, tipo, nas regras, se a ordem das regras estao certas e tbm se as regras estao certas pq eu coletei tudo na net...

aki funciona assim o meu servidor:

>servidor de impressao
>controlador master browser do samba

preciso dos servicos
>msn
>skype
>torrent (azureus)
>navegacao de internet
>eu acesso algumas makinas de fora por ssh e vnc (22 e 9800 la na remota)
>downloads
>ftp externo (de um kra la no sul)

sera que isso vai funcionar??? vejam se ta tudo certo pra mim e se tiverem algo a acrescentar e bem vindo...


#!/bin/bash

firewall_start(){

echo "Carregando o Firewall..."
modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

echo "Ativando politica DROP..."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Abre para uma faixa de endereços da rede local
echo "Liberando Acesso Local..."
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT

# Ignora pings
echo "Ignorando Pings..."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Proteção contra ping de morte
echo "Protegendo contra ping-de-morte..."
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Proteção contra Port scanners ocultos
echo "Protegendo contra Port scanners ocultos..."
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Proteção contra IP spoofing
echo "Protegendo contra IP Spoofing..."
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

# Protege contra synflood
echo "Protegendo contra Synflood..."
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Proteção contra ICMP Broadcasting
echo "Protegendo contra ICMP Broadcasting..."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Bloqueia traceroute
echo "Bloqueando Traceroute..."
iptables -A INPUT -p udp --dport 33435:33525 -j DROP

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
echo "Protegendo contra Portscanners, Ping of Death, Ataques DoS, etc..."
iptables -A INPUT -m state --state INVALID -j DROP

# Abre para a interface de loopback.
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.
echo "Abrindo para a interface loopback..."
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Fecha as portas udp de 1 a 1024
echo "Fechando portas udp de 1 a 1024..."
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 59229 -j DROP

#Impedindo repasse de pacotes prejudiciais
echo "Impedindo repasse de pacotes prejudiciais..."
iptables -A FORWARD -M unclean -j DROP

#Libera acesso ao MSN: Troque os ACCEPT por DROP para bloquear.
echo "Liberando acesso ao MSN..."
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT
iptables -A INPUT -d loginnet.passport.com -j ACCEPT

# Libera o acesso ao Skype
echo "Liberando acesso ao Skype..."
iptables -A INPUT -p tcp --dport 23399 -j ACCEPT

#Liberando acesso sevidor DHCP
echo "Liberando acesso ao servidor DHCP..."
iptables -t filter -A INPUT -s 192.168.0.0/24 -i eth1 --dport 67 -j ACCEPT

#Habilitando porta de SSH
echo "Liberando acesso SSH..."
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

# Redirecionamento de porta para o Proxy transparente
echo "Redirecionando porta para o Squid..."
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Compartilhando a internet: troque o eth0 pela interface que recebe a conexão com a net.
echo "Compartilhando a Internet..."
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#liberando o acesso a P2P e Torrent
echo "Liberando P2P & Torrent..."
iptables -A INPUT -p tcp --dport 6881:6999 -j ACCEPT
iptables -A INPUT -p tcp --sport 6881:6999 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6881:6999 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6881:6999 -j ACCEPT

# Estas regras são o coração do Firewall,
# elas bloqueiam qualquer conexão que não tenha sido permitida acima, justamente por isso são a última da cadeia.
echo "Aplicando 'coração' do firewall..."
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -p icmp -j DROP


echo "O Firewall está carregado..."
sleep 1
echo "Configured By Mariel de Jesus"
sleep 1
}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT   ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT  ACCEPT
}

case "$1" in
"start")
firewall_start
        ;;
"stop")
        firewall_stop
echo "O Firewall está sendo desativado"
sleep 2
echo "ok."
        ;;
  "restart")
echo "O Firewall está sendo desativado"
sleep 1
echo "ok."
        firewall_stop; firewall_start
        ;;
      *)
        iptables -L -n
esac

Se você instalar o Guarddog  e proteger os mesmos recursos é capaz de gerar um código semelhante ou talvez de qualidade testada por muitos em /etc/rc.firewall.  Talvez fosse o caso para ver se o seu código está bom ou não.


Csat (Ubuntu 8.04)

Linux User #205394 ** Ubuntu User #19086

pinduvoz

:: Linux Registered User nº 439378 ::

Josely

ola amigo marieldejesus12, tudo blz?!!

bom, quanto ao seu script aparentemente esta tudo OK, vc ja fez o teste, ou seja, ja colocou em funcionamento para saber se não deu nada de errado?
Uma boa dica é vc pegar um pc para teste antes de coloca-lo em funcionamento na rede, eu sempre faço testes de laboratório antes de colocar qq coisa desse tipo para funcionar em uma rede, assim eu tenho como resolver qq problemas que venha acontecer. Uso sempre um pc com Ruwindows para testar e vê se o que pretendo fazer vai funcionar.

Se vc ja fez o teste, posta o resultado aqui pra gente.