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