Compartilhamento de conexão
Publicado por Isaque Vieira de Sousa Alves (última atualização em 08/01/2010)
[ Hits: 6.051 ]
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
Automação para midias removíveis
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[RESOLV... (15)
Mint começou a apresentar varios erros (2)
Recuperar arquivos de HD em formato RAW usando Linux (1)