На сетевой машине с Linux я хотел бы ограничить набор адресов в «публичной» зоне (концепция firewalld), которым разрешено достигать ее. Таким образом, конечным результатом будет то, что никакая другая машина не сможет получить доступ к любому порту или протоколу, кроме явно разрешенных, что-то вроде
--add-rich-rule='rule family="ipv4" source not address="192.168.56.120" drop'
--add-rich-rule='rule family="ipv4" source not address="192.168.56.105" drop'
Проблема выше заключается в том, что это не настоящий список, он будет блокировать все, поскольку, если один его адрес заблокирован, поскольку он не совпадает с другим, генерируя случайный эффект «отбросить все», как бы я «разблокировал» определенный не непрерывный набор? источник принимает список адресов? я пока не вижу ничего в моем взгляде на документы или результаты Google.
РЕДАКТИРОВАТЬ: Я только что создал это:
# firewall-cmd --zone=encrypt --list-all
encrypt (active)
interfaces: eth1
sources: 192.168.56.120
services: ssh
ports: 6000/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Но я все еще могу достигнуть порта 6000 .123
, потому что мое намерение состояло в том, что, если источник не указан, он не должен иметь доступ к какой-либо службе или порту.
eth1
из зоны.firewall-cmd --zone=encrypt --remove-interface=eth1
Согласно
firewalld.richlanguage
:Укажите сетевую маску для адреса, чтобы разрешить смежные блоки.
Кроме этого, вы можете попробовать создать
ipset
несмежный список разрешенных IP-адресов.Например, в
/etc/firewalld/direct.xml
:Фактическое
ipset
должно быть создано отдельно.источник
Вы можете легко управлять с помощью Rich Rule.
Первый шаг
Второй шаг - добавьте богатое правило
Весь порт доступен по 192.168.2.2, как только вы добавите расширенное правило и заблокируете каждый порт из другого источника.
Если вы добавите какой-либо порт или службу с помощью приведенной ниже команды, она будет доступна для всех источников.
Если вы хотите открыть конкретный порт для конкретного Ip, чем приведенная ниже команда
источник