минимальный брандмауэр iptables

минимальный брандмауэр iptables

Я намерен построить минимальный брандмауэр 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и заставлять его использовать прокси. В нем все еще есть два счетчика, которые использовались при тестировании (их можно было бы удалить). Также accepting, 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;
    }
}

Связанный контент