Как разрешить доступ к определенному порту только определенным IP-адресам?

Как разрешить доступ к определенному порту только определенным IP-адресам?

У меня есть центральный сервер с установленной базой данных и несколько распределенных серверов, которые вызывают эту центральную базу данных. По соображениям безопасности я хотел бы, чтобы к центральному серверу имели доступ только эти известные серверы.

Итак, я пытаюсь разрешить доступ к порту 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

Связанный контент