アカウントにアクセスするために使用されたSSHキーを見つけることはできますか?私はSSHを通じて何人かの(信頼できる!)人々にアクセスを許可するサーバーアカウントを持っています。誰がいつログインしたのかを知ることができて便利だと思います。 rootアクセス権があり、ログを見ることができますが、そこには何もないようです。ログ内のキーを識別する方法を追加する設定スイッチはありますか?
答え1
sshd設定ファイル(通常は/etc/ssh/sshd_config
)に移動してLogLevelディレクティブをVERBOSEに変更する場合:
LogLevel VERBOSE
...ログには次の内容が表示されます。
6月24日 22:43:42 localhost sshd[29779]: 一致するRSAキーが見つかりました: d8:d5:f3:5a:7e:27:42:91:e6:a5:e6:9e:f9:fd : d3:
ce 24 22:43:42 localhost sshd[29779]: 127.0.0.1 ポート 59630 ssh2 で caleb の公開鍵を受け入れます。
からman sshd_config
:
LogLevel
Gives the verbosity level that is used when logging messages from
sshd(8). The possible values are: QUIET, FATAL, ERROR, INFO, VER-
BOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is INFO.
DEBUG and DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify
higher levels of debugging output. Logging with a DEBUG level vio-
lates the privacy of users and is not recommended.
答え2
やや似ている@user37161からの返信。共有アカウントがカスタムシェルを実行していて、そのシェルにどのユーザーがいるかを知る必要がある場合は、「ラッパー」スクリプトを実行するだけでは不十分です。競争条件。
代わりに、environment=
authorized_keysファイルのオプションを使用して、カスタムシェルから読み取ることができる環境変数を設定できます。
.ssh/authorized_keys
ファイルで、次のように各行の前に環境変数セットを追加します。
environment="REMOTEUSER=jrhacker" ssh-rsa ....
environment="REMOTEUSER=jbloggs" ssh-rsa ....
これにより、カスタムシェルまたはさまざまなrcスクリプトが$REMOTEUSER
変数を読み取り、適切なアクションを実行できます。
ただし、標準シェルを使用している場合は、ログインしたユーザーがファイルを変更してさまざまな操作を防ぐことができることに注意してください。また、ユーザーは環境変数を設定できます(例:これについてのマニュアルLDPRELOAD
を参照)。sshd_config
PermitUserEnvironment
答え3
正しいインストールのためのいくつかのスクリプト
キーを介してSSH接続を追跡/記録し、ユーザー名を拡張する完全に機能する方法があります。
紹介する
@Calebの答えに加えて、いくつかのヒントを共有したいと思います。
メモ:私はDebian 6.0で作業しています。。
サーバーのインストール
SSHDログレベル
まず、サーバー構成に適切なロギング・レベルがあることを確認します。
ルートとして、これは詳細なロギングを設定して有効にします。
sed '/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{s/^/# /;h;s/$/\nLogLevel VERBOSE/};${p;g;/./!{iLogLevel VERBOSE'$'\n;};D}' -i /etc/ssh/sshd_config
次のように書くことができます:
sed '
/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{
s/^/# /;
h;
s/$/\nLogLevel VERBOSE/
};
${
p;
g;
/./!{
iLogLevel VERBOSE
};
D
}' -i /etc/ssh/sshd_config
またはsedスクリプト:
#!/bin/sed -f
/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{
s/^/# /;
h;
s/$/\nLogLevel VERBOSE/
};
${
p;
g;
/./!{
iLogLevel VERBOSE
};
D
}
次のように実行できます。
patchSshdConfigLogLevel.sed -i /etc/ssh/sshd_config
だから活性化これ:
service ssh restart
Syslog:指紋ユーザーを読むことができるように設定
これで、ユーザーが読めるファイルに指紋をインポートします。
echo ':msg, regex, "Found matching .* key:" -/var/log/sshdusers.log' \
> /etc/rsyslog.d/ssh_key_user.conf
echo ':msg, regex, "Accepted publickey for" -/var/log/sshdusers.log' \
>> /etc/rsyslog.d/ssh_key_user.conf
service rsyslog restart
sshdusers.log
SSHで(再)ログインして新しいファイルが作成されたこと(そして一部のコンテンツが含まれているかどうか)を確認し、
chmod 644 /var/log/sshdusers.log
最後のステップ:回転させてください。
参加する/etc/logrotate.d/
:
cat >/etc/logrotate.d/sshdusers <<eosshdusers
/var/log/sshdusers.log {
rotate 3
daily
compress
missingok
postrotate
touch /var/log/sshdusers.log
chmod 644 /var/log/sshdusers.log
/usr/lib/rsyslog/rsyslog-rotate
endscript
notifempty
}
eosshdusers
使用法
これにより、現在のセッションの指紋が印刷されます。
sed -ne "/sshd.$PPID.:.*matching .SA key/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
sed -ne "/sshd.\($(($(ps ho ppid $PPID)))\|$PPID\).:.*\(Accepted publickey\|matching .SA key\)/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
プラグイン.bashrc
最後にもう一つ追加/etc/bash.bashrc
あなたまたはユーザーの最後に.bashrc
:
ssh_oPwd=$OLDPWD
ssh_oUmask=$(umask)
umask 077
ssh_tempdir=$(mktemp -d /tmp/ssh-id-XXXXXXX)
cd $ssh_tempdir || exit 1
ssh_crtFp=$(
sed -ne "/sshd.\($(($(ps ho ppid $PPID)))\|$PPID\).:.*\(Accepted publickey\|matching .SA key\)/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
)
for ((ssh_i=1;ssh_i<=$(wc -l <$HOME/.ssh/authorized_keys);ssh_i++));do
export ssh_line="$(sed -ne ${ssh_i}p <$HOME/.ssh/authorized_keys)"
echo "$ssh_line" >tempKey
export ssh_lFp=($(ssh-keygen -l -f tempKey))
if [ "${ssh_lFp[1]}" == "$ssh_crtFp" ] ;then
export SSH_KEY_USER=${ssh_line##* }
break
fi
done
cd $OLDPWD
OLDPWD=$ssh_oPwd
rm -fR $ssh_tempdir
umask $ssh_oUmask
unset ssh_lFp ssh_line ssh_i ssh_crtFp ssh_tempdir ssh_oUmask ssh_oPwd
したがって、SSHから再度ログインすると、次のようになります。
set | grep ^SSH
SSH_CLIENT='192.168.1.31 43734 22'
SSH_CONNECTION='192.168.1.31 43734 192.168.1.2 22'
SSH_KEY_USER=user@mydesk
SSH_TTY=/dev/pts/2
ノート一部のインストールでは、認証キーファイルの名前が次のように異なる場合があります$HOME/.ssh/authorized_keys2
。
答え4
Fedora 20+では、ログイン試行と成功情報が/var/log/audit/audit.logに保存されます。ログはログイン試行(失敗と成功)を保存し、ログイン試行に使用されたキーフィンガープリントはfpというフィールドに保存されます。
ssh-keygen -l を 1 行ずつ実行して、ログインのキーフィンガープリントを Authorized_keys のフィンガープリントと比較できます。
SSH ログイン、セキュリティ、侵入検知の詳細な説明は次のとおりです。http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-Russia