1. 程式人生 > >CentOS6 配置FTP伺服器

CentOS6 配置FTP伺服器

安裝CentOS6.5

為了保證測試環境的準確和純淨,筆者選用了CentOS6.5進行安裝,並且選擇最小化安裝。該版本系統有個特點,即不安裝其他過多的第三方庫。這樣可以有多個優點:

  1. 系統安裝速度快
  2. 依賴衝突少

安裝完成CentOS後,我們只有一個root使用者,如果不想使用其他角色使用者,可以不新建使用者。若要新建使用者,我們可以執行以下命令進行:

# 建立使用者testuser,並建立目錄,使用預設bash
useradd testuser
# 修改使用者testuser密碼
passwd testuser
# 由於Linux中,輸入密碼不回顯,在修改密碼時,需要保證兩次密碼一致
# 使用su切換使用者testuser su testuser # 執行完後,將會切換到新建的testuser,詳細使用,請參照Linux命令

為了使用,我們可能需要安裝一些其他的庫,如:

  1. Vim編輯器
  2. seinfo工具
  3. ftp客戶端工具
  4. man命令工具
  5. wget下載工具
  6. links文字瀏覽器工具

安裝好上述工具後,我們可以著手開始安裝vsftpd服務:

# 在非root使用者下安裝vsftpd
sudo yum install -y vsftpd

安裝完畢後,可以使用 sudo service vsfptd status 檢視vsftpd服務的狀態,若顯示已停或正在執行,則表示ftp服務安裝成功,或使用man命令檢視vsftpd服務是否存在。
安裝成功後,我們可以將該服務加入到開機自啟動,避免每次開機都要開啟服務的麻煩。

# 新增開機自啟動服務
sudo chkconfig vsftpd on

檢視ftp所需的埠,是否已經開啟

# 檢視iptables所開放的埠,若出現dpt:21表示21埠已開放
sudo /etc/init.d/iptables status

若21埠未開放,我們需要手動新增iptables記錄,開放21埠,供外來使用者訪問。
編輯檔案 /etc/sysconfig/iptables 新增三行記錄 -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 1000:2000 -j ACCEPT,新增後,重啟防火牆生效 sudo service iptables restart ,再執行上述命令,即可檢視21埠是否開放!

配置vsftpd服務

在上述準備工作結束後,即可開始配置vsftpd服務,首先備份配置檔案:/etc/vsftpd/vsftpd.conf

備份後,可首先配置匿名使用者訪問ftp服務,首先在該配置檔案中新增三行,開啟匿名使用者的許可權:

# 匿名上傳檔案許可權
anon_upload_enable=YES
# 匿名建立資料夾許可權
anon_mkdir_write_enable=YES
# 匿名使用者其他許可權(刪除、重新命名)
anon_other_write_enable=YES

開啟後,ftp匿名訪問配置成功,但Windows資源管理器,連線ftp伺服器時,使用的是被動連線的方式,而預設被動連線,並未配置,因此為了能夠通過Windows資源管理器連線該伺服器,接下來可以配置被動連線,新增以下行:

# 被動連線開啟
pasv_enable=YES
# 設定被動連線的埠範圍
pasv_min_port=1000
pasv_max_port=2000
# 主動連線開啟
port_enable=YES

在centos中,預設開啟了selinux,對Linux進行保護,因此我們需要開啟一系列的selinux許可權,使得能夠外界客戶端訪問該伺服器。

執行:seinfo -b |grep ftp檢視selinux關於ftp的一系列布林值的設定,如圖:

seinfo結果

在該列表中,我們需要將:

  • ftp_home_dir
  • allow_ftpd_anon_write
  • allow_ftpd_full_access

設定為1,執行:

sudo setsebool ftp_home_dir 1
sudo setsebool allow_ftpd_anon_write 1 # 匿名使用者許可權
sudo setsebool allow_ftpd_full_access 1 

設定完許可權後,即可通過Windows資源管理器訪問ftp伺服器,並上傳和刪除檔案,如圖:

Windows資源管理器

測試成功後,表明匿名使用者已經配置成功,緊接著配置實體使用者。

配置實體使用者訪問FTP伺服器

我們先確定,我們需要建立兩個使用者,分別是:ftp1、ftp2,並且我們將這兩個使用者,都加入ftp組中,這兩個使用者僅用於登入ftp,不可登入系統。首先執行使用者的新增命令:

sudo groupadd ftp
# 建立使用者組
sudo useradd ftp1 -s /sbin/nologin -g ftp 
# 建立ftp1
sudo useradd ftp2 -s /sbin/nologin -g ftp 
# 建立ftp2
sudo passwd ftp1
sudo passwd ftp2
# 修改密碼

在/home目錄下,分別建立了兩個使用者的主目錄,我們需要修改其許可權,便於ftp使用者組的使用者,可以進行檢視

sudo chmod 750 /home/ftp1
sudo chmod 750 /home/ftp2
# 修改目錄許可權

如此,使用者及其準備工作已經完成,接下來繼續配置vsftpd,編輯conf檔案即可。
使用vim編輯: /etc/vsftpd/vsftpd.conf

保證如下幾行:

local_enable=YES
# 啟用本地使用者
# 保證本地使用者寫許可權
write_enable=YES
# 本地使用者的目錄
chroot_local_user=YES

保證後,即可登入測試,可成功登入,且可進行讀寫操作,表示配置成功:

本地使用者登入結果

若配置本地使用者成功,則可以將匿名使用者禁用。禁用匿名登入,將對應的conf檔案中行:anonymous_enable=YES修改為:anonymous_enable=NO即可。

總結

  1. 在centos中,通過防火牆及selinux共同對系統進行保護,若需要開放許可權,需要同時更改防火牆設定和selinux設定
  2. 首先對匿名使用者進行配置,配置完匿名後,可再配置本地使用者,避免其他情況