Linux環境でのシステム攻撃を検出して防止する

WBOY
リリース: 2016-06-21 09:08:40
オリジナル
878 人が閲覧しました

攻撃

1.

PC に Linux システムをインストールすると、強力で高度なマルチタスク ネットワーク オペレーティング システムが手に入ります。ただし、システム機能が少し強力すぎる場合もあります。一部のディストリビューションでは、デフォルトで多くのサービスが開始されます (rlogind、inetd、httpd、innd、fingerd、timed、rhsd など)。システム管理者は、これらのサービスに精通している必要があります。マシンがインターネットに接続されている場合は、システムのセキュリティを確保する必要があります。

ほとんどの攻撃者はイノベーターではありません。彼らはよく知られている、または新たに発見されたセキュリティ脆弱性を突破するために、最新の公開されたシステム ツールやテクノロジを使用します。ただし、管理者は、使用している Linux によってリリースされている公式サイト (
www.redhat.com、www.calderasystems.com など) にアクセスすることで、最新のセキュリティ脆弱性と対応するパッチについて知ることができます。また、www.securityfocus.com、www.cert.org、その他のセキュリティ脆弱性通知サイトに定期的にアクセスすることもできます。

サーバーへのアクセスを制御する最も便利な方法は、TCP ラッパーと呼ばれるプログラムを使用することです。このプログラムは、ほとんどのディストリビューションにデフォルトでインストールされます。 TCP ラッパーを使用すると、前述のサービスの一部へのアクセスを制限できます。また、TCP ラッパーのログ ファイルには、システムへのアクセス試行がすべて記録されます。最後のコマンドでプログラムのログを表示することで、管理者は誰がシステムに接続しようとしているのかを知ることができます。

Linux の /etc ディレクトリには、以下に示す inetd.conf ファイルがあります。このファイルは TCP ラッパーの構成ファイルであり、TCP ラッパーが開始を制御できるサービスを定義します。たとえば、finger サービスを削除する場合は、finger サービスの行をコメントアウトします (先頭に「#」を追加するだけです)。


# inetd。 conf このファイルには、INETD TCP/IP スーパー サーバーを通じて利用可能
# になるサービスが記述されています。
# 実行中の INETD プロセスを再構成するには、このファイルを編集して、
# INETD プロセスに SIGHUP シグナルを送信します。

#

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
# Finger、systat、netstat はユーザー情報を提供します。かもしれません
......

しかし、sendmail、named などのサービスの場合は、finger、telnet、その他のサービスとは異なるため、inet デーモンはリクエスト時に対応するサービスを開始します。このプロセスはサービスを提供しますが、システムの起動時にデーモン プロセスとして個別に実行されます。 Linux のスラックウェア バージョンでは、/etc/rc.d ディレクトリにある起動設定ファイル rc.M ファイル (

#!/bin/sh
# rc) を変更することで、コマンド ラインをコメント アウトして sendmail を起動できます。 M このファイルは、システムが「マルチユーザー」実行レベルの 1 つ (つまり、
# レベル 1 から 6) で初期化されているときに init(8) によって実行されます。通常、ファイル
# システムなどのマウントが行われます。
# sendmail デーモンを開始します:
# if [ -x /usr/sbin/sendmail ]; then
# echo "sendmail デーモンを開始しています (/usr/sbin/sendmail -bd -q 15m)… "
# /usr/sbin /sendmail -bd -q 15m
# fi
......

(注: redhat ディストリビューションの場合、chkconfig コマンドまたは linuxconfig コマンドを実行して、特定のサービスを開始するかどうかを管理できます。例: chkconfig --level 345 sendmail on システムが 345 実行レベルで sendmail を自動的に開始できるようにします)named などの他のサービスについては、同じディレクトリ内の対応する起動設定ファイル内の対応する起動コマンドをコメント アウトすることもできます。 、そのため、マシンを再起動しても、対応するサービスは開始されません。 redhat linux の上位バージョンでは、linuxconfig コマンドが提供されており、これを使用して、グラフィカル インターフェイスで起動時に関連サービスを実行するかどうかを対話的に設定できます。 ただし、telnet や ftp などのサービスが一緒に閉じられると、リモート管理が必要な管理者にとっては非常に不便になります。

Linux は、サービスを要求するユーザーに制限を実装するための別のより柔軟で効果的な方法を提供し、信頼できるユーザーがセキュリティを確保しながらさまざまなサービスを使用できるようにします。

/etc ディレクトリには、hosts.deny hosts.allow の 2 つのファイルがあります。これらの 2 つのファイルを構成することで、どのマシンがこれらのサービスを使用できるか、どのマシンがこれらのサービスを使用できないかを指定できます。これら 2 つのファイルの設定は、単純なアクセス制御言語によって実装されます。アクセス制御ステートメントの基本形式は、プログラム名リスト、ホスト名/IP アドレス リストです。

プログラム名のリストでは、対応するサービスを提供する 1 つ以上のプログラムの名前をカンマまたはスペースで区切って指定します。inetd.conf ファイルで、対応するサービスを提供するプログラム名を確認できます。たとえば、telent 行の最後の項目は必須のプログラム名です。 in.telnetd ホスト名/IP アドレスのリストでは、サービスの使用を許可または禁止する 1 つ以上のホストの ID を指定します。ホスト名はカンマで区切られます。またはスペース。プログラム名とホスト アドレスでワイルドカードを使用すると、複数のサービスとホストを簡単に指定できます。 サービスリクエストがサーバーに到着すると、アクセス制御ソフトウェアは、一致するものが見つかるまで、これら 2 つのファイルを次の順序でクエリします。1. 要求されたサービスのホスト アドレスと一致するエントリが /etc/hosts.allow にある場合、ホストはサービスの取得を許可されます
2. それ以外の場合、/etc/hosts.deny にエントリがある場合ホストアドレス項目が一致する場合、ホストはサービスの使用を禁止されます。
3. 一致しない場合、サービスの使用は許可されます。空のファイルなので、構成ファイルを削除または移動して、すべてのホストがすべてのサービスをシャットダウンできます。

ファイル内では、空白行や # で始まる行は無視され、行の前に # を追加することでコメント機能を実装できます。 Linux では、プロセスまたはホストのリストを指定する次の柔軟な方法が提供されています:

1. .amms.ac.cn など、「.」で始まるドメイン名文字列は、www.amms.ac.cn と正常に一致します。
2. 202.37.152 など、「.」で終わる IP 文字列。202.37.152 を含むホストは、ネットワーク/マスクを示します。が要求されます。ホストの IP アドレスとマスクのビット単位の AND 結果が n.n.n.n に等しい場合、ホストはこのエントリと一致します。
4. ALL は、すべての可能性を一致させることを意味します。
5. EXPECT は、後で定義されたホストを削除することを意味します。例: list_1 EXCEPT list_2 は、list_1 のホスト リストから List_2 にリストされているホストを除外することを意味します。 LOCAL は、ホスト名に「.」を含まないすべてのホストと一致することを意味します。上記のメソッドは、Linux が提供するメソッドの一部にすぎません。 , しかし、一般的なアプリケーションにはこれで十分です。

この問題をいくつかの例を挙げて説明します。

例 1: 同じ LAN 上のマシンにのみサーバーの FTP 機能の使用を許可し、セカンダリ WAN での FTP サービス要求を禁止したいとします。ローカル LAN は 202.39 です。 154.、202.39.153、および 202.39.152 は 3 つのネットワーク セグメントで構成されます。 hosts.deny ファイルでは、すべてのマシンがすべてのサービスの要求を禁止されるように定義します。 ALL:ALL hosts.allow ファイルでは、LAN のみが FTP 機能にアクセスできるように定義します。 in.ftpd -l -a : 202.39.154 202.39.152。このように、LAN 以外のマシンが FTP サービスを要求すると、拒否されます。 LAN 上のマシンは FTP サービスを使用できます。 ALL:ALL 次に、inetd プロセスを再起動します。 /etc/rc.d/init.d/inet restart ただし、hosts.deny ファイルは、/etc/inetd.conf ファイルに含まれるサービスへのアクセスのみを制御できます。これらのサービスには /usr があります。 /bin/tcpd 管理。 TCP ラッパーは、受信ネットワーク要求をリッスンし、hosts.allow および hosts.deny 内のサービスと比較して、許可または拒否を決定します。 ただし、ラッパーに含まれていないサービスについては、他の方法を使用する必要があります

2. システムを保護する最も簡単かつ効果的な方法は、Linux システムがマシンへのアクセス記録を追跡することに多大な貢献を果たしています
。仕事。ラッパーはシステムへの特定のアクセスを拒否しますが、システムは一部のログ ファイルに情報コンテンツを追加します。 /var/log
ディレクトリには、通常、次のファイルが表示されます。


boot.log cron cron.1 cron.2 dmesg httpd
lastlog lastlog.1 maillog maillog.1
maillog.2
messagesmessages.1 netconf .log
netconf.log.1
netconf.log.2 secure secure.1 secure.2
secure.3 secure.4 スプーラー spooler.1 spooler.2
uucp wtmp wtmp.1 xferlog xferlog.1
xferlog.2


一部の LOG ファイルには 1、2 などの拡張子が付いていることがわかります。これは、システムが cron.daily を実行していることが原因で発生します。実際、cron.daily は /etc の下のサブディレクトリであり、システムが自動的に実行する多くの管理スクリプト ファイルが含まれています。これらのスクリプトは、ユーザーが参加しなくても、ログ ファイルが大きくなりすぎないようにログ ファイルをローテーションするなど、一部のタスクを自動化します。管理者は、スケジュールされた時間にプログラムを実行するためにこれらのスクリプトを変更する方法をよく知っている必要があります。もちろん、現在では、テキスト モードまたはグラフィカル モードで完全に機能するログ ファイル アナライザーが多数あり、危険な攻撃の兆候を自動的に検出して管理者に通知することができます。このようなツールの多くは、http://www.freshmeat.net/tucows などで見つけることができます。

攻撃者の観点から見ると、攻撃者はサーバー上の安全なファイルに最も興味を持っています。サーバーへの外部ネットワーク アクセスをオフにした場合
。次のような状況に遭遇する可能性があります:


[root@linux /]#grep拒否 /var/log/secure*

Sep 12 07:52:42 netgate in.rlogind[7138]:拒否
connect from 2 ? ?.?.5?.?42
Sep 12 07:52:52 netgate in.rshd[7139]: 拒否されました
2 からの接続??.?.5?.?42
Sep 12 07:52:55 netgate in .rexecd[7144]: 2??.?.5?.?42 からの接続
を拒否しました
Sep 12 07:52:59 netgate imapd[7146]: 2??.?.5?.?.42 からの接続
を拒否しました
Sep 12 07:52:59 netgate in.fingerd[7142]: 拒否
2 からの接続??.?.5?.?42
Sep 12 07:53:00 netgate ipop3d[7143]: 拒否
2 からの接続 ??.?.5?.?42 ?.?.5?.?42
Sep 12 07:53:07 netgate in.ftpd[7147]: 2??.?.5?.?42
Sep 12 07:53:10 netgate gn からの接続が拒否されました
[7145]: 2??.?.5?.? 42 からの接続
を拒否しました
Sep 12 07:53:22 netgate in.telnetd[7149]: 2??.?.5?.? 42 からの接続
を拒否しました
Sep 12 07:56:34 netgate imapd[7150]: 2??.?.5?.?42 からの接続
を拒否しました


ご覧のとおり、攻撃者はサーバー ポート上のいくつかのポートに接続しようとしました。しかし、サーバーがシャットダウンされているため、inetd が起動しました
すべてのサービス、つまり LOG システムはこれらのアクセス拒否を記録します。マシン上でそのようなサービス拒否が見つからない場合でも、マシンが攻撃されていないことを意味するわけではありません。メールログ ファイルには、サーバー経由で転送された電子メール メッセージが保存されます。 xferlogはftpのログ情報などを保存します。

wtmp を表示したい場合は、最後のコマンドを使用できます

# last | more Fishduck ttyp6 nexus 火曜日 9 月 28 日 16:03 まだログインしています Birdrat ttyp5 Speedy 火曜日 9 月 28 日 15:57 まだログインしています root tty1 火曜日 9 月 28 12:54 まだログインしている場合は、誰がいつログインしたか、ログイン時間などが表示されます。チェックすることで不正ログイン情報を見つけることができます。 wtmp.1 などの以前の wtmp ファイルを表示することもできます。 # last -f /var/log/wtmp.1 more ただし、次の場合は、ログ ファイルのステータス情報にも注意する必要があります。特に小さいか、サイズ 0 は、攻撃者がシステムに侵入してファイルを変更した可能性があることを示します。ユーザーが特定のファイルを変更できないようにするには、たとえば、ログ ファイルへの追加のみを許可し、削除操作は許可しないなどにします。 Linux を使用すると、攻撃者によるログ ファイルやパスワード ファイルなどの変更を防ぐことができます。侵入検知システム。このツールは、lilo の起動時に特定のファイルへの変更を許可するかどうかを決定できます。このツールの詳細については、www.soaring-bird.com.cn/oss_proj/lids/index.html をご覧ください。 システム内のすべてのプロセスの親プロセスは「init」と呼ばれ、そのプロセス ID 番号は 1 です。次のコマンドを使用して、init プロセスの情報を確認できます。 # ps ax | grep init 1 ? S 6:03 init システム起動時の init プロセスは、ネットワーク ポート番号を介してネットワーク リクエストを監視します。 たとえば、Linux サーバーに Telnet 接続する場合、実際には inetd プロセスにプロセスの開始を要求します。telnetd プロセスはポート 23 でアクセス要求を処理し、通信を実装します。次に、in.telnetd プロセスがユーザー名とパスワードを要求するプロセスを開始し、ユーザーはマシンにログインします。 inetd は、同時に多くのポートをリッスンしてアクセス要求を待機し、プログラムをアクティブにして関連サービスを完了します。ファイル /etc/services を調べると、どのサービスがどのポートを使用しているかを確認できます。リソース節約の観点からは、サービスごとに 1 つのプロセスを使用するのではなく、1 つのプロセスを使用することが合理的です。 攻撃者が最初にサイトを訪問するとき、多くの場合、ポート スキャナーと呼ばれるツールが使用されます。これにより、攻撃者は、どのシステム サービスが開いているかを確認できます。 LInux で最も有名なポート スキャナーの 1 つは nmap です。このソフトウェアは http://www.insecure.org/nmap/index.html からダウンロードできます。最新バージョンにはグラフィカル インターフェイス nmapfe もあります。 nmap を実行して、どのような結果が得られるかを確認してみましょう。オプション「-sS」は、半接続されたハーフペン スキャンである TCP SYN の使用を指します。また、「-O」は、スキャンされたシステムのオペレーティング システム o のみを検出します。同じ時間です。 (OS フィンガープリントを使用する技術については、http://www.isbase.com/book/showQueryL.asp?libID=271 を参照してください) 攻撃者が相手が使用しているオペレーティング システムを知っている場合、攻撃者は次の場所でオペレーティング システムを検索できます。一般的な脆弱性


# nmap -sS -O localhost


Fyodor (fyodor@dhp.com,
www.insecure.org/nmap/) による nmap V. 2.3BETA5 の起動
localhost 上の興味深いポート ( 127.0.0.1 ):
ポートステートプロトコルサービス
21 open tcp ftp
23 open tcp telnet
25 open tcp smtp
53 open tcpドメイン
79 open tcp Finger
80 open tcp http
98 open tcp linuxconf
111オープンTCP sunrpc
113 オープン tcp 認証
139 オープン tcp netbios-ssn
513 オープン tcp ログイン
514 オープン tcp シェル
515 オープン tcp プリンタ

TCP シーケンス予測: クラス = ランダムな正の増分
難易度 = 4360068 (良好)幸運を祈ります!)
リモートオペレーティング システムの推測: Linux 2.1.122 - 2.2.12

Nmap の実行が完了しました -- 1 つの IP アドレス (1 つのホストが起動) を 2
秒でスキャンしました


これらの開いているポートは、攻撃者の侵入ポイントです。 inetd.conf ファイルを変更して特定のサービスをシャットダウンし、inetd を再起動すると、nmap を使用してスキャンできるようになりますが、コメントアウトされたサービスはスキャンできないことがわかります。もちろん、管理者は、Satan や Nessus などの他のセキュリティ スキャン ツールを使用して、自分のシステムのセキュリティと信頼性をチェックし、攻撃者が発見する前にシステムの脆弱性を早期に発見し、それを補うこともできます。
3.
泥棒が家に侵入し、家の中のすべてのものを盗みますが、盗んだもの
を同じものと置き換えるというジョークがあります。しかし、オンラインの世界ではそれが可能です。攻撃者がシステムの脆弱性を悪用してシステムに不法に侵入した後、ps コマンドを使用してシステム内のすべてのプロセスを一覧表示すると、異常な証拠は見つかりません。パスワード ファイルを確認すると、
すべて正常です。どうしたの?システムがシステムに侵入すると、最初のステップは、netstat コマンドなど、システム上の特定のファイルを置き換えることです。 netstat -a コマンドを使用すると、システム攻撃者の存在は表示されません
情報。もちろん、攻撃者はその存在を明らかにする可能性のあるすべてのファイルを置き換えます。Linux 環境でよく知られているこのようなツールキットの名前は
rootkit です。検索エンジンでキーワード rootkit を検索すると、何百もの結果が表示されます。これらのツールには通常、次のものが含まれます:


ps netstat top....

これらの渡されたファイルは置き換えられているため。したがって、ls コマンドを使用してこれらのファイルを表示するだけでは、欠陥は見つかりません。システム ファイルの整合性を確認するには、いくつかの方法があります。 Red Hat、Caldera、TurboLinux、または RPM を使用するその他のシステムをインストールしている場合。 RPM を使用して、システム ファイルの整合性を検証できます。まず、表示する必要があるファイルがどのソフトウェア パッケージからのものかを調べる必要があります。rpm コマンドを使用すると、特定のファイルが特定のパッケージに属していることを確認できます。 rpm -qf /bin/netstat net-tools-1.51-3 次に、rpm パッケージ全体をスキャンして、何が変更されたかを確認できます。変更されていないパッケージでこのコマンドを使用しても、以下に示すように出力情報は生成されません:

# rpm -V net-tools

後でこのコマンドを使用する前に、netstat バージョン 5.2 のバイナリ実行可能ファイルを 6.0 バージョンに置き換えます。結果は次のようになります:

....T /bin/netstat

これは、/bin/netstat/ ファイルが変更されたことを意味します。 rpm -qf を使用して ps および top コマンドをテストすると、パッケージ procps を取得し、パッケージ procps の整合性を検証できます。 「ハッキングされた」サイトの結果は次のとおりです:

# rpm -qf /bin/ps procps.2.0.2-2
# rpm -V procps
SM5..UGT /bin/ps
..UGT /usr / bin/top

攻撃者はシステムに侵入し、システム内のコマンドを独自の ps および top コマンドに置き換えました。これにより、管理者は実行中のプロセスを確認できなくなり、ネットワークに出入りするすべてのユーザーのデータを監視し、パスワード情報を見つけることができます。 以下は、システム上のすべての rpm ライブラリをスキャンし、すべてのパッケージが改ざんされているかどうかをチェックする小さな
スクリプトです。ただし、このスクリプト
によって報告されるすべての問題が、システム ファイルが攻撃者によって損傷されたことを示しているわけではないことに注意してください。たとえば、通常、パスワード ファイルはシステムをインストールしたときとは異なります:

#!/bin/bash
#
# rpm データベースを実行し、不一致をレポートします
# `rpm -qa` の rpmlist について
# これらの引用符は次のとおりです。バッククォート
do echo " ----- $rpmlist -----" ;
rpm -V $rpmlistned > /tmp/rpmverify.out

このスクリプトを実行すると、出力がファイルに送られます。 /tmp/rpmverify.out このファイルを表示するには、less コマンドを使用できます。ただし、/etc/passwd、/etc/inetd.conf などのテキスト ファイルは変更されているように見える場合があります。しかし、これらが管理者
によって変更されたのか、それとも侵入者によって変更されたのかをどうやって知ることができるのでしょうか?その方法は次のとおりです:

システムがクリーンで攻撃者に侵入されていないことを確認したら、これらのシステム ファイルのフィンガープリント情報を作成します。システムが侵害された疑いがある場合は、このフィンガープリント情報を使用して、システムが侵害されているかどうかを判断します。ファイルのフィンガープリント情報は、コマンド md5sum によって作成されます:

# md5sum /etc/passwd
d8439475fac2ea638cbad4fd6ca4bc22 /etc/passwd

# md5sum /bin/ps
6d16efee5baecce7a6db7d1e1a088 /bin/ps

# md5sum /bin/netsat
b7dda3abd9a1429b23fd8687ad3dd551 /bin/netstat

このデータは、私のシステム上のファイルのフィンガープリント情報です。異なるシステム上のファイルのフィンガープリント情報は通常異なります。独自のシステム ファイルのフィンガープリント情報を計算するには、md5sum を使用する必要があります。フィンガープリント情報を作成する必要があるファイルは次のとおりです。
/usr/bin/passwd /sbin/portmap /bin/login /bin/ls /usr/bin/top /etc/inetd.conf /etc/services
フィンガープリント情報ごとシステム ファイルが改ざんされていないかどうかを確認できます。

4.
前のセクションで述べたように、netstat や ls などのコマンドが変更され、システムが侵入されたことが判明した場合、次に何をすべきでしょうか?システムの重要性に応じて、多くのオプションがあります。ただし、ユーザー ディレクトリ、パスワード、その他の主要なシステム ファイルをバックアップすることをお勧めします。次に、システムを再インストールします。ただし、バックアップ ファイルを単に新しいシステムにコピーしないでください。攻撃者がこれらのファイルに違法なものを隠している可能性があります。

TCP ラッパーを使用して、システムを再インストールせずにホストへのアクセスを制限し、重要ではないネットワーク サービスをシャットダウンすることもできます。次に、影響を受けるパッケージを更新します。システムを「クリーンに」再起動することが重要ですが、これを実現するのは簡単ではありません。 procps または net-tools パッケージが攻撃者によって変更されていることがわかった場合、最初に行うことは、クリーンなパッケージを再インストールして、攻撃者によって操作されてバックドアを残したパッケージを置き換えることです。一般に、
システム発行元から最新のパッケージを入手して再インストールすることが最善です。

攻撃者がシステムに侵入すると、いくつかのツールをシステム上に保存して隠し、見つけにくくします。以下は、攻撃者によって侵害されたシステムの例です。システムが攻撃者によって侵害されると、サーバーはネットワーク アクセスを制限され、影響を受けるパケットをすべて置き換えます。それでは
システムへの侵入を繰り返し試行した場合は、ログ ファイルを注意深く確認して見つける必要があります。 /etc/passwd ファイルをチェックして、不正なユーザーを見つけます。
ユーザーのディレクトリ: /home/jon に入り、「ls -l」を実行して、次の内容を取得します:

.. .. .bashrc .bash_history .screenrc emech.tar.gz

emech という名前のものを除く.tar.gzファイルを確認しても異常は見られません。しかし、注意深く見てみると、システムには 2 つの
".." ディレクトリがあることがわかります。 (サブディレクトリの上位ディレクトリを参照する) というのは、確かに非常に奇妙です。「cd ..」コマンドを使用すると、/home ディレクトリに入ります。サブディレクトリ名の 2 つのドットの後にスペースが含まれていることがわかります。 (".. ") 次のコマンドで見つけることができます:

# cd /home/jon
# echo .* | cat -v
..bashrc .bash_history .screenrc emech.tar.gz

注意深く観察すると、各サブディレクトリはスペースで区切られており、2 番目の「..」と .bashrc の間にはスペースが 2 つあることがわかります。これは、2 番目の「..」サブディレクトリが実際にはドット-ドット-スペースであることを意味します。以下のディレクトリを入力します:

# cd ".. "

次に、ディレクトリの内容をリストします:

#ls

randfiles mech.set mech.pid checkmech cpu.memory
mech.help mech.usage mech mech。レベル emech.users psdevtab

次のステップでは、他の場所に隠しファイルがあるかどうかを確認します:

# find / -user jon -print

/home/jon ディレクトリに加えて、次のコンテンツも見つかりました;

/usr/local/bin/.httpd
/tmp/cl
/tmp/.l/bcast
/tmp/.l/imapd
/tmp/.l/log
/tmp/.l/pscan
/tmp/.l/pscan.c
/tmp/.l/rpc
/tmp/.l/slice2
/tmp/.l/sniffer
/tmp/.l/sxploit
/tmp/.l/thc
/tmp/.l/ufs.c

この侵入者はシステムにスニファーとポート スキャナーをインストールし、自分自身の良い「家」を作成しました。調査中に、正規ユーザーのディレクトリに「tcp.log」という恐ろしいファイルも見つかりました。ファイル このファイルは数百行の長さで、システム内外のすべての
telnet および ftp 接続が含まれています。このファイルに含まれる侵害された可能性のあるマシンの管理者に、システムを再インストールする必要があることを通知するだけでなく、システム上のすべてのユーザーのパスワードを更新する必要があることも伝えます。

隠れた危険を探すのに役立つ例をいくつか紹介します。まず、ユーザー ディレクトリにある「suid」または「guid」を持つファイルを探します。これらのファイルの実行可能属性ビットは、x ではなく s です。例:

#ls -s /usr/bni/passwd
-r-s--x--x 1 root root 10704 Apr 14 1999 /usr/bin/passwd

属性の 4 桁目の「s」コマンドが実行されると、プロセスの実際の実効ユーザー ID が root ユーザーになることを示します。これは、一般ユーザーが自分のパスワードを修正および変更できるようにするために必要です。 7 桁目の x が s の場合、別のグループのユーザーがプログラムを実行すると、そのプログラムはそのユーザーのすべてのグループの実効グループ ID を持つことになります。プログラムが特定のユーザーまたはグループになりすますことを有効にすることは有害ではありません。ただし、一般に、管理者以外のユーザーは、自分のディレクトリに root-suid プログラムを含めるべきではありません。次のコマンドを使用して、そのようなファイルを検索できます:

# find /home -perm -4000 -o -perm -2000 -print

次のステップは、侵入者が残したプログラムとファイルの検索を続けることです。隠しディレクトリを見つける簡単な方法が必要です。次の方法は、「.kde」などの隠しディレクトリを見つける方法です。 「..」や「...」などのディレクトリも検索できます: クラッカー

# find / -type d -name ".*" -print

"-type d" オプションはディレクトリのみをリストすることを意味します。このコマンドでは、「.」または「..」はリストされません。

V.
優れたシステム管理者として、攻撃者の攻撃行為を阻止する最善の方法は、攻撃者の動作原理とメカニズムを理解することです。どのようなツールを使用したのか、どのように侵入を行ったのかなど。したがって、ここで説明するさまざまなネットワーク ツールについて深く理解する必要があります。

上記では例を使用して、スニファーを使用してネットワーク フローを監視し、ユーザー名とパスワードを収集する攻撃者について説明しています。以下では、スニッファーがどのように機能するかを詳しく説明します。簡単に言うと、スニファーは、ネットワーク インターフェイスで受信したすべてのデータを検出できるツールです。通常の状況では、コンピュータは宛先アドレスがそれ自体であるデータグラムのみを受け入れ、スニファーはネットワーク インターフェイスをエラー モードにして、ネットワーク カードが受信したすべてのデータグラムを受け入れることができるようにします。

ifconfig eth0 コマンドを実行すると、次の結果が得られます:


eth0 Link encap:Ethernet HWaddr 00:C0:4F:E3:C1:8F
inet addr:192.168.22.2 Bcast:192.168.22.255 Mask :255.255 .255.0
アップブロードキャスト実行中のマルチキャスト MTU:1500 メトリクス:1
RXパケット:49448エラー:0ドロップ:0オーバーラン:0フレーム:0
TXパケット:33859エラー:0ドロップ:0オーバーラン:0キャリア:0
衝突: 6 txqueuelen:100
割り込み:10 ベースアドレス:0x300


2 つの端末を開き、1 つの端末でスニッファースニフィットを実行します
# sniffit -i
別の仮想端末で ifconfig eth0 を再度実行できます。出力には次の内容が表示されます:
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
上記と比較すると、「PROMISC」という単語が追加されていることに注意してください。これはプロミスキャス モード

sniffit の略語です。は、軽量のターミナルベースのスニファーです。
http://reptile.rug.ac.be/~coder/sniffit/sniffit.html から入手できます。

もう 1 つの同様のスニファーは netwatch で、http://www.slctech.org/~mackay/netwatch.html から入手できます。

システムに別のスニファーをインストールしたくない場合は、システムに付属のツール tcpdump を使用できます。このツールは前の 2 つのツールほど豪華ではありませんが、すべて同じ機能を実行できます。

# tcpdump host www.linuxjournal.com -l | tee /tmp/tcpdump.out
ここで、-l は出力データをファイルに保存するように tcpdump に指示します。出力は次のとおりです:


16:41:49.101002 www2.linuxjournal.com.www > marcel.somedomain.com.1432: F
2303148464:2303148464(0) ack 1998428290 win 16352
16:41 :4 9.101206 marcel .somedomain.com.1432 > www2.linuxjournal.com.www: . ack
1 win 32120 (DF)
16:41:50.001024 www2.somedomain.com.1429: F
1805282316:1805282316(0) ack 1988937134 win 16352
16:41:50.001215 marcel.somedomain.com.1429 > www2.linuxjournal.com.www: ack
1 win 32120 (DF)
16:41: 50.840998 www2 linuxjournal.com.www > marcel.somedomain.com.1431: F
1539885010:1539885010(0) ack 1997163524 win 16352
16:41:50.841198 marcel.somedomain.com.1431 > uxjournal.com .www : . ack
1 勝利 32120 (DF)
16:41:51.494356 marcel.somedomain.com.1429 > www2.linuxjournal.com.www: P
1:335(334) ack 1 勝利 32120 (DF)
16 : 41:51.497003 marcel.somedomain.com.1433 > www2.linuxjournal.com.www: S
2019129753:2019129753(0) win 32120
(DF)
16:41:51.671023 www2.linuxjournal.com.www &gと; mar cel .somedomain.com.1429:R

Linux システムでは、さまざまな種類のスニファーが利用できます。攻撃者はシステムに侵入した後、変更された ps コマンドを使用して実行中のスニファーを隠す可能性があります。または、通常のように見えるプロセスの名前に変更します。




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート