在上一篇博文《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