conesteel
(usa Debian)
Enviado em 29/10/2014 - 11:56h
#!/bin/bash
# Interface da Internet:
ifinternet="eth0"
# Interface da rede local
iflocal="eth1"
iniciar(){
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_MASQUERADE
# Desabilitando o trafego IP entre as placas de rede
echo 0 > /proc/sys/net/ipv4/ip_forward
# Configurando a Protecao anti-spoofing
for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $spoofing
done
# Impedimos que um ataque possa maliciosamente alterar alguma rota
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Utilizando 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
# Protecao contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# LIBERANDO PORTA 80 PARA O APACHE
#iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 80 --syn -j ACCEPT
#iptables -A INPUT -p tcp -i $ifinternet --dport 80 -j ACCEPT
#iptables -A INPUT -p -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
#iptables -A INPUT -p tcp --destination-port 23025 -j ACCEPT
# Liberando para rede interna
iptables -A INPUT -p tcp --syn -s 128.100.0.0/16 -j ACCEPT
# LIBERANDO CAMERAS
iptables -A INPUT -p tcp --dport 23001:24200 -j ACCEPT
iptables -t nat -A PREROUTING -i $ifinternet -p tcp --dport 80 -j DNAT --to-destination 128.100.0.1
iptables -t nat -A PREROUTING -i $ifinternet -p udp --dport 80 -j DNAT --to-destination 128.100.0.1
# PORTA 80 - ACEITA PARA REDE LOCAL
iptables -A INPUT -i $iflocal -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 23025 -j ACCEPT
# No iptables, temos de dizer quais sockets sao validos em uma conexao
iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# Cadeia de Reenvio (FORWARD).
# Primeiro, ativar o mascaramento (nat).
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
# Agora podemos dizer quen e o que podem acessar externamente
# No iptables, o controle de acesso a rede externa e feito na cadeia "FORWARD"
# PORTA 3128 - ACEITA PARA REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
# PORTA 80 ACESSO EXTERNO (APACHE)
#iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#iptables -t nat -A PREROUTING -i $ifinternet -p tcp --dport 80 -j DNAT --to 1xx.xxx.x.x:80
#iptables -t nat -A PREROUTING -d 201.83.94.4 -p tcp --dport 80 -j DNAT --to 128.100.0.1:80
#iptables -t nat -A PREROUTING -d 201.83.94.4 -p tcp --dport 23025 -j DNAT --to 128.100.0.1:23025
#Câmeras
iptables -A PREROUTING -p tcp -m tcp -i $ifinternet --dport 24172 -j DNAT --to-destination 128.100.0.172:24172
# PORTA 53 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p udp --dport 53 -j ACCEPT
# PORTA 5017 - ACEITA PARA A REDE LOCAL (CAT)
iptables -A FORWARD -i $iflocal -p udp --dport 5017 -j ACCEPT
# PORTA 110 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 110 -j ACCEPT
# PORTA 25 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 25 -j ACCEPT
# PORTA 587 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 587 -j ACCEPT
# PORTA 443 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 443 -j ACCEPT
# PORTA 21 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 21 -j ACCEPT
# PORTA 20 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 20 -j ACCEPT
# PORTA 8005 - ACEITA PARA A REDE LOCAL
iptables -A FORWARD -i $iflocal -p tcp --dport 8005 -j ACCEPT
# No iptables, temos de dizer quais sockets sao validos em uma conexao
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
#ATIVANDO O MODULO
modprobe ipt_string
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
# PORTA 22 - ACEITA PARA A REDE LOCAL
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Fecha o resto
iptables -A INPUT -p tcp --syn -j DROP
# LOCALHOST - ACEITA TODOS OS PACOTES
iptables -A INPUT -i lo -j ACCEPT
}
parar(){
iptables -F
iptables -F -t nat
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start ou stop"
esac