Firewall com Iptable - rc.Firewall
Publicado por Thalles Leonel 09/04/2008
[ Hits: 6.025 ]
Este script mostra de forma simples e prática como usar o IPTables para fazer NAT e masquerade. Também traz dicas de como redirecionar a navegação para Squid (proxy).
Ajuste os seguintes campos conforme sua rede:
R_EXTERNA=
R_INTERNA=
LAN=
Se tiver sugestões para melhoria deste, por favor registre no campo de comentários.
# rc.firewall.sh Linux Firewall - Versao 1.0rc02
# Criado por Thalles Leonel - thallesleonel@yahoo.com.br
# Interface Rede - EXTERNA
R_EXTERNA="eth0";
# Interface rede - INTERNA
R_INTERNA="eth1";
# Definicao Rede Interna
LAN="10.0.0.0/24"
fw_start()
{
# Mensagem Inicial
echo "######################################################"
echo "# rc.firewall Linux Firewall - Versao 1.0rc02 #"
echo "# Criado por Thalles Leonel #"
echo "######################################################"
# Carregando Modulos Iptables
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_MASQUERADE
echo "#--> Carregando Modulos Iptables ..............[ OK ]#"
# Impedindo Alterar rota
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "#--> Carregando Anti-Redirects ................[ OK ]#"
# Impedindo Anti-Source_Route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "#--> Carregando Anti-Source_route .............[ OK ]#"
# Protegendo contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "#--> Carregando Anti-Bugus_response ...........[ OK ]#"
# Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "#--> Carregando Protecao DoS ..................[ OK ]#"
# Carregando roteamento dinamico
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
echo "#--> Carregando Roteamento Dinamico ...........[ OK ]#"
# Politicas Padrões
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
echo "#--> Carregando Politicas Padroes .............[ OK ]#"
# Cria Chain com regras de Seguranca
iptables -N BLOCK
iptables -A BLOCK -p icmp --icmp-type echo-request -j DROP
iptables -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
iptables -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A BLOCK -j LOG --log-prefix "FW_ALERT: "
iptables -A BLOCK -j DROP
echo "#--> Carregando Chain com Regras de Seguranca .[ OK ]#"
# Muda a prioridade dos pacotes (Type Of Service) para agilizar as coisas
iptables -t mangle -A OUTPUT -o $R_EXTERNA -p tcp -m multiport --dports 4662,22,80,3128,5500,5900,6667 -j TOS --set-tos 0x10
echo "#--> Carregando QOS ...........................[ OK ]#"
# Regras para redirecionar Portas
# Porta 80 para o Squid 3128
iptables -t nat -A PREROUTING -i $R_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "#--> Redirecionando Navegacao Web para Squid ..[ OK ]#"
iptables -t nat -A PREROUTING -i $R_EXTERNA -p tcp --dport 4662 -j DNAT --to-dest 10.0.0.58
iptables -t nat -A PREROUTING -i $R_EXTERNA -p udp --dport 4672 -j DNAT --to-dest 10.0.0.58
iptables -t nat -A PREROUTING -i $R_EXTERNA -p tcp --dport 3389 -j DNAT --to-dest 10.0.0.2
iptables -t nat -A PREROUTING -i $R_EXTERNA -p tcp --dport 5500 -j DNAT --to-dest 10.0.0.5:5500
echo "#--> Redirecionando Portas do UltraVNC ........[ OK ]#"
# Libera todo o trafego local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $R_INTERNA -j ACCEPT
iptables -A FORWARD -i $R_INTERNA -j ACCEPT
echo "#--> Liberando Acesso Interno .................[ OK ]#"
# Libera so FSSH, WEB, UltraVNC e Webmin
iptables -A INPUT -i $R_EXTERNA -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i $R_EXTERNA -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $R_EXTERNA -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $R_EXTERNA -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i $R_EXTERNA -p tcp --dport 5500 -j ACCEPT
iptables -A INPUT -i $R_EXTERNA -p tcp --syn -j DROP
echo "#--> Liberando Acesso Externo .................[ OK ]#"
# Libera a conexao para a rede interna
iptables -t nat -A POSTROUTING -s $LAN -j MASQUERADE
echo "#--> Liberando Conexao Rede Interna ...........[ OK ]#"
echo "######################################################"
echo ""
}
fw_stop()
{
echo ""
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X
iptables -t filter -Z
iptables -t nat -Z
iptables -t mangle -Z
echo "######################################################"
echo "#--> Desativando / Limpando Firewall ..........[ OK ]#"
echo "######################################################"
echo ""
}
fw_usage()
{
echo
echo "#--> $0 (start | stop | restart | clear)"
echo
echo "#--> start - Ativa o rc.Firewall.sh"
echo "#--> stop - Desativa o rc.Firewall.sh"
echo "#--> restart - Reativa o rc.Firewall.sh"
echo "#--> clear - Limpa os contatores"
}
fw_clear()
{
iptables -t filter -Z
iptables -t nat -Z
iptables -t mangle -Z
}
case $1 in
start)
fw_stop;
fw_start;
;;
stop)
fw_stop;
;;
restart)
fw_start;
;;
clear)
fw_clear;
;;
*)
fw_usage;
exit;
;;
esac
Automatizador de instalação de flatpaks
Resolvendo alguns erros ao executar o apt-get, Ubuntu 16.04
Controlando Fan Nagios no dialog
Script para autenticar Speedy Business
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (7)
Instalação do cosmic no archlinux (0)
Formas seguras de instalar Debian Sid [RESOLVIDO] (14)









