web-dev-qa-db-ja.com

ユーザーを監査し、サーバー上のSSHへのアクセスを試行するにはどうすればよいですか?

私のサーバーでいくつかのセキュリティ上の問題がありました。いくつかのSSHユーザーが問題を引き起こしているファイアを設定しています。

私はしたいと思います:

  • ユーザーのログインとログアウトを追跡する
  • 悪意のあるアクティビティを発見するために、これらのSSHのアクティビティを追跡する
  • ユーザーがログを削除できないようにする

私はシステム管理者ではないので、この問題についてはかなり経験が浅いので、どんな種類のアドバイスも大歓迎で非常に役立つでしょう。 :)

28
RadiantHex

SSHサーバーについて説明しているので、コマンドラインソリューションを紹介します。

  • ユーザーのログインとログアウトを追跡します。それは簡単です、ファイル/var/log/auth.logにはこの情報が含まれているはずです。

  • それらのユーザーのアクティビティを追跡する:かなり無害な場合は、ホームディレクトリの.bash_historyファイルを確認できます。実行したコマンドのリストが表示されます。問題はもちろん、このファイルを削除または編集できることです。

  • ユーザーがログを削除できないようにする:ユーザーがauth.logに触れないようにする必要があります。それらが.bash_historyで遊ぶのを止めるために、あなたはいくつかの トリック をする必要があります。

  • ユーザーがルートアクセスを取得できた場合はどうなりますか? :あなたはめちゃくちゃです。間違えない限り、彼らはすべての足跡を隠すことができます。

27
Javier Rivera

[免責事項]私はパーティーに遅れていることに気づきましたが、私が与えた答えを貼り付けたいと思います 別の質問に =、読者に良い洞察を提供できると感じているので、この質問は基本的なssh情報の入手先のようです。

this AskAbuntuの質問を読んでVPSを確認した後、同様の問題が発生しました。それは私が行動を起こすことにしたときです。

さて、私がリンクした質問によると、sshを介したマシンでのログイン試行の失敗(ブルートフォースの試行など)を確認したい場合は、次のように入力してください。

grep sshd.\*Failed /var/log/auth.log | less

出力が複数の行で構成されている場合、つまりブルートフォースが多数試行されている場合、特に短い間隔で発生した場合は、次のアクションを実行することをお勧めします。

Ssh構成ファイルを変更する

これを行うには、このvim /etc/ssh/sshd_configのように、/ etc/ssh/sshd_configにあるファイルをお気に入りのエディターで開きます。

1。ポート22からsshを移動してみてください:次の行を見つけます:

# What ports, IPs and protocols we listen for
Port 22

ポート22をコメントアウトし、好きな人を使用します。例:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

1024以下のポートには特別な(ルート)権限が必要であることを覚えておいてください。これがどのように干渉するかわかりませんが、私はただ言っています。

2。 sshを介したルートログインの無効化:ルートユーザー名は予測可能であり、システムへの完全なアクセスを提供するため、SSHを介してこのアカウントに自由にアクセスできます。 PermitRootLoginという行を見つけて、noに設定します。

PermitRootLogin no

3。パスワード認証を無効にしますSSHキーを生成および使用してシステムにログインします。パスワードを有効にしないと、攻撃者はサーバーにアクセスするためにSSH秘密鍵を推測(または盗み)する必要があります。非常に非常に難しいことです。 PasswordAuthenticationと表示されている行を見つけて、noに設定します。

PasswordAuthentication no

!警告!その前に、このガイドを参照してください こちら 証明書認証の設定方法について。

注:変更を行ったら、Sudo /etc/init.d/ssh restartを使用します。 sshを使用して別のポートに接続するには、ssh [email protected] -p <port_number>を使用します。

ファイアウォールを設定する

Linuxに統合されている非常に強力で効果的なファイアウォールのセットアップ方法については、 このガイド をご覧くださいIPTables

セキュリティに役立つセットアップスクリプト

私が個人的に使用し、すぐに思い浮かぶのは Fail2Ban です。 Fail2banは、ログイン試行の失敗についてログファイルを監視します。 IPアドレスが認証試行の最大回数を超えると、ネットワークレベルでブロックされ、イベントは/var/log/fail2ban.logに記録されます。インストールするには:Sudo apt-get install fail2ban

Ssh経由でコマンド履歴を確認する

historyという名前のLinuxコマンドがあります。これにより、その時点までに入力されたコマンドを確認できます。ターミナルでhistoryと入力して、その時点までのすべてのコマンドを確認してください。あなたがrootであれば助けになるでしょう。

特定のコマンドを検索する試してみる:history | grep command-name

sshの後のすべてのコマンドを一覧表示するには:fc -l ssh

また、viを使用してコマンドを編集することもできます(vimを試していないが、同様に機能すると仮定しています):fc -e vi

履歴を削除することもできますhistory -c

注:コマンドhistoryのファンではない場合、ホームディレクトリにもファイルがあります(cd ~) 、。bash_history(bashを使用している場合)と呼ばれ、catでbashシェルに入力されたすべてを表示できます。

6
NlightNFotis

少しやり過ぎですが、「プロセスイベントコネクタ」を使用して、システムで実行されているすべてを確認できます。

http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/

4
Kees Cook
  1. ハビエルはすでにこれに答えました:/var/log/auth.log
  2. これに関する素晴らしい記事を見つけました here
  3. ユーザーがrootにアクセスできない場合、ログファイルは安全なはずです。 sudoersファイルにいくつかのカスタムルールを作成して、ユーザーがアクセスできるものとその方法を制限することができます。また、sshdデーモンのログレベルを上げることができます。
3
Radu Cotescu

ログイン自体とは別に、ログイン後のユーザーのアクションを追跡/記録する安全な方法はありません。Linuxの基本的な知識がある場合は、シェルロギングを無効にしたり、他のシェル(Pythonなど)からコマンドを実行したりできます。

代わりに、sshアクセスを提供することについて保守的にすべきです。彼らは本当にそれを必要としますか?シェルを使用してビジネスを提供しているのでない限り、sshアクセスを許可することはあまり一般的ではありません。

3
João Pinto