以爲有用請頂一下,謝謝 node
先上配置設置 mysql
Vsftp經常使用參數一覽表: c++
編 算法 |
參數選項 sql |
意義及用法 數據庫 |
1、全局配置參數(一樣用於本地用戶、匿名用戶、虛擬用戶) vim |
||
登陸信息參數: 數組 |
|
|
1 安全 |
dirmessage_enable=YES 服務器 |
當切換目錄時,顯示該目錄下.message隱藏文件的內容。 默認狀況下有message_file=.message |
2 |
ftpd_banner=welcome to simon’s ftp server |
當登陸服務器成功時顯示的banner信息。 |
3 |
banner_file=/etc/vsftpd/banner_file |
登陸服務器成功後顯示/etc/vsftpd/banner_file的信息。 |
4 |
banner_fail=/etc/vsftpd/banner_fail |
登陸服務器失敗後顯示/etc/vsftpd/banner_fail的信息。 |
l 若是設置了ftp_banner=的值,登陸服務器將覆蓋vsftpd默認的鏈接後的信息。 l 若是同時設置了ftp_banner=和banner_file=,那麼banner_file將覆蓋ftp_banner=的值。 |
||
日誌文件參數:(用於開啓本地用戶匿名用戶和虛擬用戶的上傳和下載的日誌功能) |
||
5 |
xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/vsftpd |
激活上傳和下載日誌功能。 啓用xferlog格式的日誌。 指定日誌的存放位置/var/log/vsftpd |
性能參數: |
||
6 |
設置空閒的用戶會話中斷時間: idle_session_timeout=600 |
用戶會話閒置10分鐘後被中斷 |
7 |
設置空閒的數據鏈接中斷時間: data_connection_timeout=120 |
將在數據鏈接空閒2分鐘後被中斷 |
8 |
設置客戶端空閒時自動中斷和激活的鏈接時間 accept_timeout=60 connect_timeout=60 |
將客戶空閒一分鐘後自動中斷鏈接 並在中斷一分鐘後自動激活鏈接 |
9 |
設置被動鏈接時客戶端鏈接時的端口範圍 pasv_min_port=50000 pasv_max_port=60000 |
將客戶鏈接時的端口範圍在50000到60000之間。 |
10 |
listen=YES |
vsftpd處於獨立的啓動模式下工做。開啓ipv4支持 |
11 |
listen_port=21 默認21 |
Vsftpd監聽的端口默認爲21 |
12 |
listen_ipv6=YES |
開啓ipv6支持。 |
13 |
tcp_wrappers=YES |
使用tcp_wrappers做爲主機的訪問控制。 |
14 |
pam_service_name=vsftpd |
設置使用的pam驗證的配置文件名稱,默認路徑在/etc/pam.d中 |
15 |
nopriv_user=ftp | nobody |
指定vsftp服務運行時的帳號。 |
16 |
ls_recurse_enable=YES |NO 默認 YES |
是否容許用戶使用ls –R遞歸列表比較佔用系統資源 |
17 |
dirlist_enable=YES |NO 默認YES |
是否容許用戶使用dir、ls 之類得列目錄命令。 |
18 |
download_enable=YES |NO 默認 YES |
是否容許用戶下載文件 |
19 |
write_enable=YES | NO 默認NO |
是否容許用戶上傳(包括本地用戶、匿名用戶上傳的前提條件) |
20 |
local_enable=YES | NO 默認YES |
本地用戶是否能夠訪問ftp服務器 |
21 |
deny_file={*.exe,*.dll} |
設置不容許傳輸的文件類型{}包括上傳下載。 |
22 |
max_clients=200 |
設置最大的鏈接數量 |
23 |
max_per_ip=3 |
同一IP地址最多的鏈接數量,超過將被拒絕。 |
24 |
use_localtime=YES |
是否使用本地時間?默認使用GMT時間,文件時間比中國晚8個小時,建議設置爲YES |
2、本地用戶配置參數: |
||
25 |
local_enable=YES | NO 默認 YES |
是否容許本地用戶訪問,默認容許。 |
26 |
local_umask=xxxx ( 四位) |
1. 無論源文件權限如何,上傳後文件根據由xxxx決定。777-xxx 2. 無論源文件權限如何,也無論xxx是否屏蔽1可執行,上傳文件都不可執行。上傳後的文件永遠不可執行。 3. 默認xxx爲177(0077) 4. 創建目錄權限爲700 |
27 |
local_max_rate=50000 50k |
設置本地用戶傳輸的最大速率(0爲不限制) |
囚監本地用戶使其不能切換到自家目錄外選項: |
||
28 |
chroot_local_user=YES | NO 默認NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list |
是否囚監本地用戶使其不能切換到自家目錄。(默承認以切換) 表示轉折開啓囚監列表功能,在列表中的用戶但是例外。 囚監列表文件的存放位置。 |
|
||
29 |
userlist_enable=YES userlist_deny=YES | NO userlist_file=/etc/vsftpd/userlist_file指定列表文件
|
是否開啓userlist訪問控制功能。 列表中的用戶是否被禁止訪問,YES禁止列表中的用戶。NO除列表中用戶外都被禁止。當NO時,只有在列表中加入「ftp」匿名用戶才能夠訪問。或加入「anonymous」,anonymous才能夠訪問。當最終文件擁有者仍爲「ftp」用戶。 |
30 |
local_root= |
默認沒有此參數,將本地用戶引導到自家目錄當中,也可加入此參數,指定本地用戶來登陸後進入其餘目錄中。 |
3、匿名用戶選項參數:保證1#setsebool –P allow_ftpd_anon_write=1 2#chcon –R –t public_content_rw_t /var/ftp或第二項#setsebool –p allow_ftpd_full_access=1 |
||
31 |
anonymous_enable=YES |NO 默認YES |
匿名用戶是否能夠訪問下載。默承認以 |
匿名用戶上傳選項 保證匿名用戶有寫的權限 如: chmod o+w /var/ftp/pub |
||
32 |
anon_world_readable_only=YES | NO 默認NO anon_upload_enable=YES |NO 默認NO anon_mkdir_write_enable=YES |NO 默認NO anon_other_write_enable=YES |NO 默認NO |
匿名用戶是否能夠上傳,默認不能夠。 匿名用戶是否能夠創建目錄,默認不能夠。 匿名用戶是否能夠執行刪除,重命名等 |
33 |
anon_max_rate= 單位B |
設置匿名用戶傳輸的最大速率(0爲不限制) |
34 |
chown_uploads=YES |NO 默認NO chown_username= |
匿名用戶上傳文件是否更改文件的擁有者(擁有組還是FTP)匿名用戶創建文件夾,擁有者還是FTP 更改後的擁有者。 |
35 |
anon_umask=xxxx(四位) |
同local_umask |
4、虛擬用戶選項參數:虛擬用戶訪問前提條件:local_enable=YES 默認爲NO 無論anonymous_enable=YES或NO |
||
36 |
guest_enable=YES |NO guest_username= |
開啓虛擬用戶選項 指定虛擬用戶執行FTP時,映射成的本地用戶 |
37 |
user_config_dir=/etc/vsftpd/config設置放置虛擬用戶各自的配置文件,以該用戶名字命名 |
|
38 |
local_root= 設置虛擬用戶各自的家目錄 |
|
|
虛擬用戶其餘選項參數由匿名用戶的選項參數決定。 |
|
5、FTPS配置參數:如下參數除allow_anon_ssl=外 ,其餘對本地用和虛擬用戶有效,但此參數組寫進虛擬用戶各自配置文件當中無效(user_config_dir=) |
||
39 |
ssl_enable=YES | NO 默認NO ssl_sslv2=YES ssl_sslv3=YES ssl_tlsv1=YES |
指定vsftpd支持加密協議 指定vsftpd支持安全套接字層v2,v3,tls加密方式v1 |
40 |
force_local_logins_ssl=YES |NO |
強制本地用戶和虛擬用戶 ssl 加密登陸 |
41 |
force_local_data_ssl=YES | NO |
強制本地用戶和虛擬用戶數據傳輸用ssl |
42 |
rsa_cert_file=/etc/vsftpd/.sslkey/vsftp.pem |
指定證書存放位置 |
43 |
allow_anon_ssl=YES |NO |
容許匿名用戶ssl加密登陸 |
搭建
------------------------
(能夠應用於任何用戶驗證。能夠利用本博的博文抓包驗證)
#mkdir /etc/vsftpd/.sslkey //創建存放證書的目錄
#cd /etc/vsftpd/.sslkey //進入該目錄以備創建證書
#openssl req –new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem //生成證書,Common Name必須是客戶端訪問FTP服務器時的FQDN.
#chmod -R 400 /etc/vsftpd/.sslkey //保證證書安全,修改證書目錄的權限。
在/etc/vsftpd/vsftpd.conf配置文件中添加:
ssl_enable=YES ssl_sslv2=YES ssl_sslv3=YES ssl_tlsv1=YES
force_local_logins_ssl=YES force_local_data_ssl=YES
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
#service vsftpd restart
------------------------
#setsebool –P ftp_connect_db=1
mysql正常運行須要per-*軟件包的支持
pam_mysql須要安裝mysql_devel
#useradd –d /var/ftp/vuser -s /sbin/nologin //在系統中增長一個本地用戶vuser。
#chmod o+rwx /var/ftp/vuser //讓數據庫中虛擬用戶test1和test2具備可讀寫執行權限。
在vsftpd配置文件中加入兩條:
guest_enable=YES //容許虛擬用戶登陸
guest_username=vuser //把test1,test2虛擬用戶映射成本地用戶vuser.
(虛擬用戶訪問服務器必須保證前提條件local_enable=YES默認爲NO,與anonymous_enable=是否爲NO無關,
虛擬用戶要上傳文件必須保證前提條件write_enable=YES,虛擬用戶的特殊參數user_config_dir=,在各自的配置文件中能夠加入一條本地用戶配置參數local_root=和userlist(chroot選項不起做用,虛擬用戶不能夠切換到虛擬目錄外的目錄),其它參數由匿名用戶的各個參數和全局配置參數與決定如:
anon_umask= ,anon_upload_enable=,anon_mkdir_write=,anon_other_write_enable=)。
源碼編譯安裝pam_mysql.模塊路徑爲/usr/lib/security/pam_mysql.so
編輯/etc/pam.d/vsftpd註釋掉原來的參數選項,添加:
auth required /usr/lib/security/pam_mysql.so user=simon passwd=redhat host=loclahost db=vftpuser
table=users usercolumn=name passwdcolumn=pwd crypt=2
account required /usr/lib/security/pam_mysql.so user=simon passwd=redhat host=loclahost db=vftpuser
table=users usercolumn=name passwdcolumn=pwd crypt=2
------------------------
PAM_MYSQL 驗證登錄實驗
OS: Red Hat Enterprise Linux Server release 6.3 (Santiago) 64位系統
Network: 192.168.1.33/ 255.255.0.0
內核: 2.6.32-279.el6.x86_64
數據庫: mysql-5.1.61-4.el6.x86_64
FTP服務器: vsftpd-2.2.2-11.el6.x86_64
相關聯的其它軟件:mysql-devel-5.1.61-4.el6.x86_64 pam-devel-1.1.1-10.el6_2.1.x86_64
gcc-4.4.6-4.el6.x86_64 gcc-c++-4.4.6-4.el6.x86_64
注:本次實驗系統配置基本上是默認安裝,所需軟件系統自帶,除pam_mysql-0.7RC1.tar.gz另外下載,SELinux禁用,防火牆經過FTP功能。
第一步:安裝pam_mysql
首先要說下,pam_mysql 在 RHEL6.3裏目前尚未加入,須要自行編譯.準備編譯環境並編譯 pam_mysql.so (mysql-devel pam-devel gcc gcc-c++系統默認安裝自帶)
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
#tar zxvf pam_mysql-0.7RC1.tar.gz
#cd pam_mysql-0.7RC1
#./configure
#make
#make install
編譯完的 pam_mysql.so 放在 /lib/security 下是 pam 的默認路徑。
64位系統的全部pam模塊都在/lib64/security/
#ln /lib/security/pam_mysql.* /lib64/security/ 要作成硬連接
第二步:建立數據庫信息
[root@shinegoo /]# service mysqld start 啓動數據庫服務器
[root@shinegoo /]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
一、創建數據庫
mysql> create database vsftp;
Query OK, 1 row affected (0.02 sec)
二、建立用戶權限
mysql> grant all privileges on vsftp.* to virtual@"%" identified by '123456';
Query OK, 0 rows affected (0.00 sec)
切換數據庫
mysql> use vsftp;
Database changed
三、建立用戶賬號數據表
mysql> create table account (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(128) NOT NULL UNIQUE,
-> passwd VARCHAR(128) NOT NULL
-> )engine=myisam; // engine=myisam是性能極高的引擎,支持全文本搜索,不支持事務。
Query OK, 0 rows affected (0.10 sec)
四、建立日誌記錄表,記錄用戶訪問信息
mysql> create table log (
-> msg varchar(128),
-> user varchar(128),
-> pid int,
-> host varchar(128),
-> rhost varchar(128),
-> time timestamp
-> )engine=innodb; // engine=innodb支持事務處理,不支持全文本搜索,以上兩項可不要。
Query OK, 0 rows affected (0.08 sec)
五、建立觸發器,自動把更新的密碼用 md5 加密方式加密(本次配置下沒建立,由於md5不是很穩定!)
mysql> CREATE TRIGGER trigger_format_passwd (注刪除:drop trigger trigger_format_passwd)
-> BEFORE INSERT
-> ON account
-> FOR EACH ROW
-> SET NEW.passwd = md5(NEW.passwd);
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TRIGGER trigger_format_passwd_update (注刪除:drop trigger 觸發器名)
-> BEFORE UPDATE
-> ON account
-> FOR EACH ROW
-> SET NEW.passwd = md5(NEW.passwd);
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
第三步:建立 pam 認證規則內容(注: 只能有兩行不能有空格)
[root@shinegoo pam.d]# vim vsftpd_mysql 建vsftpd_mysql文件名
[root@shinegoo pam.d]# cat /etc/pam.d/vsftpd_mysql
auth required /lib64/security/pam_mysql.so user=virtual passwd=123456 host=192.168.1.33 db=vsftp table=account usercolumn=name passwdcolumn=passwd crypt=0 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time verbose=1
account required /lib64/security/pam_mysql.so user=virtual passwd=123456 host=192.168.1.33 db=vsftp table=account usercolumn=name passwdcolumn=passwd crypt=0 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time verbose=1
[root@localhost pam.d]#
user:鏈接 mysql 的用戶
passwd:鏈接 mysql 的用戶密碼
host:mysql 服務器地址,格式能夠是ip ip:port unix socket,好比/tmp/mysql.sock
db:存放 vsftp 驗證信息的數據庫
table:用戶信息表
usercolumn:用戶信息表用戶名列
passwdcolumn:用戶信息表密碼列
logtable:日誌表
logmsgcolumn:日誌表消息列,記錄日誌消息主體。
logusercolumn:日誌表用戶列,記錄訪問 ftp 的用戶。
logpidcolumn:日誌表 pid 列,記錄調用 pam_mysql.so 的進程的pid。
loghostcolumn:日誌表 host 列,記錄 ftp 服務器 ip。
logrhostcolumn:日誌表 rhost 列,記錄 ftp 客戶端 ip.
logtimecolumn:日誌表時間列,記錄用戶訪問的時間。
crypt:加密方式,一共支持
0 / plain 明文密碼。
1 / Y crypt 加密方式,在 mysql 查詢語句中對應 encrypt 函數。
2 / mysql passwd 加密方式,在 mysql 查詢語句中對應 password 函數。
3 / md5 md5 加密方式,在 mysql 查詢語句中對應 md5 函數。
4 / sha1 sha1 加密方式,在 mysql 查詢語句中對應 sha1 函數。
若是 RHEL6.3 上要使用 3 方式進行加密,務必把/etc/my.cnf 裏面的 old_passwords=1 改爲 old_passwords=0,不然 mysql 會使用老的加密算法,致使和 pam_mysql.so 密碼驗證不成功。
上面配置我不作過多解釋。你們請看 pam_mysql 的 README,有很詳盡的解釋。
#chmod 600 vsftpd_mysql //(注:vsftpd_mysql 含有密碼信息,因此務必修改權限!)
#chown root.root vsftpd_mysql
第四步:建立虛擬用戶
useradd -d /home/virtual -s /sbin/nologin virtual
chown –R virtual.virtual /home/virtual/ virtual
chmod -R 700 /home/virtual
第五步:修改 vsftpd 配置文件,指定由pam 配置文件來進行用戶身份驗證
/etc/vsftpd/vsftpd.conf的配置以下
anonymous_enable=NO
local_enable=YES //容許本地用戶訪問(/etc/passwd中的用戶)
write_enable=NO //控制是否容許使用任何能夠修改文件系統的FTP 的指令
local_umask=022
dirmessage_enable=YES
message_file=.message //目錄提示信息的內容文件
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
listen=YES
#listen_port=21 //綁定到某個端口
#ftp_data_port=20 //數據傳輸端口
pam_service_name=vsftpd_mysql
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/user_config
userlist_enable=YES
ftpd_banner=Welcome to 先谷科技 FTP service.
#chroot_local_user=YES //限制用戶在本身的主目錄 整個其它目錄都不能看到 全局性
#ls_recurse_enable=NO //使用ls -R命令會消耗大量系統資源
#one_process_model=YES //是否使用單進程模式,此項只有anonymous_enable=NO時纔不會出錯
idle_session_timeout=120 //空閒鏈接超時
data_connection_timeout=300 //數據傳輸超時
accept_timeout=60 //PAVS請求超時
connect_timeout=60 //PROT模式鏈接超時
reverse_lookup_enable=NO //解決登錄驗證緩慢問題.〈新加進去的沒實際測試過2011/12/15〉
anon_max_rate=2000000 //匿名用戶的傳輸比率 (b/s) (2M)
local_max_rate=500000000 //本地用戶的傳輸比率(b/s) (500M) 虛擬用戶
max_clients=200 //可接受的最大client數目
max_per_ip=4 //每一個ip的最大client數目
tcp_wrappers=YES
[root@localhost vsftpd]# service vsftpd start 重啓 ftp 服務
Starting vsftpd for vsftpd: [ OK ]
[root@localhost vsftpd]# 第六步:添加用戶權限配置文件 [root@shinegoo vsftpd]# mkdir user_config //在目錄下/etc/vsftpd/創建存放用戶配置文件夾 [root@shinegoo vsftpd]#cd user_config [root@shinegoo user_config]# vim admin (編輯用戶權限) #local_root=/mdraid5 #write_enable=YES #anon_upload_enable=YES //控制匿名用戶文件上傳, 只有在write_enable=YES時,此項纔有效 #anon_mkdir_write_enable=YES //控制文件夾的建立, 只有在write_enable=YES時,此項纔有效 #anon_other_write_enable=YES //控制對文件和文件夾的刪除和重命名 #anon_world_readable_only=YES //文件下載, 具備全球讀權限的文件(非目錄)能夠下載到本機閱讀 #virtual_use_local_privs=YES //加上這句用戶能看到目錄和文件顯示信息 #chmod_enable=YES #file_open_mode=0775 //上傳檔案的權限,與chmod 所使用的數值相同。若是但願上傳的文件能夠執行,設此值爲0777。默認值爲0666。 #local_max_rate=500000000 //本地用戶的傳輸比率(b/s) (500M) 虛擬用戶 第七步:建立用戶數據添加用戶名和密碼 [root@shinegoo user_config]# mysql -u root –p mysql> use vsftp; mysql> insert into account (name, passwd) values ("admin", "12345678"); Query OK, 1 row affected (0.00 sec) mysql> select * from account; +----+-------+----------+ | id | name | passwd | +----+-------+----------+ | 1 | admin | 12345678 | +----+-------+----------+ 1 row in set (0.00 sec) mysql> quit Bye 第八步:測試登陸 [root@shinegoo user_config]# ftp 192.168.1.33 Connected to 192.168.1.33 220 Welcome 530 Please login with USER and PASS. Name (192.168.1.33:root): admin 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ftp> 第九步:查看日誌 [root@shinegoo vsftpd]# mysql -u root -p mysql> use vsftp; mysql> select * from log; +------------------------------------+-------+------+-----------+--------------+---------------------+ | msg | user | pid | host | rhost | time | +------------------------------------+-------+------+-----------+--------------+---------------------+ | AUTHENTICATION FALURE (FIRST_PASS) | admin | 5854 | (unknown) | 172.31.0.110 | 2012-08-11 11:56:57 | | AUTHENTICATION SUCCESS | admin | 5854 | (unknown) | 172.31.0.110 | 2012-08-11 11:56:57 | | QUERYING SUCCESS | admin | 5854 | (unknown) | 172.31.0.110 | 2012-08-11 11:56:57 | +------------------------------------+-------+------+-----------+--------------+---------------------+ 3 rows in set (0.00 sec) mysql> 系統管理 OS:系統用戶名 root 密碼:1 Mysql數據庫:用戶名root和vsftp 密碼:空 和123456(virtual虛擬用戶) VSFTPD管理員:admin 密碼:12345678