特定のVM私が担当しています)へのrootアクセス権を持つ人が何人かいます。rootへのログインに使用されたIPアドレスを確認したいと思います。
last
コマンドを使用して、この情報を取得できます
# last|head
phemmer ssh 192.168.0.24 Wed Aug 20 21:08 - 21:08 (00:00)
phemmer pts/13 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:07 - 23:07 (00:00)
phemmer pts/15 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer ssh 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer :0 Wed Jul 30 20:06 still logged in
reboot system boot 3.13.2-gentoo Wed Jul 30 20:05 still running
ご存じのように、3列目にはSSHログインの場合のリモートIPアドレスが表示されます。
last
は/var/log/wtmp
ファイルを使用するため、この方法はG-Manの回答に似ています(ファイルへのパスを指定する必要がないため、少し簡単です)。
これは、ディストリビューションまたはOSによって異なります。 sshd
は各ログインをどこかに記録し、関連するIPアドレスを次のような形式でログインに含めます。
Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297
その部分は一貫していますが、そこにたどり着く方法はさまざまです。 systemd
に基づくシステムでは、journalctl
を使用します。
journalctl /usr/bin/sshd
sshd
実行可能ファイルからのすべてのログメッセージを一覧表示します。 rootログインまたはその他の基準でそれをgrepし、--since
および--until
を使用して日付で制限できます(man journalctl
を参照)。
あるいは、歴史的に、メッセージは(通常)/var/log
のどこかにログインされます。通常、sshd
メッセージは/var/log/auth.log
に送られますが、正確なファイルは大幅に異なる場合があります。どちらかです:
grep sshd /var/log/auth.log
journalctl
バージョンとほぼ同等の出力が得られます。
コマンド
who /var/log/wtmp
who
が示すような情報を表示する必要がありますが、時間を遡ります。
Rootとしてログインしたユーザーを監査する場合は、(rootパスワードまたは/root/.ssh/authorized_keys
の証明書を使用して)rootとして直接ログインし、ssh
を使用することを許可しないでください。代わりに、各ユーザーに1つのアカウントを使用し、Sudo
を使用してルート権限を取得できるようにします。このようにして、適切なログ(ログファイルの位置は使用しているディストリビューションによって異なります。別のマシンにメッセージを送信するようにログデーモンを構成することもできます)であるメッセージuser john ran the command 'Sudo rm -rf /'
を見つけることができます。まあ、多分あなたは簡単にログでその1つのコマンドを見つけることができないでしょう。
あなたが提供した簡単な説明から、ログ監視システムを設定した方が良いようです。これは、ログインの監視、アラートの作成、数日のデータの比較、およびすべてのコースグラフの作成に役立ちます。
しかし、それを監視する必要がある場合一時的にであれば、last
コマンドを使用できます。
last | grep root | grep -v tty | awk '{print $3}'
これにより、rootユーザーがログインした場所からのIPs
またはHostnames
のリストが表示されます。