GNU/Linux >> Linux の 問題 >  >> Linux

TCPラッパーを使用してLinuxサーバーへのアクセスを制限する

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はファイアウォールの代わりにはなりません。ファイアウォールやその他のセキュリティツールと組み合わせて使用​​する必要があります。


Linux
  1. TCPラッパー

  2. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  3. / etc / hostsを補完するユーザー固有のHostsファイルを作成しますか?

  1. Linux の TCP ラッパー (hosts.allow &hosts.deny) コマンド オプション

  2. Linux での TCP ラッパー (/etc/hosts.allow &/etc/hosts.deny) について

  3. Linux の /etc/hosts ファイルについて

  1. /dev/tcp を使用するために < または > が必要な理由

  2. /etc/hosts と /etc/resolv.conf の違い

  3. /etc/hosts のサイズ制限 (Linux)