wordpress 刪除 后臺菜單廣州企業(yè)網(wǎng)站seo
FTP(文件傳輸協(xié)議)是一種客戶端-服務(wù)器網(wǎng)絡(luò)協(xié)議,允許用戶在遠(yuǎn)程計算機(jī)之間傳輸文件。這里有很多可用于Linux的開源FTP服務(wù)軟件,最流行最常用的FTP服務(wù)軟件有 PureFTPd, ProFTPD, 和 vsftpd。在本教程中,我們將在CentOS 8[4]上安裝vsftpd(非常安全的Ftp守護(hù)程序)。這是一個穩(wěn)定,安全且快速的FTP服務(wù)器。我們還將向您展示如何配置vsftpd以限制用戶訪問其主目錄,以及如何使用SSL / TLS加密數(shù)據(jù)傳輸。
vsftpd的安裝包默認(rèn)包含在CentOS軟件倉庫中,要安裝它,只需用root帳號或擁有sudo權(quán)限的帳號運(yùn)行如下命令:
#root帳號運(yùn)行
dnf install vsftpd
#具有sudo權(quán)限的非root帳號運(yùn)行
sudo dnf install vsftpd
一旦軟件包安裝完成,可以通過如下命令啟動vsftpd守護(hù)進(jìn)程并設(shè)置vsftpd在系統(tǒng)啟動時啟動。
sudo systemctl enable vsftpd --now
驗證vsftpd服務(wù)狀態(tài):
sudo systemctl status vsftpd
命令輸出結(jié)果類似如下,顯示vsftpd服務(wù)處于活動狀態(tài)并且正在運(yùn)行:
● vsftpd.service - Vsftpd ftp daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2020-03-30 15:16:51 EDT; 10s agoProcess: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
(code=exited, status=0/SUCCESS) ...
配置vsftpd
vsftpd服務(wù)的配置存放在/etc/vsftpd/vsftpd.conf
配置文件中。大多數(shù)配置在文件中都有詳細(xì)的記錄。有關(guān)所有配置選項可以參看官網(wǎng)的vsftpd配置說明頁面。在下面內(nèi)容中,我們將介紹配置安全的vsftpd安裝所需要的一些重要的配置。
先從打開vsftpd配置文件開始:
sudo vim /etc/vsftpd/vsftpd.conf
FTP 訪問控制
我們將僅允許本地用戶訪問FTP服務(wù)器,在配置文件中找到anonymous_enable
和local_enable
配置項,并確保您的配置與以下行一致:
sudo vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
啟用上傳
取消注釋write_enable
配置項將允許你對系統(tǒng)文件進(jìn)行更改,例如上傳和刪除文件。
sudo vim /etc/vsftpd.conf
write_enable=YES
控制訪問范圍
通過取消chroot
配置項,防止FTP用戶訪問其主目錄之外的任何文件。
sudo vim /etc/vsftpd.conf
chroot_local_user=YES
默認(rèn)情況下,啟用chroot時,如果用戶鎖定的目錄是可寫的,則vsftpd將拒絕上傳文件。這樣做是為了防止有安全漏洞。
啟用chroo
t時,可以使用下面任意一種方法允許文件上傳。
方法一
推薦允許上傳的方法是保持chroot
配置的啟用情況下配置FTP目錄。在本教程中,我們將在用戶主目錄里創(chuàng)建一個ftp
目錄。該目錄將用作chroot
和可寫入的uploads
目錄以上傳文件。
sudo vim /etc/vsftpd.conf
user_sub_token=$USER
local_root=/home/$USER/ftp
方法二
這個方法是在vsftpd中添加allow_writeable_chroot
配置項。如果必須將用戶的可寫訪問權(quán)限授予其主目錄,可以使用此選項。
sudo vim /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES
被動FTP連接
vsftpd可以使用任何端口進(jìn)行被動FTP連接。我們將指定端口的最小和最大范圍,然后在防火墻中打開該范圍。
在vsftpd配置文件中添加如下配置:
sudo vim /etc/vsftpd/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000
限制用戶登錄
要僅允許某些用戶登錄FTP服務(wù)器,請在配置文件中userlist_enable = YES
行之后添加以下行:
sudo vim /etc/vsftpd/vsftpd.conf
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
啟用此選項后,您需要通過將用戶名添加到/etc/vsftpd/user_list
文件(每行一個用戶)中來明確指定哪些用戶可以登錄。
使用 SSL/TLS 保護(hù)傳輸安全
為了使用SSL/TLS保護(hù)傳輸安全,你需要一個SSL證書并配置FTP 服務(wù)器使用該證書。您可以使用由受信任的證書頒發(fā)機(jī)構(gòu)簽名的現(xiàn)有SSL證書,也可以創(chuàng)建自簽名證書。如果你有一個執(zhí)行服務(wù)器IP的域名或者子域,則可以輕松生成一個免費(fèi)的Let‘s Encrypt證書。在本教程中,我們將使用“ openssl”工具生成一個自簽名SSL證書。以下命令將創(chuàng)建一個有效期為10年的2048位私鑰和自簽名證書。私鑰和證書都將保存在同一文件中:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
創(chuàng)建SSL證書后,打開vsftpd配置文件:
sudo nano /etc/vsftpd/vsftpd.conf
找到rsa_cert_file
和rsa_private_key_file
選項,將其值更改為pem
文件路徑,并將ssl_enable
指令設(shè)置為YES
:
sudo vim /etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/vsftpd/vsftpd.pemrsa_private_key_file=/etc/vsftpd/vsftpd.pemssl_enable=YES
重啟vsftpd服務(wù)
你完成配置文件編輯后,你的配置文件內(nèi)容將會類似下面內(nèi)容:
vim /ec/vsftpd/vsftpd.conf
anonymous_enable=NOlocal_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpduser
list_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
保存配置文件并重啟vsftpd服務(wù)使更改配置生效:
sudo systemctl restart vsftpd
開啟防火墻
如果你在CentOS 8上開啟了防火墻,你需要在防火墻中允許FTP流量訪問。
要打開防火墻上的端口21(FTP命令端口),端口20(FTP數(shù)據(jù)端口)和端口30000-31000(被動端口范圍),在防火墻上輸入以下命令:
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
使用以下命令重新加載防火墻規(guī)則:
firewall-cmd --reload
創(chuàng)建一個FTP用戶
為了測試FTP服務(wù)器,我們將創(chuàng)建一個新用戶。
- 如果您已經(jīng)有要授予FTP訪問權(quán)限的用戶,請?zhí)^第一步。
- 如果在配置文件中設(shè)置
allow_writeable_chroot = YES
,請?zhí)^第三步。
- 創(chuàng)建一個名為newftpuser的用戶:
sudo adduser newftpuser
sudo passwd newftpuser
- 添加用戶到允許ftp的用戶列表
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
- 創(chuàng)建ftp目錄并配置正確的權(quán)限
sudo mkdir -p /home/newftpuser/ftp/uploadsudo
chmod 550 /home/newftpuser/ftpsudo
chmod 750 /home/newftpuser/ftp/uploadsudo
chown -R newftpuser: /home/newftpuser/ftp
禁止shell訪問
默認(rèn)情況下,在創(chuàng)建用戶時,如果未明確指定,則該用戶將具有對服務(wù)器的SSH訪問權(quán)限。
要禁用shell程序訪問,我們將創(chuàng)建一個新的shell程序,該shell程序?qū)H打印一條消息,告訴用戶其帳戶僅限于FTP訪問。
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' |
sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly
運(yùn)行以下命令來創(chuàng)建/bin/ftponly
并使它可執(zhí)行:
echo "/bin/ftponly" | sudo tee -a /etc/shells
將用戶shell更改為/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
使用相同的命令為僅希望授予FTP訪問權(quán)限的其他用戶更改shell程序。