#!/bin/bash # Script de Firewall ##################################### ### Passo 1: Primeiro vamos arrumar a casa :) ### ##################################### # Limpando as Regras iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -F iptables -t nat -F # Definindo a Politica Default das Cadeias iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP ###################################### ### Passo 2: Antes de Servir, vamos nos proteger ! ### ###################################### # Desabilitando o trafego IP Entre as Placas de Rede echo "0" > /proc/sys/net/ipv4/ip_forward # Configurando a Protecao anti-spoofing echo "Setting anti-spoofing .....[ OK ]" for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > $spoofing done ####################################### ### Passo 3: Carregando os modulos do iptables ### ####################################### modprobe ip_tables modprobe iptable_filter modprobe iptable_mangle modprobe iptable_nat modprobe ipt_MASQUERADE echo "Setting rules .............[ OK ]" ####################################### ### Passo 4: Agora, vamos definir o que pode passar e o que nao ### ####################################### # Qualquer pacote IP que venha do localhost, Ok. iptables -A INPUT -i lo -j ACCEPT # REDE INTERNA LIBERADA iptables -A INPUT -i eth0 -j ACCEPT #LIBERANDO PORTAS iptables -A INPUT -p tcp -m multiport --dport 139,445,3128,10000 -j ACCEPT #iptables -A INPUT -s 192.168.2.0/255.255.255.0 -p tcp --dport 4899 -j ACCEPT #iptables -A INPUT -s 192.168.1.0/255.255.255.0 -p tcp --dport 4899 -j ACCEPT #iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT #iptables -t nat -A PREROUTING -p tcp --dport 4899 -j DNAT --to 192.168.1.12 #libera acesso para cabo frio #iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT #iptables -I FORWARD -d 192.168.1.0/24 -s 192.168.2.0/24 -j ACCEPT #iptables -I INPUT -s 192.168.2.0/24 -j ACCEPT # No iptables, temos de dizer quais sockets sao validos em uma conexao iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP # Proteç contra worms # Proteç contra ping da morte iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT #Bloqueio de NetBios iptables -t nat -A PREROUTING -p tcp --dport 445 -j DROP iptables -t nat -A PREROUTING -p tcp --dport 135 -j DROP iptables -t nat -A PREROUTING -p tcp --dport 137 -j DROP iptables -t nat -A PREROUTING -p tcp --dport 138 -j DROP iptables -t nat -A PREROUTING -p tcp --dport 139 -j DROP iptables -t nat -A PREROUTING -p udp --dport 445 -j DROP iptables -t nat -A PREROUTING -p udp --dport 135 -j DROP iptables -t nat -A PREROUTING -p udp --dport 137 -j DROP iptables -t nat -A PREROUTING -p udp --dport 138 -j DROP iptables -t nat -A PREROUTING -p udp --dport 139 -j DROP # Loga tentativa de acesso a determinadas portas iptables -A INPUT -p tcp --dport 21 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: " iptables -A INPUT -p tcp --dport 23 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: " iptables -A INPUT -p tcp --dport 25 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: " iptables -A INPUT -p tcp --dport 80 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: http: " iptables -A INPUT -p tcp --dport 110 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: " iptables -A INPUT -p udp --dport 111 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: " iptables -A INPUT -p tcp --dport 113 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: identd: " iptables -A INPUT -p tcp --dport 137:139 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: samba: " iptables -A INPUT -p udp --dport 137:139 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: samba: " iptables -A INPUT -p tcp --dport 161:162 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: " iptables -A INPUT -p tcp --dport 6667:6668 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: irc: " iptables -A INPUT -p tcp --dport 3128 -i ppp0 -j LOG --log-level 6 --log-prefix "FIREWALL: squid: " # Cadeia de Reenvio (FORWARD) # Primeiro, ativar o mascaramento (nat). iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE #libera email para os computadores iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT #bloqueia determinadas portas de determinados ips #iptables -t nat -I PREROUTING -s 192.168.1.209 -p tcp --dport 445 -j DROP #bloqueia internet de determinados ips #iptables -t nat -I PREROUTING -s 192.168.1.251 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.151 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.21 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.22 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.23 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.134 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.133 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.162 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.111 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.112 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.113 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.114 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.115 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.116 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.117 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.118 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.119 -p tcp --dport 80 -j DROP #iptables -t nat -I PREROUTING -s 192.168.1.209 -p tcp --dport 80 -j DROP #libera acesso sem passar pelo dansguardian #iptables -t nat -A PREROUTING -s 192.168.1.12 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Redireciona porta 80 para 3128 (squid) #iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8070 #iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 80 -j REDIRECT --to-port 8070 iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 8080 -j REDIRECT --to-port 3128 #liberando acesso sem precisar do cache da pagina a determinados sites #iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! 161.148.231.100 --dport 80 -j REDIRECT --to-port 8070 #Bloqueando/liberando MSN: #iptables -t nat -I PREROUTING -s 192.168.1.12 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.4 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.11 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.31 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.32 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.111 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.112 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.113 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.114 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.115 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.116 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.117 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.118 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.119 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.53 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.200 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.71 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.72 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.73 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.151 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.152 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.21 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.22 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.23 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.141 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.132 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.133 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.134 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.31 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.51 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.52 -p tcp --dport 1863 -j REDIRECT --to-port 3128 #iptables -t nat -I PREROUTING -s 192.168.1.209 -p tcp --dport 1863 -j REDIRECT --to-port 3128 ######################################## ### Finalmente, podemos "Ligar" o foward (clientes) :) ### ######################################## # Habilitando o trafego Ip, entre as Interfaces de rede echo "1" > /proc/sys/net/ipv4/ip_forward echo "Firewall OK ...............[ OK ]"