誰かがSSH経由で私のDebianサーバーにアクセスしたときに通知を受けたいと思います。
そのため、ユーザーがSSHを介して自分のサーバーにログインするたびに電子メールを送信したいので、最後に次の行を追加しました/etc/profile
。
/usr/local/bin/shell-login.sh | mailx -s "SSH Login User $(whoami) on YOUR-HOSTNAME" [email protected]
/usr/local/bin/shell-login.sh
含む:
#!/bin/bash
echo "Login on $(hostname) at $(date +%Y-%m-%d +%H:%M)"
echo "User: "$(whoami)
echo
id
echo
finger
これは素晴らしい作品です。これで、毎分root
ログインしたというメールが届きますが、その理由はcron
次のとおりです。/var/log/auth.log
自動内部SSH呼び出し時に電子メールが送信されないように、これをどのように変更しますか?
答え1
質問がまだ明確ではないので、最初の段落に含まれている質問に答えようとしています。 SSHログインを記録する方法は?
また、PAMをサポートするすべての* nixシステムへの回答を制限します。特定のオペレーティングシステムを提供して問題の範囲を制限しないため、これは関連事項です。
いいですね。過去に私が使用したものは次のとおりですsshrc
。このファイル(場所は異なる場合があります)を追加すると、次のファイルに置き換え/etc/ssh
られます。インタラクティブ(つまり、シェルを使用)SSH接続。
sftp-internal
ここでの欠点は、SFTP(サブシステム)接続などの関連情報がわからないことです。
しかし、ここには内部路線があります。
pam_exec.so
以下を追加することで、PAMを有効に使用し、SSHへの影響を制限することができます/etc/pam.d/sshd
(これはコメントアウトされていない最後の行でした)。
session optional pam_exec.so stdout /etc/your_email_script.sh
これにより、スクリプトが特権ユーザーとして実行され(メールを送信するためにsendmailバイナリを呼び出す場合に関連します)、ユーザーがこのスクリプトの実行を避けるためにできることはほとんどありません。このスクリプトへのアクセスをroot
。
必要に応じて関連部品をoptional
調整する必要があります。関連読書:man pam_exec
、、、man pam.conf
。man pam.d
スクリプトをどれだけ頻繁に実行するかを検討することもできます。
あなたが見て恋しいのはまさにそれです。サーバーをロックする他の方法もたくさんあります。まず、パスワードは許可されません。認証にのみキーを使用してください。 SFTPアクセス権のみを持つユーザーには他のアクセス権がないことを確認してください。
Match group sftponly
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication no
sftponly
グループメンバーはSFTPのみを使用でき、ポート転送などは使用できず、範囲が指定されます/home
(ファイル/フォルダ権限が残ります)。
AllowGroups ssh-users
〜するただグループメンバーはssh-users
SSHを介してログインすることもできます。つまり、SSHログインをユーザーのサブセットに制限できます。
PermitRootLogin no
そのユーザーを設定してsudoerに変更する必要があります。
PasswordAuthentication no
PubkeyAuthentication yes
お客様は、制限付きで管理できるパスワードを使用してログインできないようにする必要があります。
AuthorizedKeysFile /some/protected/folder/.ssh/authorized_keys
ユーザーが自分のファイルを管理することを許可しないようにすることはできますが、authorized_keys
ユーザーの代わりに管理する必要があります。
答え2
この試み:
#!/bin/bash
if [ ! $(whoami) == root ] ; then
echo "Login on $(hostname) at $(date +%Y-%m-%d +%H:%M)"
echo "User: "$(whoami)
echo
id
echo
finger
fi
答え3
モジュールを(慎重に)編集してスタックに/etc/pam.d/sshd
追加するだけです。pam_exec
このモジュールは、誰かがSSHセッションを正常に開始したときに外部プログラム(スクリプトなど)を呼び出すために使用できます。
「方法」の指示が必要な場合は、お知らせください。Debianベースのシステムに含まれるように回答を更新します。 (他のディストリビューションにはわずかに異なるPAMスタックがあるため、盲目的に従うのではなく、私の指示を解釈する必要があります。)