Criando um firewall
Depois de criado o arquivo limpa_firewall vamos criar a nossa proteção
vim /bin/firewall
chmod a+x /bin/firewall
Segue o conteúdo do firewall
#!/bin/bash
####### Limpar Regras ########
iptables -t filter -F
iptables -t nat -F
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
### F de Flush ###
### PolÃca Default ###
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#+--------------------------------------------------------------------------------------------+
#| BLOQUEAR UMA ESTAÇÃO PARA USAR A INTERNET
#+--------------------------------------------------------------------------------------------+
#iptables -A INPUT -s 192.168.0.37 -p tcp -i eth1 -j DROP
#iptables -A FORWARD -s 192.168.0.37 -p tcp -i eth1 -j DROP
#iptables -A OUTPUT -s 192.168.0.37 -p tcp -i eth1 -j DROP
# Nesse caso estou bloqueando a estação que possui o ip 192.168.0.37
#------------------------------------------------------------------------------------------------
# Redirecionando acesso da porta 80 para 3128
#------------------------------------------------------------------------------------------------
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# Regra muito útil forçando os usuários a navegarem pelo proxy se o espertinho tirar # no browser o ip do servidor e a porta 3128 ou seja tentar navegar em
# modo transparente ele não irá conseguir :)
############### Limitando conexoes por host SSH para 3 acessos
iptables -A INPUT -p tcp --dport 2222 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 --syn -j DROP
# No arquivo /etc/ssh/sshd_config mude a porta para 2222
#=========================================================#
# REGRAS MSN #
#=========================================================#
#------------------------------------------------------------------------------------------------------+
# LIBERANDO PARA MAQUINAS PERMITIDAS |
#------------------------------------------------------------------------------------------------------+
# Server
#iptables -A INPUT -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT
#iptables -A FORWARD -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT
#iptables -A OUTPUT -s 192.168.0.1 -p tcp --dport 1863 -j ACCEPT
#-------------------------------------------------------------------------------------------------------
# BARRANDO PARA AS DEMAIS #
#-------------------------------------------------------------------------------------------------------
#iptables -A INPUT -p tcp --dport 1863 -j DROP
#iptables -A FORWARD -p tcp --dport 1863 -j DROP
#iptables -A OUTPUT -p tcp --dport 1863 -j DROP
#-------------------------------------------------------------------------------------------------------
# É preciso adicionar a regra tb no squid
#-------------------------------------------------------------------------------------------------------
# Caso queira redirecionar alguma porta para alguma máquina por exemplo
# Estou redirecionando a porta 8080 para a máquina 192.168.0.5
#-------------------------------------------------------------------------------------------------------
#iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.0.5:8080
#iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.5 --dport 8080 -j ACCEPT
# Protege contra o "Ping of Death"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# Protege contra os ataques do tipo "Syn-flood, DoS, etc"
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os relatados ...
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Logar os pacotes mortos por inatividade ...
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
# Protege contra port scanners avan�ados (Ex.: nmap)
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Protege contra pacotes que podem procurar e obter informações da rede interna ...
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
# Protege contra todos os pacotes danificados e ou suspeitos ...
iptables -A FORWARD -m unclean -j DROP
# Bloqueando tracerroute
iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP
# Mesmo assim fechar todas as portas abaixo de 32000
iptables -A INPUT -i eth0 -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport :32000 -j DROP
# Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP
# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
iptables -A INPUT -i eth0 -p tcp --syn -j DROP
# Performance - Setando acesso a web com delay minimo
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 53 -j TOS --set-tos Minimize-Delay
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 80 -j TOS --set-tos Minimize-Delay
#---------------------------------------------------------------------------------------------
# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
iptables -A INPUT -i eth0 -p udp -s 200.176.2.10 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 200.176.2.12 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j REJECT
iptables -A INPUT -i eth0 -p udp -s 200.204.0.10 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 200.204.0.138 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j REJECT
# Responde pacotes icmp especificados e rejeita o restante
iptables -A INPUT -i eth1 -p icmp --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -i eth1 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -j REJECT --reject-with icmp-host-unreachable
# libera o loopback
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
# libera conexoes de fora pra dentro
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 20 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 2222 -j ACCEPT
#libera conexoes de dentro pra fora:
iptables -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 2222 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 86 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 5190 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 443 -j ACCEPT
# bloqueia ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# ----------------------------------------------------------------
echo "Firewall carregado..."
# EOF
Saia e salva
Não é tudo mas com isso a sua rede está bem protegida
Espero ter ajudado
ATENÇÃO: Nesse caso a eth0 é a placa que entra a Internet