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

Безопасная конфигурация iptables для Samba

Я пытаюсь настроить конфигурацию 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 чтобы сохранить конфигурацию брандмауэра для следующей загрузки.