vsFTPD 服務器 passive mode 配合 Firewall 和 Selinux 的保護模式

有 Selinux 和 Firewall 基本上是很安全,不用怕了,改了 Port 加上 Passive Mode 可以減少很多被侵入的機會。


Selinux for VSFTPD

# getsebool -a | grep ftp

ftp_home_dir is off, you should open it.

# setsebool -P ftp_home_dir 1

# setsebool -P allow_ftpd_full_access=1

You need to set some parameters in vsftpd.conf

anonymous_enable=No   #不允許匿名使用者登入

chroot_local_user=YES    #限制使用者不能離開自己的家目錄

chroot_list_enable=YES   #設定可以離開家目錄的使用者清單(只有上面的使用者可以離開自己的根目錄)

chroot_list_file=/etc/vsftpd/chroot_list   #離開家目錄清單的位置

userlist_enable=YES                          #啟動使用者清單功能

userlist_deny=NO                            #設定只有使用者清單內的使用者可以登入(重要)

userlist_file=/etc/vsftpd/user_list       #使用者清單的檔案路徑

Reference : http://beginlinux.com/blog/2008/11/vsftpd-and-selinux-on-centos/

listen=YES                                      # 讓 vsftpd 在 standalone 的情況下,如果你的RAM比較少時不建議。

listen_ipv6=NO                               # 把 IPV6的功能關了,我的 LAN 內部環境是跑在 ipv6下,WAN 設定 IPV4

listen_port=11121                           # 把 ftp port 改了,通常黑客最容易侵入的系統,就是 FTP,改了它會減少一些機械式字典破解的掃描。 (對高手無用)

connect_from_port_20=NO             #  把 Port 20 的功能關了

ftp_data_port=11120                      # 改一下 FTP_DATA 的 port



To configure passive mode for vsftpd you need to set some parameters in vsftpd.conf.

pasv_enable=Yes pasv_max_port=10100 (port 的設定要和 Firewall 相同 ) pasv_min_port=10090


If your server is behind the router using the internal IP address, you should add these lines in your vsftpd.conf



To do this in CentOS 7 Firewalld



Find your zone:


# firewall-cmd --get-active-zones
  interfaces: eth0

My zone is 'public', so I set my zone to public, add the port range, and after that we reload:


# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp (Passive Ports 要相同於 pasv port 的設定)

# firewall-cmd --permanent --add-port=11121/tcp (vsftpd 的 Port,要同於 listen_port)

# firewall-cmd –permanent –add-port=11120/tcp ( FTP-DATA 的 port )



# firewall-cmd --reload