Linux で TCP ラッパーを使用してネットワーク サービスを保護する方法
この記事では、TCP ラッパーとは何か、および Linux サーバー上で実行されているネットワーク サービスへのアクセスを制限するために TCP ラッパーを構成する方法について説明します。ただし、始める前に、TCP ラッパーを使用しても、適切に構成されたファイアウォールの必要性がなくなるわけではないことを明確にしておく必要があります。
この点で、このツールはシステムの究極のセキュリティ対策ではなく、ホストベースのアクセス制御リストと考えることができます。どちらかを優先するのではなく、ファイアウォールと TCP ラッパーを使用することで、サーバーに単一障害点が残らないようにすることができます。
hosts.allow と hosts.deny について
ネットワーク リクエストがサーバーに到達すると、TCP ラッパーは hosts.allow
と hosts.deny
を (この順序で) 使用して、クライアントに特定のサービスの使用を許可するかどうかを判断します。 。
デフォルトでは、これらのファイルは空であるか、すべてコメントアウトされているか、存在しません。したがって、TCP ラッパー層を介してすべてが許可され、システムは完全な保護をファイアウォールに依存することになります。冒頭で述べた理由により、これは望ましくないので、両方のファイルが存在することを確認してください。
ls -l /etc/hosts.allow /etc/hosts.deny
両方のファイルの構文は同じです。
<services> : <clients> [: <option1> : <option2> : ...]
どこ、
- サービスは、現在のルールを適用する必要があるサービスのカンマ区切りのリストです。
クライアントは、ルールの影響を受けるホスト名または IP アドレスのカンマ区切りのリストを表します。次のワイルドカードが受け入れられます。
- ALL はすべてに一致します。クライアントとサービスの両方に適用されます。
- LOCAL は、FQDN にピリオドのないホスト (localhost など) と一致します。
- 既知は、ホスト名、ホスト アドレス、またはユーザーが既知である状況を示します。
- 不明は既知の反対です。
- PARANOID では、DNS 逆引き検索 (最初に IP アドレスでホスト名を決定し、次にホスト名で IP アドレスを取得) がそれぞれの場合に異なるアドレスを返した場合、接続がドロップされます。
/etc/hosts.allow
で特定のサービスへのアクセスを許可するルールは、/etc/hosts.deny
で禁止するルールよりも優先されることに注意してください。それ。さらに、2 つのルールが同じサービスに適用される場合、最初のルールのみが考慮されます。
残念ながら、すべてのネットワーク サービスが TCP ラッパーの使用をサポートしているわけではありません。特定のサービスがそれらをサポートしているかどうかを確認するには、次の手順を実行します。
ldd /path/to/binary | grep libwrap
上記のコマンドが出力を返す場合、それは TCP でラップされている可能性があります。この例としては、次に示すように sshd と vsftpd があります。
TCP ラッパーを使用してサービスへのアクセスを制限する方法
/etc/hosts.allow
と /etc/hosts.deny
を編集するときは、最後の行の後に Enter を押して改行を追加してください。空ではない行。
192.168.0.102 と localhost への SSH および FTP アクセスのみを許可し、その他すべてを拒否するには、次の 2 行を /etc/hosts.deny
に追加します。 :
sshd,vsftpd : ALL
ALL : ALL
/etc/hosts.allow
内の次の行:
sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL
これらの変更は、再起動することなくすぐに適用されます。
次の図では、最後の行から単語 LOCAL
を削除した結果がわかります。FTP サーバーは localhost で使用できなくなります。ワイルドカードを追加し直すと、サービスが再び利用可能になります。
名前に example.com
が含まれるホストへのすべてのサービスを許可するには、次の行を hosts.allow
に追加します。
ALL : .example.com
10.0.1.0/24 上のマシンへの vsftpd へのアクセスを拒否するには、次の行を hosts.deny
に追加します。
vsftpd : 10.0.1.
最後の 2 つの例では、 クライアント リストの最初と最後にあるドットに注目してください。これは、「名前または IP にその文字列が含まれるすべてのホストおよび/またはクライアント」を示すために使用されます。
この記事は役に立ちましたか?何かご質問やご意見はございますか?以下のコメントフォームを使用して、お気軽にお知らせください。