🖧 Как открыть порт для определенного IP-адреса в Firewalld |

🖧 Как открыть порт для определенного IP-адреса в Firewalld

Мануал

Как разрешить трафик с определенного IP-адреса в моей частной сети или разрешить трафик из определенной частной сети через firewalld на определенный порт или службу на сервере Red Hat Enterprise Linux (RHEL) или CentOS?

В этой короткой статье вы узнаете, как открыть порт для определенного IP-адреса или диапазона сети на сервере RHEL или CentOS, на котором запущен межсетевой экран firewalld.

Наиболее подходящий способ решить эту проблему – использовать зону firewalld.

Итак, вам необходимо создать новую зону, в которой будут храниться новые конфигурации (или вы можете использовать любую из доступных безопасных зон по умолчанию).

Открыть порт для определенного IP-адреса в Firewalld

Сначала создайте соответствующее имя зоны (в нашем случае мы использовали mariadb-access, чтобы разрешить доступ к серверу базы данных MySQL).

# firewall-cmd --new-zone=mariadb_access --permanent
Затем перезагрузите настройки firewalld, чтобы применить новое изменение.
Если вы пропустите этот шаг, вы можете получить сообщение об ошибке при попытке использовать новое имя зоны.
На этот раз новая зона должна появиться в списке зон, как показано на следующем снимке экрана.
# firewall-cmd --reload
# firewall-cmd --get-zones
Затем добавьте исходный IP-адрес (10.24.96.5/20) и порт (3306), который вы хотите открыть на локальном сервере, как показано далее.
Затем перезагрузите настройки firewalld, чтобы применить новые изменения.
# firewall-cmd --zone=mariadb-access --add-source=10.24.96.5/20 --permanent
# firewall-cmd --zone=mariadb-access --add-port=3306/tcp  --permanent
# firewall-cmd --reload
В качестве альтернативы вы можете разрешить трафик из всей сети (10.24.96.0/20) на конкретную службу или порт.
# firewall-cmd --zone=mariadb-access --add-source=10.24.96.0/20 --permanent
# firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent
# firewall-cmd --reload

Чтобы убедиться, что новая зона имеет необходимые настройки, как добавлено выше, проверьте ее сведения с помощью следующей команды.

# firewall-cmd --zone=mariadb-access --list-all

Как удалить порт и зону из Firewalld

Вы можете удалить исходный IP-адрес или сеть, как показано далее:

# firewall-cmd --zone=mariadb-access --remove-source=10.24.96.5/20 --permanent
# firewall-cmd --reload

Чтобы удалить порт из зоны, выполните следующую команду и перезагрузите настройки firewalld:

# firewall-cmd --zone=mariadb-access --remove-port=3306/tcp --permanent
# firewall-cmd --reload

Чтобы удалить зону, выполните следующую команду и перезагрузите настройки firewalld:

# firewall-cmd --permanent --delete-zone=mariadb_access
# firewall-cmd --reload
И последнее, вы также можете использовать правила firewalld rich. Вот пример:
# firewall-cmd --permanent –zone=mariadb-access --add-rich-rule='rule family="ipv4" source address="10.24.96.5/20" port protocol="tcp" port="3306" accept'

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. tester

    Зачем вы людей обманываете? Вы вообще понимаете что это так не работает? С таким подходом к написанию фаервола у вас будут большие проблемы. Судя по написаному вы видимо не понимаете в принципе как работает iptables. Frewall-cmd это оболочка для iptables, к тому же довольно сырая.
    # firewall-cmd –zone=mariadb-access –add-source=10.24.96.0/20 –permanent
    создаёт правило, проверяется через iptables -nvL. Iptables его читает, применяет. Дальше видит вот это безумие:
    #firewall-cmd –zone=mariadb-access –add-port=3306/tcp –permanent
    И говорит “Воу да можно пропускать всё подряд на открытый порт и мне пофигу что было там выше!”
    Понимаете?! Iptables читает и применяет правила сверху вниз и то что вы хотите сделать делаеться только одной строкой с указанием ip port interface. ОДНОЙ строкой. Одним правилом . И не через firewall-cmd. Иначе вам в порт влетает всё подряд с игнором ip source. Я проверил.

    Ответить