TCP Wrapper による SSH 接続のアクセス制御、 /etc/hosts.deny, /etc/hosts.allow の設定 〜 CentOS6

SSH 接続のセキュリティを高めるために、指定したクライアントのみからサーバーに SSH 接続できるようにします。具体的には TCP Wrapper による制御を利用して、今回の場合はローカルネットワーク内のマシンからのみ SSH 接続可能にします。TCP Wrapper によるアクセス制御を設定するために編集するファイルは、 /etc/hosts.allow, /etc/hosts.deny です。

スポンサーリンク

このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。

/etc/hosts.deny, /etc/hosts.allow の設定

これで、TCP Wrapper が制御の対象とする全てのサービスに対するアクセスを一旦拒否し、 192.168.x.x および 127.0.0.1 (ホスト機自身)のIPアドレスからのみサービスへの接続を許可という設定になります。ALL じゃなく sshd に限定する場合は、

また、VPS利用時などで自宅や職場で固定IPを使える場合は、

とすれば、格段にセキュリティ向上できると思います。

TCP Wrapper の対象となるサービスを確認してみる

TCP Wrapper について少し。TCP Wrapper は全てのサービスを対象にアクセス制御を行うわけではありません。元々は、inetd(スーパーサーバー)により起動されるサービスを対象にアクセス制御を行なっていました。が、現在は、sshd など ネットワークサービスのためのデーモンの多くにも適用されます。

TCP Wrapper によるアクセス制御が適用されるかどうかは、サービスのデーモンが TCP Wrapper のライブラリ libwrap を含んでいるかどうかで確かめられます。/etc/hosts.allow や /etc/hosts.deny はこの libwrap ライブラリを利用するプログラムが共通して利用するアクセス制御用のファイルとなります。

xinetd で起動されるサービスをチェック。

xinetd はそれ自体に TCP Wrapper の機能を含んでいるそうです。xinetd 単体で inetd + TCP Wrapper の働きを持つ。

xinetd ベースではないサービスを確認してみます。

以上のように lld と grep コマンドで libwrap ライブラリに依存するかどうかを調べられ、 sshd, sendmail は TCP Wrapper の対象、 httpd は対象ではないということが確認できます。httpd までアクセス制御対象だと困ったことになりますね。

また、 TCP Wrapper によりアクセス制御を行なっているサービスへアクセスがあった場合は、デフォルトでは /var/log/secure にログが出力されます。

スポンサーリンク
サーバ構築研究会の CentOS 本は、昔からお世話になっています。Linux の教科書は Linux の基本を学ぶのにおすすめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!