ハッキングのためにLinuxサーバーをすばやくチェックする方法

約2年前、私はドイツのホスティング会社からCentos 5.2に基づくあまり強力ではないサーバーを借りました。 いくつかの利益をもたらすいくつかのWebプロジェクトがあるため、可能な限り目を離さないようにしています。

Centosには、クラウンで毎日実行され、/ var / logの内容を分析し、要約レポートを作成して電子メールで送信する標準のLogwatchログアナライザーがあります。 ある晴れた日、このレポートで記録を見つけました。



 --------------------- yum Begin ------------------------ 
 
 インストールされたパッケージ:
     lzo2-2.02-3.el5.rf.i386
     dnstracer-1.8-1.2.el5.rf.i386
     openvpn-2.0.9-1.el5.rf.i386

 ---------------------- yum End -------------------------




その瞬間、彼女は非常に恥ずかしかった。前日に私はサーバーにログインせず、さらに何もインストールしなかったからだ。 最初に思いついたのは、サーバーが侵害されたことです。 自分は自信のあるLinuxユーザーだと思っていましたが、混乱していました。 幸いなことに、その瞬間、icqは私の元同僚であり、私が知っている最高のシステム管理者であり、非常に優秀な人物でした。

彼はシステムを素早くチェックするのを助けました。 その結果、ハッキングのためにサーバーをすばやくチェックする方法に関する短いHowToを作成しました。 私はそれが多くの勇敢な読者に役立つと確信しています。 ユーザーがLinux / Unixコンソールに精通していることを前提としています。







そのため、まず、ルートパスワードを変更します。



  [root @ myhostなど]#passwd
ユーザーrootのパスワードを変更します。
新しいUNIXパスワード:
 ...




次に、ホストをスキャンして、疑わしいオープンポートを探します。 たとえば、nmapユーティリティを使用して別のUnixマシンからこれを行うことができます。



  [root @ myhost〜]#nmap -P0 123.123.123.123

 2011-01-23 11:47 MSKにNmap 4.11(http://www.insecure.org/nmap/)を開始
 myhost.myprovider.net(123.123.123.123)の興味深いポート:
表示されていません:1679個のフィルタリングされたポート

ポートステートサービス
 21 / tcp open ftp
 22 / tcp open ssh
 25 / TCPオープンSMTP
 53 / tcpオープンドメイン
 80 / TCPオープンHTTP
 106 / tcp open pop3pw
 110 / TCPオープンpop3
 111 / tcp open rpcbind
 135 / tcpフィルタリングmsrpc
 136 / tcpフィルタープロファイル
 137 / TCPフィルター処理されたnetbios-ns
 138 / tcpフィルター処理されたnetbios-dgm
 139 / TCPフィルター処理されたnetbios-ssn
 143 / TCPオープンimap
 443 / TCPオープンhttps
 445 / tcpフィルター済みmicrosoft-ds
 465 / TCPオープンSMTP
 620 / tcp open unknown
 993 / TCPオープンimap
 995 / tcp open pop3s
 3306 / TCPオープンmysql
 8443 / TCPオープンhttps-alt




111と620のポートはこのリストで疑わしく見えたため、誰がそれらを聞いているかをさらに調べます。



  [root @ myhost〜]#netstat -anp |  grep LISTEN |  grep 620
 tcp 0 0 0.0.0.0:620 0.0.0.0:* LISTEN 1710 / rpc.statd 




  [root @ myhost〜]#netstat -anp |  grep LISTEN |  grep 111
 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1685 / portmap 




これらはnfsコンポーネントであるため、すべてが正常であることが判明しました。 次に、UDP接続を確認します。



  [root @ myhost〜]#netstat –anp |  grep udp

 udp 0 0 0.0.0.0:32773 0.0.0.0:* 2345 /名前付き
 udp 0 0 127.0.0.1:32780 127.0.0.1:32780 ESTABLISHED 2539 / postmaster
 udp 0 0 0.0.0.0:32783 0.0.0.0:* 2790 / avahi-daemon:
 udp 0 0 123.123.123.123:53 0.0.0.0:* 2345 /名前付き
 udp 0 0 123.123.123.123:53 0.0.0.0:* 2345 /名前付き
 udp 0 0 127.0.0.1:53 0.0.0.0:* 2345 /名前付き
 udp 0 0 0.0.0.0:614 0.0.0.0:* 1710 / rpc.statd
 udp 0 0 0.0.0.0/10353 0.0.0.0:* 2790 / avahi-daemon:
 udp 0 0 0.0.0.0:617 0.0.0.0:* 1710 / rpc.statd
 udp 0 0 0.0.0.0:111 0.0.0.0:* 1685 / portmap
 udp 0 0 0.0.0.0:631 0.0.0.0:* 2069 / cupsd
 udp 0 0 ::: 32774 ::: * 2345 /名前付き
 udp 0 0 ::: 32784 ::: * 2790 / avahi-daemon:
 udp 0 0 ::: 5353 ::: * 2790 / avahi-daemon:




ここでも、すべてが正常であることが判明しました。 最も可能性が高いのは、Centosサーバーにログインするときに、最後のログインが私のIPからであると書いたため、コンソールからサーバーにアクセスできなかったことです。 したがって、/ root / .sshフォルダーを確認する必要がある次の項目は、何らかの方法でそこにsshクライアントのキーを置くことができます。



  [root @ myhost〜]#dir /root/.ssh
 authorized_keys_ 




キーファイルのみがここにあることがわかりました。プロバイダーがホストを転送した直後に名前を変更しました。 次に、/ etc / passwdファイルを確認します。 rootを除き、uid = 0のユーザーを含めることはできません。



  [root @ myhost〜]#cat / etc / passwd | もっと
ルート:x:0:0:ルート:/ルート:/ bin / bash
 bin:x:1:1:bin:/ bin:/ sbin / nologin
デーモン:x:2:2:デーモン:/ sbin:/ sbin / nologin
 adm:x:3:4:adm:/ var / adm:/ sbin / nologin
 lp:x:4:7:lp:/ var / spool / lpd:/ sbin / nologin
同期:x:5:0:同期:/ sbin:/ bin / sync
 ... 




そして、ここでも、すべてが大丈夫でした。 最後のコードは、インストールされているルートキットについてホストをチェックすることでした。 これには無料のrkhunterユーティリティを使用できます。 最新バージョンのアーカイブをダウンロードし、解凍してインストーラーを実行します。 次に、更新してチェックを実行します。



  [root @ myhost〜]#./installer.sh --install --layout / usr / local
 [root @ myhost〜]#/ usr / local / bin / rkhunter –-update
 [root @ myhost〜]#/ usr / local / bin / rkhunter –-check 




Rkhunterは最初に重要なシステムファイルをチェックし、次にルートキットを探します。 さまざまな脆弱性のチェックが行われた後。 最後に、プログラムはApache、OpenSSHなどの一般的な製品のバージョンをチェックします。 最新バージョン用。



Rkhunterはその作業の結果をコンソールに表示し、統合ログ/var/log/rkhunter.logも形成します。 クラウンに対してこのルートキットを毎日実行し、電子メールでスキャンレポートを受信できます。



幸いなことに、rkhunterはサーバー上のマルウェアを検出しませんでした。これにより、落ち着いて、サーバー上でどのような奇妙なインストールが発生したかを考えることができました。 そして、サーバーを受け取った直後に、このサーバーにVPNサーバーをインストールして構成したことを思い出しました。 どうやら、ログウォッチに何らかのエラーがあり、2年前にレポートにデータを追加したようです。



もちろん、攻撃者がすべてを正しく行った場合、Logwatchはトレースを検出せず、サーバーの所有者は長い間何も疑いません。 ただし、このHowToで説明されている手順は、定期的に実行される場合、サーバーが危険にさらされるのを防ぐのに役立ちます。



All Articles