6.3.06

rc.firewall

#!/bin/bash

# ppp0 é a interface externa
# eth1 e ppp1 são interfaces internas

# Flush
iptables -F; iptables -t nat -F; iptables -t mangle -F

# Política de acesso
iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP

# Permissões de acesso
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.0.2 -j ACCEPT
iptables -A INPUT -i ppp1 -s 192.168.131.201 -j ACCEPT

# Compartilhando o acesso a internet
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.131.0/24 -o ppp0 -j MASQUERADE

# Abrindo portas
# bittorrent
iptables -A INPUT -p tcp --dport 50000:50100 -i ppp0 -j ACCEPT
# amule
iptables -A INPUT -p tcp --dport 4662 -i ppp0 -j ACCEPT
iptables -A INPUT -p udp --dport 4672 -i ppp0 -j ACCEPT

# Bloquear pacotes com estado "novo/invalido" que saiam pela eth1 e ppp1
# Permitir pacotes com estado "estabelecido/reincidente"
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o ppp1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o ppp1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitindo qualquer solicitação de Internet que parta da rede 192.168.0.0/24 e 192.168.131.0/24
iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i ppp1 -s 192.168.131.0/24 -j ACCEPT

# Bloqueia qualquer pacote que não liberado por regras anteriores
iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP

Nenhum comentário: