web-dev-qa-db-ja.com

SSHアクセス試行のロギング

サーバーに接続し、電話やラップトップなどのリモートシステムからコマンドを実行するために、opensshを使用してubuntuサーバーを構成しました。問題は...おそらく私だけではない。

サーバーに対して行われたすべてのログイン試行を知る方法はありますか?

64
UserK

Ubuntuサーバーでは、ファイル/var/log/auth.logで誰がいつどこからログインしたかを確認できます。そこで、次のようなエントリを見つけます。

May  1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
59
Anthon

Fedora/CentOS/RHELなどのRed Hatベースのディストリビューションでは、ファイル内でログインしているユーザーを確認できます/var/log/secure

さらに詳しい情報が必要な場合は、 SSHアクセスの試行をログに記録し、サーバーでSSHユーザーが実行することを追跡するにはどうすればよいですか

30
Ramesh

Ubuntuでは、SSH経由でログインし、Linux tailコマンドを使用して、/var/log/auth.logファイルの最後のx行を表示できます。 SSH経由でログインしている場合は、次のコマンドを使用して、SSHログの最後の100行を表示します。

tail /var/log/auth.log -n 100

またはもっとすっきり

tail -100 /var/log/auth.log | grep 'sshd'
9
WebComer

Ubuntuのデフォルト設定では、sshログインを/var/log/authファイルに記録しないことに注意してください。これはINFOロギングレベルです。

ログファイルにログイン試行を含める場合は、/etc/ssh/sshd_configファイルを編集し(rootとして、またはSudoを使用)、LogLevelINFOから変更する必要があります。 VERBOSEに。

その後、sshdデーモンを再起動します

Sudo service rsyslog restart

その後、sshログイン試行は/var/log/auth.logファイルに記録されます。

7
Shay Walters

私の推奨はauditdを使用することです。これはlinuxカーネルの監査サブシステムを使用したロギングであり、私の意見では、深刻な場合にそれを行う適切な方法です。また、質問{セキュリティ関連}の性質を考えると、[〜#〜] pam [〜#〜]も使用する必要があります。 auditd[〜#〜] pam [〜#〜]がインストールされているだけのデフォルトレベルでは、自動的にすべての成功したSSH試行と失敗したSSH試行をaudit.logファイルに記録します。したがって、実際には何も設定する必要はありません。auditd[〜#〜] pam [〜#〜]インストールされています。私はSLESのこの最初の手を知っています。そして、RHELと他のenterpriseバージョンのLinuxも同様に動作することに賭けます。

http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html

auditdによって生成された未加工の監査ログ内で、aureportのようなものを使用して、auditdmanページ、独自のテキストパーサーを作成、またはVIを使用してキーワードを検索します。

これは、私の/var/log/audit/audit.logファイルを除いて、私がLinuxサーバーにsshしているところです。

node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
  • 上記から、私のサーバー名はsharkです。
  • このような多くの行がaudit.logにあります。これはexe = "/ usr/sbin/sshd"
  • sshされるアカウントのuidは、この例では23456であるauidの値です。
  • auidに関連付けられたユーザーアカウントの名前はacct = "ron"で指定されます
  • ほとんどの場合、監査システムは接続しようとしているシステムのDNSホスト名を記録しますが、常にIPアドレスを持っています
  • エポック時間であるエントリの日付なので、date --date @1480622612.317のようなものを介して変換する必要があります。これはThu Dec 1 15:03:32 EST 2016になり、サーバーにsshしたときです。

res=failedは、これらのIPアドレスとホスト名を調査して、どのシステムがどのユーザー名で接続しようとしているかを確認する場合です。そして、明らかに成功したsshは、システムで何が起こっているかを理解しようとします。たとえば、hostname = bobscomputerとip address = 192.168.5.5で毎日同じ机に座っている同僚のbobです。たとえば、昨日午前2時にIPアドレス10.10.5.6からの彼のユーザー名でsshの試みが成功した場合、bobに相談して調査することをお勧めします。他の誰かによるハッキングの試みの可能性は?そしてその直後に、ボブのアカウントから監査ログにroot化しようとするsuの試みがありますか?

res=failedauid=0acct=rootが繰り返し表示される場合、それは誰かがボックスにrootアカウントにSSHでログインしようとしていることであり、そのIPアドレスで/etc/hosts.denyを変更すると、 SSHD。

4
ron

私はこれが古いことを知っていますが、成功および失敗したSSH接続/試行を監視するために何かを書きました。 sshguardを使用している場合はIPも禁止されます。ソフトウェアはPythonで書かれています。誰かがssh経由で正常に接続したとき、誰かがsshのパスワードを間違えたとき、または多くの試行が失敗したために誰かが禁止されたときに、メールで通知されます。うまくいけば、これが将来この問題を検索して私のコードを見つける誰かを助けるでしょう!

https://github.com/amboxer21/SSHMonitor

pythonスクリプトの場合、プロセスを監視するbashスクリプトを作成しました。ルートcronタスクを介して毎分実行されているかどうかを確認します。実行されていない場合は、別のプロセスを開始します。 root cronタスクによって毎分。

2
Aguevara

SSHコマンドのログ記録で私が遭遇した中で最高のものは、このツールでrootshを実行することです。このツールを使用すると、管理者は、あらゆるレベルのログからすべてのコマンドを取得できます。

UbuntuとCentOS/RHELにROOTSHをインストールして構成するスクリプトを作成しました

githubからダウンロードはこちらリンクです

https://Gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh

chmod +x setup_rootssh.sh ; Sudo ./setup_rootssh.sh
0
Mansur Ali