Мне нужно настроить iptables для сервера базы данных mongodb, чтобы он разрешал только два типа INPUT-соединений:
Проблема в том, что эти правила нужно связать цепочкой.
Вот что я пробовал:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT # allows all connections via ssh (port 22)
iptables -A INPUT -s web-app-IP -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d web-app-IP -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Первая строка разрешает все входящие подключения на порт 22, а вторая и третья строки разрешают все подключения только от IP-адреса веб-приложения к серверу mongodb и от него.
Кажется, что первая строка блокируется второй и третьей строкой. Есть ли для iptables логический оператор ИЛИ? Если нет, как мне настроить правила, чтобы разрешить оба этих типа подключений?
Вы не разрешаете УСТАНОВЛЕННЫЕ соединения из ssh. Я бы пошел немного попроще:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -s web-app-IP -p tcp --destination-port 27017 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP