Firewalld:同じサブネット上になく、2つのIPアドレスをホワイトリストに追加する方法

Firewalld:同じサブネット上になく、2つのIPアドレスをホワイトリストに追加する方法

VPS / Webサーバーでfirwalldを実行しています。

エリアpublicはありactivedefault変更したくありません)。どうやって許可しますか?ただこれら2つの外部IPアドレスは、VPS(つまり、このゾーンで定義されているすべてのサービスpublic)にアクセスするために使用されます。

   IP1:  11.22.33.44/24
   IP2:  55.66.77.88/24

これらはすべて偽のIPアドレスそして彼らが故意にそのようなことをしたことに気づきました。同じサブネットにない

これがうまくいかない理由を理解すると思います(1つのIPまたは他のIPをロックします)。

user$ sudo firewall-cmd --zone=public --permanent --add-source=11.22.33.44/24
user$ sudo firewall-cmd --zone=public --permanent --add-source=55.66.77.88/24

user$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="11.22.33.44/24" invert="True" drop' 
user$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="55.66.77.88/24" invert="True" drop'
user$ sudo firewall-cmd --reload

機能するには何を変更する必要がありますか(したがって、一方のIP、他のIP、またはその両方をロックしないように)?

ありがとうございます! :)

編集する/32:上記の4つのコマンドすべてについてビットマスキングも試みました。残念ながら、これは役に立ちません。それでも解決策を探しています。

私の考えでは、ロジックは次のように聞こえるようです:if IP1 or IP2, allow it and stop processing the chain.else Continue processing the chain, where the very next rule would be to DROP.。そんなこと。

編集2:以下の出力を投稿してくださいsudo firewall-cmd --list-all-zones。上記のすべてのルールは機能しないため、削除しました。だから私は最初に戻ってきました。

user$ sudo firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


public (active)
  target: default
  icmp-block-inversion: no
  interfaces: venet0:0 venet0
  sources: 
  services: ssh-vps http https
  ports: 8080/tcp 8080/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: echo-reply echo-request timestamp-reply timestamp-request
  rich rules: 

trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

答え1

これは良い質問です。firewalldと対話しiptablesて対話しますnetfilter。したがって、iptablesはFirewalldよりも柔軟性があります。しかし、これがiptablesに戻す必要があるわけではありませんが、高度なパケットフィルタリングにFirewalldを引き続き使用できます。ファイアウォールの素晴らしいオプションは、次を使用することですdirect rulesrich rules

この場合、direct rulesオプションはあなたのニーズに適しています。

まず、すべてのファイアウォールルールをデフォルト値に初期化します(心配しないでください。SSHアクセスまたはTCP-22は初期化後も開いたままです)。

$ sudo rm -rf /etc/firewalld/zones/*
$ sudo rm -rf /usr/etc/firewalld/zones/*
$ sudo firewall-cmd --complete-reload

ISP-1とISP-2が直接ルール(INPUTおよびFORWARDチェーン)を使用してVPSにアクセスできるようにします。

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 11.22.33.44/32 -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 55.66.77.88/32 -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -s 11.22.33.44/32 -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -s 55.66.77.88/32 -j ACCEPT

戻りトラフィックを許可する(つまり、ステートフルチェックをオンにします。デフォルトでは、Firewalldはstatefuです)

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -m state --state RELATED,ESTABLISHED -j ACCEPT

次に、ISP-1またはISP-2以外のIPをブロックします。

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -j DROP

ルールの再ロード

$ sudo firewall-cmd --reload

検証ルール

$ sudo firewall-cmd --direct --get-all-rules

答え2

ここに2つの質問があります:

1)2つのインターフェースが割り当てられているので、publicそのゾーンにアクセスしようとしています。interface zoneこの領域の目的は、パケットをdefault受け入れてicmp他のすべてのパケットを拒否することです。

2)特定のIPがシステムサービスにアクセスできるようにするための特権ゾーン(ソースゾーンと呼ばれる)が必要です。この特権ゾーンには目標があり、このゾーンACCEPTよりも優先されます。public

だから私の答えはこれです。

1)trustedゾーンで送信元IP(着信トラフィック)を処理します。たとえば、

firewall-cmd --permanent --zone=trusted --add-source=11.22.33.44 --add-source=55.66.77.88
firewall-cmd --reload

このtrustedゾーンはこのゾーンにトラフィックを転送しますpublic。お住まいの地域でサービスをpublic処理しますssh-vps http https。これはファイアウォールを構成するのに推奨される方法です。

2)ターゲットを地域defaultに設定しますtrusted

firewall-cmd --permanent --zone=trusted --set-target=default
firewall-cmd --reload

関連情報