私は携帯電話やラップトップなどのリモートシステムに接続し、コマンドを実行するためにopensshを使用してUbuntuサーバーを設定しました。問題は…おそらくこのような人が私だけではないでしょう。
サーバーへのすべてのログイン試行を知る方法はありますか?
答え1
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)
答え2
Red Hatベースのディストリビューション(Fedora / CentOS / RHELなど)では、ファイルからログインしたユーザーを確認できます/var/log/secure
。
詳しくは、次のスーパーユーザーのQ&Aをご覧ください。SSHアクセスの試みを記録し、SSHユーザーが自分のサーバーで行った操作を追跡します。。
答え3
Ubuntuのデフォルト設定は、SSHログインを/var/log/auth
ファイルに書き込むことではありません。これがINFO
ロギングレベルです。
ログファイルにログイン試行を含めるには、/etc/ssh/sshd_config
rootまたはsudoを使用してファイルを編集しますLogLevel
。INFO
VERBOSE
その後、sshdデーモンを再起動します。
sudo service rsyslog restart
その後、SSHログイン試行がこの/var/log/auth.log
ファイルに書き込まれます。
答え4
私の提案は以下を使用することです。審査。これはLinuxカーネルの監査サブシステムを使用したロギング私の考えには真剣に考えるなら、そうするのが正しい方法だと思います。あなたが使用すべき{セキュリティ関連}質問の性質を考慮してポリアクリルアミドしかも。基本レベルには、次の項目のみがあります。審査そしてポリアクリルアミドインストール後、すべての成功と失敗のSSH試行は自動的にaudit.logファイルに書き込まれます。したがって、何も設定する必要はありません。審査そしてポリアクリルアミドインストールする。私はSLESを直接知っています。 RHELやその他のアイテムに賭けます。企業Linuxバージョンも同様に機能します。
http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html
生成された生の監査ログから審査次のようなものを使用してaureport
フィルタリングできます。審査マニュアルページでテキストパーサーを作成するか、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)'
- 上記では、私のサーバー名は次のとおりです。サメ。
- このような多くの行がaudit.logにあり、この行が次のものに基づいていることを望みます。exe="/usr/sbin/sshd"
- SSHを介して接続したアカウントのuidはauid値です(この場合は23456)。
- auidに関連付けられているユーザーアカウントの名前はacct = "ron"です。
- ほとんどの場合、監査システムは接続しようとしているシステムのDNSホスト名を記録しますが、常にそのIPアドレスを持っています。
- アイテムの日付は時代の時間なので、このように変換する必要があり、
date --date @1480622612.317
結果はThu Dec 1 15:03:32 EST 2016
私のサーバーにSSHで接続するときです。
res=failed
これらのIPアドレスとホスト名を調べて、試行されたユーザー名でどのシステムが接続を試みているかを確認したい場合。明らかに成功したSSHは、システムで何が起こっているのかを理解しようとします。たとえば、同僚のボブは毎日同じ机に座っています。たとえば、午前2時にそこにいた場合は、ホスト名=bobscomputer、IPアドレス=192.168.5.5;昨日、Bobのユーザー名がIPアドレス10.10.5.6で成功したSSH試行を行ったことを確認したら、Bobと一緒に調査するのが最善です。他の人がハッキングすることができますか?しばらくして、suはBobのアカウントから監査ログを取得しようとしますか?
重複したコンテンツが表示された場合は、res=failed
誰かがあなたのルートアカウントでSSHを試していることにauid=0
なり、あなたがSSHDのIPアドレスを使用して変更した場合です。acct=root
/etc/hosts.deny