建立FTP服務器之詳解
FTP(File Transfer Protocol)協議可以使用戶不須要了解遠程主機操做系統的操做方法,就能夠直接完成主機之間可靠的文件傳輸,
FTP工做原理:FTP服務也是基於客戶端/服務器(C/S)模式的,客戶端經過支持FTP協議的程序鏈接到主機上的FTP服務器,用戶經過客戶端程序向服務器程序發出命令,服務器程序執行用戶發出的命令,而後將執行結果返回給客戶端。
FTP有兩個連接:控制鏈接、數據連接,因此說FTP協議也須要兩個端口
命令連接:21/tcp,用於發送指令給服務器以及等待服務器響應。
數據鏈接:主動模式:20/tcp,用於創建數據傳輸通道,實現客戶端從 服務器得到文件,以及二者之間相互通訊的過程
被動模式:端口隨機
傳輸模式:二進制、文本如:ftp server --> ftp client
數據還分爲三種:一、機構化數據 二、半結構化數據 三、非結構化數據
FTP服務器的安裝
一、先下載yum配置文件而且保存在/etc/yum.repos.d/server.repo下
二、安裝vsftpd軟件包,yum install vsftpd
這樣一個簡單的服務器就建成了
三、檢查一下vsftpd是否安裝成功,並重啓一下,設定爲開機啓動
四、編譯vsftpd.conf的配置文件
anonymous_enable=YES //是否開啓匿名用戶訪問
anonymous_enable=YES //是否開啓本地用戶既系統用戶訪問
write_enable=YES //是否開啓本地用戶的寫權限:上傳文件的權限
local_umask=022 //系統用戶上傳文件時候的umask默認值
anon_upload_enable=YES //是否開啓虛擬用戶上傳文件的權限
anon_mkdir_write_enable=YES //是否開啓虛擬用戶新建文件件的權限
chown_uploads=YES //是否開啓上傳文件的屬主修改
chown_username=whoever //上傳文件後所屬主
xferlog_file=/var/log/xferlog
xferlog_std_format=YES //日誌記錄,須要開啓上面兩項才能夠生效
idle_session_timeout=600 //鏈接超時時間
data_connection_timeout=120 //數據傳輸超時時間
ascii_upload_enable=YES
ascii_download_enable=YES //是否開啓ascii碼的上傳、下載
chroot_list_enable=YES //是否鎖定用戶登陸後的目錄,配置文件在/etc/vsftpd/chroot_list,表內定義了鎖定的用戶列表
chroot_list_file=/etc/vsftpd/chroot_list //用戶登陸之後把用戶鎖在那個目錄下的定義
listen=YES //設置ftp服務是否爲獨立進程
pam_service_name=vsftpd //pam認證服務名稱
userlist_enable=YES // 用戶列表限定
用法(定義黑白名單)
定義黑名單:userlist_enable=YES 、userlist_deny=YES
定義白名單:userlist_enable=YES、userlist_deny=NO
max_clients = // 單個IP最多發起幾個請求的max_per_ip = //最多容許幾個IP連接FTP服務器
另外的兩個vsftpd的配置文件:
/etc/vsftpd/ftpusers------------內規定的用戶都禁止登錄ftp服務
/etc/vsftpd/user_list-----------規定了不能登錄ftp服務器的用戶
五、設置環境,關閉防火牆:iptables -L -n ,關閉seinux:setenforce 0
六、咱們已經確保了selinux是關閉的,就能夠進行測試了
setenforce 0 關閉
vim /etc/selinux/config 永久關閉
建立用戶hadoop,密碼也設爲hadoop,進行測試是否能上傳成功
咱們在嘗試一下匿名能不能成功
從實驗來看匿名登陸是不成功的
因此咱們要編譯一下vsftpd.conf,打開匿名登陸權限:anon_uoload_enable=YES
編譯完以後要重啓一下服務器
七、匿名登錄以後咱們還要,打開建立目錄選項,禁錮家目錄
anon_upload_enable=YES //是否開啓虛擬用戶上傳文件的權限
anon_mkdir_write_enable=YES //是否開啓虛擬用戶新建文件件的權限
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list--這兩個配置能夠直接被下面一句話所替代:chroot_local_user=YES,這樣就能夠限制全部的用戶登陸之後只能停留在本身的家目錄裏了
8、因爲FTP服務的傳輸都是明文的,在網絡上很是不安全,咱們能夠利用openssh來對ftp服務的傳輸進行加密,既是sftp服務。
①、創建CA、自簽證書、
先生成CA和CA的自簽證書
cd /etc/pki/CA
mkdir certs newcerts crl
touch index.txt
echo 01 > serial
建立CA的私鑰
(umask 007;openssl genrsa –out priviate/cakey.pem 2048);
生成自簽證書
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
②、爲vsftp服務進行CA認證
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
生成私鑰和認證的公鑰
(umask 077;openssl genrsa -out vsftpd.key 2048);
openssl req -new -key vsftpd.key -out vsftpd.csr
修改CA目錄,修改的話必須在特定的目錄下才能簽署證書
vim /etc/pki/tls/openssl.cnf
簽署證書
openssl ca -in vsftpd.csr -out vsftpd.crt
③、而後配置使用加密的認證方式
vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES //開啓ssl功能
ssl_tlsv1=YES //開啓支持tlsv1
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=NO //是否開啓匿名用戶利用ssl
force_local_data_ssl=YES //開啓系統用戶數據傳輸利用ssl
force_local_logins_ssl=YES //開啓系統用戶登陸利用ssl
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt //指定證書位置
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key //指定私鑰位置
④重啓服務、驗證
用軟件進行鏈接測試
咱們的ftp服務器就建成功了。
9、vsftpd+pam+mysql,實現虛擬用戶
環境必須安裝相應的開發環境和開發庫:Development Libraries和Development Tools
下面用到的軟件安裝方式採用yum安裝,能夠自動解決軟件的依賴關係,因爲實驗是在在虛擬機上,因此採用DVD盤做爲yum池,配置爲下
mount /dev/cdrom /media
/etc/yum.repos.d/server.repo配置以下
# repos on instructor for cla***oom use
# Main rhel5 server
[base]
name=Instructor Server Repository
baseurl=file:///media/Server
gpgcheck=0
# This one is needed for xen packages
[VT]
name=Instructor VT Repository
baseurl=file:///media/VT
gpgcheck=0
# This one is needed for clustering packages
[Cluster]
name=Instructor Cluster Repository
baseurl=file:///media/Cluster
gpgcheck=0
# This one is needed for cluster storage (GFS, iSCSI target, etc...) packages
[ClusterStorage]
name=Instructor ClusterStorage Repository
baseurl=file:///media/ClusterStorage
gpgcheck=0
①、安裝數據庫和開發環境
檢查開發庫和開發工具是否安裝
yum -y install mysql-server mysql-devel //安裝數據庫服務器軟件和devel,devel包是爲了後面編譯pam的時候必須的軟件包。不安裝的話就沒法實現其功能了。
啓動mysql服務器,而後測試,保證mysql服務器運行正常,service mysqld start,mysql鏈接進入查看,以下圖
②、手動編譯、安裝mysql基於pam的認證的驅動文件pam_mysql-0.7RC1.tar.gz。
tar xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr //—with-mysql=指定mysql庫所在的位置
make
make install
③、進入數據庫準備所需的數據庫和表等
mysql //進入數據庫
mysql> create database vsftpd;
mysql> use vsftpd;
mysql> create table users(
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );
、配置vsftpd
創建pam認證所需的文件
vi /etc/pam.d/vsftpd.mysql--這個文件默認是不存在的,須要新建
添加以下兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
創建虛擬用戶映射的系統用戶及對應的目錄
#useradd -s /sbin/nologin -d /var/ftproot vuser //新建虛擬用戶
#chmod go+rx /var/ftproot //爲其餘用戶增長讀和執行權限。
請確保/etc/vsftpd.conf中已經啓用瞭如下選項
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
然後添加如下選項
guest_enable=YES //是否容許來賓帳戶訪問
guest_username=vuser //來賓帳戶訪問映射爲那個用戶
並確保pam_service_name選項的值以下所示
pam_service_name=vsftpd.mysql
而後配置完後重啓服務器
service vsftpd restart
測試登陸
這樣虛擬主機虛擬用戶就實現成功了