質問: OSはRedhat7.1です。 hosts.allowにホスト名を登録しても遮断されてしまいます。 外部サーバーA(動的IP 100.200.30.40 (DDNS ieserver)aserver.com)と外部サーバーBがあり、Bサーバーのhosts.allowに ``` sshd : aserver.com 略... ``` Bサーバーのhosts.denyに ``` ALL : ALL ``` を指定しても、Aサーバーからログインできません。 hosts.denyをコメントアウトすれば接続できるので接続先が間違っているということはないです。 以下、Bサーバー側のエラーログです。 ``` localhost sshd[11010]: refused connect from xx-xx-xxx-xxx.yyy.yyyy.yyy.jp (xx.xx.xxx.xxx) ``` クライアント(A, Bとは別ネットワーク)から ssh user@aserver.comで接続できますが、 Aサーバーからアクセスしたとき、Bサーバーから見るとホスト名は逆引きできていないということになるのでしょうか? こういうものですか? だとすると、ホスト名でのTCPWrappingの使い道がわかりません。
回答: TCPラッパーは アクセスしてきたクライアントのソースIPアドレスを逆引きして、そのホスト名がhosts.allowにあるかチェックしますので、逆引きの結果が「aserver.com」にならない限り許可されないと思います。 また、逆引きして得たホスト名を正引きした結果のIPが、ソースIPと一致しない場合も弾かれます。 > > Aサーバーからアクセスしたとき、Bサーバーから見るとホスト名は逆引きできていないということになるのでしょうか? > > こういうものですか? > > > 逆引き出来るかどうかは、逆引きゾーンにどのように設定されているかによるのですが、 DDNSでは逆引きの設定は出来ないので、そういうものだと思って頂いていいと思います。 逆引きゾーンはプロバイダが管理していて、固定IPの場合はユーザが管理できたります。 接続元のホスト名でのアクセス制御は一旦諦めて、SSHポート変更やパスワード認証の無効化& 鍵認証など 別の手段でセキュリティを確保されるのが良いのではと思います。