Linux - FTP 教學

在這裡記錄一下 Linux CentOS7 安裝 FTP 以及如何建立使用者,並且限制使用者只能訪問家目錄。

安裝 vsftpd

執行以下指令安裝 vsfftpd

yum install vsftpd -y

安裝完畢,接著將 vsftpd 啟動及加入開機自動執行

service vsftpd start
service vsftpd enable

建立用戶

更新用戶,調整預設登入目錄

sudo useradd --home-dir /var/mywebsite mywebsite_admin

手動限制 SSH 連線

usermod -s /sbin/nologin mywebsite

或者一次新增使用者及限制SSH連線,預設home目錄為 /etc/home/使用者名稱

useradd -s /sbin/nologin mywebsite

設定密碼

passwd mywebsite

以上設定完畢,就完成基本建立 FTP 用戶,以下是需要調整FTP用戶設定的相關做法

變更預設登入 Home 目錄位置

usermod -m -d /var/home/mywebsite mywebsite

查看用戶

cat /etc/passwd

刪除用戶

userdel isclinic

修改 vsftpd 設定

在 vsftpd 預設是允許匿名用戶登入,相當危險,因此,新增使用者後,在開通防火牆之前,必需要調整 vsftpd 設定。

開啟設定檔案

vim /etc/vsftpd/vsftpd.conf

以下是設定的範例:q

anonymous_enable=NO

# 啟用一般帳號登入
local_enable=YES

write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES

# 限制閒置多少秒會自動斷線
idle_session_timeout=600

chroot_local_user=YES

# 限制系統用戶,並且將他們鎖定在home目錄
chroot_list_enable=YES 
# 限制更多系统用户(需要手動要建立 chroot_list 並且把所有用戶加入)
chroot_list_file=/etc/vsftpd/chroot_list 

listen=NO
listen_ipv6=YES

pam_service_name=vsftpd

# 設定只有清單內的使用者可以登入
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

tcp_wrappers=YES

allow_writeable_chroot=YES

# 1個IP可以連線的數量
max_per_ip=3

# 限制下載上傳頻寬 (300k = 300000)
local_max_rate=300000

chroot_list 這個目錄預設是不存在的,

因此,要手動建立 chroot_list 並且把所有用戶加入

touch /etc/vsftpd/chroot_list
cut -d : -f  1 /etc/passwd>>/etc/vsftpd/chroot_list

開啟防火牆

firewall-cmd --zone=public --add-port=10221-10231/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent

fiewall-cmd --reload

檢查 ftpusers ,這裡面放置的是限制登入 ftp 的名單,通常都會把重要的帳號加入,禁止FTP連線。

請確保需使用 FTP 連線的帳戶沒有被加入 ftpusers

vim ftpusers

設定 pam.d

開啟 pam.d/vsftpd

vim /etc/pam.d/vsftpd

將以下的內容 将```auth

接著,重啟 vsftpd

讓使用者取得 home 以外的目錄

在使用者的家目錄,透過 mounted 來掛載外部目錄進來

CVT2HUGO: required pam_shells.so``` 修改成 ```auth
mkdir mounted
mount --bind <dir1> mounted

CVT2HUGO: required pam_nologin.so```

限制FTP連線IP

首先開啟 host.deny 設定禁止連線IP

vim /etc/hosts.deny

加入以下這行

vsftpd:all:Deny

開啟 host.allow 設定允許連線IP

vim /etc/hosts.allow

加入允許連線IP,例如 192.168.3.22, 192.168.9.x 與 192.168.8.x 網段

vsftpd:192.168.3.22:Allow
vsftpd:192.168.9.*:Allow
vsftpd:192.168.8.*:Allow

或者可以這樣設定
vsftpd:192.168.3.22 192.168.9.0/24 192.168.8.0/24