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

保存退出,並重啓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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章