SCRIPT DE FIREWALL
=============
# !/bin/bash
# Script do Firewall / Gateway de Internet
# Utilizando iptables e squid
# Script iniciada automaticamente atraves do link simbolico em:
# /etc/rc.d/init.d/firewall -> chamado atraves do servico IPTABLES
# Fazendo Flush
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Carregando os Modulos do Kernel
#modprobe ip_tables
#modprobe ipt_LOG
# Variaveis do firewall
CONFIAVEL1=192.168.0.30
CONFIAVEL2=192.168.0.50
REDEMASQ=192.168.0.0/24
# Pol?ica Padr? de Acesso
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -s $REDEMASQ -p tcp --dport 3128 -j ACCEPT
#iptables -A INPUT -s $REDEMASQ -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -s $REDEMASQ -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s $REDEMASQ -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 111 -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 3128 -j DROP
# Habilitando a prote?o contra "TCP SYN COOKIES"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Ocultando a rota de origem dos pacotes (evita spoof)
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
# Evita atques de spoof (na rede interna)
# Em alguns casos de roteamento esta linha dever?ser desativada
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
# Permisses de acesso ao firewall
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Permite acesso de SSH via Internet
iptables -A INPUT -i eth0 -p tcp --dport 2222 -j ACCEPT
# Trocando o intervalo de portas locais
PORT_INI=61000
PORT_FIM=65095
echo $PORT_INI $PORT_FIM > /proc/sys/net/ipv4/ip_local_port_range
# Criando perfil de acesso administrativo (apenas por SSH)
iptables -N ADMIN
iptables -A ADMIN -i eth1 -p tcp --dport 2222 --syn -j LOG --log-level info
--log-prefix "[Acesso Admin]: "
iptables -A ADMIN -i eth1 -p tcp --dport 2222 --syn -j ACCEPT
iptables -A ADMIN -i eth0 -p tcp --dport 2222 --syn -j LOG --log-level info
--log-prefix "[Acesso Admin EXTERNO]: "
iptables -A ADMIN -i eth0 -p tcp --dport 2222 --syn -j ACCEPT
# Aplicando a permiss? de acesso ssh a CONFIAVEL 1 e 2
iptables -A INPUT -i eth1 -s $CONFIAVEL1 -j ADMIN
iptables -A INPUT -i eth1 -s $CONFIAVEL2 -j ADMIN
# Para tratar as quedas dos roteadores ADSL
GW=`route | grep default | awk '{print $2}'`
iptables -A INPUT -i eth0 -s 200.204.179.228 -p tcp ! --syn -j ACCEPT
# Compartilhando o acesso ?Internet
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $REDEMASQ -o eth0 -j MASQUERADE
#PROXY TRANSPARENTE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
# Permitindo requisi?es de DNS
iptables -A FORWARD -o eth0 -s $REDEMASQ -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth0 -s $REDEMASQ -p udp --dport 53 -j ACCEPT
# Bloaquear pacotes com estado "novo/inv?ido" que saiam pela eth1
# Permitir pacotes com estado "estabelecido/reinicidente"
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Permitindo qualquer solicita?o de Internet que parta da rede
192.168.0.0/24
iptables -A FORWARD -i eth1 -s $REDEMASQ -j ACCEPT
# Bloqueia qualquer pacote (forward) que n? liberado por regras anteriores
iptables -A FORWARD -j DROP
# Bloqueando o logando sinais de ping ao firewall
iptables -N LPI
iptables -A LPI -m limit --limit 5/hour --limit-burst 3 -p icmp --icmp-type
echo-request -j LOG --log-level info --log-prefix "Log ping: "
iptables -A LPI -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p icmp --icmp-type echo-request -j LPI
# Bloqueia qualquer pacote (input) que n? liberado por regras anteriores
iptables -A INPUT -j DROP
=============
# !/bin/bash
# Script do Firewall / Gateway de Internet
# Utilizando iptables e squid
# Script iniciada automaticamente atraves do link simbolico em:
# /etc/rc.d/init.d/firewall -> chamado atraves do servico IPTABLES
# Fazendo Flush
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Carregando os Modulos do Kernel
#modprobe ip_tables
#modprobe ipt_LOG
# Variaveis do firewall
CONFIAVEL1=192.168.0.30
CONFIAVEL2=192.168.0.50
REDEMASQ=192.168.0.0/24
# Pol?ica Padr? de Acesso
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -s $REDEMASQ -p tcp --dport 3128 -j ACCEPT
#iptables -A INPUT -s $REDEMASQ -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -s $REDEMASQ -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s $REDEMASQ -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 111 -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 3128 -j DROP
# Habilitando a prote?o contra "TCP SYN COOKIES"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Ocultando a rota de origem dos pacotes (evita spoof)
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
# Evita atques de spoof (na rede interna)
# Em alguns casos de roteamento esta linha dever?ser desativada
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
# Permisses de acesso ao firewall
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Permite acesso de SSH via Internet
iptables -A INPUT -i eth0 -p tcp --dport 2222 -j ACCEPT
# Trocando o intervalo de portas locais
PORT_INI=61000
PORT_FIM=65095
echo $PORT_INI $PORT_FIM > /proc/sys/net/ipv4/ip_local_port_range
# Criando perfil de acesso administrativo (apenas por SSH)
iptables -N ADMIN
iptables -A ADMIN -i eth1 -p tcp --dport 2222 --syn -j LOG --log-level info
--log-prefix "[Acesso Admin]: "
iptables -A ADMIN -i eth1 -p tcp --dport 2222 --syn -j ACCEPT
iptables -A ADMIN -i eth0 -p tcp --dport 2222 --syn -j LOG --log-level info
--log-prefix "[Acesso Admin EXTERNO]: "
iptables -A ADMIN -i eth0 -p tcp --dport 2222 --syn -j ACCEPT
# Aplicando a permiss? de acesso ssh a CONFIAVEL 1 e 2
iptables -A INPUT -i eth1 -s $CONFIAVEL1 -j ADMIN
iptables -A INPUT -i eth1 -s $CONFIAVEL2 -j ADMIN
# Para tratar as quedas dos roteadores ADSL
GW=`route | grep default | awk '{print $2}'`
iptables -A INPUT -i eth0 -s 200.204.179.228 -p tcp ! --syn -j ACCEPT
# Compartilhando o acesso ?Internet
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $REDEMASQ -o eth0 -j MASQUERADE
#PROXY TRANSPARENTE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
# Permitindo requisi?es de DNS
iptables -A FORWARD -o eth0 -s $REDEMASQ -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth0 -s $REDEMASQ -p udp --dport 53 -j ACCEPT
# Bloaquear pacotes com estado "novo/inv?ido" que saiam pela eth1
# Permitir pacotes com estado "estabelecido/reinicidente"
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Permitindo qualquer solicita?o de Internet que parta da rede
192.168.0.0/24
iptables -A FORWARD -i eth1 -s $REDEMASQ -j ACCEPT
# Bloqueia qualquer pacote (forward) que n? liberado por regras anteriores
iptables -A FORWARD -j DROP
# Bloqueando o logando sinais de ping ao firewall
iptables -N LPI
iptables -A LPI -m limit --limit 5/hour --limit-burst 3 -p icmp --icmp-type
echo-request -j LOG --log-level info --log-prefix "Log ping: "
iptables -A LPI -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p icmp --icmp-type echo-request -j LPI
# Bloqueia qualquer pacote (input) que n? liberado por regras anteriores
iptables -A INPUT -j DROP
Seja Membro Gratuítamente
Assine a newsletter para receber em seu email as publicações atualizadas neste blog