volt
(usa KUbuntu)
Enviado em 20/11/2009 - 15:56h
Andei estudando algumas bibliografias e cheguei ao seguinte scrip. Mesmo assim se alguém fizer alguma crítica ao mesmo ficaria grato.
# !/bin/bash
# ====================================
# SCRIPT : FIREWALL
# DATA : 20/11/2009
# BY : JEFERSON CARLOS VOLTARELLI
# ====================================
#
# Este script deve ser colocado em "/etc/init.d/"
# Crie um link simbolico dentro de "/usr/bin", "ls -s /etc/init.d/rc.firewall / usr/bin/rc.firewall"
# No arquivo "/etc/init.d/bootmisc.sh", escreva "/etc/init.d/ ./rc.firewall"
#
# CONFIGURANDO AS INTERFACES DE REDE eth0 E eth1
echo "CONFIGURANDO INTERFACES..."
dhclient eth0
EXT=eth0 # interface de rede externa (internet)
ifconfig eth1 192.168.100.1 netmask 255.255.255.0
INT=eth1 # interface de rede interna (lan)
INTRANET=192.168.100.0/24 # rede interna
echo "PRONTO!"
echo " "
echo " "
# CARREGANDO TODOS OS MODULOS DO NETFILTER NO KERNEL
echo "CARREGANDO MODULOS..."
modprobe ip_tables
modprobe iptable_nat
echo "PRONTO!"
echo " "
echo " "
# HABILITANDO O IP_FORWARD DO KERNEL
echo "HABILITANDO O ROTEAMENTO..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "PRONTO!"
echo " "
echo " "
# LIMPANDO NAS TABELAS DO NETFILTER
echo "LIMPANDO NETFILTER..."
iptables -F -t filter
iptables -X -t filter
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo "PRONTO!"
echo " "
echo " "
# CONFIGURANDO AS POLITICAS DA TABELA FILTER DE FORMA MAIS RESTRITIVA POSSIVEL
echo "HABILITANDO POLITICAS RESTRITIVAS..."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO PACOTES EM LOOPBACK
echo "ATIVANDO INTERFACE DE LOOPBACK..."
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -i lo -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# CONFIGURANDO O MASCARAMENTO DE PACOTES NAT PARA QUE A REDE INTERNA ACESSE A REDE EXTERNA (INTERNET)
echo "HABILITANDO MASCARAMENTO..."
iptables -t nat -A POSTROUTING -s $INTRANET -o $EXT -j MASQUERADE
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO CONEXÔES ORIGINADAS PELO PROPRIO FIREWALL
echo "HABILITANDO CONEXOES PELO FIREWALL..."
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO CONEXÔES ORIGINADAS PELA REDE INTERNA PARA A REDE EXTERNA
echo "HABILITANDO CONEXOES INTERNAS..."
iptables -A FORWARD -m state --state NEW -s $INTRANET -o $EXT -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO A ENTRADA E O ENCAMINHAMENTO DE PACOTES VINDOS OU RELACIONADOS DE CONEXÔES JÁ ESTABELECIDAS
echo "HABILITANDO ENCAMINHAMENTO DE ESTADO..."
iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO QUALQUER MÁQUINA DA REDE INTERNA A FAZER ACESSO WEB E CONSULTAS DNS
echo "HABILITANDO ACESSO WEB E DNS..."
iptables -A FORWARD -s $INTRANET -o $EXT -p tcp -m multiport --dport 80,443. -j ACCEPT
iptables -A FORWARD -s $INTRANET -o $EXT -p udp --dport 53 -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# GRAVANDO LOG DE TODAS AS TENTATIVAS DE ACESSO DA REDE INTERNA AOS SERVIÇOS SSH NO FIREWALL
echo "HABILITANDO GRAVACAO DE LOG AO ACESSO SSH..."
iptables -A INPUT -s $INTRANET -p tcp --dport 22 -j LOG --log-prefix "Acesso ao servico SSH no Firewall" # arquivado em /var/log/messages
echo "PRONTO!"
echo " "
echo " "
# PERMITINDO ACESSO DA REDE INTERNA AO SERVIÇO SSH NO FIREWALL
echo "HABILITANDO ACESSO INTERNO AO SSH..."
iptables -A INPUT -s $INTRANET -p tcp --dport 22 -j ACCEPT
echo "PRONTO!"
echo " "
echo " "
# REDIRECIONANDO AS TENTATIVAS DE ACESSO DA REDE EXTERNA (INTERNET) AO SERVIÇO SSH DO FIREWALL PARA A MÁQUINA 192.168.100.2
echo "REDIRECIONANDO ACESSO DA REDE EXTERNA AO SSH..."
iptables -t nat -A PREROUTING -i $EXT -p tcp --dport 22 -j DNAT --to 192.168.100.2:22
echo "PRONTO!"
echo " "
echo " "
echo "FIREWALL HABILITADO COM SUCESSO!!!"
echo " "
echo " "