Perl開発者のためのLinux入門

TCP Wrapperでアクセス制御を行う / CentOS

アクセス制御 TCP Wrapper

 ネットワークを通じてアクセスされるとき、不必要なコンピュータからはアクセスしてほしくないときがあります。サーバを操作するようなSSHなどでのリモートログインを行う場合は、アクセス制御を行う必要があります。

 アクセス制御はTCP Wrapperというアプリケーションによって行われます。アクセス制御の設定ファイルはhosts.deny と hosts.allow です。アクセス制御はアプリケーションごとに設定できます。

アクセス制御設定ファイル

hosts.deny アクセスを拒否するコンピュータのIPアドレスかホスト名を記述します。
hosts.allow アクセスを許可するコンピュータのIPアドレスかホスト名を記述します。

アクセス制御設定ファイルの適用順序

 以下の3つのパターンで、192.168.1.1からアクセスがあった場合にアクセス制御がどのようになされるのか見てみます。アクセス制御ファイルは、hosts.deny → hosts.allowの順に適用されます。

| |パターン1|パターン2|パターン3|

|hosts.deny|何も記述しない|すべて拒否|192.168.1.1を拒否|

|hosts.allow|何も記述しない|192.168.1.1|何も記述しない|

 まずパターン1で何も記述しない場合は、192.168.1.1 はアクセスが許可されます。何も記述しなかった場合はアクセス制御がなされません。

 次にパターン2ですが、まずhosts.denyを見て、192.168.1.1はアクセスは拒否状態になります。次に、hosts.allowを見て、アクセスは許可状態になります。最終的にアクセスは許可された状態になります。

 最後にパターン3ですが、まずhosts.denyを見て、192.168.1.1はアクセス拒否状態になります。hosts.allowには何の記述もないので、最終的にアクセスが拒否された状態になります。

セキュリティを高めるためのアクセス制御の慣習

 1.すべてをhosts.denyで拒否します。
 2.必要なIPアドレスだけを、hosts.allowで許可します。

 このルールを守ることで、不正なアクセスを防ぐことができます。

sshdのアクセス制御の例

hosts.deny

 まずsshdへのアクセスをすべて拒否する。

sshd: ALL

hosts.allow

 必要なものだけアクセスを許可する。

<h3> 特定のIPアドレス</h3>
sshd: 192.168.1.1
<h3> or 複数のIPアドレス</h3>
sshd: 192.168.1.1,192.168.1.2
<h3> or 192.168.1.0 ~ 192.168.1.255 まで</h3>
sshd: 192.168.1.