блок все кроме некоторых дюйм/с с firewalld

На сетевой машине 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 мое намерение состояло в том, что, если источник не перечислен, он не должен мочь достигнуть любого сервиса или порта

16
задан 7 April 2015 в 00:20
4 ответа

Расширенные правила вообще не нужны.

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

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

Вместо этого попробуйте использовать другую зону, например «внутреннюю», для наиболее надежных IP-адресов для доступа к потенциально конфиденциальным службам, таким как sshd. (Вы также можете создавать свои собственные зоны.)

Предупреждение: не путайте специальную «доверенную» зону с обычной «внутренней» зоной. Любые источники, добавленные в «доверенную» зону, будут разрешены на всех портах; добавление сервисов в «доверенную» зону разрешено, но не имеет смысла.

firewall-cmd --zone=internal --add-service=ssh
firewall-cmd --zone=internal --add-source=192.168.56.105/32
firewall-cmd --zone=internal --add-source=192.168.56.120/32
firewall-cmd --zone=public --remove-service=ssh

Результатом этого будет «внутренняя» зона, которая разрешает доступ к ssh, но только с двух заданных IP-адресов. Чтобы сделать его постоянным, повторно запускайте каждую команду с добавленным - постоянным .

23
ответ дан 2 December 2019 в 20:40

Согласно firewalld.richlanguage :

Источник source [not] address = "address [/ mask]"

   With the source address the origin of a connection attempt can be limited to the source address. An address is either a single IP address, or a network IP address. The address has to match the rule family (IPv4/IPv6). Subnet mask is expressed in either
   dot-decimal (/x.x.x.x) or prefix (/x) notations for IPv4, and in prefix notation (/x) for IPv6 network addresses. It is possible to invert the sense of an address by adding not before address. All but the specified address will match then.

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

Кроме этого, вы можете попробовать создать ipset для не- непрерывный список разрешенных IP-адресов.

Например, в /etc/firewalld/direct.xml :

<?xml version="1.0" encoding="utf-8"?>
<direct>
   <rule ipv="ipv4" table="filter" chain="INPUT" priority="0">-m set --match-set whitelist src -j ACCEPT</rule>
</direct>

Фактический ipset должен быть создан отдельно.

1
ответ дан 2 December 2019 в 20:40

Вы можете легко управлять с помощью расширенного правила.

Первый шаг

firewall-cmd --permanent --set-default-zone=home
firewall-cmd --permanent --zone=drop --change-interface=eth0

Второй шаг - добавить расширенное правило

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" source address="192.168.78.76/32" accept'

Все порты доступны для 192.168.2.2 после добавления расширенного правила и блокировки каждый порт из другого источника.

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

firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --add-port=8080

Если вы хотите открыть определенный порт для определенного IP-адреса, используйте команду ниже

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" port="8080/tcp" source address="192.168.78.76/32" accept'
0
ответ дан 2 December 2019 в 20:40

Сначала установите и запустите службу firewalld

sudo yum install -y firewalld
sudo systemctl start firewalld 

Затем откройте исходные IP-адреса 192.168.56.120 и 192.168.56.121.

При необходимости откройте ssh 22 для удаленной оболочки и используйте флаг [--permanent], чтобы сохранить изменения после перезагрузки системы.

sudo firewall-cmd --zone=public --permanent --add-service=ssh
sudo firewall-cmd --zone=public --permanent --add-source=192.168.56.120
sudo firewall-cmd --zone=public --permanent --add-source=192.168.56.121

Затем перезагрузите службу firewalld, чтобы активировать новую конфигурацию.

sudo systemctl reload firewalld

Вы также можете смешивать входящий адрес и порт назначения, используя богатые правила функцию firewall-cmd

2
ответ дан 15 March 2021 в 06:54

Теги

Похожие вопросы