1、vsftpd簡單介紹
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。ftp 是文件服務器,工作於應用層,與平臺無關、而nfs只能在linux之間傳輸數據,vsftpd可在windows與linux之間傳遞數據。ftp是一種比http協議還早的文件傳輸入協議,ftp工作需要兩個端口,一種是命令連接tcp/21,一種是數據連接tcp/20。而數據連接又有兩種模式,分別是主動模式、被動模式。
PORT(主動)是:客戶端向服務器的FTP21端口發送連接請求,服務器接受連接,建立一條命令鏈接。當需要傳送數據時,客戶端在命令鏈路上用主動命令告訴服務器:“我打開了XX端口,你過來連接我”。於是服務器從20端口向客戶端的XX端口發送連接請求,建立一條數據傳輸鏈路。
PASV(被動)是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了XX端口,你過來連接我”。於是客戶端向服務器的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2、賬號介紹
用戶賬號類型:
匿名用戶:—>(ftp)home dir
系統用戶:操作系統存在 ->home dir
虛擬用戶:有賬號和密碼,但賬號不能用於登錄系統,可訪問ftp服務
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。ftp 是文件服務器,工作於應用層,與平臺無關、而nfs只能在linux之間傳輸數據,vsftpd可在windows與linux之間傳遞數據。ftp是一種比http協議還早的文件傳輸入協議,ftp工作需要兩個端口,一種是命令連接tcp/21,一種是數據連接tcp/20。而數據連接又有兩種模式,分別是主動模式、被動模式。
PORT(主動)是:客戶端向服務器的FTP21端口發送連接請求,服務器接受連接,建立一條命令鏈接。當需要傳送數據時,客戶端在命令鏈路上用主動命令告訴服務器:“我打開了XX端口,你過來連接我”。於是服務器從20端口向客戶端的XX端口發送連接請求,建立一條數據傳輸鏈路。
PASV(被動)是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了XX端口,你過來連接我”。於是客戶端向服務器的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2、賬號介紹
用戶賬號類型:
匿名用戶:—>(ftp)home dir
系統用戶:操作系統存在 ->home dir
虛擬用戶:有賬號和密碼,但賬號不能用於登錄系統,可訪問ftp服務
用戶賬號驗證可用如下方式:file,kerberos,LDAP,mysql,nis
authentication 認證:合法用戶(用戶名/密碼),生物識別(指紋)
authorization 授權:使用那些資源
audition 審計:記錄授權下用戶動作
隨時換認證機制
操作系統爲用戶提供了公共調用PAM(sum)認證框架framework可方便支持n種認證機制
認證需要用的配置文件/etc/pam.d下面,而依賴的庫文件在/lib/security/下面
authentication 認證:合法用戶(用戶名/密碼),生物識別(指紋)
authorization 授權:使用那些資源
audition 審計:記錄授權下用戶動作
隨時換認證機制
操作系統爲用戶提供了公共調用PAM(sum)認證框架framework可方便支持n種認證機制
認證需要用的配置文件/etc/pam.d下面,而依賴的庫文件在/lib/security/下面
ftp服務器
WU-ftpd 很早,但模式單一,安全欠佳
proftpd web 功能多時用,對不同用戶有不同權限
vsftpd:very secure功能單一,權限嚴格,最安全,ssl,虛擬用戶
c/s 客戶端
filezilla(linux|windows)
flashfxp 多線程
cuteftp
瀏覽器
linux gftp
命令行
ftp
lftp
WU-ftpd 很早,但模式單一,安全欠佳
proftpd web 功能多時用,對不同用戶有不同權限
vsftpd:very secure功能單一,權限嚴格,最安全,ssl,虛擬用戶
c/s 客戶端
filezilla(linux|windows)
flashfxp 多線程
cuteftp
瀏覽器
linux gftp
命令行
ftp
lftp
linux vsftpd 主要文件清單
/etc/sbin/vsftpd:服務文件。r/etc/rc.d/init.d/vsftpd
/etc/vsftpd.conf:配置文件。/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers:不能用於ftp登錄的用戶。
/var/ftp:默認的匿名用戶(anonymous或ftp,無密碼)登錄的目錄。
/etc/sbin/vsftpd:服務文件。r/etc/rc.d/init.d/vsftpd
/etc/vsftpd.conf:配置文件。/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers:不能用於ftp登錄的用戶。
/var/ftp:默認的匿名用戶(anonymous或ftp,無密碼)登錄的目錄。
3、安裝vsftpd服務
下載地址:http://mirrors.sohu.com
這裏用yum源安裝
yum -y install vsftpd
查看安裝了那些文件
rpm -ql vsftpd
啓動vsftpd:
service vsftpd start
查看是否啓動:
netstat -tunlp | grep :21
ll -d /var/ftp
權限信息不能隨便改,改了能登錄,但不能執行操作。
下載地址:http://mirrors.sohu.com
這裏用yum源安裝
yum -y install vsftpd
查看安裝了那些文件
rpm -ql vsftpd
啓動vsftpd:
service vsftpd start
查看是否啓動:
netstat -tunlp | grep :21
ll -d /var/ftp
權限信息不能隨便改,改了能登錄,但不能執行操作。
4、配置文件介紹
anonymous_enable=YES #允許匿名用戶訪問
local_enable=YES #允許本地用戶訪問,本地用戶id>=500
write_enable=YES #本地用戶有寫權限
local_umask=022 #本地用戶創建文件或目錄的掩碼
connect_from_port_20=YES #開啓20端口
anon_upload_enable=YES 允許匿名用戶具有上傳
anon_mkdir_write_enable=YES 允許匿名用戶具有創建目錄
anon_other_write_enable=yes 匿名用戶刪除文件或重命
anon_world_readable_only=yes 僅能下載全局可讀的文件 ugo
chroot_local_user=yes|no 是否鎖定本地所有用戶 ***yes屏蔽本地所有用戶瀏覽其他目錄的權限
local_enable=YES #允許本地用戶訪問,本地用戶id>=500
write_enable=YES #本地用戶有寫權限
local_umask=022 #本地用戶創建文件或目錄的掩碼
connect_from_port_20=YES #開啓20端口
anon_upload_enable=YES 允許匿名用戶具有上傳
anon_mkdir_write_enable=YES 允許匿名用戶具有創建目錄
anon_other_write_enable=yes 匿名用戶刪除文件或重命
anon_world_readable_only=yes 僅能下載全局可讀的文件 ugo
chroot_local_user=yes|no 是否鎖定本地所有用戶 ***yes屏蔽本地所有用戶瀏覽其他目錄的權限
chroot_local_user=no //屏蔽部分本地用戶瀏覽其他目錄的權限
chroot_list_enable=yes 鎖定到家目錄 鎖定特定本地用戶 ****
chroot_list_file=/etc/vsftpd/chroot_list 一行一用戶
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=50000 #本地用戶的最高速率
anon_max_rate=30000 #匿名用戶的最高速率
ftpd-banner 歡迎信息
chroot_list_enable=yes 鎖定到家目錄 鎖定特定本地用戶 ****
chroot_list_file=/etc/vsftpd/chroot_list 一行一用戶
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=50000 #本地用戶的最高速率
anon_max_rate=30000 #匿名用戶的最高速率
ftpd-banner 歡迎信息
userlist_enable=yes 文件列表,
userlist_deny=yes|no yes拒絕 no僅允許列在此文件的表表
/etc/vsftp/user_list
userlist_deny=yes|no yes拒絕 no僅允許列在此文件的表表
/etc/vsftp/user_list
service httpd start
netstat -tunlp | grep :443
netstat -tunlp | grep :443
用tcpdump可在網卡混雜模式下抓包,進行分析,如果是明文傳輸可能抓取到用戶名和密碼不安全,需要啓用ssl功能
tcpdump -X -i eth0 -nn -p host 172.16.100.1 and tcp port 21
tcpdump [options] [expression]補包格式
-i 那個接口
-n 不反解主機數字
-nn 地址\端口不反解
-X tcp是ascii 16進程和ascii
-p 設定網卡混雜模式 是否本機都發來一份非交換網絡,交換機設置竟像模式
-v
tcpdump -X -i eth0 -nn -p host 172.16.100.1 and tcp port 21
tcpdump [options] [expression]補包格式
-i 那個接口
-n 不反解主機數字
-nn 地址\端口不反解
-X tcp是ascii 16進程和ascii
-p 設定網卡混雜模式 是否本機都發來一份非交換網絡,交換機設置竟像模式
-v
ssl與vsftp結合更加安全:
第一步 給自己建CA
cd /etc/pki/CA
vim ../tls/openssl.cnf
(umask 077;openssl genrsa 1024>private/cakey.pem)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
mkdir newcerts certs crl
touch index.txt
echo 01>serial
echo 01>crlnumber
第二步 給web證書
cd /etc/vsftpd/ssl
mkdir ssl
cd ssl
(umask 077;openssl genrsa 1024>ftp.key)
openssl req -new -key ftp.key -out ftp.csr
openssl ca -in ftp.csr -out ftp.crt
第三步
編緝/etc/vsftpd/vsftpd.conf
添加如何內容:
ssl_enable=yes
ssl_tlsv1=yes
ssl_sslv2=yes
ssl_sslv3=yes
allow_anon_ssl=No
force_local_data_ssl=yes
force_local_logins_ssl=yes
rsa_cert_file=/etc/vsftpd/ssl/ftp.crt
rsa_private_key_file=/etc/vsftpd/ssl/ftp.key
第四步:驗證
可使用ftp客戶端進行驗證
第一步 給自己建CA
cd /etc/pki/CA
vim ../tls/openssl.cnf
(umask 077;openssl genrsa 1024>private/cakey.pem)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
mkdir newcerts certs crl
touch index.txt
echo 01>serial
echo 01>crlnumber
第二步 給web證書
cd /etc/vsftpd/ssl
mkdir ssl
cd ssl
(umask 077;openssl genrsa 1024>ftp.key)
openssl req -new -key ftp.key -out ftp.csr
openssl ca -in ftp.csr -out ftp.crt
第三步
編緝/etc/vsftpd/vsftpd.conf
添加如何內容:
ssl_enable=yes
ssl_tlsv1=yes
ssl_sslv2=yes
ssl_sslv3=yes
allow_anon_ssl=No
force_local_data_ssl=yes
force_local_logins_ssl=yes
rsa_cert_file=/etc/vsftpd/ssl/ftp.crt
rsa_private_key_file=/etc/vsftpd/ssl/ftp.key
第四步:驗證
可使用ftp客戶端進行驗證
vsftpd與Tcp_wrapper結合
1.編輯/etc/vsftpd/vsftpd.conf
tcp_wrapper=yes
2.編輯/etc/hosts.deny
vsftpd: 172.16. EXECPT 172.16.23.1
3.效果 172.16網段中只有172.16.23.1能訪問此ftp
1.編輯/etc/vsftpd/vsftpd.conf
tcp_wrapper=yes
2.編輯/etc/hosts.deny
vsftpd: 172.16. EXECPT 172.16.23.1
3.效果 172.16網段中只有172.16.23.1能訪問此ftp