weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數據加載中……

          給VSFTP建立虛擬用戶

              上面配置的FTP服務器有一個特點,就是FTP服務器的用戶本身也是系統用戶。這顯然是一個安全隱患,因為這些用戶不僅能夠訪問FTP,也能夠訪問其它的系統資源。如何解決這個問題呢?答案就是創建一個虛擬用戶的FTP服務器。虛擬用戶的特點是只能訪問服務器為其提供的FTP服務,而不能訪問系統的其它資源。所以,如果想讓用戶對FTP服務器站內具有寫權限,但又不允許訪問系統其它資源,可以使用虛擬用戶來提高系統的安全性。

              在VSFTP中,認證這些虛擬用戶使用的是單獨的口令庫文件(pam_userdb),由可插入認證模塊(PAM)認證。使用這種方式更加安全,并且配置更加靈活。
              下面介紹配置過程。

              1.生成虛擬用戶口令庫文件。為了建立此口令庫文件,先要生成一個文本文件。該文件的格式如下,單數行為用戶名,偶數行為口令:

          #vi account.txt
          ylg
          1234
          zhanghong
          4321
          gou
          5678


              2.生成口令庫文件,并修改其權限:

          #db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
          #chmod 600 /etc/vsftpd/account.db


              3.新建一個虛擬用戶的PAM文件。加上如下兩行內容:

          #vi /etc/pam.d/vsftp.vu
          auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
          account required /lib/security/pam_userdb.so db=/etc/vsftpd/account


              4.建立虛擬用戶,設置該用戶所要訪問的目錄,并設置虛擬用戶訪問的權限:

          #useradd -d /ftpsite virtual_user
          #chmod 700 /ftpsite


              經過該步驟的設置,/ftpsite就是virtual_user用戶的主目錄,該用戶也是/ftpsite目錄的擁有者。除root用戶之外,只有該用戶具有對該目錄的讀、寫和執行的權限。

              5.生成一個測試文件。先切換至virtual_user用戶身份,然后在/ftpsite目錄下創建一個文件:

          #su -virtual_user
          $vi /ftpsite/mytest
          This is a test file.
          $su - root


              6.編輯/etc/vsftpd/vsftpd.conf文件,使其整個文件內容如下所示(去掉了注釋內容):

          anonymous_enable=NO
          local_enable=YES
          local_umask=022
          xferlog_enable=YES
          connect_from_port_20=YES
          xferlog_std_format=YES
          listen=YES
          write_enable=YES
          anon_upload_enable=YES
          anon_mkdir_write_enable=YES
          anon_other_write_enable=YES
          one_process_model=NO
          chroot_local_user=YES
          ftpd_banner=Welcom to my FTP server.
          anon_world_readable_only=NO
          guest_enable=YES
          guest_username=virtual_user
          pam_service_name=vsftp.vu


              上面代碼中,guest_enable=YES表示啟用虛擬用戶;guest_username=virtual則是將虛擬用戶映射為本地用戶,這樣虛擬用戶登錄后才能進入本地用戶virtual的目錄/ftpsite;pam_service_name=vsftp.vu指定PAM的配置文件為vsftp.vu。

              7.重新啟動VSFTP:
              #service vsftpd restart

              8.以虛擬用戶gou(Linux中并無該賬號)進行測試:

          # ftp 127.0.0.1
          Connected to 127.0.0.1 (127.0.0.1).
          220 Welcom to my FTP server.
          Name (127.0.0.1:root): gou
          331 Please specify the password.
          Password:
          230 Login successful. Have fun.
          Remote system type is UNIX.
          Using binary mode to transfer files.


              測試下載服務器目錄中的一個文件mytest:

          ftp> get mytest
          local: mytest remote: mytest
          227 Entering Passive Mode (127,0,0,1,159,19)
          150 Opening BINARY mode data connection for mytest (21 bytes).
          226 File send OK.
          21 bytes received in 0.00038 secs (54 Kbytes/sec)


              測試上傳本機目錄中的文件vsftpd.conf:

          ftp> !ls
          account.db  chroot_list  k  mytest  userconf  vsftpd.conf
          ftp> put vsftpd.conf
          local: vsftpd.conf remote: vsftpd.conf
          227 Entering Passive Mode (127,0,0,1,117,203)
          150 Ok to send data.
          226 File receive OK.
          4229 bytes sent in 0.00195 secs (2.1e+03 Kbytes/sec)


              可以看到,使用沒有系統賬號的虛擬用戶可以成功完成上傳、下載的工作。但該FTP虛擬服務器只允許虛擬用戶登錄,其它系統用戶無法登錄,如系統用戶user1不是虛擬用戶,則不能登錄該虛擬服務器。

          # ftp 127.0.0.1
          Connected to 127.0.0.1 (127.0.0.1).
          220 Welcom to my FTP server.
          Name (127.0.0.1:root): user1
          331 Please specify the password.
          Password:
          530 Login incorrect.
          Login failed.


              在虛擬FTP服務器中,也可以對各個用戶的權限進行設置。方法是在/etc/vsftpd.conf文件中添加如下一行:
              user_config_dir=用戶配置文件目錄

              然后在用戶配置文件目錄下創建相應的用戶配置文件,比如為上述名為gou的用戶創建一個配置文件(假設配置文件目錄為/etc/user_config_dir):

          #vi /etc/user_config_dir/gou
          write_enable=NO
          anono_upload_enable=NO


              重啟FTP服務器,這時再使用賬號gou來登錄,就已經沒有上傳的權限了。

          節選自:http://tech.ccidnet.com/pub/article/c737_a176689_p2.html

          posted on 2005-04-20 17:24 weidagang2046 閱讀(1768) 評論(1)  編輯  收藏 所屬分類: Linux

          評論

          # re: 給VSFTP建立虛擬用戶[未登錄]  回復  更多評論   

          2009-04-28 09:02 | harry
          主站蜘蛛池模板: 永靖县| 汉阴县| 漾濞| 达州市| 威宁| 雷波县| 鄄城县| 怀来县| 巩义市| 陕西省| 长泰县| 元阳县| 互助| 边坝县| 恩平市| 尖扎县| 巩留县| 昭通市| 正阳县| 莆田市| 饶阳县| 栾城县| 镇远县| 永兴县| 固阳县| 瓮安县| 海伦市| 平利县| 梅河口市| 张掖市| 芜湖市| 安宁市| 时尚| 商水县| 乌苏市| 凤山市| 盱眙县| 晋江市| 台前县| 湟源县| 葵青区|