Firewall com Iptable - rc.Firewall
Publicado por Thalles Leonel 09/04/2008
[ Hits: 5.732 ]
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
Script Firewall Iptables + compartilhar internet
Libera conectividade social em rede com squid
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problema : Resolução de Tela (1)
Queria saber se existe alguma forma de desistalar programa no ubuntu s... (4)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (2)
Existe algum problema de atualizar uma versão lts para uma versão não ... (0)