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

Download compartilhar




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.

  



Esconder código-fonte

#!/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

Scripts recomendados

Função que indica o estado do funcionamento do script

Abilitando impressora no cups automatico

Controle de Mac Address ISP

Kit de Scripts para Backup (Full + Diferencial + SMBmount + Rede) - Atualizado

Migração de Aplicações para Ambiente Web - Uma Abordagem Prática


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts