AlmaLinux で ssh の IP アドレス制限[UNIXやLinux]
(2021-09-09 10:55:12) by shinoda


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 接続を許すようにしてたんだけど使えなくなっちゃったな。
新しい仕組み作らないと・・・


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8