TCPラッパー はオープンソースのホストベースのACL(アクセス制御リスト)システムであり、ホスト名、IPアドレス、ネットワークアドレスなどに基づいてTCPネットワークサービスを制限するために使用されます。特定のネットワークサービスへのアクセスを許可するホストを決定します。 TCP Wrapperは、オランダのプログラマー兼物理学者 Wietse Zweitze Venemaによって開発されました。 1990年にアイントホーフェン工科大学で。彼は1995年までそれを維持し、2001年にBSDライセンスの下でリリースしました。この簡単なガイドでは、TCPラッパーを使用してLinuxサーバーへのアクセスを制限する方法を説明します。
TCP Wrapperは、適切に構成されたファイアウォールの完全な代替ではないことに注意してください 。これは、Linuxサーバーのセキュリティを強化するための貴重な追加機能です。完全に構成されたファイアウォールやその他のセキュリティメカニズムおよびツールと組み合わせて使用することをお勧めします。
TCPラッパーのインストール
TCP Wrappersは、ほとんどのLinuxオペレーティングシステムの公式リポジトリで利用できます。
使用するLinuxディストリビューションによっては、以下のようにインストールできます。
Archベースのシステムの場合:
$ sudo pacman -S tcp_wrappers
YUMベースのシステムの場合:
$ sudo yum install tcp_wrappers
APTベースのシステムの場合:
$ sudo apt-get install tcp_wrappers
SUSE / openSUSEシステムの場合:
$ sudo zypper in tcp_wrappers
TCPラッパーを使用してLinuxサーバーへのアクセスを制限する
構成
TCP Wrappersは、 /etc/hosts.allowの2つの構成ファイルを使用してアクセス制御を実装します。 および/etc/hosts.deny 。これらの2つのアクセス制御リストファイルは、特定のクライアントがLinuxサーバーへのアクセスを許可されるかどうかを決定します。
/etc/hosts.allowファイル
このファイルには、許可または非許可のホストまたはネットワークのリストが含まれています。これは、このファイルでアクセスルールを定義することにより、ネットワークサービスへの接続を許可または拒否できることを意味します。
/etc/hosts.denyファイル
このファイルには、Linuxサーバーへのアクセスが許可されていないホストまたはネットワークのリストが含まれています。このファイルのアクセスルールは、/ etc/hosts.allowで'deny'を使用して設定することもできます。 オプション。
アクセスルールを定義するための一般的な構文は次のとおりです。
daemon_list : client_list : option : option ...
どこで、
- daemon_list -SSH、FTP、ポートマップなどのネットワークサービスの名前。
- clients_list -有効なホスト名、IPアドレス、またはネットワークアドレスのコンマ区切りのリスト。
- オプション -ルールが一致するたびに実行することを指定するオプションのアクション。
構文は両方のファイルで同じです。
覚えておくべきルール
TCP Wrappersを使用する前に、次の重要なルールを知っておく必要があります。 TCP Wrapperは、これら2つのファイル(hosts.allowとhosts.deny)のみを参照することに注意してください。
- /etc/hosts.allowファイルのアクセスルールが最初に適用されます。これらは、/ etc/hosts.denyファイルのルールよりも優先されます。したがって、サービスへのアクセスが /etc/hosts.allowで許可されている場合 ファイル、および /etc/hosts.deny内の同じサービスへのアクセスを拒否するルール 無視されます。
- 両方のファイル(hosts.allowとhosts.deny)で許可されるルールはサービスごとに1つだけです。
- ルールの順序は非常に重要です。特定のサービスの最初の一致ルールのみが考慮されます。同じことが両方のファイルに当てはまります。
- どちらのファイルにもサービスに一致するルールがない場合、またはどちらのファイルも存在しない場合、サービスへのアクセスはすべてのリモートホストに許可されます。
- いずれかのファイルの変更は、ネットワークサービスを再起動せずにすぐに有効になります。
サーバーを保護するための推奨されるアプローチ
一般に、Linuxサーバーを保護するためのベストプラクティスは、すべての着信接続をブロックし、いくつかの特定のホストまたはネットワークのみを許可することです。これを行うには、 /etc/hosts.denyを編集します ファイル:
$ sudo vi /etc/hosts.deny
次の行を追加します。この回線は、すべてのサービスとすべてのネットワークへの接続を拒否します。
ALL: ALL
次に、 /etc/hosts.allowを編集します ファイル:
$ sudo vi /etc/hosts.allow
選択した特定のホストまたはネットワークを許可します。
sshd: 192.168.43.192 192.168.43.193
また、以下に示すように、IPアドレスの代わりに有効なホスト名を指定できます。
sshd: server1.ostechnix.lan server2.ostechnx.lan
または、/ etc / hosts.allowファイル自体ですべてのルール(許可と拒否の両方)を定義することで同じことを行うことができます。
/etc/hosts.allowを編集します ファイルを作成し、次の行を追加します。
sshd: 192.168.43.192 192.168.43.193 sshd: ALL: DENY
/etc/hosts.denyでルールを指定する必要はありません ファイル。
上記のルールに従い、2つのホスト192.168.43.192、192.168.43.193を除くすべてのホストのすべての着信接続が拒否されます。
ここで、上記のホスト以外のホストからLinuxサーバーにSSHで接続しようとすると、次のエラーが発生します。
ssh_exchange_identification: read: Connection reset by peer
これは、以下に示すようにLinuxサーバーのログファイルから確認できます。
$ cat /var/log/secure
出力例:
Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)
同様に、 /etc/hosts.allow で、vsftpdなどの他のサービスのルールを定義できます。 以下に示すようにファイルします。
vsftpd: 192.168.43.192 vsftpd: ALL: DENY
繰り返しますが、 /etc/hosts.denyでルールを定義する必要はありません。 ファイル。上記のルールに従って、IPアドレス192.168.43.192のリモートホストはFTP経由でLinuxサーバーにアクセスできます。他のすべてのホストは拒否されます。
また、以下に示すように、/ etc/hosts.allowファイルでさまざまな形式でアクセスルールを定義できます。
sshd: 192.168.43.192 #Allow a single host for SSH service sshd: 192.168.43.0/255.255.255.0 #Allow a /24 prefix for SSH vsftpd: 192.168.43.192 #Allow a single host for FTP vsftpd: 192.168.43.0/255.255.255.0 #Allow a /24 prefix for FTP vsftpd: server1.ostechnix.lan #Allow a single host for FTP
特定のホストを除くすべてのホストを許可する
すべてのホストからの着信接続を許可できますが、特定のホストからの接続は許可できません。たとえば、 192.168.43内のすべてのホストからの着信接続を許可するとします。 サブネットですが、ホストからではありません 192.168.43.192 、 /etc/hosts.allowに次の行を追加します ファイル。
ALL: 192.168.43. EXCEPT 192.168.43.192
上記の場合、/ etc/hosts.denyファイルにルールを追加する必要はありません。
または、以下に示すように、IPアドレスの代わりにホスト名を指定できます。
ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan
詳細については、manページを参照してください。
$ man tcpd
また読む:
- Linuxで特定のユーザーまたはグループへのSSHアクセスを許可または拒否する
- ユーザー/グループ/システムごとのSSHログイン数を制限する
繰り返しになりますが、TCPWrapperはファイアウォールの代わりにはなりません。ファイアウォールやその他のセキュリティツールと組み合わせて使用する必要があります。