web-dev-qa-db-ja.com

FirewallD:特定のIPアドレスからの接続のみを許可する

FirewallDを使用して、ネットワーク上の他のマシンからCentOSサーバーへのアクセスを制限しようとしています。これには単一のネットワークインターフェイスがあり、publicゾーンで動作しています。このサーバーのIPアドレス10.10.1.20としましょう。

私がやりたいのは、IPアドレス10.10.1.125と10.10.1.126のマシンのみがこのサーバーに接続できるようにする(sshとhttps)ことです。他のIPアドレスはいずれも、このサーバーに接続できてはなりません(または、サーバーが存在することを知っていてもかまいません)。

FirewallDの豊富なルールを次のように使用してみました(10.10.1.20)

Sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.0/24" drop'

Sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.125" accept'

Sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.126" accept'

しかし、それは機能していないようです。 10.10.1.125または10.10.1.126から10.10.1.20にssh接続できません。

ルールを逆の順序で入力してみましたが、それでも機能しません。

誰かが私をここで助けてくれますか?上記のルールを適用する前に、ゾーンをパブリックからドロップなどのより制限的なゾーンに変更する必要がありますか?

3
thisisshantzz

豊富なルールはこれに対処する方法ではありません。彼らは今と後で混乱を引き起こすだけです。

Firewalld zoneは、許可する一連のサービスと、それらのサービスへのトラフィックのソースに対応していることを理解してください。

あなたがしなければならないのは、許可したいサービスをゾーンで設定することです(おそらくすでにそうしているでしょう)そしてソースを設定するだけです。

トラフィックの送信元は、2つの方法で指定できます。インターフェース別、または送信元IPアドレス別です。 anyソースに一致するトラフィックは、このチェックに合格します。

そのため、サービスへのアクセスを許可するIPアドレスを追加してから、インターフェース(存在する場合)を削除します。

firewall-cmd --zone=public --add-source=10.10.1.25
firewall-cmd --zone=public --add-source=10.10.1.26
firewall-cmd --zone=public --remove-interface=enp2s1
firewall-cmd --runtime-to-permanent

また、おそらくしないでくださいpublicゾーンでこれを行いたいが、新しいゾーンを作成することに注意してください。そのゾーンには、デフォルトで許可されるように設定されたいくつかのもの(DHCPなど)があるため、インターフェースを削除してソースIPアドレスでゾーンを制限すると問題が発生する可能性があります。

8
Michael Hampton