Compartilhamento de conexão

Publicado por Isaque Vieira de Sousa Alves (última atualização em 08/01/2010)

[ Hits: 6.040 ]

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

Meu firewall

Backup do banco de dados Postgresql

Criação de ports para slackware

"Mascarando" pseudo-senha digitada pelo usuário

Status port


  

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