Firewall Shell script (parte 2)
Continuando com o script de Firewall
Iptables netfilter, temos:
#!/bin/sh
#Firewall Netfilter desenvolvido por
HenriqueKbs
echo "Inicializando o Firewall de
Rede em `uname -n`"
#Utilizaremos caminhos de abreviação,
para poupar digitação
IPT="/sbin/iptables"
#Temos que apagar as regras antigas,
senão ficarão duplicadas, quando reiniciar
$IPT --flush
$IPT --delete-chain
$IPT -t nat -F
$IPT -t mangle -F
#Política das cadeias na tabela FILTER
(primeiramente deixarei em ACCEPT, depois se não ouver nehuma
restrição, aos usuários da rede, pode-se mudar para DROP)
#$IPT -P INPUT ACCEPT
#$IPT -P FORWARD ACCEPT
#$IPT -P OUTPUT ACCEPT
#Habilitar módulos do netfilter
(necessário dependendo da distro, versão do Kernel e o que for
usar)
modprobe ipt_mac
modprobe ipt_ttl
modprobe iptable_nat
modprobe iptable_mangle
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_tos
#Path, álias para alguns componentes
do Firewall (faça conforme suas necessidades)
AP="ACCEPT"
DP="DROP"
RJ="REJECT"
FW="FORWARD"
SERVER="192.168.1.10/32"
REDE="192.168.1.0/25"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
HOST1="192.168.1.126/32"
WAN="eth0"
LAN="eth1"
#Para liberar o trafego de pacotes
bypass na FORWARD
echo 1 >
/proc/sys/net/ipv4/ip_forward
#Criar uma cadeia nova
$IPT -N C_ARP
#Foi criada uma nova cadeia, para
trabalhar com pacotes oriundos de um roteador local, usando como base
o endereço físico mac address.
$IPT -I INPUT -i $WAN -m mac
--mac-source 00:02:22:1B:AE:AF -j C_ARP
$IPT -I $FW -i $WAN -m mac --mac-source
00:02:22:1B:AE:AF -p tcp -j C_ARP
$IPT -A C_ARP -m state --state INVALID
-j $DP
#Regras para loopback
$IPT -A INPUT -i lo -s 127.0.0.1 -j $AP
$IPT -A OUTPUT -o lo -d 127.0.0.1 -j
$AP
$IPT -t nat -A OUTPUT -o lo -d
127.0.0.1 -j $AP
#Regras básicas na cadeia C_ARP
$IPT -A C_ARP -p udp --sport 53 -s
$DNS1 -j $AP
$IPT -A C_ARP -p udp --sport 53 -s
$DNS2 -j $AP
$IPT -A C_ARP -s 0/0 -p tcp --sport 80
-j $AP
$IPT -A C_ARP -s 0/0 -p tcp --sport 443
-j $AP
$IPT -A C_ARP -s 0/0 -p udp --sport 123
-j $AP
$IPT -A C_ARP -p icmp -m icmp !
--icmp-type 8 -m limit --limit 2/s -j $AP
$IPT -A C_ARP -s 0/0 -p tcp --sport 809
-j $AP
$IPT -A C_ARP -s 0/0 -p tcp --sport 995
-j $AP
$IPT -A C_ARP -d 0/0 -p tcp --dport 587
-j $AP
#Liberar acesso via SSH para o HOST1
$IPT -A INPUT -s $HOST1 -d $SERVER -p
tcp --sport 1024:65535 --dport 22 -j $AP
$IPT -A INPUT -p tcp --dport 22 -j $DP
#Liberar acesso na saída do Firewall
$IPT -A OUTPUT -p icmp -m icmp !
--icmp-type 0 -m limit --limit 2/s -j $AP
$IPT -A OUTPUT -m state --state
NEW,ESTABLISHED -j $AP
#Algumas regras de Bloqueio
$IPT -t mangle -A PREROUTING -i $WAN
-s 0/0 --dport 23 -j $DP
$IPT -t mangle -A PREROUTING -i $LAN -m
iprange --src-range 192.168.1.1-192.168.1.49 -d 0/0 -p tcp --sport
1024:65535 --dport 80:443 -m string --algo bm --string "facebook"
-j $DP
#Bloqueio de Traceroute
$IPT -A C_ARP -p udp -m udp -s 0/0
--dport 33435:33525 -j $DP
Nenhum comentário:
Postar um comentário