Ubuntu16.04下禁用scp、sftp和winscp

在上一篇博文《Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除》中,我讲述了Ubuntu16.04下配置FTP,并且设定用户权限为只能上传数据,禁止下载和删除数据。这算在FTP层面封堵了服务器数据泄露的途径。

但是,Ubuntu系统的scp和sftp还是起作用的,理论上只要能用本地机器ping通服务器,就可以用scp和sftp下载数据,这还是存在数据泄露可能的,所以必须封堵这些途径。我参考几篇博文,实现了禁用操作。为表感谢,在文末附上参考链接。

1、禁用scp

一位老哥[1]在centos 5.x上实现了禁用scp,他用用的命令如下:

rpm -qa|grep openssh-*
yum remove openssh-clients -y

但是,我查看了Ubuntu下不存在openssh-clients,所以卸载不了,但是又不能直接卸载ssh,否则就不能通过ssh操控机器了。与是想了两个简单粗暴的禁用方式:

(1)直接删除掉/usr/bin/scp,但带来的问题是root也不能使用scp了,这种操作不是很好,毕竟scp是非常好用的数据传输工具

(2)使用mv命令,将/usr/bin/scp改成非root用户不知道的名字,比如/usr/bin/back_scp。这样非root用户使用不了scp,root用户不受影响。

2、禁用sftp

这个比较简单,直接修改sshd的配置文件即可

打开sshd_config,将“Subsystem      sftp    /usr/libexec/openssh/sftp-server”注销掉

sudo vi /etc/ssh/sshd_config

Ubuntu16.04下禁用scp、sftp和winscp_第1张图片

保存退出,并重启sshd:

service sshd restart

这样再通过xftp等软件连接服务器是被禁止的了。

3、禁用winscp

winscp是一个神奇的存在,虽然在2中将sftp给禁止了,但是winscp依然可以登录,让人很头疼。另一位老哥[2]的思路很新奇,他猜想这样考虑的:”是不是winscp的验证流程不一样呢?具体也不得而知,猜想:是不是注释掉之后,winscp会默认去找Subsystem sftp /usr/libexec/openssh/sftp-server执行,或者默认执行另一个可行的程序呢?那么我们引导一下它,会如何?

解决办法

1.还原/etc/ssh/sshd_config

2.修改Subsystem sftp /usr/lib/openssh/sftp-server为Subsystem sftp /usr/libe/openssh/sftp-server.sh

3.vi Subsystem sftp /usr/lib/openssh/sftp-server.sh,加入#Subsystem sftp /usr/lib/openssh/sftp-server

4.chmod 755 /usr/lib/openssh/sftp-server

然后再用winscp连接测试,提示错误:connection has been unexpectedly closed,Server send command exit status 0;而ssh客户端还可以正常连接,这说明,我们的目的达到了。

依据这老哥的思路,我这里也很好的解决了。不得不说,大神就是大神,感谢老哥的博文,[2]是这老哥的博文连接,大家也可以去看看这老哥的博客。

参考博文:

[1]  https://blog.csdn.net/weixin_34241036/article/details/89859349
[2]  https://blog.csdn.net/fbysss/article/details/5732570

 

你可能感兴趣的:(Ubuntu系统专栏)