ホストポートへのQEMUゲストアクセスを無効にする方法

ホストポートへのQEMUゲストアクセスを無効にする方法

次のコマンドを使用してQEMU VMを実行します。

qemu-system-x86_64 -enable-kvm -m 1024 -smp 2 -hda disk.qcow2

デフォルトでは、ゲストオペレーティングシステムはインターネットにアクセスできますが、ホストオペレーティングシステムの開いているポートにもアクセスできます。ゲストOSがホストのポートにアクセスするのを防ぐにはどうすればよいですか(インターネットアクセスは制限されません)。

ベストアンサー1

高度なiptables操作の経験がなく、Linuxがローカルプロセストラフィックをフィルタリングする方法の概要がない場合は、問題になる可能性があります。

あなたのモードでは、qemuはシミュレートされたNATを実行します。ゲストからのNICへのすべての呼び出しは、qemuプロセス自体によってソケット/接続/送信/受信呼び出しに変換されます。これは、接続が127.0.0.1でマシン自体によって確立されることを意味します。この時点で、別のユーザーとしてqemuを実行し、一致を追加してそのユーザーをフィルタリングできますowner

iptables -I OUTPUT -o lo -m owner --uid-owner username -m multiport --dports ports -j DROP

usernameフィルタするユーザー名はどこにあり、このコンピュータでports無効にするポートのカンマ区切りリストはどこにありますか。他のユーザーとしてqemuを実行するには、userまたは同様の方法で実行またはsudoログインする必要があります。sulogin

これがないと自分でフィルタリングされるため、ポートをフィルタリングする一般的な規則を追加すると、そのポートへのアクセスもブロックされます。

別の方法は、qemuのネットワークモードを変更することです。トラフィックをフィルタリングする良い方法は、qemuを仮想イーサネットデバイスにバインドすることです。

  • パケット転送を有効にします。

  • をインストールするには、tunctl自分が所有する仮想ネットワークインターフェイスを追加してください。

tunctl -u yourname -t qemu

rc.local(永続的なものと同じコマンドにこのコマンドを追加することを忘れないでください)

  • 無料の/ 24サブネットを割り当てるようにqemuインターフェイスを設定します(ipまたは他のオペレーティングシステム提供ツールを使用)。ifconfigこのサブネットはゲストオペレーティングシステムにも設定する必要があります。それから-net tap,ifname=qemu,script=off。ゲストオペレーティングシステムネットワークを再設定します。

qemuその後、仮想インターフェイスとして表示されるゲストOSトラフィックを簡単にフィルタリングできます。

iptables -I FORWARD -i qemu -m multiport --dports ports -j DROP

動作する必要があります。

しかし、NATは動作を停止しました。 NATを再び機能させるには、コンピュータから送信されたIPアドレスにパッチを適用するルールを追加する必要があります。eth0すべてのトラフィックが通過するインターフェイスがある場合は、NATをイネーブルにします。

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

おすすめ記事