vsftpd 安全配置指南與疑難雜症
搭建FTP伺服器,我的首選就是vsftpd,因為It is written by someone who is a vulnerability researcher. vsftpd.html 當然這離安全還差得遠,要想安全地配置vsftpd意味著著需要考慮以下這幾點:
關閉匿名訪問功能、開啟chroot以防止用戶可以遍歷系統文件、開啟被動模式以便NAT環境用戶訪問、啟用TSL加密以防止明文泄露、啟用系統內置賬戶驗證登錄(該賬戶須限制不能登錄)、改變默認的21埠以防止黑客掃描(當然也可以使用21埠)。
以下配置基於CentOS 6.8 64位,命令執行以root角色執行,如果不是root的話某些操作需要加sudo:
- 安裝vsftpd
yum -y install vsftpd
- 配置/etc/vsftpd/vsftpd.conf (如果你不想更改埠,可以注釋掉port相關行)
dirmessage_enable=YESftpd_banner="Notice : FTP service."syslog_enable=NOlog_ftp_protocol=YESxferlog_enable=YESxferlog_std_format=YESxferlog_file=/var/log/vsftpd_xferlogdual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.loganonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022chroot_local_user=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESlisten=YESlisten_port=53000pasv_enable=Yespasv_max_port=65000pasv_min_port=60000ssl_enable=YESallow_anon_ssl=YESforce_local_data_ssl=YESforce_local_logins_ssl=YESforce_anon_logins_ssl=YESforce_anon_data_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrsa_cert_file=/etc/ssl/certs/vsftpd.pem#must keep HIGH in case of strange error ssl_ciphers=HIGH
- 檢查/etc/pam.d/vsftpd 是否是以下內容。如果不小心改錯的話,會導致530錯誤登錄失敗
#%PAM-1.0session optional pam_keyinit.so force revokeauth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeedauth required pam_shells.soauth include password-authaccount include password-authsession required pam_loginuid.sosession include password-auth
- 剛才我們指定了使用TLS 加密,因此需要生成一年有效期SSL證書
openssl req -new -x509 -nodes -days 365 -out vsftpd.pem -keyout vsftpd.pemchmod 400 vsftpd.pemcp vsftpd.pem /etc/ssl/certs/
- 創建FTP目錄和用戶
- mkdir -p /data/ftpuseradd -d /data/ftp/ftpu -s /sbin/nologin ftpupasswd ftpu
- 啟動vsftpd
service vsftpd restart
----------------------------------------------------------------------------------
疑難雜症
- ubuntu環境,必須將vsftpd.conf 裡面這句修改一下,否則會出現530 登錄錯誤
pam_service_name=ftp
- 某些老舊的操作系統在協商TLS時,可能會使用RC4導致FileZilla連接失敗報錯received tls alert from the server handshake failed (40) vsftpd,因此必須指定加密演算法HIGH。
- 530 Login incorrect. 檢查一下該用戶的nologin shell是否在/etc/shells , PAM 不允許不在/etc/shells 里的用戶shell 進行認證。chsh -s $(command -v nologin) user3 New local user can't login to vsftpd
.
推薦閱讀:
※0002 安全問題的根源
※Kali Linux VMware安裝版小白級教程
※厲害了!阿里安全圖靈實驗室在ICDAR2017 MLT競賽刷新世界最好成績
※WordPress 4.7.1命令執行代碼Sql注入漏洞
※古代是怎麼通緝人員的?
TAG:網路安全 |