Назад | Перейти на главную страницу

Блокировать определенные порты на определенных виртуальных машинах, работающих на KVM

У меня 2 виртуальные машины, работающие на хостах KVM. На одном я запускаю веб-сервер, а другой использую для экспериментов - в основном просто использую на нем ssh.

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

Я знаю, что могу использовать iptables на самих виртуальных машинах. Но я хочу сделать это с помощью хостов KVM. Я хочу сделать это по двум основным причинам:

Я никогда этого не делал и пробовал. Я смотрел на virsh из Вот.

Я пробовал The network filter driver часть.

Я создал правило, используя приведенный ниже xml, чтобы заблокировать все порты TCP от 0 до 1023,

<filter name='no-spamming' chain='root'>
  <uuid>d217f2d7-5a04-0e01-8b98-ec2743436b74</uuid>
  <rule action='drop' direction='in' priority='500'>
    <tcp match='yes' srcportstart='0' srcportend='1023'/>
  </rule>
</filter>

А потом я использовал virsh edit и добавил отмеченную строку в xml.

<interface type='ethernet'>
  <mac address='52:54:00:33:b8:c7'/>
  <script path='no'/>
  <target dev='tap0'/>
  <model type='virtio'/>
  <filterref filter='no-spamming'/>       <-- Added this line
  <boot order='2'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Даже после этого я мог получить доступ к порту 80 на обеих виртуальных машинах.

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

РЕДАКТИРОВАТЬ

Я следил за предложениями в этот ответ и изменил srcportstart к dstportstart и srcportend к dstportend.

Но я все еще могу использовать ssh через порт 22 для обеих виртуальных машин.

Я думаю, вы хотите фильтровать порт назначения, а не исходный порт, и поэтому следует использовать dstportstart/dstportstop для фильтрации входящих соединений.