VPS / Webサーバーでfirwalldを実行しています。
エリアpublic
はありactive
(default
変更したくありません)。どうやって許可しますか?ただこれら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 rules
。rich 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