vsftpd

Info

Install on AWS EC2

  • 更新套件並安裝 vsftpd
sudo apt-get update
sudo apt-get install vsftpd -y
  • vsftpd 設定
sudo vi /etc/vsftpd.conf
# 關閉 ipv6,這個問題卡很久,找很久才發現解決方式;不確定是不是 vsftpd 版本的問題
# https://www.centos.org/forums/viewtopic.php?t=52408
listen=YES
listen_ipv6=NO
 
# 允許本地用戶登錄
local_enable=YES
 
# 允許上傳
write_enable=YES
 
# 讀寫執行權限
local_umask=022
 
# 允許家目錄變為根目錄
chroot_local_user=YES
chroot_list_enable=YES
 
# 允許家目錄變為根目錄後擁有寫入權限
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
  • 建立使用者 test
sudo useradd -m -s /usr/sbin/nologin test
sudo passwd test
# 之後輸入二次密碼
  • nologin 加入 shells 最後
sudo vi /etc/shells
/usr/sbin/nologin
  • 如果使用者要可以看到所有目錄,新增帳號到這個檔案;如果不需要也要建立一個沒有內容的檔案

sudo vi /etc/vsftpd.chroot_list
  • 重啟 vsftpd
sudo service vsftpd restart

使用 TSL 連線(SSL)

如果沒有憑證可以自簽

  • 利用 openssl 產生憑證檔案
# 產生一個期限為 3650 天的自簽憑證
sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 3650 -newkey rsa:2048
  • 自簽範例參考
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:Los Angeles
Organization Name (eg, company) [Internet Widgits Pty Ltd]:example.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (e.g. server FQDN or YOUR name) []:example
Email Address []:info@example.com

修改 vsftpd 設定檔

  • 自簽設定
sudo vi /etc/vsftpd.conf
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
rsa_cert_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
ssl_ciphers=HIGH
  • 如果 EC2 上已有憑證
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
ssl_enable=YES
ssl_ciphers=HIGH
  • 重啟 vsftpd
sudo service vsftpd restart

使用被動模式

  • 有興趣可以詳讀 FTP 主/被動模式
  • 我自己的理解是:當 Client 端在 NAT 架構下,使用被動模式比較不容易有問題(如果有錯請再告知)
  • 修改 vsftpd 設定檔
sudo vi /etc/vsftpd.conf
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
port_enable=YES
pasv_address=[Public IP]
 
# 使用 domain name 時
#pasv_address=[Domain Name]
#pasv_addr_resolve=YES<.code>
  • 重啟 vsftpd
sudo service vsftpd restart
  • AWS EC2 Security Group 要開啟被動模式的 port range

5232310_raw.jpg

Reference

文章標籤

danielhuang030 發表在 痞客邦 留言(0) 人氣()