Назад | Перейти на главную страницу

Правило брандмауэра с политиками по умолчанию не работает

Я сделал сценарий bash правила брандмауэра как:

    #!/bin/bash

    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP

    ip6tables -P INPUT DROP
    ip6tables -P FORWARD DROP
    ip6tables -P OUTPUT DROP

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    ip6tables -A INPUT -i lo -j ACCEPT
    ip6tables -A OUTPUT -o lo -j ACCEPT

    #
    #       Outgoing and Incoming ping – on all interface
    #
    ip6tables -A INPUT -i bond0 -p ipv6-icmp -j ACCEPT
    ip6tables -A OUTPUT -o bond0 -p ipv6-icmp -j ACCEPT

    ip6tables -A INPUT -i bond1 -p ipv6-icmp -j ACCEPT
    ip6tables -A OUTPUT -o bond1 -p ipv6-icmp -j ACCEPT

    ip6tables -A INPUT -i bond2 -p ipv6-icmp -j ACCEPT
    ip6tables -A OUTPUT -o bond2 -p ipv6-icmp -j ACCEPT

    ip6tables -A INPUT -i bond3.243 -p ipv6-icmp -j ACCEPT
    ip6tables -A OUTPUT -o bond3.243 -p ipv6-icmp -j ACCEPT

    #
    #       ssh - 22/tcp
    #
    iptables -A INPUT -i bond1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o bond1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

    iptables -A INPUT -i bond3.243 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o bond3.243 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

    ip6tables -A INPUT -i bond1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    ip6tables -A OUTPUT -o bond1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

    ip6tables -A INPUT -i bond3.243 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    ip6tables -A OUTPUT -o bond3.243 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    #
    #       Save the configuration
    #
    service iptables save
    service ip6tables save

    #
    #       dobackup
    #
    chmod a+r /etc/sysconfig/iptables
    chmod a+r /etc/sysconfig/ip6tables

Теперь всякий раз, когда я применяю эти правила, я теряю соединение ssh с моим сервером. Затем мне нужно остановить службу ip6tables, чтобы восстановить соединение по ssh.

Но когда я меняю iptables -P OUTPUT DROP to iptables -P OUTPUT ACCEPT & ip6tables -P OUTPUT DROP to ip6tables -P OUTPUT ACCEPT, то это правило также будет реализовано, и я не потерял соединение ssh.

Я не уверен, в чем именно проблема. Некоторые ошибки в файле bash или некоторые, о которых я не знаю. Спасибо за поддержку.

Я думаю, что это более удобный способ разрешить входящее соединение на порту ssh без контроля состояния и разрешить исходящее установленное и связанное соединение.

Попробуйте использовать правила:

iptables -A INPUT -i bond1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i bond3.243 -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Ваш сервер не может отправлять другой тип трафика, потому что последнее правило разрешает отправлять только УСТАНОВЛЕННЫЕ и СВЯЗАННЫЕ типы.