FirewallD: разрешать соединения только с определенных IP-адресов

Я пытаюсь использовать FirewallD для ограничения доступа к серверу CentOS с других компьютеров в сети. Он имеет единый сетевой интерфейс и работает в публичной зоне. Допустим, IP-адрес этого сервера 10.10.1.20.

Я хочу разрешить подключаться к этому серверу только компьютерам с IP-адресами 10.10.1.125 и 10.10.1.126 (ssh и https). Ни один из других IP-адресов не должен быть в состоянии подключиться к этому серверу (или даже знать, что он существует).

Я попытался использовать богатые правила FirewallD следующим образом (10.10.1.20)

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.0/24" drop'

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.125" accept'

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.126" accept'

Но это не похоже на работу. Я не могу установить ssh-соединение с 10.10.1.20 с 10.10.1.125 или 10.10.1.126.

Я попытался ввести правила в обратном порядке, но все равно не работает.

Может ли кто-нибудь помочь мне здесь? Нужно ли менять зону с общедоступной на более ограничительную, например, зону удаления, прежде чем можно будет применять правила, которые я написал выше?

2 ответа

Богатые правила - это не тот способ. Они просто создадут путаницу, сейчас и позже.

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

Все, что вам нужно сделать, это установить службы, которые вы хотите разрешить в зоне (что вы, вероятно, уже сделали), а затем установить источники.

Источники трафика могут быть обозначены двумя способами: по интерфейсу или по IP-адресу источника. Трафик, который соответствует любому источнику, проходит эту проверку.

Итак, вы хотите добавить IP-адреса, разрешенные для доступа к сервисам, а затем удалить интерфейс (если есть).

firewall-cmd --zone=public --add-source=10.10.1.25
firewall-cmd --zone=public --add-source=10.10.1.26
firewall-cmd --zone=public --remove-interface=enp2s1
firewall-cmd --runtime-to-permanent

И обратите внимание, что вы, вероятно , не хотите делать это в public зона, но создайте новую зону. В этой зоне по умолчанию настроено несколько вещей (например, DHCP), которые могут вызвать проблемы при удалении интерфейса и ограничении зоны по IP-адресу источника.

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.125" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.125" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.126" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.126" accept'
firewall-cmd --reload 

и перезапустите службу брандмауэра.

брандмауэр блокирует все соединения по умолчанию. Так что вам нужно добавить только эти правила.

Другие вопросы по тегам