У меня есть центральный сервер с установленной базой данных и несколько распределенных серверов, которые вызывают эту центральную базу данных. По соображениям безопасности я хотел бы, чтобы к центральному серверу имели доступ только эти известные серверы.
Итак, я пытаюсь разрешить доступ к порту 5432 серверам 192.168.1.5 и 192.168.2.6.
iptables -A INPUT -s 192.168.1.5,192.168.2.6 -d ??.??.??.?? -p tcp --dport 5432 -j ACCEPT
Это верно?
Я не понимаю, как указать пункт назначения. Пункт назначения на INPUT всегда сам сервер, не так ли? Почему же тогда его можно настраивать? Нужно ли мне его определять или если его не указывать, он автоматически будет указывать на тот же сервер?
решение1
Во-первых, вам нужно разделить ваше правило на два правила (я попробовал это сделать, используя одну команду, указав оба IP-адреса, и это, кажется, работает). Конечный результат — два правила, подобные следующим:
iptables -A INPUT -s 192.168.1.5 -p tcp --dport 5432 -j ACCEPT
iptables -A INPUT -s 192.168.2.6 -p tcp --dport 5432 -j ACCEPT
Во-вторых, вы можете убрать , -d
чтобы просто сопоставить любой IP. Поскольку это INPUT
цепочка, требуется сопоставить один из IP-адресов машины.
В-третьих, не забудьте установить DROP
правило, потому что если у вас есть только эти два правила в ACCEPT
качестве политики по умолчанию для INPUT
цепочки, то все соединения будут разрешены.
Также вам может потребоваться разрешить RELATED
, ESTABLISHED
трафик для пакетов, чтобы они шли в обоих направлениях. Это зависит от ваших правил (что разрешено, а что отбрасывается). Вот правило:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT