文件服務及vsftpd的配置

文件服務:

    ftp:應用層,C/S,文件共享;file transfer protocol;

    nfs,cifs:文件系統接口,網絡文件系統;

        nfs:network file system

cifs:common internet file system

    samba

網絡存儲:

    NAS:Network Attached Storage,文件服務器,nfs或cifs,文件級別;

    SAN:Storage Area Network,塊級別共享服務,分區–>格式化–>創建文件系統;IPSAN, FCSAN;

ftp:

    file transfer protocol,21/tcp

C/S:

            Client –> ftp–>Server

        Client:Connect 

Server:Listen

    連接:

命令連接:命令傳輸,連接一直存在;

數據連接:數據傳輸,按需創建;

    數據連接的建立模式:

主動模式:服務器通過20/tcp主動連接客戶端的命令連接端口向后最近一個空閑端口;PORT;

被動模式:客戶端發出數據請求后,服務端會響應一個打開的臨時使用的隨機端口,客戶端對此端口進行請求;PASV;

    數據傳輸模式:

        文本格式:ASCII

二進制格式:BINARY

協議安全:

    明文:數據、認證時傳輸賬號和密碼均是明文 ;

安全增強:

            ftp over ssl/tls:ftps

    ftp over ssh:sftp 

虛擬用戶賬號;

    c/s:

Server:

            Windows:Serv-U, IIS, …

         開源解決方案:

                    wuftpd:Washington University ftp daemon

             vsftpd:Very Secure ftp daemon

                 proftpd, pureftpd, …

        Client:

         GUI:flashfxp, cute, filezilla, gftp, …

    CLI:ftp, lftp, …

    vsftpd:

程序環境:

            主程序:/usr/sbin/vsftpd

        Unit File:/usr/lib/systemd/system/vsftpd.service

    配置文件:/etc/vsftpd/vsftpd.conf

    文檔路徑映射:

fedora, /home/fedora/pub/a.txt –> ftp://HOST:PORT/pub/a.txt

用戶的家目錄映射:訪問vsftpd服務必須以某個系統用戶的身份進行;此用戶的家目錄即為文檔映射的根目錄;

匿名用戶:anonymous,映射為一個系統用戶,此用戶為ftp;

    配置:vsftpd.conf

directive VALUE,…

directive:指令之前不能存在任何字符,包括空白;

    匿名用戶:

        anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

    本地用戶:

local_enable=YES

write_enable=YES

    認證服務:

pam_service_name=vsftpd

/etc/pam.d/vsftpd 

pam: pluggable authencate module

         切換目錄時的提示信息:

dirmessage_enable=YES

         .messages

         修改上傳文件的屬主:

chown_uploads=YES

chown_username=USERNAME

    禁錮用戶于自己的家目錄:

會引入別的風險,因此,要求用戶對自己的家目錄不能有寫權限;

(1) 禁錮所有用戶

    chroot_local_user=YES

(2) 禁錮部分用戶

         (a) 白名單:名單中的用戶不被禁錮;

        chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

    (b) 黑名單:名單中的用戶被禁錮

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

    user_list控制用戶訪問vsftpd:

(1) 白名單

         userlist_enable=YES

    userlist_deny=NO 

             (2) 黑名單,默認

    userlist_enable=YES

    userlist_deny=YES

虛擬用戶賬號:

    vsftpd依賴pam完成認證,pam存儲支持的認證方式,vsftpd都可調用;

賬號密碼存儲于何處?

        文件、MySQL、ldap、redis、…

    pam_mysql模塊

CentOS 6:epel

CentOS 7:編譯安裝 

    編譯:

        (1) 編譯環境;

(2) 依賴關系:mariadb-devel, pam-devel

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

# make install 

MySQL設置:

         mysql> CREATE DATABASE vsftpd;

    mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';

    mysql>  CREATE TABLE vsftpd.users (uid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(100) NOT NULL PRIMARY KEY,password CHAR(48) NOT NULL);

    mysql> INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu'));

準備要映射成為的系統賬號:

# mkdir -pv /ftproot/{pub,upload}

# useradd -d /ftproot vuser

# setfacl -m u:vuser:rwx /ftproot/upload

準備基于mysql認證的pam配置文件:/etc/pam.d/vsftpd.mysql

auth required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

配置vsftpd啟用虛擬用戶,并使用指定的pam service:vsftpd.conf

    pam_service_name=vsftpd.mysql

    guest_enable=YES

    guest_username=vuser

配置每虛擬用戶擁有不同的權限:vsftpd.conf

    user_config_dir=/etc/vsftpd/vusers_conf

# mkdir /etc/vsftpd/vusers_conf

# touch USERNAME

權限配置指令:

         anon_upload_enable

    anon_mkdir_write_enable

    anon_other_write_enable


在CentOS 7的環境下進行vsftpd服務的配置

    1.準備編譯環境

    blob.png

    2.準備依賴環境

    yum install pam-devel mariadb-devel

    3.編譯安裝pam_mysql

    blob.png

    4.在數據庫中創建對應的相關信息

        創建一個數據庫,專門存放vsftp服務的相關數據,并對一個用戶授權使其擁有管理這個數據庫的權限,而不使用root賬戶進行管理,保證數據庫的安全性

    blob.png

    blob.png

        在對應的數據庫中創建一個用戶表,將可以訪問的用戶成員信息及密碼,添加到該表中

    blob.png

    blob.png

        創建ftp訪問目錄,并創建虛擬用戶,并對目錄設置acl權限

    blob.png

    blob.png

        創建基于mysql認證的pam配置文件

    touch /etc/pam.d/vsftpd.mysql

    blob.png

        修改/etc/vsftpd/vsftpd.conf文件中的配置參數

    blob.png

        對每個擁有權限訪問vsftpd服務的用戶進行權限控制

        touch USERNAME    創建以用戶名作為文件名的文件

        進行相應的權限設置

     blob.png   

    

        測試賬戶的有效性

     blob.png

   

        

    

    

    


    

原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/51701

(0)
Stupid_LStupid_L
上一篇 2016-10-15
下一篇 2016-10-15

相關推薦

  • 新的旅途

    三月末的北京已經讓人感覺有些炎熱,這是我第一次來北京。對我而言這是我人生的另一個起點,押上了我所有驕傲承載著我的夢想對未來所有的期望。這是一場豪賭,新的旅途,從今天開始。

    2018-03-26
  • 進程管理

    linux維護工作中,常常需要對系統上運行的程序進行管理,那么進程管理就顯得相當重要。 進程初識 什么是進程?   進程是并發執行的程序在執行過程中分配和管理資源的基本單位,是一個動態概念。它代表CPU所能處理的單個任務。 什么是線程?   線程是程序流執行的最小單元,可以理解為進程中執行的一段程序片段。 進程與線程聯…

    Linux干貨 2016-09-07
  • 第十周 N21 總有刁民想害朕

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)   加電-MBR-GRUB-/sysinit-init X 對應的服務-/etc/rc.d     MBR        讀取分區表     GRUB      &…

    Linux干貨 2016-09-26
  • Linux keepalived高可用集群

                       Linux keepalived高可用集群 keepalived簡介:    keepalived是為了高可用ipvs集群而設計的,主要用作realserver的健康狀態檢測,如果有一臺web…

    系統運維 2016-11-18
  • Linux上實現rsyslog+mysql+loganalyz進行日志收集

    在我們的運維工作中,常常會對系統上的日志進行收集,手動管理少量的幾臺服務器的日志收集沒有太大難度,但是企業當中批量的管理成千上萬臺服務器的時候,這時候想一臺臺的收集日志未免太浪費時間了,這時候我們需要一個批量管理日志的系統來解決這一難題,今天我給大家帶來的使用 1、syslog介紹       &n…

    Linux干貨 2016-10-24
  • LINUX HASH命令

    LINUX:Hash命令 介紹:linux系統下會有一個hash表,剛開始這個hash表為空,每執行過一條命令hash表會緩存下這條命令。Shel優先會查看hash表。 hash緩存表可大大提高命令的調用速率 下面介紹幾個hash常用選項 剛進入系統使用Hash命令 哈希表為空 使用過命令后使用Hash命令 使用過命令后,Hash可顯示緩存的命令 Hash …

    Linux干貨 2017-04-03
欧美性久久久久