debian (rc.firewall)
Categoria: Segurança
Software: debian
[ Hits: 23.499 ]
Por: Ederson
rc.firewall com siafi e vpn
#Ai galera esse e para administradores de quarteis com siafi e vpn
#!/bin/bash
firewall_start() {
echo "==============================================="
echo "| :: SETANDO A CONFIGURACAO DO IPTABLES :: |"
echo "==============================================="
ipt="/usr/local/sbin/iptables"
### Passo 1: Limpando as regras ###
$ipt -F INPUT
$ipt -F OUTPUT
$ipt -F FORWARD
echo "Limpando todas as regras .................[ OK ]"
# Definindo a Politica Default das Cadeias
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
echo "Setando as regras padrao .................[ OK ]"
### Passo 2: Desabilitar o trafego IP entre as placas de rede ###
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "Setando ip_foward ........................[ OK ]"
# Portas e Servicos
ftp=20:21
ftp1=20
ftp2=21
smtp=25
dns=53
dhcp1=67
dhcp2=68
http=80
pop=110
ntp=123
snmp=161:162
https=443
Paltas=1024:65535
squid=3128
rip=520
vpn1=500
vpn2=4500
siafi1=8999
siafi2=23000
redecmdo1=465
redecmdo2=995
fz1=990
fz2=9091
fz3=9121
# Interfaces
IADSL=eth0
ILAN=eth1
ILocal=lo
# Redes Internas
LAN=192.168.1.0/255.255.255.0
ADSL=10.1.1.5/255.0.0.0
# Redes Externas
Siafi=161.148.40.0/255.255.255.0
Vpn=200.199.248.60
Redecmdo=200.252.148.144
Avg1=207.40.194.0/255.255.255.0
Avg2=193.86.103.0/255.255.255.0
Internet=0.0.0.0/0.0.0.0
# Configurando a Protecao anti-spoofing
for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" > $spoofing
done
echo "Setando a protecao anti-spoofing .........[ OK ]"
# Impedimos que um atacante possa maliciosamente alterar alguma rota
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "Setando anti-redirecionamento ............[ OK ]"
# Utilizado em diversos ataques, isso possibilita que o atacante determine o "caminho" que seu
# pacote vai percorrer (roteadores) ate seu destino. Junto com spoof, isso se torna muito perigoso.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "Setando anti_source_route.................[ OK ]"
# Protecao contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "Setando anti-bogus_response ..............[ OK ]"
# Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "Setando protecao anti_synflood ...........[ OK ]"
# Protecao contra port scanners ocultos
$ipt -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$ipt -A INPUT -s 0.0.0.0/0 -p icmp -j DROP
# Bloqueando tracertroute
$ipt -A INPUT -p udp -s 0/0 -i $IADSL --dport 33435:33525 -j DROP
#Protecoes contra ataques
$ipt -A INPUT -m state --state INVALID -j DROP
$ipt -A OUTPUT -p tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP
#Ping da morte
$ipt -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#Protecao contra Syn-floods
$ipt -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
### Passo 3: Carregando os modulos do iptables ###
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_MASQUERADE
modprobe ipt_layer7
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
echo "Carregando modulos do iptables ...........[ OK ]"
### Passo 4: Agora, vamos definir o que pode passar e o que nao ###
# Cadeia de Entrada
# LOCALHOST - ACEITA TODOS OS PACOTES
$ipt -A INPUT -i lo -j ACCEPT
# PORTA $http - ACEITA PARA A REDE LOCAL
$ipt -A INPUT -i $ILAN -p tcp --dport $http -j ACCEPT
# PORTA 22 - ACEITA PARA A REDE LOCAL
$ipt -A INPUT -i $ILAN -p tcp --dport 22 -j ACCEPT
# No $ipt, temos de dizer quais sockets sao validos em uma conexao
$ipt -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Setando regras para INPUT ................[ OK ]"
################################
# Cadeia de Reenvio (FORWARD).
# Primeiro, ativar o mascaramento (nat).
$ipt -t nat -F POSTROUTING
$ipt -t nat -A POSTROUTING -o $IADSL -j MASQUERADE
echo "Ativando mascaramento de IP ..............[ OK ]"
## Redireciona para SQUID
$ipt -t nat -A PREROUTING -i $ILAN -p tcp --dport $http -j REDIRECT --to-port $squid
$ipt -t nat -A PREROUTING -i $ILAN -p tcp --dport $https -j REDIRECT --to-port $squid
# Agora dizemos quem e o que podem acessar externamente
# No $ipt, o controle do acesso a rede externa e feito na cadeia "FORWARD"
# Abre para a interface de loopback.
$ipt -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
# Abre para uma faixa de enderecos da rede local
$ipt -A INPUT -p tcp --syn -s $LAN -j ACCEPT
# ACEITA TODOS OS PACOTES
#$ipt -A FORWARD -s 192.168.1.4 -j ACCEPT
$ipt -A FORWARD -s 192.168.1.5 -j ACCEPT
$ipt -A FORWARD -s 192.168.1.55 -j ACCEPT
$ipt -A FORWARD -s 192.168.1.19 -j ACCEPT
$ipt -A FORWARD -s 192.168.1.6 -j ACCEPT
# SIAFI
$ipt -A FORWARD -s $LAN -d $Siafi -p tcp -m multiport --destination-port $siafi1,$siafi2 -j ACCEPT
$ipt -A FORWARD -i $IADSL -s $Siafi -d $LAN -p tcp -m multiport --source-port $siafi1,$siafi2 -m state --state ESTABLISHED -j ACCEPT
$ipt -A FORWARD -p tcp --dport 23000 -j ACCEPT
$ipt -A FORWARD -p tcp --dport 8999 -j ACCEPT
$ipt -A FORWARD -s $LAN -d $Siafi -j ACCEPT
# VPN
$ipt -A FORWARD -s $LAN -d $Vpn -p udp --destination-port $vpn1 -j ACCEPT
$ipt -A FORWARD -s $LAN -d $Vpn -p udp --destination-port $vpn2 -j ACCEPT
$ipt -A FORWARD -s $Vpn -d $LAN -p udp --destination-port $vpn1 -j ACCEPT
$ipt -A FORWARD -s $Vpn -d $LAN -p udp --destination-port $vpn2 -j ACCEPT
# FileZilla
$ipt -A INPUT -i $ILAN -p tcp --dport $fz1 -j ACCEPT
$ipt -A FORWARD -p tcp --dport $fz1 -j ACCEPT
$ipt -A INPUT -i $ILAN -p tcp --dport $fz2 -j ACCEPT
$ipt -A FORWARD -p tcp --dport $fz2 -j ACCEPT
$ipt -A INPUT -i $ILAN -p tcp --dport $fz3 -j ACCEPT
$ipt -A FORWARD -p tcp --dport $fz3 -j ACCEPT
# AVG
$ipt -A FORWARD -s $LAN -d $Avg1 -p tcp --destination-port $http -j ACCEPT
$ipt -A FORWARD -i $IADSL -s $Avg1 -d $LAN -p tcp --source-port $http -m state --state ESTABLISHED -j ACCEPT
$ipt -A FORWARD -s $LAN -d $Avg2 -p tcp --destination-port $http -j ACCEPT
$ipt -A FORWARD -i $IADSL -s $Avg2 -d $LAN -p tcp --source-port $http -m state --state ESTABLISHED -j ACCEPT
##### INICIO REGRAS PARA LAYER7 ########
# Protocols
# MSN Messenger
$ipt -A FORWARD -m layer7 --l7proto msnmessenger -j DROP
$ipt -A FORWARD -m layer7 --l7proto msn-filetransfer -j DROP
# Bittorrent - P2P filesharing
$ipt -A FORWARD -m layer7 --l7proto bittorrent -j DROP
# Gnutella - P2P filesharing
$ipt -A FORWARD -m layer7 --l7proto gnutella -j DROP
# Skype to phone
$ipt -A FORWARD -m layer7 --l7proto skypeout -j DROP
$ipt -A FORWARD -m layer7 --l7proto skypetoskype -j DROP
# eDonkey2000 - P2P filesharing
$ipt -A FORWARD -m layer7 --l7proto edonkey -j DROP
# Yahoo messenger
$ipt -A FORWARD -m layer7 --l7proto yahoo -j DROP
# Ventrilo - VoIP
$ipt -A FORWARD -m layer7 --l7proto ventrilo -j DROP
# FastTrack - P2P filesharing
$ipt -A FORWARD -m layer7 --l7proto fasttrack -j DROP
# Chikka - SMS
$ipt -A FORWARD -m layer7 --l7proto chikka -j DROP
#### FIM REGRAS LAYER7 ####
#### GERANDO LOGS DE ACESSO ####
# Gerando logs do msn
$ipt -A FORWARD -m layer7 --l7proto msnmessenger -j LOG --log-prefix "msn : "
# Gerando logs de emule
$ipt -A FORWARD -m layer7 --l7proto edonkey -j LOG --log-prefix "edonkey : "
$ipt -A FORWARD -m layer7 --l7proto gnutella -j LOG --log-prefix "gnutella : "
#### FIM LOGS ####
# Bloqueando Acesso MSN
$ipt -A FORWARD -p tcp --dport 1863 -j DROP
$ipt -A OUTPUT -p tcp --dport 1863 -j DROP
# Ignora pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# PORTA 3128 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p tcp --dport $squid -j ACCEPT
# PORTA 53 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p udp --dport 53 -j ACCEPT
# PORTA 110 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p tcp --dport 110 -j ACCEPT
# PORTA 25 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p tcp --dport 25 -j ACCEPT
# PORTA 443 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p tcp --dport $https -j ACCEPT
# PORTA 21 - ACEITA PARA A REDE LOCAL
$ipt -A FORWARD -i $ILAN -p tcp --dport 21 -j ACCEPT
# No $ipt, temos de dizer quais sockets sao validos em uma conexao
$ipt -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
echo "Setando regras para FOWARD ...............[ OK ]"
# Apesar do padrao do forward ser bloqueio. Aqui a regra eh duplicada para gerar log,
# ou seja, tudo o que eh bloqueado por default no forward eh logado aqui
$ipt -A FORWARD -m limit --limit 2/m -j LOG --log-prefix "FORWARD: Bloqueio Padrao "
$ipt -A FORWARD -j DROP
# Finalmente: Habilitando o trafego IP, entre as Interfaces de rede
echo "1" > /proc/sys/net/ipv4/ip_forward
# Ignora qualquer pacote de entrada, vindo de qualquer endereco, a menos
# que especificado o contrario acima, Bloqueia tudo.
$ipt -A INPUT -p tcp --syn -j DROP
echo "Setando ip_foward: ON ....................[ OK ]"
echo "Firewall configurado com sucesso .........[ OK ]"
echo
}
firewall_restart() {
firewall_start
}
firewall_stop() {
echo "==========================================="
echo "| :: DESLIGANDO FIREWALL :: |"
echo "==========================================="
# Limpa as regras
$ipt -F INPUT
$ipt -F OUTPUT
$ipt -F FORWARD
echo "Limpando todas as regras .................[ OK ]"
}
case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_restart
;;
*)
firewall_start
esac
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









