現在、企業のオープンソースシステムのセキュリティ運用は業界のホットスポットであり、オープンソースシステムの効率的で信頼性の高い運用をどのように確保するかは、非常に重要な技術的課題です。本稿では、TCPラッパーを使用して、企業システムサービスのセキュリティを保証する方法を詳しく紹介します。
TCPラッパーによる保護
1.主な機能
TCPラッパーは、クライアント/サーバーモデルの一部として、/etc/hosts.allowファイル と/etc/hosts.denyファイルを、libwrapにリンクされているすべてのデーモンに 使用できる単純なアクセス制御リストの基礎として使用します。このアクセス制御言語は、クライアントのアドレスとクライアントがアクセスしようとしているデーモンに基づいて、クライアントがサーバーデーモンにアクセスすることを選択的に許可するルールを定義します。lddの出力は、sshdが依存している共有ライブラリの1つがlibwrapであることを示しています:
ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0
2、hosts.allowとhosts.denyを使用します。
hosts.allowファイルとhosts.denyファイルの各行の書式は以下の通りです:
daemon_list : client_list [: コマンド]。
ここで、daemon_listは1つ以上のサーバ・デーモンのカンマ区切りリストであり、client_listは1つ以上のクライアントのカンマ区切りリストであり、オプションのcommandは実行されるコマンドです。コマンドです。
クライアントがサーバへの接続を要求すると、一致するものが見つかるまで、サーバシステム上のhosts.allowとhosts.denyファイルを以下の順序で参照します:
デーモンとクライアントのペアがhosts.allowの行に一致する場合、アクセスを許可します。
デーモン/クライアントのペアがhosts.denyの行と一致する場合、アクセスは拒否されます。
hosts.allowまたはhosts.denyのいずれにもマッチしない場合は、アクセスを許可します。
最初のマッチは、クライアントがサーバへのアクセスを許可されているかどうかを決定します。hosts.allowまたはhosts.denyにどちらも存在しない場合、ファイルは空のように見えます。これら2つのファイルを削除することで、全てのクライアントに全てのデーモンへのアクセスを許可することができますが、これは推奨されません。
リモートシステムからのアクセス用にローカルシステムを開く場合は、以下のガイドラインに従ってください:
アクセスを許可したいシステムだけにローカルシステムを開きます。
各リモートシステムは、アクセスさせたいデータのみにアクセスできるようにします。
各リモートシステムにのみ、適切な方法でデータへのアクセスを許可します。
3.具体例
より安全なシステムを構築するには、hosts.denyに以下の行を追加して、すべてのアクセスをブロックしてください:
$ cat /etc/hosts.deny
...
ALL : ALL : echo '%c は %d に接続しようとしましたがブロックされました' >> /var/log/tcpwrappers.log
この行は、hosts.allowで特に許可されているサービス以外へのクライアントの接続を防ぎます。このルールにマッチすると、/var/log/tcpwrappers.log ファイルに行が追加されます。cはクライアントの情報に展開され、%dはクライアントが接続しようとしているデーモンの名前に展開されます。
特定のサービスやシステムへのアクセスを明示的に許可するために、 hosts.allowに行を含めることもできます。例えば、次の hosts.allow ファイルは、どのクライアントでも OpenSSH デーモンへの接続を許可しますが、ローカルシステムネットワークからの telnet 接続と 192.168. サブネット上のユーザだけは許可します:
$ cat /etc/hosts.allow
sshd: ALL
in.telnet: LOCAL
in.telnet: 192.168.* 127.0.0.1
...
2 行目は、サーバと同じドメイン内の任意のシステムからの接続を許可します。3 行目は、ローカルシステムだけでなく、192.168 で始まる IP アドレスを持つすべてのシス テムとも一致します。