Я пытаюсь настроить конфигурацию iptables так, чтобы исходящие соединения с моего сервера CentOS 6.2 были разрешены ТОЛЬКО в том случае, если они находятся в состоянии ESTABLISHED. В настоящее время следующая установка отлично работает для sshd, но все правила Samba полностью игнорируются по причине, которую я не могу понять.
iptables Bash-скрипт для установки ВСЕХ правил:
# Remove all existing rules
iptables -F
# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Allow incoming SSH
iptables -A INPUT -i eth0 -p tcp --dport 22222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22222 -m state --state ESTABLISHED -j ACCEPT
# Allow incoming Samba
iptables -A INPUT -i eth0 -s 10.1.1.0/24 -p udp --dport 137:138 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 10.1.1.0/24 -p udp --sport 137:138 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 10.1.1.0/24 -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 10.1.1.0/24 -p tcp --sport 139 -m state --state ESTABLISHED -j ACCEPT
# Enable these rules
service iptables restart
Список правил iptables после выполнения вышеуказанного скрипта:
[root@repoman ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:22222 state NEW,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:22222 state ESTABLISHED
В конце концов, я пытаюсь ограничить Samba так же, как и для sshd. Кроме того, я пытаюсь ограничить подключения следующим диапазоном IP-адресов: 10.1.1.12 - 10.1.1.19
Не могли бы вы предложить несколько советов или, возможно, даже полноценное решение? я прочел человек iptables довольно широко, поэтому я не уверен, почему правила Samba выбрасываются.
Кроме того, удаление -s 10.1.1.0/24 флаги не меняют того факта, что правила игнорируются.
Вы не понимаете, что означают состояния подключения. NEW означает, что это первый пакет в соединении, который в случае TCP является первым пакетом SYN. ESTABLISHED означает, что пакет принадлежит существующему соединению, которым в случае TCP является все, что находится после первого пакета SYN. Чтобы соединение перешло в состояние ESTABLISHED, этот первый пакет должен пройти. Разрешая только УСТАНОВЛЕННЫЕ соединения, вы блокируете этот первый пакет, и поэтому соединения никогда не будут установлены.
При настройке iptables обычно используется отслеживание соединений, чтобы контролировать первый пакет каждого соединения (т.е. состояние NEW), а затем разрешать прохождение всех пакетов в состоянии ESTABLISHED. Поскольку соединение может перейти в состояние ESTABLISHED, только если первый пакет был разрешен, безопасно принимать все пакеты в состоянии ESTABLISHED.
Это service iptables restart
в конце концов, это проблема. Когда вы запускаете iptables
команды, эти правила вступают в силу немедленно. В iptables
Служба, которую вы перезапускаете, использует файл конфигурации для загрузки всех правил брандмауэра при запуске системы. Когда вы его запускаете, он заменяет все правила, которые вы только что создали, тем, что было в сохраненной конфигурации.
В соответствии с этот то, что вы должны сделать, это использовать iptables
команды для правильной работы брандмауэра, затем service iptables save
чтобы сохранить конфигурацию брандмауэра для следующей загрузки.