手把手教你建立FTP服務器(保你一看就會哦)

建立FTP服務器之詳解 mysql

FTP(File Transfer Protocol)協議可以使用戶不須要了解遠程主機操做系統的操做方法,就能夠直接完成主機之間可靠的文件傳輸, linux

FTP工做原理:FTP服務也是基於客戶端/服務器(C/S)模式的,客戶端經過支持FTP協議的程序鏈接到主機上的FTP服務器,用戶經過客戶端程序向服務器程序發出命令,服務器程序執行用戶發出的命令,而後將執行結果返回給客戶端。 sql

FTP有兩個連接:控制鏈接、數據連接,因此說FTP協議也須要兩個端口 數據庫

命令連接:21/tcp,用於發送指令給服務器以及等待服務器響應。 vim

數據鏈接:主動模式:20/tcp,用於創建數據傳輸通道,實現客戶端從 服務器得到文件,以及二者之間相互通訊的過程 安全

                被動模式:端口隨機 服務器

          傳輸模式:二進制、文本如:ftp server --> ftp client 網絡

數據還分爲三種:一、機構化數據 二、半結構化數據 三、非結構化數據 session

FTP服務器的安裝 ssh

一、先下載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=YESuserlist_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、自簽證書、

先生成CACA的自簽證書

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服務器就建成功了。

9vsftpd+pam+mysql,實現虛擬用戶

環境必須安裝相應的開發環境和開發庫:Development LibrariesDevelopment 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  //安裝數據庫服務器軟件和develdevel包是爲了後面編譯pam的時候必須的軟件包。不安裝的話就沒法實現其功能了。

啓動mysql服務器,而後測試,保證mysql服務器運行正常,service mysqld startmysql鏈接進入查看,以下圖

、手動編譯、安裝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

測試登陸

這樣虛擬主機虛擬用戶就實現成功了

相關文章
相關標籤/搜索