配置FTP服務器
vsftpd:Very Secure
,是一個基於
GPL
發佈的類
UNIX
系統上使用的
FTP
服務器的軟件,具備安全、穩定
(
單機上支持
4000
個以上的併發用戶同時鏈接
)
和高速
(
千兆以太網可達
86M
/s)
的特色
著名的
vsftpd
站點
:ftp.redhat.com ftp.suse.com ftp.gnome.org
3.FTP
服務的使用者
:
本地用戶
(
本地用戶可能經過輸入自已的賬號和口令登錄到自家目錄,便可如下載也能夠上傳
)
、虛擬用戶
(FTP
服務器上只用於文件傳輸的的賬號
)
和匿名用戶
(
匿名用戶能夠輸入
anonmous
或
ftp
和口令用戶本身的
E-Mail
地址來進行登錄
)
三
.FTP
服務器的配置
2.
啓動
vsftpd
service vsftpd start
pstree|grep vsftpd
ntsysv
3.Red Hat Linux9
中的配置文件
/etc/vsftpd/vsftpd.conf
是主配置文件
/etc/vsftpd.ftpusers
指定哪些用戶不能訪問
FTP
服務器
/etc/vsftpd.user_list
中指定的用戶在
/etc/vsftpd/vsftpd.conf
中設置了
userlist_enable=YES
且
userlist_deny=YES
時不能訪問
FTP
服務器
4.vsftpd
的默認主配置文件
anonymous_enable=YES
容許匿名登陸
local_enable=YES
容許本地用戶登陸
write_enable=YES
開放本地用戶的寫權限
local_umask
設置本地用戶的文件生成掩碼爲
022,
默認值爲
077
dirmessage_enable=YES
xferlog_enable=YES
激活上傳和下載日誌
connect_from_port_20=YES
啓用
FTP
數據端口的鏈接請求
xferlog_std_name=vsftpd
使用標準的
ftpd xferlog
日誌格式
pam_service_name=vsftpd
設置
PAM
認證服務的配置文件名稱,
該文件存放在
/etc/pam.d/
目錄下
userlist_enable=YES
文件中所列的用戶均不能訪問此
vsftpd
服務器
listen=YES
使
vsftpd
處於獨立啓動模式
tcp_wrappers=YES
使用
tcp_wrappers
做爲主機訪問控制方式
例
1.
容許匿名用戶上傳
anon_upload_enable=YES
容許匿名用戶上傳
write_enable=YES
匿名用戶對文件系統的上傳目錄具備寫權限
anon_mkdir_write_enable=YES
開啓匿名用戶的寫和建立目錄的權限
anon_world_readable_only=NO
放開匿名用戶
YES
覽權限
,
即瀏覽此服務器中所有的內容
anon_other_write_enable=YES
開放了文件改名、刪除文件等權限
建立匿名上傳目錄
mkdir /var/ftp/incoming
#chmod o+w /var/ftp/incoming/
#service vsftpd restart
測試匿名用戶上傳
ftp 192.168.1.57
>ls
列出文件和目錄列表
put install.log
將本地文件傳送至遠程主機
mkdir newdir bye
退出
ftp
例
2.
配置基於本地用戶的訪問控制
限制指定的用戶不能訪問,而其餘本地用戶可訪問。例如
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
使文件
/etc/vsftpd.user_list
中指定的本地用戶不能訪問
FTP
服務器
限制指定的用戶能訪問,而其餘本地用戶不能訪問。例如
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
使文件
/etc/vsftpd.user_list
中指定的本地用戶能訪問
FTP
服務器
例
3.
配置基於主機的訪問控制
Vsftpd
從版本
1.1.3
之後內置了對
TCP_wrppers
支持,爲獨立的
vsftpd
提供基於主機的訪問控制配置
.TCP_wrappers
使用
/etc/hosts.allow
和
/etc/hosts.deny
兩個配置文件實現訪問控制
#cat /etc/vsftpd/vsftpd.conf|grep tcp_wrappers
tcp_wrappers=YES
#cat<<! >>/etc/vsftpd/vsftpd.conf
>local_max_rate=10000
>anon_max_rate=10000
>max_per_ip=1
>!
編輯
/etc/hosts.deny
ALL: ALL@ALL, PARANOID
除非在
allow
文件中說明容許訪問,全部服務、全部主機都被拒絕。
編輯
/etc/hosts.allow
#cat<<!>>/etc/hosts.allow
>vsftpd:.smartrainig.com,192.168.1.0/24 \
>:setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd_tcp_wrap.conf
>vsftp: 202.54.15.99 foo.com
對於你的客戶機來講:
202.54.15.99
爲
IP
地址,
foo.com
爲容許使用
ftp
的一個客戶機。
>vsftpd:192.168.1.0/255.255.255.0:allow
vsftpd:
主機表:
setenv VSFTPD_LOAD_CONF
配置文件名
vsftpd
表示是對
vsftpd
進程實施訪問控制
表示當遇到主機表中的主機訪問本
FTP
服務器時,修改環境變量的值爲指定的配置文件名
.
其意圖是讓
vsftpd
守護進程讀取新的配置文件中的配置項來覆蓋主配置文件中的配置,關於主機表的書寫形式
Hostname
可解析的主機名
IP Address
點分十進制表示的
IP
地址
.domain
匹配一個域中的全部主機,表示在
DNS
域
smartraining.com
中的任何主機
network-number
匹配
IP
地址的開始部分,如
192.168 IPAddress/netmask
定義要匹配的網絡或子網,例
172.19.16/20
匹配從
172.19.16.0
到
172.19.31.255
編輯
/etc/vsftpd/vsftpd_tcp_wrap.conf
#cat<<!>>/etc/vsftpd/vsftpd.conf
>local_max_rate=0
>anon_max_rate=0
>max_per_ip=0
>!
#service vsftpd restart
例
4.
配置本地組訪問的
FTP
服務器
本地組
softgrp
有
3
個用戶
soft
、
soft1
和
soft2
,其中
soft
對
FTP
有讀寫權限,而
soft1
和
soft2
對
FTP
只有讀的權限,可藉助於本地文件系統的權限設置來實現
#vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
chroot_local_user=YES
不容許本地用戶切換到自家目錄之外的目錄進行瀏覽
#mkdir -p /var/local-ftp/softgrp
#groupadd softgrp
#groupadd softgrp
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft -G
指定新用戶的附加組
-d
指定宿主目錄
-M
不創建新用戶的自家目錄
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft1
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft2
#passwd soft #passwd soft1 #passwd soft2
#chown soft.softgrp /var/local-ftp/softgrp
#chmod 750 /var/local-ftp/softgrp
#ll -d /var/local-ftp/softgrp
#ftp 192.168.1.57
ftp>put install.log
ftp>close
ftp>open 192.168.1.57
例
5.
配置
vsftpd
在非標準端口下提供服務
#echo "listen_port=10021">>/etc/vsftpd/vsftpd.conf
#service vsftpd restart
#ftp 192.168.1.57 10021
ftp>bye
例
6.
配置獨立啓動的基於
IP
的虛擬
FTP
服務器
配置虛擬
IP
地址
創建虛擬
FTP
的服務器目錄並設置適當的權限
創建虛擬
FTP
的服務器的主配置文件
#ifconfig |grep -1 eth0
#ifconfig eth0:1 192.168.1.57 up
#ifconfig |grep -1 eth0:1
#mkdir -p /var/ftp2/pub
#ll -d /var/ftp2/pub
#ll -d /var/ftp2
#echo "hello">/var/ftp2/pub/test_file
#useradd -d /var/ftp2 -M ftp2
#vi /etc/vsftpd/vsftpd.conf
listen_address=192.168.1.67
#cp /etc/vsftpd/vsftpd.conf.rh9 /etc/vsftpd/vsftpd_site2.conf
#vi /etc/vsftpd/vsftpd_site2.conf
listen_address=192.168.1.234
ftp_username=ftp2
ftpd_banner=This is the alternative FTP site,and vsftpd in "standalone" mode.
#service vsftpd restart
測試
例
7.
配置簡單的虛擬用戶
FTP
服務器
生成虛擬用戶口令庫文件
配置生成
vsftpd
的認證文件
創建虛擬用戶所要訪問的目錄並設置相應權限
創建配置文件
cat <<! >logins.txt
>tom
>foo
>fred
>bar
單數行爲用戶名,偶數行爲口令
#db_load -T -t hash -f ~/logins.txt /etc/vsftpd/vsftpd_login.db
使用
db_load
命令生成口令庫文件前,要先安裝
db4-utils-
4.0.14
-20
工具插入第二張光盤
#rpm -ivh db4_utils-4.0.14-20.i386.rpm
#chmod 600 /etc/vsftpd/vsftpd_login.db
#vi /etc/pam.d/vsfpt.vu
類型
(type)
控制
(control)
模塊路徑
(module-path)
模塊參數
(module-arguments)
auth required /lib/security/pam_userdb.so db=/etcvsftpd/vsftpd_login
accout required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
PAM,Pluggable Authentication Modules for Linux
類型
:accout
驗證用戶賬號是否被容許訪問服務,如用戶賬號口令是否已過時等
auth
驗證用戶身份,通常爲經過口令進行驗證
控制
:
控制標記告訴
PAM
如何對待模塊認證失敗,例
:required
模塊認證失敗會致使拒絕用戶認證,但在拒絕用戶以前
PAM
仍將調用全部的其餘模塊
模塊路徑
:module-path
告訴
PAM
使用哪一個模塊的路徑
,
如未給出模塊路徑
PAM
會在默認的
PAM
模塊目錄
/lib/security
中查找
模塊參數
:module-arguments
用於給模塊傳遞參數
#useradd -d /home/ftpsite virtual
#chmod 700 /home/ftpsite/
#su -virtual -c "echo hello>/home/ftpsite/test_file"
#cp /etc/vsftpd/vsftpd/conf/bak /etc/vsftpd/vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
one_process_model=NO
這個設定項目比較危險一點
,
當設定爲
YES
時,表示每一個創建的連線都會擁有一支
process
在負責,能夠增長
vsftpd
的效能。不過,除非您的系統比較安全,並且硬體配備比較高,不然容易耗盡系統資源!通常建議設定爲
!
chroot_local_user=YES
ftp_banner=This FTP server is virtual user only
guest_enable=YES
guest_username=virtual
pam_service_name=vsftp.vu
#service vsftpd restart
下面分別建立虛擬用戶
tom
的配置文件
#vi /etc/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf
激活對不一樣的虛擬用戶進行不一樣權限配置的配置語句
#vi /etc/vsftpd_user_conf/tom
anon_upload_enable=YES
write_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
例
8.
配置安全的
vsftpd
僅僅容許匿名用戶訪問
anonymous_enable=YES
不容許本地用戶訪問
local_enable=NO
關閉全部寫權限
write_enable=NO
不容許匿名用戶上傳
anon_upload_enable=NO anon_other_write_enable=NO
設置客戶端鏈接時的端口範圍
pasv_min_port=50000 pasv_max_port=60000
設置匿名用戶的最大傳輸速率限制
anon_max_rate=50000
設置空閒的數據鏈接的中斷時間
data_connection_timeout=300
設置客戶端空閒時的自動中斷和激活鏈接的時間
accept_timeout=60 connect_timeout=60
配置每一個主機的最大鏈接數
max_per_ip=5
配置總的併發鏈接數
instances=60
配置禁止訪問的主機
userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd/user_list
配置安全日誌
xferlog_enable=YES anon_world_readable_only=YES connect_from_port_20=YES