1. 程式人生 > >Linux ftp介紹

Linux ftp介紹

linux ftp

FTP工作模式分主動跟被動兩種
技術分享圖片

匿名用戶跟系統用戶配置

1、安裝

[root@localhost pam.d]# yum install vsftpd

[root@localhost pam.d]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

#更多查看
[root@localhost pam.d]# rpm -ql vsftpd
#家目錄
[root@localhost pam.d]# grep ‘ftp‘ /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

2、啟動

[root@localhost pam.d]# systemctl start vsftpd
[root@localhost pam.d]# ps -ef|grep vsftpd
root       3090      1  0 14:19 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[root@localhost pam.d]# ss -antup|grep vs
tcp    LISTEN     0      32       :::21                   :::*                   users:(("vsftpd",pid=3090,fd=3))

3、客戶端安裝 匿名登入

[root@ns1 test]# yum install lftp

#vsftpd以ftp用戶的身份運行進程,默認認用戶即為ftp用戶,匿名用戶的默認路徑即ftp用戶的家目錄/var/ftp 
#    ftp, anonymous
#匿名
[root@ns1 test]# lftp -u ftp 172.16.86.202
Password:
lftp [email protected]:~> ls
drwxr-xr-x    2 0        0               6 Aug 03  2017 pub

#匿名
[root@ns1 test]# lftp -u anonymous 172.16.86.202
Password:
lftp [email protected]:~>

lftp命令介紹
技術分享圖片

4、認證方式查看 默認用系統用戶驗證方式

[root@localhost ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #黑名單,由於報文是明文。防止root等用戶登入
auth       required pam_shells.so
auth       include  password-auth   #cat /etc/pam.d/password-auth   跟服務器賬號登入認證同一個
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth
[root@localhost ~]# useradd zander
[root@localhost ~]# echo ‘zander‘|passwd zander --stdin

[root@ns1 test]# lftp -u zander 172.16.86.202
Password:
lftp [email protected]:~> ls -a
drwx------    2 1000     1000           62 May 20 06:59 .
drwxr-xr-x    3 0        0              20 May 20 06:59 ..
-rw-r--r--    1 1000     1000           18 Aug 02  2017 .bash_logout
-rw-r--r--    1 1000     1000          193 Aug 02  2017 .bash_profile
-rw-r--r--    1 1000     1000          231 Aug 02  2017 .bashrc
lftp [email protected]:~> pwd
ftp://[email protected]/%2Fhome/zander

lftp [email protected]:~> put a.txt
838 bytes transferred

5、配置文件

[root@localhost ~]# man vsftpd.conf
[root@localhost pam.d]# cp /etc/vsftpd/vsftpd.conf{,.bak}
[root@localhost pam.d]# vim /etc/vsftpd/vsftpd.conf

#匿名使用方法 __________________________________________________________________________________
#[root@localhost ftp]# ll -d /var/ftp
#匿名登入都在此目錄下,這個目錄屬於root。不能修改權限,若想要匿名能讀寫,則在這個目錄下面創建子目錄
#drwxr-xr-x 4 root root 28 5月  20 15:19 /var/ftp 
#[root@localhost ftp]# mkdir /var/ftp/ftp
#[root@localhost ftp]# chown ftp.ftp /var/ftp/ftp  #配合下面設置

anonymous_enable=YES             # 是否啟用匿名賬號  登入後下載
#anon_upload_enable=YES          # 上傳文件
#anon_mkdir_write_enable=YES     # 創建上傳目錄
#anon_other_write_enable=YES     # 刪除文件目錄

#系統用戶配置__________________________________________________________________________________
local_enable=YES    #是否啟用本地用戶
write_enable=YES    #寫權限包含所有讀寫刪
local_umask=022  

chroot_local_user=YES #禁錮所有本地用戶 於其家目錄;需要事先去除用戶對家目錄的寫權限;  跟下面兩項不能同時使用   [root@localhost ftp]# chmod a-w /home/zander   如果開些鎖住功能沒有減去寫權限,則登入失敗
#上面下面兩項不要同時使用
#chroot_list_enable=YES  #禁錮局部       
#chroot_list_file=/etc/vsftpd/chroot_list

#定義黑名單
#/etc/vsftpd/ftpusers 在這個文件下的系統用戶是不能登入的,因為ftp報文傳輸是明文
#[root@localhost ftp]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
#root
#bin
#....

#定義白名單
#啟用/etc/vsftpd/user_list文件來控制可登錄用戶;
userlist_enable=YES
userlist_deny=YES  默認是黑名單
YES:意味著此為黑名單;
NO:白名單;

#上傳下載速率__________________________________________________________________________________
    anon_max_rate=0
    local_max_rate=0
#並發連接數限制__________________________________________________________________________________
    max_clients=2000
    max_per_ip=50

虛擬用戶配置

1、編譯pam_mysql

[root@localhost pam_mysql-0.7RC1]# yum -y install  pam-devel
[root@localhost packages]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@localhost packages]# tar xf pam_mysql-0.7RC1.tar.gz

[root@localhost pam_mysql-0.7RC1]# ./configure --with-pam=/usr --with-mysql=/www/server/mysql --with-pam-mods-dir=/usr/lib64/security
[root@localhost pam_mysql-0.7RC1]# make && make install

[root@localhost vuser]# head /var/log/secure
May 20 20:42:19 localhost vsftpd[24322]: PAM unable to dlopen(/usr/lib64/security/pam_mysql.so): /usr/lib64/security/pam_mysql.so: undefined symbol: make_scrambled_password
#上述官網包有點問題

[root@localhost pam_mysql-0.7RC1]# wget http://repo.iotti.biz/CentOS/7/x86_64/pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm
[root@localhost pam_mysql-0.7RC1]# yum install pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm
[root@localhost pam_mysql-0.7RC1]# ls /usr/lib64/security/pam_mysql.so
/usr/lib64/security/pam_mysql.so

2、初始化數據庫

mysql> create database vsftpd;
mysql> create table users (id int AUTO_INCREMENT NOT NULL,name char(100)  NOT NULL,password char(100)  NOT NULL,unique key(name),primary key(id));
mysql> insert into users (name,password) values(‘tom‘,PASSWORD(‘tom‘)),(‘jack‘,PASSWORD(‘jack‘));
mysql> grant select on vsftpd.* to vsftpd@‘127.0.0.1‘ identified by ‘111111‘;
mysql> FLUSH PRIVILEGES;
mysql> select * from users;
+----+------+-------------------------------------------+
| id | name | password                                  |
+----+------+-------------------------------------------+
|  1 | tom  | *71FF744436C7EA1B954F6276121DB5D2BF68FC07 |
|  2 | jack | *9BCDC990E611B8D852EFAF1E3919AB6AC8C8A9F0 |
+----+------+-------------------------------------------+
2 rows in set (0.00 sec)

3、創建虛擬用戶映射

[root@localhost ~]# mkdir /ftproot
[root@localhost ~]# useradd -d /ftproot/vuser vuser
[root@localhost ~]# mkdir /ftproot/vuser/pub
[root@localhost ~]# chown vuser.vuser /ftproot/vuser/pub
[root@localhost mysql]# chmod a-w /ftproot/vuser

#註意vuser目錄下是沒有寫權限的,只能在這個目錄下建立能寫的目錄

4、配置文件

[root@localhost ~]# vim /etc/pam.d/vsftpd.vusers
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=111111 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=111111 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

[root@localhost vsftpd]# vim vsftpd.conf
pam_service_name=vsftpd.vusers
guest_enable=YES
guest_username=vuser  #映射上面創建的用戶
user_config_dir=/etc/vsftpd/vusers_config/

[root@localhost vuser]# mkdir /etc/vsftpd/vusers_config/
[root@localhost vuser]# vim /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES

技術分享圖片

Linux ftp介紹