#!/bin/sh # Variáveis # ------------------------------------------------------- iptables=/usr/sbin/iptables IF_EXTERNA=eth0 IF_INTERNA=eth1 # Ativa módulos # ------------------------------------------------------- /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE # Ativa roteamento no kernel # ------------------------------------------------------- echo "1" > /proc/sys/net/ipv4/ip_forward # Proteção contra IP spoofing # ------------------------------------------------------- echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter # Zera regras # ------------------------------------------------------- $iptables -F $iptables -X $iptables -F -t nat $iptables -X -t nat $iptables -F -t mangle $iptables -X -t mangle # Determina a política padrão # ------------------------------------------------------- $iptables -P INPUT DROP $iptables -P OUTPUT DROP $iptables -P FORWARD DROP ################################################# # Tabela FILTER ################################################# # Dropa pacotes TCP indesejáveis # ------------------------------------------------------- $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW sem syn: " $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP # Dropa pacotes mal formados # ------------------------------------------------------- # A estudar essas regras. #$iptables -A INPUT -i $IF_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote mal formado: " #$iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP # Aceita os pacotes que realmente devem entrar # ------------------------------------------------------- $iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT $iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT # Proteção contra trinoo # ------------------------------------------------------- $iptables -N TRINOO $iptables -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: " $iptables -A TRINOO -j DROP $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO # Proteção contra tronjans # ------------------------------------------------------- $iptables -N TROJAN $iptables -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: " $iptables -A TROJAN -j DROP $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN $iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN # Proteção contra worms # ------------------------------------------------------- $iptables -A FORWARD -p tcp --dport 135 -i $IF_INTERNA -j REJECT # Proteção contra syn-flood # ------------------------------------------------------- $iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT # Proteção contra ping da morte # ------------------------------------------------------- $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Proteção contra port scanners # ------------------------------------------------------- $iptables -N SCANNER $iptables -A SCANNER -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: port scanner: " $iptables -A SCANNER -j DROP $iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER $iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER # Loga tentativa de acesso a determinadas portas # ------------------------------------------------------- $iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: " $iptables -A INPUT -p tcp --dport 23 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: " $iptables -A INPUT -p tcp --dport 25 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: " #$iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: http: " $iptables -A INPUT -p tcp --dport 110 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: " $iptables -A INPUT -p udp --dport 111 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: " $iptables -A INPUT -p tcp --dport 113 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: identd: " $iptables -A INPUT -p tcp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: " $iptables -A INPUT -p udp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: " $iptables -A INPUT -p tcp --dport 161:162 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: " $iptables -A INPUT -p tcp --dport 6667:6668 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: irc: " $iptables -A INPUT -p tcp --dport 3128 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: squid: " $iptables -A INPUT -p tcp --dport 1433 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: sql - server: " # Libera acesso externo a determinadas portas # ------------------------------------------------------- #iptables -A INPUT -p tcp --dport 1433 -i $IF_EXTERNA -j ACCEPT #iptables -A INPUT -p udp --dport 1433 -i $IF_EXTERNA -j ACCEPT $iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j ACCEPT $iptables -A INPUT -p tcp --dport 80 -i $IF_INTERNA -j ACCEPT $iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT $iptables -A INPUT -p tcp --dport 22 -i $IF_INTERNA -j ACCEPT # --------------------------------------------------------- # Fechando as portas do samba o perigo mora aqui caso fique de cara para a internet. #$iptables -A INPUT -p tcp -i $IF_EXTERNA --syn --dport 139 -j DROP #$iptables -A INPUT -p tcp -i $IF_EXTERNA --syn --dport 138 -j DROP #$iptables -A INPUT -p tcp -i $IF_EXTERNA --syn --dport 137 -j DROP # Fechando a porta do portmap # --------------------------------------------------------- iptables -A INPUT -p tcp -i $IF_EXTERNA --syn --dport 111 -j DROP # Libera acesso de smtp para fora apenas para o IP XXX.XXX.XXX.XXX # ------------------------------------------------------- #$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j LOG --log-level 6 --log-prefix "FIREWALL: SMTP proibido: " #$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j REJECT ################################################# # Tabela NAT ################################################# # Ativa mascaramento de saída # ------------------------------------------------------- $iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE # Proxy transparente # ------------------------------------------------------- #iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 ## Tentativas com redirecionamento do SQL server. # SQL que funcionou.... $iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1433 -j DNAT --to-destination 192.168.1.140 $iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 1433 -d 192.168.1.140 -j ACCEPT $iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1433 -j DNAT --to-destination 192.168.1.140 $iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 1433 -d 192.168.1.140 -j ACCEPT # SQL segunda tentativa. #iptables -A FORWARD -i $IF_EXTERNA -p tcp --dport 1433 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -A FORWARD -i $IF_EXTERNA -p udp --dport 1433 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -t nat -A PREROUTING -p tcp -i $IF_EXTERNA --dport 1433 -j DNAT --to 192.168.1.140:1433 #iptables -t nat -A PREROUTING -p udp -i $IF_EXTERNA --dport 1433 -j DNAT --to 192.168.1.140:1433 # SQL terceira tentativa #iptables -A FORWARD -i $IF_EXTERNA -p tcp --dport 1433 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -A FORWARD -i $IF_EXTERNA -p udp --dport 1433 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -t nat -A PREROUTING -p tcp --dport 1433 -d 200.204.198.164 -j DNAT --to 192.168.1.140 #iptables -t nat -A POSTROUTING -p tcp --sport 1433 -s 192.168.1.140 -j SNAT --to 201.204.198.164 # Redireciona portas na própria máquina vnc troque o ip conforme a máquina que deseja acessar. #--------------------------------------------------------- iptables -A FORWARD -i $IF_EXTERNA -p tcp --dport 5800:5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i $IF_EXTERNA -p udp --dport 5800:5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A PREROUTING -p tcp -i $IF_EXTERNA --dport 5800:5900 -j DNAT --to 192.168.1.140:5800-5900 iptables -t nat -A PREROUTING -p udp -i $IF_EXTERNA --dport 5800:5900 -j DNAT --to 192.168.1.140:5800-5900 # Redireciona portas para outros servidores # ------------------------------------------------------- #$iptables -t nat -A PREROUTING -d 192.168.200.1 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.1 # Redireciona portas na própria máquina # ------------------------------------------------------- #$iptables -A PREROUTING -t nat -d 192.168.200.1 -p tcp --dport 5922 -j REDIRECT --to-ports 22