限制 SSH 访问以检索日志

限制 SSH 访问以检索日志

我希望对 Linux 服务器具有有限的访问权限,以便能够抓取特定日志集。理想情况下,我希望能够在本地运行 rsync 以从服务器抓取日志,并且出于安全原因,我不想授予用户完整的 ssh 登录访问权限。

答案1

为此目的创建一个单独的用户。让用户仅使用 SSH 密钥登录。在用户的 authorized_keys 文件中,编辑公钥以仅允许命令。该命令应该不是是指向 shell 脚本的指针;而是将 shell 脚本直接插入到密钥中。

这是一个例子。这里的设置是,在服务器上,有一个 cron 作业将每日日志移动到 /var/log/logfetch。另一台服务器(IP 为 10.1.2.3)将连接并发送命令。如果命令是 BACKUP,客户端将收到目录 /var/log/logfetch 中文件的 gzip 压缩 tar 文件。如果它是文件名,则 /var/log/logfetch 中具有该名称的文件将被删除。任何其他命令都将被忽略。所有命令都将被记录。只允许从该一个 IP 地址进行连接。

from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="read ARG;HOST=$(/usr/bin/hostname);if [ \"$ARG\" = \"BACKUP\" ]; then cd /var/log/logfetc;/usr/bin/tar -cf - *;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";else cd /var/log/logfetch; if [ -f $ARG ]; then /usr/bin/rm $ARG;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-file \\"$ARG\\" removed on $HOST by $USER\";else /usr/bin/logger -t LOGFETCH -p daemon.info \"WARNING: $USER failed to remove \\"$ARG\\" on $HOST\";exit -1;fi;fi " ssh-dss AA.....

对于您的特定情况来说,这可能有些过度,但第三方很难滥用它,而且应该能够适应您的特定需求。

相关内容