quarta-feira, 28 de outubro de 2015

Firewall Shell script


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