是否可以找出访问帐户时使用的 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的回答。如果共享帐户正在运行自定义 shell,并且该 shell 需要知道那里有哪个用户,则运行“包装器”脚本可能还不够,因为除非通过可能导致竞争的方法,否则信息不会传递到自定义 shell状况。
相反,您可以使用environment=
authorized_keys 文件中的选项来设置环境变量,然后自定义 shell 可以读取该环境变量。
在.ssh/authorized_keys
文件中,在每一行前面添加一个环境变量集,如下所示:
environment="REMOTEUSER=jrhacker" ssh-rsa ....
environment="REMOTEUSER=jbloggs" ssh-rsa ....
然后,自定义 shell 或任何各种 rc 脚本都可以读取该$REMOTEUSER
变量并采取适当的操作。
但是,请注意,如果您使用的是标准 shell,则登录用户能够修改该文件以阻止各种操作。此外,允许用户设置环境变量(例如LDPRELOAD
.请参阅sshd_config
有关 的文档PermitUserEnvironment
。
答案3
一些正确安装的脚本
有一个完整可用的方法可以通过密钥跟踪/记录 ssh 连接并扩展用户名。
介绍
除了@Caleb 的回答之外,我还想分享一些小技巧:
笔记:我正在 Debian 6.0 上工作。
服务器安装
SSHD 日志级别
首先确保服务器配置具有足够的日志记录级别:
作为 root,这将设置并激活详细日志记录:
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
尝试从 ssh(重新)登录以确保sshdusers.log
创建新文件(并包含某些内容),然后
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 逐行运行来将登录的密钥指纹与authorized_keys中的指纹进行比较
有关 ssh 登录及其安全性和入侵检测的详细说明如下:http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-Russia