私のLinuxマシンは外部ログインから合理的に保護されていると思います。しかし、私は軽度の妄想であるため、サーバーへのログイン試行が成功したかどうかにかかわらず、サーバーへのログイン試行があったときにアラートを受け取りたいと思います。
サイトをスキャンすると、これを行うための統一的な方法が見つかりません。私が知る限り、失敗した試行については logcheckが推奨されています 、成功した試行については sshrcまたは(おそらくそれ以上)pam_execメソッド です。私はツー・ストーン・イン・ワン・スローの方法が好きで、これらの方法のいずれかを両方を行う方法があるかどうかあなたのプロの誰かが知っているのだろうか?特にPAMは、物事を行うのに賢い場所のようです。なぜなら、結局のところ、それは私の知る限り、ubuntuマシンの中央認証システムだからです。
何かアドバイス?
cron
を愚かな小さなスクリプトで使用して、10分ごとに/var/log/auth.log
をチェックできます。正しく設定すると、cron
はどこでも好きな場所に出力をメールで送信するので、実行するスクリプトが必要です。
#!/bin/bash
cat /var/log/auth.log | Perl -MDate::Parse -ne '
print if /login|ssh/ && /^(\S+\s+\d+\s+\d+:\d+:\d+)\s/ && str2time($1) > time-600'
これは、 F。Hauri による SOに関するこの回答 に基づいています。
login
またはssh
が含まれるアイテムを探しているだけです。さらに追加するか、一部を除外することもできます。しかし、私のシステムでは、次のように生成されます。
Aug 29 10:19:50 bert Sudo: oli : TTY=pts/10 ; PWD=/home/oli ; USER=root ; COMMAND=/bin/login
Aug 29 10:19:52 bert login[15544]: pam_unix(login:session): session opened for user oli by oli(uid=0)
Aug 29 10:19:54 bert login[15544]: pam_unix(login:session): session closed for user oli
Aug 29 10:20:11 bert sshd[15614]: Accepted publickey for oli from ::1 port 41663 ssh2: RSA XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aug 29 10:20:11 bert sshd[15614]: pam_unix(sshd:session): session opened for user oli by (uid=0)
そのスクリプトを/usr/local/sbin/checkauth
(およびchmod u+x
it)のような名前で保存すると、Sudo crontab -e
でルートcrontab行を追加できます。
*/10 * * * * /usr/local/sbin/checkauth
Cronファイルの先頭にもMAILTO="[email protected]"
行を貼り付けてください(メールサーバーがインストールされている場合-postfix
がインストールされていない場合)、出力のメールを受け取りますiff出力があります。