FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。
FTP(File Transfer Protocol: 文件傳輸協議)作用: Internet 上用來傳送文件的協議。
常見FTP服務器:
windows:Serv-U FTP Server
Linux:ProFTPD:(Professional FTP daemon)一個Unix平台上或是類Unix平台上(如Linux, FreeBSD等)的FTP服務器程序。
本文的主角:vsftp。VSFTP是一個基於GPL發布的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。
特點:它是一個安全、高速、穩定的FTP服務器。本文從以下幾個方面來介紹ftp服務器:
- 一、學習一個新服務的方法
- 二、VSFTP服務器的安裝配置。
- 三、VSFTP服務器實戰
一、學習一個新服務的方法
1、 此服務器的概述:名字,功能,特點,端口號
2、 安裝
3、 配置文件的位置
4、 服務啟動關閉腳本,查看端口
5、 此服務的使用方法
6、 修改配置文件,實戰舉例
7、 排錯(從下到上,從內到外)
二、VSFTP服務器的安裝配置
本文的服務器架構:
FTP服務端:xiaolyu10 IP:192.168.31.10
FTP客戶端:xiaolyu11 IP:192.168.31.11
1. 安裝:
yum安裝或rpm安裝均可。
[root@xiaolyu10 ~]# rpm -qa | grep vsftp
vsftpd-2.2.2-21.el6.x86_64
[root@xiaolyu10 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm
[root@xiaolyu10 ~]# yum install -y vsftp
[root@xiaolyu11 ~]# yum -y install lftp
2. 配置文件:
[root@xiaolyu10 ~]# ls -l /etc/vsftpd
total 32
-rw-r--r-- 1 root root 13 Mar 16 15:14 chroot_list
-rw------- 1 root root 125 May 11 2016 ftpusers
-rw------- 1 root root 361 May 11 2016 user_list
-rw------- 1 root root 4644 Mar 16 15:13 vsftpd.conf
-rw------- 1 root root 4599 Mar 16 14:12 vsftpd.conf_bak
-rwxr--r-- 1 root root 338 May 11 2016 vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用於指定哪些用戶不能訪問FTP 服務器。 黑名單
/etc/vsftpd/user_list:指定允許使用vsftpd 的用戶列表文件。 白名單
vim /etc/vsftpd/user_list
# 如果userlist_deny= YES(默認),絕不允許在這個文件中的用戶登錄ftp,甚至不提示輸入密碼
#prompt 提示
/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些變量和設置腳本
/var/ftp/:默認情況下匿名用戶的根目錄
三、VSFTP服務器實戰
實戰1:
公司技術部准備搭建一台功能簡單的FTP 服務器,允許所有員工上傳和下載文件,並允許創建用
戶自己的目錄。
分析:
允許所有員工上傳和下載文件需要設置成允許匿名用戶登錄並且需要將允許匿名用戶上傳功能
開啟,
anon_mkdir_write_enable 字段可以控制是否允許匿名用戶創建目錄。
備份原配置文件:
[root@xiaolyu10 vsftpd]# cp vsftpd.conf vsftpd.conf_bak
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
允許匿名用戶訪問
anonymous_enable=YES
允許匿名用戶上傳文件並可以創建目錄
anon_upload_enable=YES
anon_mkdir_write_enable=YES
啟動服務:
[root@xiaolyu10 ~]# service vsftpd restart
[root@xiaolyu10 pub]# chown ftp.ftp /var/ftp/pub/
然后測試,是可以新建文件夾了,但是不能重命名,不能刪除!
[root@xiaolyu10 ~]# mkdir /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# chown ftp.ftp /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# ll -d !$
ll -d /var/ftp/xiaolyudata
drwxr-xr-x 2 ftp ftp 4096 Mar 16 14:34 /var/ftp/xiaolyudata
[root@xiaolyu10 ~]#
重啟服務:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@xiaolyu10 ~]#
現在匿名上傳的文件是禁止刪除的。
這樣匿名用戶的上傳就算成功了
注:工作中,匿名用戶只是只讀訪問,寫的權限也沒有的。
補充:
如果想讓匿名用戶可以重命名或者刪除的權限,添加如下一條配置參數:
重啟服務:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_other_write_enable
[FAILED]
根據提示,說明我剛才添加的那一行匿名寫權限的參數有問題
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
也就是說參數后面不能有多余的空格。
重新啟動就可以對重新命名和刪除文件夾了,
匿名用戶就可以刪除和修改,非常不安全,慎重使用這個參數。
注意,默認匿名用戶家目錄的權限是755,這個權限是不能改變的。切記!
[root@xiaolyu10 ~]# service vsftpd restart
實戰2:
公司內部現在有一台FTP 和WEB 服務器,FTP 的功能主要用於維護公司的網站內容,包括上傳文
件、創建目錄、更新網頁等等。公司現有兩個部門負責維護任務,他們分別適用team1 和team2
帳號進行管理。先要求僅允許team1 和team2 帳號登錄FTP 服務器,但不能登錄本地系統,並將
這兩個帳號的根目錄限制為/var/www/html,不能進入該目錄以外的任何目錄。
ftp 和www web服務器相結合。
www web服務器根目錄: /var/www/html
只允許:team1和team2兩用戶 可以上傳。 vsftp禁止匿名。
分析:
將FTP 和WEB 服務器做在一起是企業經常采用的方法,這樣方便實現對網站的維護,為了增強安
全性,首先需要使用僅允許本地用戶訪問,並禁止匿名用戶登錄。其次使用chroot 功能將team1
和team2 鎖定在/var/www/html 目錄下。如果需要刪除文件則還需要注意本地權限
解決方案:
(1)建立維護網站內容的ftp 帳號team1 和team2 並禁止本地登錄,然后設置其密碼
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team1
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team2
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.
2)配置vsftpd.conf 主配置文件並作相應修改
[root@xiaolyu10 vsftpd]# cp vsftpd.conf_bak vsftpd.conf
cp: overwrite `vsftpd.conf'? y
[root@xiaolyu10 vsftpd]# vim vsftpd.conf
#anonymous_enable=YES
anonymous_enable=NO 禁止匿名用戶登錄
#
# Uncomment this to allow local users to log in.
local_enable=YES 允許本地用戶登錄
繼續將:
修改為:
local_root=/var/www/html:設置本地用戶的根目錄為/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:設置鎖定用戶在根目錄中的列表文件。此文件存放要鎖定的用戶名
保存退出
(3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帳號
[root@xiaolyu10 vsftpd]# touch /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Mar 16 15:13 /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# vim /etc/vsftpd/chroot_list #寫入以下內容,一行,一個用戶名
team1
team2
(4)重啟vsftpd 服務使配置生效
service vsftpd restart
(5)修改本地權限
[root@xiaolyu10 vsftpd]# mkdir -p /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xr-x 2 root root 4096 Mar 16 15:16 /var/www/html/
[root@xiaolyu10 vsftpd]# chmod -R o+w /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xrwx 2 root root 4096 Mar 16 15:16 /var/www/html/
(6).測試:
[root@xiaolyu11 ~]# lftp 192.168.31.10 -uteam1,123456
lftp team1@192.168.31.10:~> ls
drwxr-xr-x 2 500 500 4096 Mar 16 07:24 web
lftp team1@192.168.31.10:~>