Compartilhamento de conexão
Publicado por Isaque Vieira de Sousa Alves (última atualização em 08/01/2010)
[ Hits: 6.336 ]
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
Ataulizando o Kernel Corretamente
get-geo2 - localiza o endereço de um IP/HOST no Google Maps
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









