Please bear with us as we work to restore functionality to dotfiles.org.
Um script de configuração para o firewall do linux
#!/bin/bash
# script de iptables
# criado por: Sérgio Luiz Araújo Silva
# data de criação: terça, 08 de maio de 2007
# Last Change: terça, 09 de maio de 2007
# ========== VARIAVEIS DO SCRIPT =================
LOOPBACK="127.0.0.0/0"
INT="eth0"
REDELOCAL=" 172.30.0.0/16"
PORTASQUID="3128"
PORTASSH="22"
DNSPRIMARIO="172.30.6.150/0"
DNSSECUNDARIO=" 200.202.193.140/0"
PORTAHTTPS="443"
iniciar(){
echo Iniciando o firewall...
#echo " Limpa o Firewall"
iptables -F
iptables -X
#echo " Bloqueia tudo"
# o flag -A tem precedência sobre o flag -P
# ou seja estou negando tudo para ir abrindo gradualmente
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#echo " liberando tráfego loopback (127.0.0.1)"
iptables -A INPUT -s 127.0.0.1/0 -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1/0 -j ACCEPT
iptables -A INPUT -p tcp --syn -s 127.0.0.1/0 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -d 127.0.0.1/0 -j ACCEPT
#echo " DROP string"
#STRINGS=".mp3 .wma .avi"
STRINGS="globo.com"
for STRING in $STRINGS; do
# iptables -A OUTPUT -m string --string $STRING --algo bm -j LOG --log-prefix "[$STRING] : "
iptables -A OUTPUT -m string --string $STRING --algo bm -j REJECT
done
# DROP layer7
#L7PROTOCOLS="fasttrack bittorrent msn-filetransfer"
#for L7 in $L7PROTOCOLS; do
# iptables -A OUTPUT -m layer7 --l7proto $L7 -j LOG --log-prefix "[$L7] : "
# iptables -A OUTPUT -m layer7 --l7proto $L7 -j REJECT
#done
#echo " liberando cups"
iptables -A INPUT -p tcp -s $REDELOCAL --dport 631 -j ACCEPT
iptables -A OUTPUT -p tcp -d $REDELOCAL --sport 631 -j ACCEPT
#echo " Permite o acesso para servidores DNS - Somente para eles :)"
iptables -A INPUT -p tcp -s $DNSPRIMARIO --dport 53 -j ACCEPT
iptables -A INPUT -p udp -s $DNSPRIMARIO --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d $DNSPRIMARIO --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -d $DNSPRIMARIO --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -s $DNSSECUNDARIO --dport 53 -j ACCEPT
iptables -A INPUT -p udp -s $DNSSECUNDARIO --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d $DNSSECUNDARIO --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -d $DNSSECUNDARIO --sport 53 -j ACCEPT
#echo " permitindo o tráfego de entrada na porta 22 ssh"
iptables -A INPUT -p tcp -s $REDELOCAL --dport ssh -j ACCEPT
iptables -A OUTPUT -p tcp -d $REDELOCAL --sport ssh -j ACCEPT
#echo " Liberando Samba (portas 137 à 139) somente para pc da rede local"
iptables -A INPUT -p tcp --dport 137:139 -s $REDELOCAL -j ACCEPT
iptables -A INPUT -p udp --dport 137:139 -s $REDELOCAL -j ACCEPT
iptables -A OUTPUT -p tcp --sport 137:139 -d $REDELOCAL -j ACCEPT
iptables -A OUTPUT -p udp --sport 137:139 -d $REDELOCAL -j ACCEPT
#echo " Liberando pacotes que realmente devem estabelecer conexão."
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#echo " Permite o acesso a web"
iptables -A INPUT -p tcp --dport www -j ACCEPT
iptables -A OUTPUT -p tcp --sport www -j ACCEPT
iptables -A INPUT -p udp --dport www -j ACCEPT
iptables -A OUTPUT -p udp --sport www -j ACCEPT
#echo " permitindo o trafego de saida na porta 80,443"
iptables -A INPUT -m multiport -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -m multiport -p tcp --sport 443 -j ACCEPT
#echo " Permitindo ftp"
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
#echo " Negando MSN"
iptables -A INPUT -p tcp --dport 1863 -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp --sport 1863 -m state --state NEW -j DROP
#echo " Liberando ping externo local p internet"
iptables -A INPUT -p icmp --icmp-type echo-request -s $REDELOCAL -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#echo " permitindo o trafego para o bittorent"
iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6681:6889 -j ACCEPT
#echo " Proteção contra Syn-floods"
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
#echo " Port scanners ocultos"
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#echo " Ping da morte"
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#echo " Proteção Contra IP Spoofing"
iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j DROP
# Log a portas proibidas e alguns backdoors
#Porta FTP
## iptables -A INPUT -p tcp --dport 21 -j LOG --log-prefix "Serviço: FTP"
#Porta Wincrash
# iptables -A INPUT -p tcp --dport 5042 -j LOG --log-prefix "Serviço: Wincrash"
#Portas BackOrifice
# iptables -A INPUT -p tcp --dport 12345 -j LOG --log-prefix "Serviço: BackOrifice"
# iptables -A INPUT -p tcp --dport 123456 -j LOG --log-prefix "Serviço: BackOrifice"
#echo Fim...
}
parar(){
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#echo "Regras de firewall desativadas"
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start, stop ou restart"
esac