AlmaLinux 8.4 は、CentOS 8 の互換 OS だ。
そのため、CentOS 8 と同じで、TCP Wrapper が廃止され、今までのように /etc/hosts.allow や /etc/hosts.deny で IP アドレスによるアクセス制限がかけられなくなった。ファイアウォール(firewalld)で制限をかけることになる。
CentOS 8 を触ったことがなかったもんで(最近設定したのも、サポートのことを考えて CentOS 7 だったからなあ)、/etc/hosts.allow を編集しようと思ったらなかったので驚いた。
まず、自宅 PC や既存サーバなど、恒常的に存在している機器はパーマネントルール(設定ファイルに書き込まれ、再起動時にも有効となるルール)を投入。
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="202.XXX.XXX.12" port protocol="tcp" port="22" accept"# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="176.XXX.XXX.65" port protocol="tcp" port="22" accept"
で、元々の設定は「誰でも大歓迎」になっているので、その設定を削除。
# firewall-cmd --remove-service=ssh --zone=public --permanent
これで、設定ファイル(/etc/firewalld/zones/public.xml)に書き込まれる。
まだ、この時点では設定ファイルが編集されただけなので、設定ファイルを読み込み直して設定を反映させる。
# firewall-cmd --reload
これで、202.XXX.XXX.12、176.XXX.XXX.65 の IP アドレスからのみ ssh 接続が可能となる。
次に、一時的に接続を許すランタイムルールで職場の PC からの接続を許す。(引数 permanent を付けてないだけ)
# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="114.XXX.XXX.72" port protocol="tcp" port="22" accept"
設定ファイルには書き込まれないので、reload は不要。即設定が反映する。
必要なくなったら、
# firewall-cmd --zone=public --remove-rich-rule="rule family="ipv4" source address="114.XXX.XXX.72" port protocol="tcp" port="22" accept"
で削除。
旧サーバ(CentOS)では Web 経由で /etc/hosts.allow を編集する仕組みを作って、外出先から一時的に ssh 接続を許すようにしてたんだけど使えなくなっちゃったな。
新しい仕組み作らないと・・・
コメントする