FTP服務器管理和配置

FTP服務的簡介
mysql

  FTP是Internet上使用很是普遍的一種通訊協議,用於在不一樣的主機之間進行文件傳輸。Linux系統下經常使用的FTP服務器軟件包括有wu-ftpd;vsftpd(Very Secure ftp Daemon);proftpd;pureftpd等sql

   客戶端軟件有:數據庫

     CLI:ftp;lftp;(wget ,lftpget)下載工具,非交互式centos

     GUI: gftpd ;FlashFXP;Cuteftp;Filezilla服務器

 FTP採用C/S的工做模式,經過TCP協議創建客戶端和服務器之間的鏈接。但與其餘大多數的應用協議不一樣,FTP協議在客戶端和服務器之間創建了兩套通訊鏈路,分別是控制鏈路和數據鏈路;併發


 FTP客戶端與服務器之間的通訊過程ide

      一、用戶使用FTP協議的客戶機程序,鏈接到遠程的FTP服務器程序上模塊化

     二、用戶使用客戶端程序進行FTP文件的上傳或下載,FTP客戶端程序經過控制鏈路向FTP發送相應的控制命令工具

    三、服務器程序接收並執行用戶所發出的命令ui

    四、FTP服務器將執行結果返回到客戶端


  FTP經過兩組套接字通訊:控制蓮姐套接字 21/TCP,數據鏈接套接字 20/TCP。可是傳輸數據又能夠分爲主動模式與被動模式,其數據傳輸端口有所不一樣。

  主動模式工做的原理:FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送PORT命令到FTP服務器 ,告訴服務器客戶端採用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號後,經過服務器的20端口和客戶端開放的端口鏈接,發送數據,原理以下圖:

wKiom1k6aRSjDHhoAAEX8HjST3Q076.png-wh_50

 被動模式工做原理:FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上 ),而後把開放的端口告訴客戶端,客戶端再鏈接到服務器開放的端口進行數據傳輸,原理以下圖:

wKioL1k6aRXTcv-oAAEpZ25a88A839.png-wh_50

VSFTP服務器的安裝和配置

  vsftpd能夠經過rpm包或者源碼安裝,經過rpm安裝只需使用yum命令便可。

文件的組成:

/etc/vsftpd: 配置文件目錄

/etc/rc.d/init.d/vsftpd: 服務腳本

/usr/sbin/vsftpd: 主程序

/var/ftp:數據文件目錄(匿名用戶訪問目錄)

/etc/pam.d/vsftpd: 認證文件 pam(Plugable Authentication Module)插件式認證模塊

  模塊化庫文件:/lib64/security/pam*.so

  認證配置文件:/etc/pam.conf和/etc/pam.d/*

基本配置:/etc/vsftpd/vsftpd.conf



啓動和關閉vsftpd

  vsftpd支持兩種啓動方式:xinetd和standalone。其中,xinetd是經過xinetd進程來啓動和關閉vsftpd服務,這是vsftpd默認啓動方式。standalone方式則是採用獨立進程啓動和關閉,與普通程序的啓動方式同樣。

xinetd方式:

  採用這種方式時,vsftpd不能單獨管理,當vsftpd須要重啓時,也必須重啓整個xinetd服務器。不推薦這種方式

standalone方式:

    # service vsftpd star

    # service vsftpd stop

    # service vsftpd restart

  或者使用: # chkconfig vsftpd on 使得ftp服務自啓動

  

vsftpd.conf配置文件

    vsftpd服務器的配置主要經過其主配置文件/etc/vsftpd.conf來完成。該文件以'#'做爲註釋,每一個選項一行,格式爲'選項=值'。

經常使用選項:

匿名用戶的配置:

  anonymous_enable=YES登錄權限

  anon_upload_enable=YES上傳權限

  anon_other_write_enable=YES刪除權限

  anon_mkdir_write_enable=YES建立目錄

  啓用寫入功能時,ftp用戶對相應的本地文件系統也有相應的寫入權限;生效的權限取決於文件系統權限和服務權限的交集。

禁錮用戶於其家目錄中:

  chroot_local_user={Yes|No}

  chroot_list_enable={YES|NO}                只禁錮列表中的用戶在家目錄

  chroot_list_file=/etc/vsftpd/chroot_list   禁錮用戶列表

歡迎信息的定義:

  ftp_banner=some string

    或者banner_file=/path/to/some_banner_file(文件中寫歡迎信息)

  dirmessage_enable=yes(切換目錄時,目錄下的歡迎信息)

    在ftp可訪問的目錄下建立.messages文件

控制登陸用戶的機制:

  /etc/vsftpd/ftpusers中的用戶都不容許使用ftp服務, 這是在/etc/pam.d/vsftpd中定義。

user_list配置文件有兩種用法:

  黑名單:

    userlist_enable=YES

    userlist_deny=YES

  白名單:

    userlist_enable=YES

    userlist_deny=NO

鏈接限制:

  max_clients: 最大併發鏈接數

  max_per_ip: 每IP可同時發起併發請求

傳輸速率:

  anon_max_rate: 匿名用戶的最大傳輸速率,單位是「字節/秒」;

  local_max_rate: 本地用戶的最大傳輸速率,單位是「字節/秒」

上傳文件的umask:

  anno_umask: 匿名用戶上傳文件的umask;

  local_umask: 本地用戶上傳文件的umask;

修改匿名用戶上傳文件的屬主和屬組:

  chown_uploads=YES

  chown_username=someuser

ftp用戶

   匿名用戶: anonymous_enable 

   系統用戶:local_enable

   虛擬用戶:全部的虛擬用戶會映射會一個系統用戶,訪問時的文件目錄是爲此係統用戶的家目錄。

用戶的存放位置:

  

虛擬用戶帳戶在 : 文件,MySQL,Oracle,Redis,LDAP...

    以文件存放虛擬用戶的配置步驟:

1.建立用於保存虛擬用戶文件,其中奇數行爲用戶名,偶數行爲密碼;

# touch VUSER_FILE

tom

123456

jerry

123123

2.將保存虛擬用戶帳戶的文本文件轉換爲數據庫文件:

db_load -T -t hash -f /PATH/TO/VUSER_FILE /PATH/TO/USERDB.db

3.設定PAM的認證文件

/etc/pam.d/vusers.file

auth required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB

account required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB


4.建立一個用於映射虛擬用戶身份的本地用戶

useradd LOCAL_USER

5.修改此虛擬主機的配置文件:

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.file

local_root=/myftp/ftpdata

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES



若是想要對於全部的虛擬用戶分別設定權限,能夠使用:

在虛擬主機的主配置文件中添加指令:

user_config_dir=/PATH/TO/CONFIG_DIR


建立出這個目錄,而且在目錄下建立出與虛擬用戶名相同的文件;

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/myftp/ftpdata/alice

anon_umask=022


基於MySQL存放虛擬用戶

'centos',PASSWORD('qhdlink')

'suse',PASSWORD('link19')


1.編譯安裝pam的mysql驅動

下載地址:http://pam-mysql.sourceforge.net/


須要預先安裝編譯環境,即: Development Tools,Server Platform Development, pam-devel, mysql_devel

# tar xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/lib64/secutiry

# make -j 4 && make install


2.建立數據庫,數據表,及受權用戶;

mysql> create database vsftpd;

mysql> use vsftpd;

mysql> create table users (username char(20),password char(48));

mysql> insert into users values ('centos',PASSWORD('qhdlink')),('gentoo',PASSWORD('qhdlink'))

mysql> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftppass';

mysql> grant all on vsftpd.* to 'vsftpd'@'127.0.0.1' identified by 'vsftppass';

mysql> grant all on vsftpd.* to 'vsftpd'@'172.16.%.%' identified by 'vsftppass';


3.建立pam的認證文件:

/etc/pam.d/vusers.mysql


auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2


4.建立映射用戶:

useradd mysqluser


5.修改此虛擬主機的配置文件:

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.mysql

user_config_dir=/PATH/TO/MYSQL_USER_CONFIG

相關文章
相關標籤/搜索