web-dev-qa-db-ja.com

Linuxサーバーがハッキングされたかどうかを確認するにはどうすればよいですか?

Linuxサーバーがハッキングされた兆候は何ですか?監査レポートを定期的に生成してメールで送信できるツールはありますか?

36
cowgod
  1. 重要なシステムファイル(ls、ps、netstat、md5sumなど)の元のコピーをmd5sumのどこかに保持し、定期的にライブバージョンと比較します。ルートキットはこれらのファイルを常に変更します。オリジナルが侵害された疑いがある場合は、これらのコピーを使用してください。
  2. aideまたはtripwireは、データベースが改ざんされていないと想定して、変更されたファイルを通知します。
  3. ログファイルをリモートログサーバーに送信するようにsyslogを設定します。ここで、侵入者はそれらを改ざんできません。これらのリモートログファイルで不審なアクティビティを監視します
  4. ログを読み取る定期的に-重要な情報を合成するには、logwatchまたはlogcheckを使用します。
  5. サーバーを知っている。どのような種類のアクティビティとログが正常かを把握します。
34
Brent

あなたはしません。

私は知っています。しかし、それは妄想的で悲しい真実です;)もちろん、ヒントはたくさんありますが、システムが具体的に対象とされている場合、それを伝えることは不可能かもしれません。完全に安全なものは決してないことを理解するのは良いことです。しかし、私たちはより安全に取り組む必要があるので、代わりに他のすべての答えを指摘します;)

システムが侵害された場合、システムツールのいずれも真実を明かすことはできません。

12
Oskar Duveborn

過去に気になっていたいくつかのこと:

  • アイドル状態である必要があるシステムの高負荷
  • 奇妙なセグメンテーション違反。 lsなどの標準ユーティリティから(これは壊れたルートキットで発生する可能性があります)
  • /または/var/の非表示ディレクトリ(ほとんどのスクリプトキディは、トラックをカバーするには愚かすぎるか、怠惰です)
  • netstatは、そこにあるべきではない開いているポートを示します
  • 通常は異なるフレーバーを使用するプロセスリスト内のデーモン(例:bind、ただし常にdjbdnsを使用)

さらに、ボックスが危険にさらされていることを示す信頼できる兆候が1つあります。システムを継承した管理者の勤勉さ(更新など)に不満を感じている場合は、注意深く監視してください。

11
user1686

Tripwire は一般的に使用されるツールです。システムファイルが変更されると通知されますが、事前にインストールしておく必要があります。それ以外の場合は、知らない新しいユーザーアカウント、認識できない奇妙なプロセスやファイル、明らかな理由なしに帯域幅使用量が増加するなどの項目が通常の兆候です。

Zabbix などの他の監視システムは、/ etc/passwdなどのファイルが変更されたときに警告するように設定できます。

11
Whisk

ハッキングされたサーバーをkillでチェックする方法があります-

基本的に、「kill -0 $ PID」を実行すると、ID $ PIDを処理するためにnopシグナルが送信されます。プロセスが実行中の場合、killコマンドは正常に終了します。 (FWIW、nop killシグナルを渡しているため、プロセスには何も起こりません)。プロセスが実行されていない場合、killコマンドは失敗します(終了ステータスが0未満)。

サーバーがハッキングされている/ルートキットがインストールされている場合、サーバーが最初に行うことの1つは、影響を受けるプロセスをプロセステーブルなどから隠すようにカーネルに指示することです。プロセス。つまり、これは

a)このチェックは広範囲なチェックではありません。適切にコーディングされた/インテリジェントなルートキットは、カーネルが「プロセスが存在しない」という応答で応答することを保証するため、このチェックは冗長になります。 b)どちらの方法でも、ハッキングされたサーバーで「不良」プロセスが実行されている場合、そのPIDは通常/ procの下には表示されません。

だから、あなたが今までここにいるのなら、メソッドはシステムで利用可能なすべてのプロセス 1から何でも->/proc /)をkillすることですsys/kernel/pid_max)を実行し、実行中のプロセスが/ procで報告されていないかどうかを確認します。

一部のプロセスが実行中と表示されても、/ procで報告されない場合、おそらくそれをどのように見ても問題があります。

これをすべて実装するbashスクリプトは---(https://Gist.github.com/1032229 です。それをいくつかのファイルに保存して実行します。procで報告されていないプロセスが見つかった場合は、調査を開始するためのリードが必要です。

HTH。

10
Shai

ここで与えられた応答を2番目にして、自分の応答を1つ追加します。

find /etc /var -mtime -2

これにより、メインサーバーファイルのいずれかが過去2日間に変更されたかどうかをすばやく確認できます。

これはハッキング検出に関する記事からです サーバーがハッキングされたかどうかを検出する方法

7
Ian Purton

から サーバーでの不要な侵入を検出するにはどうすればよいですか?

  • IDSを使用する

    SNORT®は、ルール駆動型言語を利用したオープンソースネットワーク侵入防止および検出システムであり、署名、プロトコル、および異常ベースの検査方法の利点を組み合わせています。現在までに何百万ものダウンロードがあり、Snortは世界で最も広く導入されている侵入検知および防止テクノロジーであり、業界の事実上の標準となっています。

    Snortはネットワークトラフィックを読み取り、サーバーに対してmetasploitスキャン全体を実行する "ペンによるテストによるドライブ"などを探すことができます。私の意見では、このようなことを知るのは良いことです。

  • ログを使用...

    使用方法に応じて、ユーザーがログインするとき、奇妙なIPからログインするとき、またはrootがログインするとき、または誰かがログインしようとするときを常に把握できるように設定できます。私は実際にサーバーにデバッグよりもeveryログメッセージを電子メールで送信しています。はい、通知さえ。もちろん、そのうちのいくつかはフィルタリングしますが、毎朝、ものについて10通のメールが届くと、それを修正して、発生しなくなるようにします。

  • 設定を監視します-私は実際に/ etc全体をSubversionに保持して、リビジョンを追跡できるようにします。

  • スキャンを実行します。 LynisRootkit Hunter などのツールを使用すると、アプリケーションにセキュリティホールが存在する可能性があることを警告できます。すべてのビンのハッシュまたはハッシュツリーを維持し、変更を警告できるプログラムがあります。

  • サーバーを監視する-ディスクスペースについて述べたのと同じように-異常が発生した場合、グラフからヒントが得られます。私は Cacti を使用して、CPU、ネットワークトラフィック、ディスク容量、温度などを監視しています。何かが見える場合is奇数であり、なぜ奇数であるかを理解する必要があります。

5
Tom Ritter

これに追加したいだけです:

Bashの履歴を確認します。空であり、未設定または空にしていない場合は、誰かがサーバーを侵害した可能性があります。

最後に確認してください。不明なI.Pが表示されるか、非常に空に見えます。

次に、受け入れられた回答が述べているように、システムファイルはしばしば変更されます。変更された日付を確認してください。ただし、変更された日付を改ざんすることがよくあります。

多くの場合、ランダムなポートで実行されている別のバージョンのsshをインストールします。これは、いくつかの本当に奇妙な場所に隠されていることがよくあります。通常は、ssh以外の名前に変更されます。したがって、netstatをチェックし(頻繁に置き換えられるため機能しない可能性があります)、iptablesを使用して不明なポートをブロックします。

いずれにせよ、これは予防が治療よりも優れている状況です。危険にさらされている場合は、フォーマットして最初からやり直すことをお勧めします。ハックの駆除に成功したことを確認することはほとんど不可能です。

サーバーが危険にさらされないようにするには、次の点に注意してください。

  1. SSHポートを変更する
  2. Rootがログインできないようにする
  3. 特定のユーザーのみを許可する
  4. パスワードログインを禁止する
  5. Sshキーを使用し、パスワードで保護された適切なキーを使用する
  6. 可能な場合はすべてのIPをブラックリストに登録し、必要なIPをホワイトリストに登録します。
  7. Fail2banをインストールして構成する
  8. Tripwireを使用して侵入を検出する
  9. Nagiosまたはzabbixでログインしたユーザーの数を監視します。ログインするたびに通知を受けても、少なくとも他の人がプレイしているときはわかるでしょう。
  10. 可能であれば、サーバーをvpnに維持し、vpn ip経由でのみsshを許可します。 VPNを保護します。

それらが1つのサーバーに入ると、bashの履歴をチェックし、そのサーバーからssh経由で接続した他のサーバーを探すことに注意してください。次に、それらのサーバーへの接続を試みます。したがって、不十分なパスワードが原因でブルートフォースを強制された場合、他のサーバーに接続してそれらを侵害する可能性が非常に高くなります。

世の中は醜い世界です。予防は治療よりも優れています。

2
Rob

少し検索した後、これもあり、他のいくつかのものの中で、上にリストしたものを実行します: http://www.chkrootkit.org/ および http:// www.rootkit.nl/projects/rootkit_hunter.html

1
Shai

GuardRailを確認してください。それはあなたのサーバーを毎日スキャンし、何が変わったのかを素敵な視覚的な方法で教えてくれます。エージェントを必要とせず、SSH経由で接続できるため、エージェントを使用してマシンとリソースをジャンクアップする必要はありません。

何よりも、最大5台のサーバーで無料です。

ここでそれをチェックしてください:

https://www.scriptrock.com/

0
Cheyne