![firewall mínimo de iptables](https://rvso.com/image/169397/firewall%20m%C3%ADnimo%20de%20iptables.png)
Pretendo construir um firewall iptables mínimo no servidor Ubuntu 14.04. Apenas para ter certeza de que estou construindo meu firewall corretamente e executando-o corretamente, estou executando-o na comunidade para verificação. Eu não entendo muito bem o caminho -o interface
e -i interface
o funcionamento. Cada vez que observo regras de firewall diferentes, elas são configuradas de maneira diferente, o que complica a maneira como minhas regras são configuradas em relação wan
às lan
regras. Pelo que entendi é assim:PC>-i interface
LAN -o interface
>-i interface
WAN -o interface
>INTERNET. Isso também é verdade para NAT
tabelas. prerouting
>REDE postrouting
e forward
ignoraREDE.
Este é um conjunto de regras gerais para que o firewall funcione se eu estiver correto onde wan
está eth0
e lan
está eth1
:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Este é o meu conjunto de regras onde wan
está eth0
e lan
está eth1
:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT,ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD -j DROP
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT
iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
Também em relação à execução permanente do firewall. Depois de editar este conjunto de regras, sudo nano -w /etc/rc.local
use sudo chmod 755 /etc/rc.local
e sudo reboot
este conjunto de regras será permanente sempre que o dispositivo for inicializado?
Responder1
Antes de ir mais longe. Veja "tabelas de filtros de rede" ( nftables
). Ele substitui iptables, iptables6, arptables, ...
nftables é: mais fácil de usar, mais poderoso e mais recente. Em sistemas recentes, o iptables é um front-end (legado) para nftables.
Um exemplo de conjunto de regras nftables: para bloquear o acesso direto do usuário à rede other
e forçá-lo a usar um proxy. Ainda possui dois contadores, que foram utilizados nos testes (podem ser removidos). Além disso accept
, skuid "servidor proxy" é desnecessário. Como esta é a política atual.
#!/usr/sbin/nft -f
table ip my_table {}
flush table my_table
table ip my_table {
chain output {
type filter hook output priority 0; policy accept;
skuid "other" jump restrict_chain;
skuid "proxy-server" accept;
}
chain restrict_chain {
counter;
oifname != "lo" reject;
tcp dport != "1080" reject;
counter;
accept;
}
}