У меня 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
для фильтрации входящих соединений.