名前

pve-firewall - PVE ファイアウォールデーモン

SYNOPSIS

pve-firewall <COMMAND> [ARGS] [OPTIONS].

pve-firewall コンパイル

ファイアウォールのルールをコンパイルして印刷します。これはテストに便利です。

pve-firewallヘルプ [オプション]。

指定したコマンドに関するヘルプを表示します。

--extra-args <array> です

特定のコマンドのヘルプを表示します。

--verbose <ブール値

冗長出力フォーマット。

pve-ファイアウォール

ローカルネットワークの情報を印刷します。

pve-ファイアウォール再起動

Proxmox VEファイアウォールサービスを再起動します。

pve-firewall simulate [OPTIONS]をシミュレートします。

ファイアウォールのルールをシミュレートします。これはカーネルのルーティングテーブルをシミュレートするのではなく、単にソースゾーンから宛先ゾーンへのルーティングが可能であると仮定します。

--dest <文字列

宛先IPアドレス。

--ポート <整数

宛先ポート

--from (host|outside|vmd+|ctd+|([a-zA-Z][a-zA-Z0-9]{0,9})/(\S+))(デフォルト = outside)

ソースゾーン。

--プロトコル (tcp|udp)(デフォルト = tcp)

プロトコル

--ソース <文字列

ソースIPアドレス。

--スポーツ <整数

ソースポート

--to (host|outside|vmd+|ctd+|([a-zA-Z][a-zA-Z0-9]{0,9})/(\S+))(default = host)

デスティネーションゾーン

--verbose <boolean>(デフォルト = 0)

冗長出力。

pve-firewall start [OPTIONS] [オプション]

Proxmox VEファイアウォールサービスを開始します。

--debug <boolean>(デフォルト = 0)

デバッグモード - フォアグラウンドのまま

pve-ファイアウォールのステータス

ファイアウォールの状態を取得します。

pve-ファイアウォール停止

Proxmox VEファイアウォールサービスを停止します。停止すると、Proxmox VE関連のiptableルールがすべてアクティブに削除され、ホストが保護されなくなる可能性があることに注意してください。

説明

Proxmox VE Firewallは、ITインフラストラクチャを保護する簡単な方法を提供します。クラスタ内のすべてのホストのファイアウォールルールを設定したり、仮想マシンやコンテナのルールを定義したりできます。ファイアウォールマクロ、セキュリティグループ、IPセット、エイリアスなどの機能が、このタスクを容易にします。

すべての設定はクラスタ・ファイル・システムに保存されますが、iptablesベースのファイアウォール・サービスは各クラスタ・ノード上で実行されるため、仮想マシン間で完全に分離されます。また、このシステムは分散型であるため、中央のファイアウォール・ソリューションよりもはるかに高い帯域幅を提供します。

ファイアウォールはIPv4とIPv6をフルサポートしています。IPv6のサポートは完全に透過的で、デフォルトで両方のプロトコルのトラフィックをフィルタリングします。そのため、IPv6用に別のルールセットを維持する必要はありません。

アクセス&ゾーン

Proxmox VEファイアウォールはネットワークを複数の論理ゾーンにグループ化します。各ゾーンのルールは個別に定義できます。ゾーンに応じて、受信、送信、転送トラフィックのルールを定義できます。

道順

ゾーンのルールを定義する際、3つの方向から選ぶことができます:

ゾーンに到着しているトラフィック。

アウト

ゾーンを出るトラフィック。

フォワード

ゾーンを通過するトラフィック。ホストゾーンでは、ルーティングされたトラフィックになります(ホストがゲートウェイとして動作している場合やNATを実行している場合)。VNetレベルでは、ブリッジ接続されたネットワークインターフェイスのトラフィックを含め、VNetを通過するすべてのトラフィックに影響します。

Important 転送されたトラフィックのルールを作成することは、現在のところ新しいnftablesベースのproxmox-firewallを使用している場合にのみ可能です。いかなる転送ルールも純正のpve-firewallでは無視され、何の効果もありません!

ゾーン

ファイアウォールルールを定義できるゾーンは3種類あります:

ホスト

このゾーンのルールは、データ センタ レベルまたはホスト レベルで定義できます。ホスト レベルのルールは、データセンター レベルのルールよりも優先されます。

かそうけいさんき

VMまたはCTを発着するトラフィック。 転送されるトラフィックに対してルールを定義することはできません。

ブイネット

SDN VNet を通過するトラフィックは、ゲストからゲストへ、またはホストからゲストへ、あるいはその逆です。 このトラフィックは常に転送されるトラフィックなので、方向が forward のルールしか作成できません。

Important VNet レベルでのルール作成は現在、新しいnftables ベースの proxmox-firewall を使っている場合にのみ可能です。VNet レベルのルールは純正のpve-firewallでは無視され、何の効果もありません!

設定ファイル

ファイアウォール関連の設定はすべてproxmoxクラスタファイルシステムに保存されます。そのため、これらのファイルは自動的にすべてのクラスタノードに配布され、pve-firewallサービスは変更があったときに自動的に基礎となるiptablesルールを更新します。

GUI(データセンターファイアウォール、またはノードファイアウォール)を使用して設定することも、お好みのエディタを使用して設定ファイルを直接編集することもできます。

ファイアウォール設定ファイルには、キーと値のペアのセクションがあります。始まる行と空白行はコメントとみなされます。セクションは[] で囲まれたセクション名を含むヘッダー行で始まります。

クラスタ全体のセットアップ

クラスタ全体のファイアウォール設定は、次の場所に保存されます:

/etc/pve/firewall/cluster.fw

コンフィギュレーションには以下のセクションがあります:

[オプション]

クラスタ全体のファイアウォールオプションを設定します。

ebtables:<boolean>(デフォルト = 1)

クラスタ全体でebtablesルールを有効にします。

enable:<整数> (0 - N)

ファイアウォールクラスター全体を有効または無効にします。

log_ratelimit:[enable=]<1|0> [,burst=<integer>] [,rate=<rate>]です。

ログ・レイトリミットの設定

burst=<整数>(0 - N)(デフォルト = 5)

レートが適用される前に常に記録されるパッケージの初期バースト

enable=<boolean>(デフォルト = 1)

ログレート制限の有効化または無効化

rate=<rate>(デフォルト= 1/秒)

バーストバケツが補充される頻度

policy_forward:<ACCEPT | DROP>です。

前向きな方針。

policy_in:<ACCEPT | DROP | REJECT>です。

入力ポリシー。

policy_out:<ACCEPT | DROP | REJECT>です。

出力ポリシー。

[ルール]

このセクションには、全ノードのクラスタ全体のファイアウォールルールが含まれます。

[IPSET <名前>]。

クラスタ全体のIPセット定義。

[GROUP <名前>]。

クラスタ全体のセキュリティグループ定義。

[ALIASES]

クラスタ全体のエイリアス定義。

ファイアウォールの有効化

ファイアウォールはデフォルトでは完全に無効になっていますので、ここで有効オプションを設定する必要があります:

[OPTIONS] # enable firewall (クラスタ全体の設定。デフォルトは無効) enable:1
Important ファイアウォールを有効にすると、デフォルトですべてのホストへのトラフィックがブロックされます。唯一の例外は、ローカルネットワークからのWebGUI(8006)とssh(22)です。

リモートから Proxmox VE ホストを管理する場合は、リモート IP から Web GUI (ポート 8006) へのトラフィックを許可するルールを作成する必要があります。また、ssh(ポート22)やSPICE(ポート3128)も許可する必要があります。

Tip ファイアウォールを有効にする前に、Proxmox VEホストの1つにSSH接続を開いてください。そうすれば、何か問題が発生してもホストにアクセスできます。

この作業を単純化するには、代わりに「管理」という名前のIPSセットを作成し、すべてのリモートIPをそこに追加します。これにより、リモートからGUIにアクセスするために必要なファイアウォールルールがすべて作成されます。

ホスト固有の構成

ホスト関連の設定を読み込みます:

/etc/pve/nodes/<nodename>/host.fw

cluster.fw設定からルールを上書きしたい場合に便利です。また、ログの冗長性を上げたり、ネットフィルタ関連のオプションを設定することもできます。コンフィギュレーションには以下のセクションを含めることができます:

[オプション]

ホスト関連のファイアウォールオプションを設定します。

enable:<ブール値

ホストファイアウォールルールを有効にします。

log_level_forward:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

転送トラフィックのログレベル。

log_level_in:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

受信トラフィックのログレベル。

log_level_out:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

発信トラフィックのログレベル。

log_nf_conntrack:<boolean>(デフォルト = 0)

conntrack 情報のロギングを有効にします。

ndp:<ブール値>(デフォルト = 0)

NDP(Neighbor Discovery Protocol)を有効にします。

nf_conntrack_allow_invalid:<boolean>(デフォルト = 0)

接続追跡時に無効なパケットを許可します。

nf_conntrack_helpers:<string>(デフォルトは``)

特定のプロトコルに対して conntrack ヘルパーを有効にします。サポートされているプロトコル: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp

nf_conntrack_max:<整数> (32768 - N)(デフォルト = 262144)

追跡接続の最大数。

nf_conntrack_tcp_timeout_established:<整数> (7875 - N)(デフォルト = 432000)

CONNTRACK がタイムアウトしました。

nf_conntrack_tcp_timeout_syn_recv:<整数> (30 - 60)(デフォルト = 60)

Conntrack syn recv タイムアウト。

nftables:<ブール値>(デフォルト = 0)

nftablesベースのファイアウォールの有効化(技術プレビュー)

nosmurfs:<ブール値

SMURFSフィルターを有効にします。

protection_synflood:<boolean>(デフォルト = 0)

シ ン フ ラ ッ ド 防御の有効化

protection_synflood_burst:<整数>(デフォルト = 1000)

ip srcによるシンフラッドプロテクションレートバースト。

protection_synflood_rate:<整数>(デフォルト = 200)

ip srcによるシン・フラッド・プロテクション・レート syn/sec。

smurf_log_level:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

SMURFSフィルターのログレベル。

tcp_flags_log_level:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

不正なtcpフラグフィルターのログレベル。

tcpflags:<boolean>(デフォルト = 0)

TCP フラグの不正な組み合わせをフィルタリングします。

[ルール]

このセクションにはホスト固有のファイアウォールルールが含まれます。

VM/Container 構成

VM のファイアウォール設定を読み込みます:

/etc/pve/ファイアウォール/<VMID>.fw

そして以下のデータを含んでいます:

[オプション]

VM/Container 関連のファイアウォールオプションを設定します。

dhcp:<ブール値>(デフォルト = 0)

DHCPを有効にします。

enable:<ブール値>(デフォルト = 0)

ファイアウォールルールを有効/無効にします。

ipfilter:<ブール値

デフォルトIPフィルタを有効にします。これは各インターフェイスに空の ipfilter-net<id> ipset を追加するのと同じです。このようなipsetは、IPv6リンクのローカルアドレスをインターフェイスのMACアドレスに由来するものに制限するような、まともなデフォルトの制限を暗黙的に含んでいます。コンテナに対しては、設定されたIPアドレスが暗黙的に追加されます。

log_level_in:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

受信トラフィックのログレベル。

log_level_out:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

発信トラフィックのログレベル。

macfilter:<boolean>(デフォルト = 1)

MACアドレスフィルターの有効/無効。

ndp:<ブール値>(デフォルト = 0)

NDP(Neighbor Discovery Protocol)を有効にします。

policy_in:<ACCEPT | DROP | REJECT>です。

入力ポリシー。

policy_out:<ACCEPT | DROP | REJECT>です。

出力ポリシー。

radv:<ブール値

ルーター広告の送信を許可します。

[ルール]

このセクションには、VM/コンテナファイアウォールルールが含まれます。

[IPSET <名前>]。

IPセットの定義。

[ALIASES]

IPエイリアスの定義。

VM とコンテナのファイアウォールの有効化

各仮想ネットワーク・デバイスは、それぞれ独自のファイアウォール有効フラグを持っています。そのため、インターフェイスごとにファイアウォールを選択的に有効にすることができます。これは、一般的なファイアウォール有効オプションに加えて必要です。

VNet コンフィギュレーション

VNet関連のコンフィギュレーションを読み込みます:

/etc/pve/sdn/firewall/<vnet_name>.fw

VNet 内の各 VM に対して個別にファイアウォール・ルールを設定することなく、VNet レベルでグローバルにファイアウォール設定を行うことができます。受信トラフィックと送信トラフィックの概念がないため、FORWARD方向のルールのみを含めることができます。これは、ホスト・インタフェースを含め、ブリッジ・ポートから別のポートに移動するすべてのトラフィックに影響します。

Warning この機能は現在、新しいnftables ベースの proxmox-firewall でのみ利用可能です。

FORWARDチェインを通過するトラフィックは双方向なので、トラフィックを双方向に通過させたい場合は、双方向のルールを作成する必要があります。例えば、特定のホストに対するHTTPトラフィックを許可する場合、以下のルールを作成する必要があります:

FORWARD ACCEPT -dest 10.0.0.1 -dport 80 FORWARD ACCEPT -source 10.0.0.1 -sport 80
[オプション]

VNet 関連のファイアウォールオプションを設定します。

enable:<ブール値>(デフォルト = 0)

ファイアウォールルールを有効/無効にします。

log_level_forward:<alert | crit | debug | emerg | err | info | nolog | notice | warning>です。

転送トラフィックのログレベル。

policy_forward:<ACCEPT | DROP>です。

前向きな方針。

[ルール]

このセクションには、VNet 固有のファイアウォール ルールが含まれています。

ファイアウォールルール

ファイアウォールルールは、方向(INOUTFORWARD)とアクション(ACCEPTDENYREJECT)で構成されます。マクロ名を指定することもできます。マクロには、定義済みのルールとオプションのセットが含まれます。ルールの前に| を付けると、ルールを無効にできます。

ファイアウォールルールの構文
[ルール] DIRECTION ACTION [オプション] |DIRECTION ACTION [オプション] # 無効ルール DIRECTION MACRO(ACTION) [オプション] # 定義済みマクロの使用

以下のオプションを使用して、ルールの一致を絞り込むことができます。

--dest <文字列

パケットの宛先アドレスを制限します。これは、単一のIPアドレス、IPセット(+ipsetname)、またはIPエイリアスの定義を参照できます。また、20.34.101.207-201.3.9.99のようなアドレス範囲や、IPアドレスとネットワークのリスト(エントリはカンマで区切られます)を指定することもできます。このようなリストの中にIPv4アドレスとIPv6アドレスを混在させないでください。

--dport <文字列

TCP/UDP宛先ポートを制限します。etc/services で定義されているように、サービス名または単純な番号 (0 ~ 65535) を使用できます。ポート範囲は、80:85 のように ㊟+:㊟+ で指定でき、カンマ区切りのリストを使って複数のポートまたはポート範囲に一致させることができます。

--icmp-type <文字列

icmp-type を指定します。proto がicmpまたはicmpv6/ipv6-icmp 場合のみ有効。

--iface <文字列

ネットワークインターフェース名。VMとコンテナにはネットワーク構成キー名を使用する必要があります(netd+)。ホスト関連のルールでは、任意の文字列を使用できます。

--ログ <alert | crit | debug | emerg | err | info | nolog | notice | warning>.

ファイアウォールルールのログレベル。

-プロト <文字列

IPプロトコル。etc/protocolsで定義されているプロトコル名(tcp/udp)や単純な数字を使うことができます。

--ソース <文字列

パケットの送信元アドレスを制限します。これは、単一のIPアドレス、IPセット(+ipsetname)、またはIPエイリアスの定義を参照できます。また、20.34.101.207-201.3.9.99のようなアドレス範囲、またはIPアドレスとネットワークのリスト(エントリはカンマで区切られます)を指定することもできます。このようなリストの中にIPv4アドレスとIPv6アドレスを混在させないでください。

--スポーツ <文字列

TCP/UDPソース・ポートを制限します。etc/services で定義されているように、サービス名または単純な番号 (0 ~ 65535) を使用できます。ポート範囲は、80:85 のように ㊟+:㊟+ で指定することができます。

いくつか例を挙げましょう:

[RULES] IN SSH(ACCEPT) -i net0 IN SSH(ACCEPT) -i net0 # コメント IN SSH(ACCEPT) -i net0 -source 192.168.2.192 # 192.168.2.192からのSSHだけを許可。168.2.192 IN SSH(ACCEPT) -i net0 -source 10.0.0.1-10.0.0.10 # IPレンジのSSHを受け入れる IN SSH(ACCEPT) -i net0 -source 10.0.0.1,10.0.0.2,10.0.0.3 #accept ssh for IP list IN SSH(ACCEPT) -i net0 -source +mynetgroup # accept ssh for ipset mynetgroup IN SSH(ACCEPT) -i net0 -source myserveralias #accept ssh for alias myserveralias |IN SSH(ACCEPT) -i net0 # disabled rule IN DROP # drop all incoming packages OUT ACCEPT # accept all outgoing packages

セキュリティグループ

セキュリティ・グループとは、クラスタ・レベルで定義されるルールの集まりで、すべての VM のルールで使用できます。例えば、httphttps のポートを開くルールを持つ "webserver" という名前のグループを定義することができます。

# /etc/pve/firewall/cluster.fw [group webserver] IN ACCEPT -p tcp -dport 80 IN ACCEPT -p tcp -dport 443

次に、このグループをVMのファイアウォールに追加します。

# /etc/pve/firewall/<VMID>.fw [RULES] GROUP webserver

IPエイリアス

IPエイリアスを使用すると、ネットワークのIPアドレスを名前に関連付けることができます。そして、その名前を参照することができます:

  • インサイドIPセット定義

  • ファイアウォールルールの送信元と 送信先のプロパティで

標準 IP エイリアスlocal_network

このエイリアスは自動的に定義されます。割り当てられた値を確認するには、以下のコマンドを使用してください:

# pve-firewall localnet local hostname: example local IP address:192.168.2.100 network auto detect: 192.168.0.0/20 using detected local_network:192.168.0.0/20

ファイアウォールは、このエイリアスを使用してクラスタ通信(corosync、API、SSH)に必要なすべてのものを許可するルールを自動的に設定します。

ユーザはcluster.fwaliasセクションでこれらの値を上書きできます。パブリックネットワーク上で単一のホストを使用する場合は、明示的にローカルIPアドレス

# /etc/pve/firewall/cluster.fw [ALIASES] local_network 1.2.3.4 # 単一のIPアドレスを使用します。

IPセット

IP セットは、ネットワークとホストのグループを定義するために使用できます。ファイアウォールルールのsourcedestプロパティで '+name` を使って参照できます。

以下の例では、管理IPセットからのHTTPトラフィックを許可しています。

IN HTTP(ACCEPT) -ソース +管理

標準IPセット管理

この IP セットはホストファイアウォールのみに適用されます(VM ファイアウォールではありません)。 これらのIPは通常の管理タスク(Proxmox VE GUI、VNC、SPICE、SSH)を実行できます。

ローカルクラスタネットワークは自動的にこのIPセット(aliascluster_network)に追加され、ホスト間のクラスタ通信を可能にします。(マルチキャスト、ssh、...)

# /etc/pve/firewall/cluster.fw [IPSET 管理] 192.168.2.10 192.168.2.10/24

標準IPセットブラックリスト

これらのIPからのトラフィックは、各ホストとVMのファイアウォールによってドロップされます。

# /etc/pve/firewall/cluster.fw [IPSET ブラックリスト] 77.240.159.182 213.87.123.0/24

標準 IP セットipfilter-net*

これらのフィルターはVMのネットワーク・インターフェースに属し、主にIPスプーフィングを防ぐために使用されます。このようなセットがインターフェイスに存在する場合、そのインターフェイスの対応するipfilterセットに一致しないソースIPを持つ発信トラフィックはすべてドロップされます。

IPアドレスが設定されているコンテナでは、これらのセットが存在する場合(またはVMのファイアウォールのオプションタブで一般的なIPフィルターオプションを使用して有効になっている場合)、関連するIPアドレスが暗黙的に含まれます。

仮想マシンとコンテナの両方で、近隣発見プロトコルを動作させるために、標準のMAC由来のIPv6リンクローカルアドレスも暗黙的に含まれています。

/etc/pve/firewall/<VMID>.fw [IPSET ipfilter-net0] # net0 192.168.2.10上の指定されたIPのみを許可します。

サービスとコマンド

ファイアウォールは各ノードで2つのサービス・デーモンを実行します:

  • pvefw-logger:NFLOG デーモン (ulogd の置き換え)。

  • pve-firewall: iptables ルールの更新

また、pve-firewallというCLIコマンドもあり、これを使用してファイアウォールサービスを開始および停止することができます:

# pve-firewall start # pve-firewall stop

ステータスを取得するには

# pve-firewall status

上記のコマンドはすべてのファイアウォールルールを読み込んでコンパイルするので、ファイアウォールの設定にエラーがある場合は警告が表示されます。

生成されたiptablesのルールを見たい場合は、次のようにします:

# iptables-save

デフォルトのファイアウォールルール

デフォルトのファイアウォール設定では、以下のトラフィックがフィルタリングされます:

データセンター着信/発信 DROP/REJECT

ファイアウォールの入力または出力ポリシーがDROPまたはREJECTに設定されている場合でも、クラスタ内のすべてのProxmox VEホストで次のトラフィックが許可されます:

  • ループバックインターフェース上のトラフィック

  • すでに確立された接続

  • IGMPプロトコルを使用したトラフィック

  • ウェブインターフェースへのアクセスを許可するため、管理ホストからのTCPトラフィックをポート8006へ

  • 管理ホストからのTCPトラフィックは、VNCウェブコンソールのトラフィックを許可するポート範囲5900~5999へ。

  • 管理ホストからの TCP トラフィックは、SPICE プロキシへの接続用にポート 3128 に送られます。

  • 管理ホストからのTCPトラフィックをポート22に送り、sshアクセスを許可します。

  • クラスタネットワークのUDPトラフィックをポート5405-5412に送ってcorosyncします。

  • クラスタネットワークのUDPマルチキャストトラフィック

  • ICMPトラフィック・タイプ3(宛先到達不能)、4(輻輳制御)、または11(時間超過

以下のトラフィックはドロップされますが、ロギングを有効にしてもログには記録されません:

  • 無効な接続状態のTCPコネクション

  • corosyncに関連しないブロードキャスト、マルチキャスト、エニーキャストのトラフィック、すなわちポート5405-5412を経由しないトラフィック

  • ポート43へのTCPトラフィック

  • ポート135と445へのUDPトラフィック

  • UDPトラフィックはポート範囲137から139へ

  • 送信元ポート137からポート範囲1024~65535へのUDPトラフィック

  • ポート1900へのUDPトラフィック

  • 135、139、445番ポートへのTCPトラフィック

  • 送信元ポート53からのUDPトラフィック

残りのトラフィックは、それぞれドロップまたは拒否され、ログにも記録されます。 これは、NDP、SMURFS、TCPフラグフィルタリングなど、ファイアウォールオプションで有効になっている追加オプションによって異なる場合があります。

の出力を確認してください。

# iptables-save

この出力はシステム・レポートにも含まれ、Web GUI のノードのサブスクリプション・タブ、またはpvereportコマンドライン・ツールからアクセスできます。

VM/CT 着信/発信 DROP/REJECT

設定されたコンフィグレーションに応じて、DHCP、NDP、ルーター広告、MAC、IP フィルタリングなどの例外を除き、VM へのすべてのトラフィックをドロップまたは拒否します。 パケットをドロップ/拒否するルールはデータセンターから引き継がれ、ホストの送受信トラフィックの例外は適用されません。

繰り返しになりますが、iptables-save (上記参照)を使って、適用されたすべてのルールとチェインを検査することができます。

ファイアウォールルールのログ

デフォルトでは、ファイアウォールルールによってフィルタリングされたトラフィックのロギングはすべて無効になっています。 ロギングを有効にするには、受信トラフィックおよび/または送信トラフィックのログレベルを ファイアウォールオプションで設定する必要があります。これは、ホストだけでなく、VM/CT ファイアウォールに対しても個別に行うことができます。これにより、Proxmox VEの標準ファイアウォールルールのロギングが有効になり、ファイアウォールログで出力を確認できます。 さらに、標準ルールでは、一部のドロップまたは拒否されたパケットのみがログに記録されます(デフォルトのファイアウォールルールを参照)。

loglevelは、フィルタされたトラフィックがどの程度ログに記録されるかに影響しません。これは、フィルタリングと後処理を容易にするために、ログ出力に接頭辞として付加されるLOGIDを変更します。

loglevelは以下のフラグのいずれかです:

ログレベル ロジッド

ノログ

-

エマージェンシー

0

アラート

1

クリティック

2

誤る

3

警告

4

お知らせ

5

インフォメーション

6

デバッグ

7

典型的なファイアウォールのログ出力は次のようになります:

vmid logid chain timestamp policy:PACKET_DETAILS

ホストファイアウォールの場合、VMIDは0になります。

ユーザー定義ファイアウォールルールのログ

ユーザー定義のファイアウォールルールによってフィルタリングされたパケットをログに記録するために、各ルールに対して個別にログレベルパラメータを設定することができます。 これにより、ファイアウォールオプションで標準ルールに定義されたログレベルとは独立して、きめ細かくログを記録することができます。

個々のルールのログレベルは、ルールの作成中または変更中に Web UI で簡単に定義または変更できますが、対応するpveshAPI 呼び出しによっても設定できます。

さらに、選択したルールに-log <loglevel>を追加することで、ファイアウォール設定ファイル経由でログレベルを設定することもできます (可能なログレベルを参照)。

例えば、次の2つは同じです:

IN REJECT -p icmp -log nolog IN REJECT -p icmp

一方

IN REJECT -p icmp -log debug

は、デバッグ・レベルのフラグが付いたログ出力を生成します。

ヒントとコツ

FTP を許可する方法

FTPは、ポート21と他のいくつかの動的ポートを使用する古いスタイルのプロトコルです。そのため、ポート21を受け入れるルールが必要です。さらに、ip_conntrack_ftpモジュールをロードする必要があります。 ですから、実行してください:

modprobe ip_conntrack_ftp

を追加し、/etc/modulesip_conntrack_ftp を追加します(再起動後も動作するように)。

スリカタIPS統合

Suricata IPS(Intrusion Prevention System)を使用したい場合は可能です。

パケットは、ファイアウォールがACCEPTした後にのみIPSに転送されます。

リジェクト/ドロップされたファイアウォールのパケットは IPS に送られません。

suricataをproxmoxホストにインストールします:

# apt-get install suricata # modprobe nfnetlink_queue

次回のリブートのために、/etc/modulesに nfnetlink_queueを追加することを忘れないでください。

次に、特定のVMに対してIPSを有効にします:

# /etc/pve/firewall/<VMID>.fw [OPTIONS] ips:1 ips_queues: 0

ips_queuesはこのVMに特定のCPUキューをバインドします。

利用可能なキューは

# etc/default/suricata NFQUEUE=0

IPv6 に関する注意事項

ファイアウォールにはIPv6特有のオプションがいくつかあります。IPv6はARPプロトコルを使用せず、代わりにIPレベルで動作するNDP(Neighbor Discovery Protocol)を使用するため、成功するにはIPアドレスが必要です。このため、インターフェイスのMACアドレスに由来するリンクローカルアドレスが使用されます。デフォルトでは、ホストとVMの両方のレベルでNDPオプションが有効になっており、近隣探索(NDP)パケットの送受信が可能になっています。

NDPはネイバーディスカバリーの他にも、自動コンフィギュレーションやルーターの広告など、いくつかのことに使用されます。

デフォルトでは、VMはルーター勧誘メッセージの送信(ルーターへの問い合わせ)とルーター広告パケットの受信を許可されています。これにより、ステートレス自動コンフィグレーションを使用できます。一方、"Allow Router Advertisement"(radv: 1)オプションが設定されていない限り、VMは自分自身をルーターとしてアドバタイズすることはできません。

NDPに必要なリンク・ローカル・アドレスについては、"IP Filter"(ipfilter: 1) オプションを有効にすることで、対応するリンク・ローカル・アドレスを含むVMの各ネットワーク・インタフェースにipfilter-net*ipsetを追加するのと同じ効果が得られます。 (詳細については、標準 IP セットipfilter-net*のセクションを参照してください)。

Proxmox VEが使用するポート

  • ウェブインターフェース8006(TCP、HTTP/1.1 over TLS)

  • VNCウェブコンソール5900-5999 (TCP、WebSocket)

  • SPICE プロキシ:3128 (TCP)

  • sshd (クラスタアクションに使用):22 (TCP)

  • rpcbind: 111 (UDP)

  • sendmail:25 (TCP、送信)

  • corosyncクラスタのトラフィック:5405-5412 UDP

  • ライブマイグレーション(VMメモリとローカルディスクのデータ):60000-60050 (tcp)

nftables

pve-firewallの代替として、私たちはproxmox-firewallを提供しています。これはiptablesではなく、より新しいnftablesをベースにしたProxmox VEファイアウォールの実装です。

Warning proxmox-firewallは現在技術プレビュー中です。バグやオリジナルのファイアウォールとの非互換性があるかもしれません。現在のところ本番環境での使用には適していません。

この実装では、同じ設定ファイルと設定フォーマットを使用します。いくつかの例外を除いて、まったく同じ機能を提供します:

  • REJECTは現在、ゲストラフィックにはできません(代わりにトラフィックはドロップされます)。

  • NDPルーター広告、またはDHCPオプションを使用すると、デフォルトのポリシーに関係なく、常にファイアウォールルールが作成されます。

  • ゲスト用のファイアウォールルールは、conntrackテーブルエントリを持つ接続でも評価されます。

インストールと使用方法

proxmox-firewallパッケージをインストールします:

apt install proxmox-firewall

ホストの Web UI (ホスト > ファイアウォール > オプション > nftables)、またはホストの構成ファイル(/etc/pve/nodes/<ノード名>/host.fw) で nftables バックエンドを有効にします:

[OPTIONS] nftables: 1
Note proxmox-firewall を有効/無効にした後、古い/新しいファイアウォールを正しく動作させるために、実行中のすべての VM とコンテナを再起動する必要があります。

nftables設定キーを設定すると、新しいproxmox-firewallサービスが引き継がれます。新しいサービスが動作しているかどうかは、proxmox-firewallのsystemctl statusをチェックすることで確認できます:

systemctl status proxmox-firewall

生成されたルールセットを調べることもできます。これについてはヘルプコマンド を参照してください。pve-firewallが iptables ルールを生成しなくなったかどうかも確認してください。

古いファイアウォールに戻すには、設定値を0/Noに戻すだけです。

使用方法

proxmox-firewallはproxmox-firewallサービスによって管理される2つのテーブル:proxmox-firewallと proxmox-firewall-guestsを作成します。Proxmox VE ファイアウォール設定の外側にあるカスタムルールを作成したい場合は、カスタムファイアウォールルールを管理するために独自のテーブルを作成できます。proxmox-firewallは生成したテーブルにしか触れないので、独自のテーブルを追加することで簡単にproxmox-firewallの動作を拡張・変更できます。

pve-firewallコマンドを使う代わりに、nftables ベースのファイアウォールはproxmox-firewall を使います。これは systemd サービスなので、systemctl で起動と停止ができます:

systemctl start proxmox-firewall systemctl stop proxmox-firewall

ファイアウォールサービスを停止すると、生成されたルールがすべて削除されます。

ファイアウォールのステータスを照会するには、systemctl サービスのステータスを照会します:

systemctl status proxmox-firewall

役立つコマンド

生成されたルールセットは、以下のコマンドで確認できます:

nftリストルールセット

proxmox-firewallをデバッグしたい場合は、RUST_LOG環境変数をtraceに設定してデーモンをフォアグラウンドで実行するだけです。これにより詳細なデバッグ出力が得られるはずです:

RUST_LOG=trace /usr/libexec/proxmox/proxmox-firewall

ファイアウォールデーモンの詳細な出力を得たい場合は、systemctlサービスを編集することもできます:

systemctl proxmox-firewall を編集します。

次に、RUST_LOG環境変数のオーバーライドを追加する必要があります:

[サービス] Environment="RUST_LOG=trace"

これは大量のログを素早く生成するので、デバッグ目的でのみ使用してください。他の、より冗長でないログレベルはinfodebug です。

フォアグラウンドで実行すると、ログ出力がSTDERRに書き込まれるので、以下のコマンドでリダイレクトできます(コミュニティフォーラムにログを提出する場合など):

RUST_LOG=trace /usr/libexec/proxmox/proxmox-firewall 2> firewall_log_$(hostname).txt

ファイアウォールルールをデバッグするために、異なるチェーンを経由するパケットフ ローをトレースすると便利です。これは、追跡したいパケットに対してnftrace を1 に設定することで実現できます。すべてのパケットにこのフラグを設定しないことをお勧めします。

#!/usr/sbin/nft -f
table bridge tracebridge
delete table bridge tracebridge

table bridge tracebridge {
    chain trace {
        meta l4proto icmp meta nftrace set 1
    }

    chain prerouting {
        type filter hook prerouting priority -350; policy accept;
        jump trace
    }

    chain postrouting {
        type filter hook postrouting priority -350; policy accept;
        jump trace
    }
}

このファイルを保存し、実行可能にしてから 1 回実行すると、それぞれのトレースチェー ンが作成されます。トレース出力は、Proxmox VE Web UI (Firewall > Log) またはnft monitor trace で確認できます。

上記の例では、すべてのブリッジのトラフィックをトレースしていますが、これは通常、ゲストのトラフィックが流れる場所です。ホストのトラフィックを調べたい場合は、ブリッジテーブルの代わりにinetテーブルにこれらのチェーンを作成します。

Note これは大量のログスパムを生成し、ネットワークスタックのパフォーマンスを著しく低下させる可能性があることに注意してください。

以下のコマンドを実行することで、トレースルールを削除することができます:

nft テーブル削除ブリッジトレース

マクロ定義

アマンダ

アマンダ・バックアップ

アクション プロト ポート スポーツ

パラム

udp

10080

パラム

ティーシーピー

10080

認証

認証(identd)トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

113

BGP

ボーダー・ゲートウェイ・プロトコルのトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

179

ビットトレント

BitTorrent 3.1 以前の BitTorrent トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

6881:6889

パラム

udp

6881

ビットトレント32

BitTorrent 3.2以降のBitTorrentトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

6881:6999

パラム

udp

6881

コンビニエンスストア

同時バージョン システム pserver トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

2401

セフ

Cephストレージクラスタトラフィック (Cephモニタ、OSD、MDSデーモン)

アクション プロト ポート スポーツ

パラム

ティーシーピー

6789

パラム

ティーシーピー

3300

パラム

ティーシーピー

6800:7300

シトリックス

Citrix/ICAトラフィック(ICA、ICAブラウザ、CGP)

アクション プロト ポート スポーツ

パラム

ティーシーピー

1494

パラム

udp

1604

パラム

ティーシーピー

2598

ダエーピー

デジタルオーディオアクセスプロトコルトラフィック(iTunes、Rythmboxデーモン)

アクション プロト ポート スポーツ

パラム

ティーシーピー

3689

パラム

udp

3689

DCC

分散型チェックサム・クリアリングハウス・スパム・フィルタリング機構

アクション プロト ポート スポーツ

パラム

ティーシーピー

6277

DHCPfwd

転送されたDHCPトラフィック

アクション プロト ポート スポーツ

パラム

udp

67:68

67:68

ディーエイチシーピーブイ6

DHCPv6トラフィック

アクション プロト ポート スポーツ

パラム

udp

546:547

546:547

DNS

ドメインネームシステムのトラフィック(updおよびtcp)

アクション プロト ポート スポーツ

パラム

udp

53

パラム

ティーシーピー

53

ディストック

分散コンパイラサービス

アクション プロト ポート スポーツ

パラム

ティーシーピー

3632

ファイル転送プロトコル

ファイル転送プロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

21


フィンガープロトコル(RFC 742)

アクション プロト ポート スポーツ

パラム

ティーシーピー

79

グニューネット

GNUnetセキュアなピアツーピアネットワーキングトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

2086

パラム

udp

2086

パラム

ティーシーピー

1080

パラム

udp

1080

GRE

汎用ルーティング・カプセル化トンネリング・プロトコル

アクション プロト ポート スポーツ

パラム

47

ギット

Git 分散リビジョン管理トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

9418

HKP

OpenPGP HTTP鍵サーバプロトコルトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

11371

HTTP

ハイパーテキスト転送プロトコル(WWW)

アクション プロト ポート スポーツ

パラム

ティーシーピー

80

HTTPS

SSL上のハイパーテキスト転送プロトコル(WWW)

アクション プロト ポート スポーツ

パラム

ティーシーピー

443

ICPV2

インターネット・キャッシュ・プロトコルV2(Squid)のトラフィック

アクション プロト ポート スポーツ

パラム

udp

3130

アイシーキュー

AOLインスタント・メッセンジャーのトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

5190

アイマップ

インターネットメッセージアクセスプロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

143

アイマップス

インターネット・メッセージ・アクセス・プロトコル・オーバーSSL

アクション プロト ポート スポーツ

パラム

ティーシーピー

993

IPIP

IPIPカプセレーション・トラフィック

アクション プロト ポート スポーツ

パラム

94

アイピーセック

IPsecトラフィック

アクション プロト ポート スポーツ

パラム

udp

500

500

パラム

50

アイピーセカ

IPsec認証(AH)トラフィック

アクション プロト ポート スポーツ

パラム

udp

500

500

パラム

51

IPsecnat

IPsecトラフィックとNat-Traversal

アクション プロト ポート スポーツ

パラム

udp

500

パラム

udp

4500

パラム

50

インターネットリレーチャット

インターネット・リレー・チャットのトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

6667

ジェットダイレクト

HP Jetdirectプリント

アクション プロト ポート スポーツ

パラム

ティーシーピー

9100

L2TP

レイヤー2トンネリングプロトコルのトラフィック

アクション プロト ポート スポーツ

パラム

udp

1701

ライトウェイトディレクトリアクセスプロトコル

ライトウェイトディレクトリアクセスプロトコルトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

389

LDAPS

セキュアなLightweight Directory Access Protocolトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

636

MDNS

マルチキャストDNS

アクション プロト ポート スポーツ

パラム

udp

5353

エムエスエヌピー

マイクロソフト通知プロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

1863

エムエスエスキューエル

マイクロソフト SQL サーバー

アクション プロト ポート スポーツ

パラム

ティーシーピー

1433

メール

メールトラフィック(SMTP、SMTPS、送信)

アクション プロト ポート スポーツ

パラム

ティーシーピー

25

パラム

ティーシーピー

465

パラム

ティーシーピー

587

ムニン

ムニン・ネットワーク・リソース・モニタリング・トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

4949

MySQL

MySQLサーバー

アクション プロト ポート スポーツ

パラム

ティーシーピー

3306

エヌエヌティーピー

NNTPトラフィック(ユースネット)。

アクション プロト ポート スポーツ

パラム

ティーシーピー

119

エヌエヌティーピーエス

暗号化されたNNTPトラフィック(ユースネット)

アクション プロト ポート スポーツ

パラム

ティーシーピー

563

エヌティーピー

ネットワークタイムプロトコル (ntpd)

アクション プロト ポート スポーツ

パラム

udp

123

ネイバーディスカバリー

IPv6ネイバー勧誘、ネイバー広告、ルーター広告

アクション プロト ポート スポーツ

パラム

アイシーエムピーブイシックス

ルーター募集

パラム

アイシーエムピーブイシックス

ルーター広告

パラム

アイシーエムピーブイシックス

隣人募集

パラム

アイシーエムピーブイシックス

隣人広告

オープンさいたんパスファースト

OSPFマルチキャストトラフィック

アクション プロト ポート スポーツ

パラム

89

オープンVPN

OpenVPNトラフィック

アクション プロト ポート スポーツ

パラム

udp

1194

主成分分析

シマンテックPCAnywere (tm)

アクション プロト ポート スポーツ

パラム

udp

5632

パラム

ティーシーピー

5631

PMG

Proxmox Mail Gatewayウェブインターフェース

アクション プロト ポート スポーツ

パラム

ティーシーピー

8006

ポップスリー

POP3トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

110

ポップスリー

暗号化されたPOP3トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

995

ピーピーティーピー

ポイント・ツー・ポイント・トンネル・プロトコル

アクション プロト ポート スポーツ

パラム

47

パラム

ティーシーピー

1723

ピン

ICMPエコーリクエスト

アクション プロト ポート スポーツ

パラム

アイシーエムピー

エコー要求

PostgreSQL

PostgreSQLサーバー

アクション プロト ポート スポーツ

パラム

ティーシーピー

5432

プリンター

ラインプリンタープロトコル印刷

アクション プロト ポート スポーツ

パラム

ティーシーピー

515

アールディーピー

マイクロソフトリモートデスクトッププロトコルトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

3389

リップ

ルーティング情報プロトコル(双方向)

アクション プロト ポート スポーツ

パラム

udp

520

総合資源開発センター

BINDリモート管理プロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

953

カミソリ

レイザーアンチスパムシステム

アクション プロト ポート スポーツ

パラム

ティーシーピー

2703

Rdate

リモート時刻検索(rdate)

アクション プロト ポート スポーツ

パラム

ティーシーピー

37

同期

Rsyncサーバー

アクション プロト ポート スポーツ

パラム

ティーシーピー

873

サンエ

SANEネットワーク・スキャン

アクション プロト ポート スポーツ

パラム

ティーシーピー

6566

エスエムビー

マイクロソフトSMBトラフィック

アクション プロト ポート スポーツ

パラム

udp

135,445

パラム

udp

137:139

パラム

udp

1024:65535

137

パラム

ティーシーピー

135,139,445

SMBswat

Sambaウェブ管理ツール

アクション プロト ポート スポーツ

パラム

ティーシーピー

901

SMTP

簡易メール転送プロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

25

エスエムティーピーエス

暗号化メール転送プロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

465

SNMP

簡易ネットワーク管理プロトコル

アクション プロト ポート スポーツ

パラム

udp

161:162

パラム

ティーシーピー

161

スパムド

スパムアサシン SPAMD トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

783

SPICEproxy

Proxmox VE SPICEによるプロキシトラフィックの表示

アクション プロト ポート スポーツ

パラム

ティーシーピー

3128

SSH

安全なシェルトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

22

エスブイエヌ

Subversion サーバー (svnserve)

アクション プロト ポート スポーツ

パラム

ティーシーピー

3690

シックスエックスエス

SixXS IPv6の展開とトンネルブローカー

アクション プロト ポート スポーツ

パラム

ティーシーピー

3874

パラム

udp

3740

パラム

41

パラム

udp

5072,8374

イカ

SquidのWebプロキシトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

3128

投稿

メール送信トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

587

シスログ

Syslogプロトコル(RFC 5424)のトラフィック

アクション プロト ポート スポーツ

パラム

udp

514

パラム

ティーシーピー

514

TFTP

Trivial File Transfer Protocol トラフィック

アクション プロト ポート スポーツ

パラム

udp

69

テルネット

Telnetトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

23

テレネット

Telnet over SSL

アクション プロト ポート スポーツ

パラム

ティーシーピー

992

時間

RFC 868 タイムプロトコル

アクション プロト ポート スポーツ

パラム

ティーシーピー

37

Trcrt

トレースルート(30ホップまで)トラフィック

アクション プロト ポート スポーツ

パラム

udp

33434:33524

パラム

アイシーエムピー

エコー要求

ブイエヌシー

VNCディスプレイのVNCトラフィック0~99

アクション プロト ポート スポーツ

パラム

ティーシーピー

5900:5999

ブイエヌシーエル

VncsサーバからVncviewerへのVNCトラフィック(リッスンモード

アクション プロト ポート スポーツ

パラム

ティーシーピー

5500

ウェブ

WWWトラフィック(HTTPおよびHTTPS)

アクション プロト ポート スポーツ

パラム

ティーシーピー

80

パラム

ティーシーピー

443

ウェブキャッシュ

ウェブキャッシュ/プロキシトラフィック(ポート8080)

アクション プロト ポート スポーツ

パラム

ティーシーピー

8080

ウェブミン

ウェブミンのトラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

10000

フーイズ

Whois(nicname、RFC 3912)トラフィック

アクション プロト ポート スポーツ

パラム

ティーシーピー

43

著作権 © 2007-2022 Proxmox Server Solutions GmbH

このプログラムはフリー・ソフトウェアです。あなたは、Free Software Foundationによって発行されたGNU Affero General Public Licenseのバージョン3、またはそれ以降のバージョンのいずれかに従って、このプログラムの再配布や改変を行うことができます。

このプログラムは有用であることを期待して配布されていますが、商品性や特定の目的への適合性についての暗黙の保証もなく、いかなる保証もありません。詳細はGNU Affero General Public Licenseをご覧ください。

あなたはこのプログラムとともにGNU Affero General Public Licenseのコピーを受け取っているはずです。 そうでない場合は、https://www.gnu.org/licenses/をご覧ください。