是否可以阻止 SCP 同时仍允许 SSH 访问?

是否可以阻止 SCP 同时仍允许 SSH 访问?

使用 Solaris 和 Linux 服务器以及 OpenSSH,是否可以阻止用户使用“scp”复制文件,同时仍允许使用“ssh”进行 shell 访问?

我意识到“ssh $server“cat file””类型的文件访问更难以阻止,但首先我需要了解如何停止“scp”。

否则,有没有办法通过可靠地记录服务器端的所有 SCP 访问syslog

答案1

你可以编辑你的,使它/etc/ssh/sshd_config看起来像这样:

ForceCommand           /bin/sh
PermitOpen             0.0.0.0
AllowTcpForwarding     no
PermitTunnel           no
# Subsystem sftp       /usr/lib/openssh/sftp-server
PermitUserEnvironment  no

我会确定用户可能用它做什么。因为如果您只希望他们访问一些命令,我​​会删除他们甚至调用普通sshshell 的能力。

AllowUsers             root
PermitRootLogin        forced-commands-only

PermitUserEnvironment  no

AllowTcpForwarding     no
PermitTunnel           no

# Subsystem sftp       /usr/lib/openssh/sftp-server
Subsystem smb-reload   /usr/bin/smbcontrol smbd reload-config
Subsystem status       /opt/local/bin/status.sh

ssh root@example -s smb-reload

如果您发现您确实需要能够运行正常的 shell,那么您真正能希望的最多就是减慢它们的速度,并使其变得更加困难。

答案2

正如其他人所说,您无法阻止 scp(好吧,您可以:rm /usr/bin/scp,但这实际上没有任何作用)。

您能做的最好的事情就是将用户的 shell 更改为受限 shell (rbash),然后才运行某些命令。

请记住,如果他们可以读取文件,他们就可以从屏幕上复制/粘贴文件。二进制文件?xxd/uuencode/mmencode 都可以解决这个问题。

我还建议使用流程核算来帮助您跟踪活动。

答案3

当您仍然允许无限多的额外文件传输机制时,停止“scp”对您没有任何好处。禁止 scp 但允许其他文件复制机制是一种欺骗审计员的方法。审计员经常要求被欺骗。我经常看到审计员与经理合作进行虚假修复,以便他们可以声明“scp 文件传输命令已被禁用,因此无法使用 scp 从服务器复制文件”。

现在,一个合理的日志记录机制就好了。也许 auditd 终于可以在 Linux 上运行了。也许 Solaris 终于增加了一些机制,或者 dtrace 可以安全地使用。希望操作系统在每次访问文件时都进行记录是合理的。当然,“读取”和“复制”之间没有区别。但这可以满足审计员并为系统提供显著的安全性。您的日志可能非常嘈杂,以至于数据毫无用处,甚至您被迫保留一个非常短的审计线索。(例如,您无法记录每个 read() - 而一个执行了令人惊讶的操作的应用程序可能会使记录每个 open() 都成为一场灾难)。

答案4

最好的办法不是锁定 scp,而是使用具有 ACL 的文件系统来阻止读取访问。您可能可以使用 SELinux 来阻止某些应用程序读取某些文件。

相关内容