Я намерен построить минимальный брандмауэр iptables в Ubuntu Server 14.04. Просто чтобы убедиться, что я правильно строю свой брандмауэр и правильно его запускаю, я запускаю его через сообщество для проверки. Я не совсем понимаю, как это -o interface
работает -i interface
. Каждый раз, когда я смотрю на различные правила брандмауэра, они настраиваются по-разному, так что это усложняет способ настройки моих правил относительно wan
иlan
. Я понимаю это так:ПК>-i interface
Локальная сеть -o interface
>-i interface
WAN -o interface
>ИНТЕРНЕТ. Это также относится к NAT
таблицам.prerouting
>СЕТЬ postrouting
иforward
обходитСЕТЬ.
Это общий набор правил для обеспечения работоспособности брандмауэра, если я правильно понимаю, где wan
находится eth0
и lan
находится 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
Вот мой набор правил, где wan
есть eth0
и lan
есть 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
Также относительно постоянного выполнения брандмауэра. После того, как я отредактирую этот набор правил с sudo nano -w /etc/rc.local
помощью, sudo chmod 755 /etc/rc.local
а затем sudo reboot
будет ли этот набор правил постоянным каждый раз при загрузке устройства?
решение1
Прежде чем идти дальше. Посмотрите на "net filter tables" ( nftables
). Он заменяет iptables, iptables6, arptables, ...
nftables: проще в использовании, мощнее и новее. В последних системах iptables — это (устаревший) фронтенд для nftables.
Пример набора правил nftables: блокировать прямой сетевой доступ пользователя other
и заставлять его использовать прокси. В нем все еще есть два счетчика, которые использовались при тестировании (их можно было бы удалить). Также accept
ing, skuid "proxy-server" не нужен. Так как это текущая политика.
#!/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;
}
}