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接続できません。
ルールを逆の順序で入力してみましたが、それでも機能しません。
誰かが私をここで助けてくれますか?上記のルールを適用する前に、ゾーンをパブリックからドロップなどのより制限的なゾーンに変更する必要がありますか?
豊富なルールはこれに対処する方法ではありません。彼らは今と後で混乱を引き起こすだけです。
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アドレスでゾーンを制限すると問題が発生する可能性があります。