Compartilhamento de conexão
Publicado por Isaque Vieira de Sousa Alves (última atualização em 08/01/2010)
[ Hits: 6.287 ]
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
Limitando largura de banda com o CBQ
"Mascarando" pseudo-senha digitada pelo usuário
Gerenciador de Usuários com dialog (Active Directory + Dialog)
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









