Olá amigos.
Senti necessidade agora de bloquear um certo IP aqui na rede, mas já tentei todo tipo de regra e ainda não consegui bloquear, o IP bloqueado consegue acessar a internet, vejam as regras que já tentei.
iptables -A INPUT -s 172.16.0.3 -j DROP
iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP
Mas aí me toquei que essa regra só irá bloquear qualquer pacote desse IP destinado ao gateway, e eu quero bloquear o acesso à internet, então tentei isso.
iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP
iptables -A FORWARD -i $iflocal1 -s 172.16.0.3 -j DROP
Mas ainda assim a máquina acessa a internet, veja meu firewall atual.
#!/bin/bash
echo "Declarando variáveis"
# Interface da Internet:
ifinternet="eth4"
# IP da Internet
ip_internet="192.168.1.2"
# Interface da rede local
iflocal="eth3"
# IP da Rede Local
rede_local="10.0.0.0/24"
# Interface da rede local 1
iflocal1="eth3:0"
# IP da Rede Local 1
rede_local1="172.16.0.0/23"
# Portas à serem liberadas
portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"
#### Função "start" ####
iniciar(){
echo "Carregando módulos"
modprobe ip_tables
modprobe iptable_mangle
modprobe iptable_nat
echo "Módulos carregados"
echo "Limpando regras"
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
echo "Regras limpas"
echo "Definindo política padrão"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo "Política padrão definida"
echo "Habilitando roteamento"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Roteamento ativado"
echo "Compartilhando internet"
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "Internet compartilhada"
echo "Manter conexões establecidas"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Negando pacotes inválidos"
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
echo "Liberando portas"
iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
echo "Portas liberadas"
echo "Hosts indesejados serão bloqueados"
iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP
iptables -A FORWARD -i $iflocal1 -s 172.16.0.3 -j DROP
echo "Liberando tráfego"
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -i $iflocal1 -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i $iflocal -j ACCEPT
iptables -A FORWARD -i $iflocal1 -j ACCEPT
echo "Tráfego liberado"
}
parar(){
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
}
status(){
iptables -L -v -n
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
"status") status;;
*) echo "Use os parâmetros start ou stop"
esac