Compartilhamento de conexão
Publicado por Isaque Vieira de Sousa Alves (última atualização em 08/01/2010)
[ Hits: 6.050 ]
Homepage: www.isaquealves.com
Esse script é o principal script de minha rede wifi. Ele integra, entre outras coisas, um servidor Squid com natacl e diversas regras de firewall.
A maioria das regras foi construída graças a dicas e artigos de outros membros do VOL. Não é demais agradecer ao membro Elgio por todo o compartilhamento de conhecimento que realiza no portal.
#!/bin/bash IPTABLES="/sbin/iptables" # Interface da Internet: IFNET="eth1" # Interface da rede local IFLOCAL="eth0" iniciar(){ echo "Iniciando firewall de compartilhamento..." echo "Definindo politica padrao como DROP..." iptables -A INPUT -p icmp --icmp-type echo-request -j DROP #Drop all icmp echo requests iptables -A INPUT -m state --state INVALID -j DROP #Define DROP as default policy of netfilter iptables -A FORWARD -i eth0 -s ! 192.168.2.0/24 -j DROP #Drop all trafic intended to be interpreted link a syn flood atack Thanks to elgio www.vivaolinux.com.br/~elgio iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport 111 -j DROP iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport 2049 -j DROP #iptables -A FORWARD -i $IFLOCAL -j DROP #iptables -A FORWARD -o $IFLOCAL -j DROP sleep 1 echo "Habilitando trafego nas interfaces loopback e localnet(eth0)..." iptables -A INPUT -i $IFLOCAL -j ACCEPT iptables -A INPUT -i lo -j ACCEPT sleep 1 echo "Fixando definicoes de compartilhamento: Forward e filter" modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter sleep 1 echo "Ativando NatACL Daemon..." NatACL sleep 1 echo "Abrindo SSH apenas para os macs listados..." iptables -A INPUT -i eth1 -p tcp --destination-port 22 -m mac --mac-source 00:13:d4:7f:96:7d -j ACCEPT iptables -A INPUT -i eth+ -p tcp --destination-port 22 -m mac --mac-source 00:13:d4:8e:99:f6 -j ACCEPT sleep 1 echo "Liberando portas: 80, 53, 443 para todos os hosts..." iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT sleep 1 echo "Liberando portas: 111(NFS), 2049(NFS), 514(syslog), 67-68 (DHCP)..." iptables -A INPUT -s 192.168.254.0/24 -p tcp --dport 111 -j ACCEPT #Libera NFS para a rede 192.168.254.0/24 iptables -A INPUT -s 192.168.254.0/24 -p tcp --dport 2049 -j ACCEPT # //--------//-----------//--------- iptables -A INPUT -s 192.168.2.254 -p tcp --dport 514 -j ACCEPT #Open communication port with syslog of the AP iptables -A INPUT -i eth0 -p tcp --dport 67 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 68 -j ACCEPT sleep 1 echo "Ativando registro (logging) de acessos ao VNC e SSH..." iptables -A INPUT -p tcp --dport 5900 -j LOG --log-prefix="VNC(Alt Port):" #Register all the VNC traffic iptables -A INPUT -p tcp --dport 5800 -j LOG --log-prefix="VNC:" #===//============// iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix="ACESSO VIA SSH:" #Register all the SSH sleep 1 echo "Mascarando interface de internet..." iptables -t nat -A POSTROUTING -o $IFNET -j MASQUERADE # Postrouting in eth1 sleep 1 echo "Outras regras de Prerouting e forwarding..." iptables -t nat -A PREROUTING -p tcp -d 200.201.0.0/16 -j ACCEPT #Conectividade Social iptables -A FORWARD -p tcp -d 200.201.0.0/16 -j ACCEPT #Conectividade Social iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 #Redirect trafic direct to squid proxy iptables -t nat -A PREROUTING -p tcp -d 209.85.141.85 -j ACCEPT iptables -A FORWARD -p tcp -s 209.85.193.99 -d 192.168.2.0/24 -jACCEPT iptables -A FORWARD -p tcp -d 209.85.141.85 -j ACCEPT iptables -A FORWARD -s 192.168.2.0/24 -p tcp --dport 1863 -j ACCEPT iptables -A FORWARD -s 192.168.2.0/24 -d 65.54.179.192 -j ACCEPT iptables -A FORWARD -s 192.168.2.0/24 -p tcp --dport 1863 -j REJECT iptables -A INPUT -p tcp --dport 3128 -j DROP #iptables -A FORWARD -s 192.168.2.0/24 -d loginnet.passport.com -j REJECT echo "Vedando possibilidades de brute-force na porta do ssh..." iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name SSH # Aceita de um mesmo IP somente 4 requests por minuto iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --update --seconds 60 --hitcount 4 --name SSH -j REJECT # mesmo tendo passado pela regra acima (4 por minuto), aceita somente 30 por dia iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name SSH2 iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --update --seconds 86400 --hitcount 20 --name SSH2 -j REJECT iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT #libera acesso na rede local ao servidor mysql sleep 1 echo "Firewall Ativo." } parar(){ echo "Parando daemon NatACL..." for i in $(seq 9) do echo -n ". " sleep 1 done killall NatACL echo "\nNatACL finalizado." echo "limpando as regras de Firewall..." iptables -F iptables -F -t nat iptables -X -t nat iptables -X sleep 2 echo "Redefinindo o padrão como ACCEPT" iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT sleep 2 echo "Firewall finalizado." } case "$1" in "start") iniciar ;; "stop") parar ;; "restart") parar; iniciar ;; *) echo "Use os parâmetros restart, start ou stop" esac
Função que indica o estado do funcionamento do script
Abilitando impressora no cups automatico
Kit de Scripts para Backup (Full + Diferencial + SMBmount + Rede) - Atualizado
Migração de Aplicações para Ambiente Web - Uma Abordagem Prática
Nenhum comentário foi encontrado.
Vou voltar moderar conteúdos de Dicas e Artigos (0)
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (0)
Instalação Uefi com o instalador clássico do Mageia (0)
É cada coisa que me aparece! - não é só 3% (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta