fogobranco
(usa Debian)
Enviado em 31/01/2012 - 13:33h
#!/bin/bash
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe nf_conntrack_ipv4
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe nf_nat
/sbin/modprobe nf_conntrack
/sbin/modprobe x_tables
# A linha acima é conhecida como shebang e serve para chamar o interpretador do script
# poderia-se trocar o bash pelo sh ou outro shell de sua preferência
########################################################
# exemplo de script de firewall
# Data de Criação: 30/01/2012
########################################################
# Declarando as Variáveis #
# Interface Wan
IFACE_WEB="eth1"
# Interface Lan
IFACE_REDE="eth0"
# Ip da Rede Interna
REDE_INTERNA="192.168.254.0/24"
# Portas Liberadas TCP
PORTAS_TCP="20,21,53,80,443"
# Portas Liberadas UDP
PORTAS_UDP="53"
# Portas Liberadas para a Rede Interna
PORTAS_REDE_INTERNA="25,110"
########################################################
# FUNÇÃO START
# Esta função limpa as regras criadas anteriormente, e insere as regras listadas na função
########################################################
function start () {
# LIMPA as REGRAS EXISTENTE
# Limpa as regras da tabela filter
iptables -F
# Limpa as regras da tabela nat
iptables -t nat -F
# Define as politicas padrões do IPTABLES como DROP
iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
# Habilita o roteamento no KERNEL
echo 1 > /proc/sys/net/ipv4/ip_forward
# Cria a ida e volta do acesso nas chains INPUT, OUTPUT e FORWARD, assim não precisamos criar a ida e volta nas regras
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# Regras de NAT
# Compartilha a INTERNET
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE
# Redireciona o acesso RDP para outro seervidor dentro da REDE INTERNA
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j REDIRECT --to 192.168.254.1:3389
# Regras de INPUT
# Libera o acesso SSH de qualquer origem
iptables -A INPUT -p tcp --dport 60022 -j ACCEPT
# Libera o squid a partir da REDE INTERNA
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
# Aceita ping apenas da REDE INTERNA
iptables -A INPUT -s $REDE_INTERNA -p icmp --icmp-type 8 -j ACCEPT
# Regras de OUTPUT
# Libera as portas constantes em na variável $PORTAS_REDE_INTERNA (para liberar mais portas, basta inserir as mesmas na variável citada)
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
# Liberar ping para qualquer lugar
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
# Regras FORWARD
#Libera as portas constantes em na variável $PORTAS_REDE_INTERNA (para liberas mais portas, basta inserir as mesma na variável citada)
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT
# Libera RDP citado na regra de NAT
iptables -A FORWARD -p tcp --dport 3389 -d 192.168.254.1 -j ACCEPT
# FINAL DA FUNÇÃO START
}
##########################################################
# FUNÇÃO STOP
# Esta função limpa todas as regras, deixa as polÃticas padrões com ACCEPT e deixa todo e qualquer acesso liberaso
##########################################################
function stop () {
# Limpa as regras existentes
iptables -F
iptables -t nat -F
# Define as politicas padrões do IPTABLES como ACCEPT
iptables -p INPUT ACCEPT
iptables -p OUTPUT ACCEPT
iptables -p FORWARD ACEEPT
# Habilita o roteamento no KERNEL
echo 1 > /proc/sys/net/ipv4/ip_forward
# Compartilha a internet
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE
# Caso queira manter as regras de NAT favor copiar as regras de nat
# e as correspondentes as mesma de FORWARD aqui
# FINAL DA FUNÇÃO STOP
}
# Criando os parametros para o script, esses parametros serão start, stop e restart
# Qualquer parametro que não seja start, stop ou restart não será válido e nada será alterado
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Insira um parâmetro para /etc/init.d/firewall... start | stop | restart"
exit 0
;;
esac
# FIM do SRIPT DE FIREWALL