Esse é um script de firewall com iptables, ele está bem detalhado e comentado as linhas, para que você saiba o que cada uma delas significa.


Dúvids entre em contato

  



Esconder código-fonte

# FIREWALL COM IPTABLES
#
#

#**SCRIPT DE FIREWALL***#

#!/bin/sh
# Load the NAT module (this pulls in all the others).
#modprobe iptable_nat

# Turn on IP forwarding
#echo 1 > /proc/sys/net/ipv4/ip_forward

# In the NAT table (-t nat), Append a rule (-A) after routing (POSTROUTING)
# which says to MASQUERADE the connection (-j MASQUERADE).
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# Allows forwarding specifically to our LAN
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

# Allow dhcp requests
#iptables -A INPUT -i eth0 -p udp --sport bootpc --dport bootps -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --sport bootpc --dport bootps -j ACCEPT
#iptables -A INPUT -i eth0 -p udp --sport bootps --dport bootpc -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --sport bootps --dport bootpc -j ACCEPT

# Allow dns requests
iptables -A INPUT -i eth0 -p udp --dport domain -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport domain -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/24 -p tcp --dport domain -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/24 -p udp --dport domain -j ACCEPT

#Início do meu FIREWALL
#
###########
# Opcões de configuracão : Isto irá fazer o script funcionar mais rápido
acelera#ndo acesso às informacões necessárias.

LAN_IP_RANGE="192.168.0.0/24"
LAN_IP="192.168.0.1/24"
LAN_BCAST_ADRESS="192.168.0.255/24"
LOCALHOST_IP="127.0.0.1/8"
STATIC_IP="10.0.0.10/24"
INET_IFACE="ppp0"
LAN_IFACE="eth0"
IPTABLES="/sbin/iptables"

#########
# Carregando os modulos necessários do IPTABLES
#

# Isto deveria checar as dependências de todos os módulos mas deixa o script
mui
#to lento e não é necessário
#/sbin/depmod -a

#
# Adiciona alguns caminhos do IPTABLES como LOG, REJECT e MASQUERADE.
#
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe iptable_nat

#
# Suporte para owner (só permite certas conexões a certos usuários)
#
#/sbin/modprobe ipt_owner

#
# Suporte para connection tracking de FTP e IRC.
#
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc

#
# Habilita o IPFORWARD
#

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

#
#Protecao contra spoof de IP
#
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
#
#Para uso com IP dinâmico (nao foi preciso)
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#
# Habilita IP Forwarding and Masquerading simples
#
$IPTABLES -t nat -A POSTROUTING -o $LAN_IFACE -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

#
# Pacotes alterados de TCP indesejáveis se ferram aqui
#

$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix
"Novo pacote não syn:"
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

#
# Aceita os pacotes que realmente devem entrar
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-level DEBUG --log-prefix "IPT FORWARD pacote morreu: "

#
# Seta a politica default para INPUT, FORWARD e OUTPUT, ou seja:  NÃO!!!
#

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

#
# Cria cadeias separadas para ICMP, TCP e UDP passarem
#

$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udpincoming_packets

#
# A cadeia allowed para conexões TCP
#

$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# Regras ICMP
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# Regras TCP
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed


#
# Regras UDP
#

$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT

#
# Cadeia PREROUTING
#
# Faz algumas checagens para IP's obviamente alterados
#

$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 10.0.0.0/8 -j DROP
$IPTABLES -t nat -A PREROUTING -i $INET_IFACE -s 172.16.0.0/12 -j DROP


#
# Cadeia INPUT
#
# Toma conta de pacotes alterados de TCP indesejáveis
#

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix
"Novo pacote não syn:"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

#
# Regras para pacotes vindos da internet internet
#

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 27665 -j DROP

#Proteção contra TRINOO

$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 27444 -j DROP
$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 31335 -j DROP

#Protecão contra Tronjans
$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 666 -j DROP
$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 666 -j DROP
$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 4000 -j DROP
#$IPTABLES -A INPUT -p UDP -i $INET_IFACE --dport 4000 -j DROP
#$IPTABLES -A INPUT -p TCP -i $INET_IFACE --dport 5190 -j DROP
#$IPTABLES -A INPUT -p UDP -i $INET_IFACE --dport 5190 -j DROP

#Proteção contra acesso externo ao NETBIOS

$IPTABLES -A INPUT -p TCP -i $INET_IFACE -d 192.168.0.1 --dport 137:139 -j
DROP

#Proteção contra acesso externo ao TELNET
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -d 192.168.0.1 --dport telnet -j
DROP

#Barramento do Samba a internet


#
# Regras para rede interna e localhost
#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $LOCALHOST_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $STATIC_IP -m state --state
ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

#
# Cadeia OUTPUT
#

$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix
"Novo pacote nao syn:"
$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A OUTPUT -p ALL -s $LOCALHOST_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $STATIC_IP -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-level DEBUG --log-prefix "IPT OUTPUT pacote morreu: "
####FIM DO SCRIPT DE FIREWALL

Scripts recomendados

Servidor HTTP em Bash

Firewall

Tabela de cores em shellscript

Configuração de VLANs

Plugin BACULA


  

Comentários
[1] Comentário enviado por washluis em 29/03/2006 - 01:14h

Parceiro vc poderia mandar para mim um passo a passo

é ki estou começando a trabalhar com essa ferramenta e naum estou muito adaptado

washluis@hotmail.com

valew parceiro!!!

[2] Comentário enviado por neudoscura em 15/03/2007 - 17:43h

Olá! Estou colocando um firewall na empresa onde trabalho, com o Kurumin, mas estou tendo dificuldades para configurar. Vou colocar um firewall também na filial, e preciso que uma VPN passe pelos 2 firewalls.

Também preciso que o firewall aceite conexões de 2 ips externos, que são da empresa que fará a manutenção e suporte no meu servidor sql.

É a primeira vez que utilizo essa ferramenta.

Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts