Ø 簡介
本文主要介紹 Linux FTP 服務器配置,包括如下內容:
1. FTP 介紹
2. 安裝及配置
3. 用戶訪問
4. 匿名訪問
5. 連接ftp 的常用命令
6. nmap 端口掃描工具
1. FTP 介紹
FTP(File Transfer Protocol)文件傳輸協議,是用於在網絡上進行文件傳輸的一套標准協議,使用客戶/服務器模式,FTP 屬於網絡傳輸協議的應用層。
通俗的將就是,如果一台服務器上如果啟用了 ftp 協議,任意的一台電腦就可以與這台服務器建立連接。只要權限足夠,就可以從這個服務器上下載文件和上傳文件。
ftp 有兩個端口號,一個端口號是21,用於傳輸控制流;另一個端口號是20,用於傳輸數據流。也就是21號端口用於建立連接,20號端口用於傳輸數據。
n 常用的FTP 軟件
1) Wu-FTP
古老、配置比較復雜,安全性不是特別理想。UNIX 系統自帶的 FTP 軟件。
2) Proftp(Professional FTP daemon)
功能強大。
Proftpd 簡介:
全稱Professional FTP daemon,是針對Wu-FTP 的弱項而開發的,軟件在經過多年的發展之后完善了很多功能,ProFTP 已經成為繼Wu-FTP 之后最為流行的FTP 服務器軟件,越來越多的站點選用它構築安全高效的FTP 站點。Proftpd 軟件和vsftpd 一樣是一個開放源代碼的ftp 服務器軟件,但是可配置項比vsftpd 要多,是目前比較流行的ftp 軟件,Proftpd 的配置和apache 的配置相似,因此該軟件也十分容易配置和管理。
3) vsftp(推薦使用)
安全、高速、穩定。具有以下特點:
1. 配置簡潔、使用方便,使用加密傳送安全性較高。
2. 絕大多數Linux 提供的官方下載,都是有vsftp 來提供的。
vsftp 簡介:
全稱Very secure FTP daemon,比ProFTPD 具有更高的安全性。vsftpd 使用一般身份啟動服務,降低了FTP 服務的PID 權限,使該服務即使被入侵也無法得到有效的系統管理權限。同時vsftpd 利用chroot 軟件來改變登錄者的根目錄,使登陸者只能在這個目錄中活動,限制了登錄者的執行權限。vsftpd 通過配置vsftpd.conf 文件來完成部署,設定簡單,登錄者僅分為anonymous 和real user 兩種。可以使用standalone 和super daemon 的方式啟動。vsftpd 無法控制每個目錄的流量、不能控制上傳和下載的比例、不能針對不同的登陸者進行不同的權限設定。
2. 安裝及配置
說明:以下標紅的文本為安裝vsftp 所需的步驟。
更多配置參考:https://www.cnblogs.com/wenwei-blog/p/8890436.html
n 首先檢查系統是否安裝了 vsftp
rpm -q vsftpd
vsftpd-3.0.2-27.el7.x86_64
如果沒有安裝,直接使用yum 安裝
yum -y install vsftpd
安裝完成后,啟動 vsftpd 服務
systemctl start vsftpd
systemctl enable vsftpd #開機自啟動
或者 service vsftpd restart
啟動后默認支持用戶訪問宿主目錄,及匿名用戶訪問 /var/fpt目錄。
n vsftp 相關配置
vi /etc/vsftpd/vsftpd.conf
1. 日志選項(建議開啟)
xferlog_enable=YES #是否啟用日志功能,默認開啟
xferlog_std_format=YES #日志文件記錄的格式(標准格式),默認開啟
xferlog_file=/var/log/xferlog #如果啟用日志,需要將日志文件存放的位置注釋取消掉,默認注釋
提示:在 Linux 系統中,建議都將日志存放在 /var/log 目錄下。
2. 設置非標准端口
listen_port=18021 #默認連接斷開為21,數據傳輸端口為20
添加至 listen=NO 下面;
1024以上的端口,不與其他知名端口沖突;
使用非標准斷開時,需要顯示指定端口號,比如:ftp 192.168.1.150 18021;
設置為非標准端口,主要是為了安全性考慮,可以防止如 nmap 這種端口掃描器掃描。
3. 其他選項
ftpd_banner=Welcome to blah Abeam FTP service. #設置登錄歡迎信息
idle_session_timeout=600 #用戶會話空閑10分鍾后被斷開
max_clients=50 #服務器總的並發連接數為50
max_per_ip=3 #每個客戶機的最大連接數為3
3. 用戶訪問
1) 創建ftp 用戶
groupadd ftpg
useradd -g ftpg -d /opt/res ftpuser
echo "ftpuser" | passwd --stdin ftpuser
2) 防火牆開發相應端口
systemctl start firewalld
firewall-cmd --zone=public --list-ports --permanent #查看開放端口
firewall-cmd --zone=public --add-port=18021/tcp --permanent
# 被動式端口
firewall-cmd --zone=public --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
3) 設置 vsftpd.conf 配置文件
vi /etc/vsftpd/vsftpd.conf
必須設置以下3個選項:
local_enable=YES #默認YES
write_enable=YES #默認YES(NO 禁止用戶上傳)
local_umask=022 #本地用戶創建目錄或文件的掩碼,默認022
local_max_rate=200000 #設置用戶最大傳輸速率為200KB/s(添加)
若啟用了 SELinux,允許用戶上傳文件到宿主目錄,需要執行以下命令:
getsebool -a | grep ftp #查看狀態
setsebool -P tftp_home_dir on
setsebool -P allow_ftpd_full_access on
注意:否則用戶也無法上傳文件。
關閉 SELinux,編輯 /etc/selinux/config
SELINUX=enforcing 改為 disabled #阿里雲 ESC 默認為 disabled
注意:阿里雲 ESC 一定不要設置為enforcing,否則重啟后無法連接。
后來,登錄阿里雲控制台遠程連接,發送遠程命令才得以解決!!!
mv /etc/selinux/config /etc/selinux/config.bak
sed 's/enforcing/disabled/g' /etc/selinux/config.bak >> /etc/selinux/config #將 enforcing 替換為 disabled
4) 用戶訪問控制(兩種方式)
限制指定的用戶不可以訪問,而其他用戶可以訪問,適合大多數可以訪問:
userlist_enable=YES #默認只有該選項
userlist_deny=YES #是否為禁止模式
userlist_file=/etc/vsftpd.user_list #每個用戶名占一行
限制指定的用戶可以訪問,而其他用戶不可以訪問,適合大多數用戶不可以訪問:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
5) 設置 chroot
chroot 就是把ftp 用戶宿主目錄作為/根目錄,使其用戶無法切換到其他目錄。
設置所有用戶執行chroot
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #限制只能訪問自身目錄,默認注釋
allow_writeable_chroot=YES #加入此項
設置指定的用戶不執行chroot
chroot_local_user=YES #啟用chroot,默認注釋
chroot_list_enable=YES #啟用指定的用戶執行chroot,默認注釋
chroot_list_file=/etc/vsftpd/chroot_list #每個用戶名占一行,默認注釋
6) 啟用被動連接模式
vi /etc/vsftpd/vsftpd.conf #末尾添加以下選項
#啟用被動連接模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
4. 匿名訪問
n 設置 vsftpd.conf 配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #是否允許匿名訪問,默認為YES
anon_max_rate=100000 #設置匿名用戶最大傳送速率為100KB/s(這個選項默認沒有,需要添加,開啟匿名下載時建議開啟此限制)
開啟匿名用戶上傳功能
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
1) 匿名 FTP 用戶名:ftp 或anonymous,密碼為空即可;
2) 匿名用戶訪問的目錄:為ftp 偽用戶的宿主目錄下:/var/fpt;
grep ftp /etc/passwd #查看ftp 偽用戶的宿主目錄
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
3) 使用Windows DOS 命令測試連接 vsftp
C:\Users\Abeam>ftp 192.168.1.150
用戶(192.168.1.150:(none)): ftp #用戶名輸入ftp
或者
C:\Users\Abeam>ftp
ftp> open 192.168.1.150
# 如果連接不上,關閉防火牆或開放20、21端口
systemctl stop firewalld
5. 連接ftp 的常用命令
連接ftp:ftp FTP地址
ftp>
ls #查看目錄下的文件
cd #切換目錄(FTP服務器)
bin #二進制傳輸(vsftp 不需要)
lcd #指定下載目錄(本地),如果不指定默認下載到當前登錄目錄
get #下載單個文件
mget #下載多個文件
put #上傳單個文件
mput #上傳多個文件
prompt #關閉交互模式(如:提示某某文件是否需要下載?關閉后默認為下載)
bye #退出
open #連接 FTP 服務器
user #輸入 FTP 服務器用戶名和密碼
另外,ftp 命令也可以執行 Linux 的一些命令,如:pwd
說明:其實也可以不用掌握這些命令,通常都使用 FTP 的客戶端來實現上傳和下載。但如果需要實現自動化的上傳和下載,就需要了解這些命令了。
6. nmap 端口掃描工具
nmap 基本功能有三個,一是探測一組主機是否在線;其次是掃描 主機端口,嗅探所提供的網絡服務;還可以推斷主機所用的操作系統 。
1) 光盤安裝nmap
mount /dev/cdrom /mnt/cdrom/
find /mnt/cdrom -name "nmap*" #搜索軟件包
/mnt/cdrom/Packages/nmap-6.40-16.el7.x86_64.rpm #命令行
/mnt/cdrom/Packages/nmap-ncat-6.40-16.el7.x86_64.rpm #圖形工具
rpm -ivh /mnt/cdrom/Packages/nmap-6.40-16.el7.x86_64.rpm #安裝
2) 使用方法
nmap 192.168.1.150 認掃描1 – 65535
nmap -p1-1024 192.168.1.150 #掃描指定端口范圍