天天看點

ftp伺服器搭建(一)

系統環境:RHEL6.5

IP位址:10.10.125.4

服務描述:

ftp伺服器(File Transfer Protocol:檔案傳輸協定):Internet上用來傳送檔案的協定

vsftp:一個基于GPL釋出的linux系統上使用的FTP伺服器軟體,全稱為Very Secure FTP;

工作模式:C/S

使用端口:21/20    其中20端口是資料傳輸端口,21是監聽端口

   安裝:

<code>rpm -ivh</code><code>/mnt/Packages/vsftpd-2</code><code>.2.2-6.el6_0.1.x86_64.rpm</code>

<code>or</code>

<code>yum -y </code><code>install</code> <code>vsftpd</code>

linux系統作為用戶端通路需要安裝lftp工具;該工具支援的檔案協定包含:ftp;ftps,http,https,hftp,fish(其中ftps和https需要包含openssl庫)。

特點:書簽    ,排隊,鏡像,斷點續傳,多程序下載下傳等功能。

相關配置檔案位置:

<code>/etc/vsftpd/</code>

<code>ftpusers                   </code><code>#用于指定哪些使用者不能通路ftp伺服器,黑名單</code>

<code>user_list                  </code><code>#用于指定哪些使用者可以通路ftp伺服器,白名單</code>

<code>vsftpd.conf                </code><code>#vsftpd主配置檔案</code>

<code>vsftpd_conf_migrate.sh     </code><code>#vsftpd操作的一些變量和設定的腳本</code>

<code>/var/ftp/</code>                  <code>#預設匿名使用者的根目錄</code>

啟動伺服器:

<code>/etc/init</code><code>.d</code><code>/vsftpd</code> <code>{start|stop|restart|try-restart|force-reload|status}</code>

檢視監聽端口:

<code>netstat</code> <code>-anptu | </code><code>grep</code> <code>ftp</code>

通路方式:

    windows系統:

    linux系統:

    位址欄:lftp 10.10.125.4

應用執行個體:

1、搭建一台伺服器允徐所有人通路,并允許使用者自己建立使用者目錄

修改主配置檔案:/etc/vsftp/vsftpd.conf

<code>anonymous_enable=YES        </code><code>#允許匿名使用者登入</code>

<code># Uncomment this to allow the anonymous FTP user to upload files. This only</code>

<code>anon_upload_enable=YES       </code><code>#允許匿名使用者上傳</code>

<code># Uncomment this if you want the anonymous FTP user to be able to create</code>

<code>anon_mkdir_write_enable=YES  </code><code>#允許匿名使用者建立目錄</code>

修改好主配置檔案之後重新開機服務

service vsftpd restart

測試由于pub目錄權限是755不能建立目錄

可建立test目錄,并修改屬主

<code>mkdir</code> <code>/var/ftp/test</code>

<code>chown</code> <code>ftp</code> <code>/var/vtp/test</code>

2、現在有兩個小組更新web站點内容,包括上傳檔案,建立目錄和更新網頁等。

建立賬号user1,user2,該賬号能登陸ftp伺服器,但不允許登入本地系統,并将這兩個賬号的根目錄限制到/var/www/html,不能進入該目錄意外的任何目錄

建立使用者并設定預設密碼:123456

<code>[root@xuexi vsftpd]</code><code># for id in {1,2};do useradd -s /sbin/nologin user${id};echo "123456" | passwd --stdin user${id};done</code>

anonymous_enable=NO                          #禁止匿名使用者登入

chroot_local_user=YES                             #允許本地使用者登入

chroot_list_enable=YES                            #激活chroot功能

local_root=/var/www/html                      #設定本地使用者的根目錄

chroot_list_file=/etc/vsftpd/chroot_list   #設定鎖定使用者在根目錄中的清單檔案,此檔案存放要鎖定的使用者名

儲存

建立chroot_list檔案

[root@xuexi vsftpd]# touch /etc/vsftpd/chroot_list

[root@xuexi vsftpd]#vim !$

user1

user2

将允許登入vsftp的使用者添加至/etc/vsftpd/chroot_list檔案中,每個使用者名占一行空間

重新開機vsftpd服務使配置生效

更改根目錄通路權限

chmod -R o+w /var/www/html

完成相關設定

3、為ftp開設虛拟使用者

功能:

    1)為客戶提供相關文檔下載下傳,對搜友網際網路開放共享目錄,雲溪下載下傳産品資訊,禁止上傳。

    2)對公司合作機關能夠使用ftp伺服器上傳和下載下傳,但不能删除任何資料。

    3)建立一公司内部使用者具備所有權限。

    4)關閉實體賬号登入,使用虛拟賬号驗證機制,并對不同虛拟賬号設定不同通路權限

    5)為保證伺服器性能,需要根據使用者等級限制用戶端的連接配接數以及下載下傳速度。

建立使用者文本檔案:使用者名位于奇數行,密碼位于偶數行

[root@xuexi vsftpd]# vim /etc/vsftpd/vsftpd_viruser.txt

ftp

123456

vip

生成資料庫

由于儲存的使用者名和密碼無法直接被系統調用,是以需要使用db_load指令生成能被系統調用的資料庫檔案

檢查檔案是否安裝,如果沒有安裝可以直接通過yum或rpm的方式進行安裝

[root@xuexi vsftpd]# rpm -qf `which db_load`

db4-utils-4.7.25-18.el6_4.x86_64

[root@xuexi vsftpd]# rpm -ivh /mnt/Packages/db4-utils-4.7.25-18.el6_4.x86_64.rpm 

[root@xuexi vsftpd]# db_load -T -t hash -f /etc/vsftpd/vsftpd_viruser.txt /etc/vsftpd/vsftpd_viruser.db

生成資料庫檔案之後可以删除使用者存儲檔案/etc/vsftpd/vsftpd_viruser.txt 

修改資料庫檔案通路權限

[root@xuexi vsftpd]# chmod 600 vsftpd_viruser.db 

配置PAM檔案

通過調用系統的PAM子產品使伺服器能夠使用資料庫檔案,進而完成對用戶端的身份驗證。

PAM概述:

PAM(Plugable Authentication Module)可插拔認證子產品,不必重新安裝應用系統,通過修改指定的配置檔案,調整對該程式的認證方式。PAM子產品配置檔案路徑為/etc/pam.d/目錄,此目錄下儲存着大量與認證有關的配置檔案,應以服務名稱命名。

<code>[root@xuexi vsftpd]</code><code># vim /etc/pam.d/vsftpd</code>

<code>在檔案末尾添加一下兩行内容,并将預設設定全部使用</code><code>#注釋掉</code>

<code>auth    required </code><code>/lib64/secruity/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vsftpd_viruser</code>

<code>account required </code><code>/lib64/secruity/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vsftpd_viruser</code>

建立虛拟賬号對應的系統使用者及ftp共享的目錄

<code>[root@xuexi vsftpd]</code><code># useradd -d /var/ftp/ftpvip ftpvip</code>

<code>[root@xuexi vsftpd]</code><code># useradd -d /var/ftp/ftpuser ftpuser    </code>

<code>[root@xuexi vsftpd]</code><code># chmod -R 700 /var/ftp/ftpvip/        #修改權限</code>

<code>[root@xuexi vsftpd]</code><code># chmod -R 500 /var/ftp/ftpuser/</code>

建立配置檔案

由于該功能中一個配置檔案無法實作,需要為每個虛拟賬号建立獨立的配置檔案,并根據

<code>root@xuexi ~]</code><code># cat /etc/vsftpd/vsftpd.conf | grep -v ^#</code>

<code>anonymous_enable=NO                </code><code>#禁止匿名使用者登入</code>

<code>local_enable=YES                   </code><code>#允許本地使用者登入</code>

<code>write_enable=YES                   </code><code>#允許本地使用者可寫</code>

<code>local_umask=022                    </code><code>#預設umask掩碼</code>

<code>dirmessage_enable=YES              </code><code>#</code>

<code>xferlog_enable=YES</code>

<code>connect_from_port_20=YES</code>

<code>xferlog_std_format=YES</code>

<code>pam_service_name=vsftpd             </code><code>#配置vsftpd使用pam子產品為vsftpd</code>

<code>chroot_local_user=YES</code>

<code>listen=YES                           </code><code>#啟用偵聽指令,使vsftpd能夠以獨立模式運作監聽,但這個指令不能與IPv6同時偵聽使用</code>

<code>tcp_wrappers=YES</code>

<code>user_config_dir=</code><code>/etc/vsftpd/viruserconfig</code>   <code>#設定虛拟賬号的主目錄為viruserconifg</code>

<code>max_clients=300                     </code><code>#設定ftp伺服器最大接入用戶端數量300個</code>

<code>max_per_ip=10                       </code><code>#設定每個IP位址最大連接配接數位10個</code>

<code>[root@xuexi ~]</code><code># vim /etc/vsftpd/viruserconfig/ftp</code>

<code>guest_enable=</code><code>yes</code>                <code>#開啟虛拟使用者</code>

<code>guest_username-ftpuser          </code><code>#定義虛拟使用者名</code>

<code>anon_world_readable_only=no     </code><code>#允許隻讀</code>

<code>anon_max_rate=50000             </code><code>#限制傳輸速率為50kb/s</code>

配置vip使用者

<code>[root@xuexi ~]</code><code># vim /etc/vsftpd/viruserconfig/vip</code>

<code>guest_enable=</code><code>yes</code>

<code>guest_username=ftpvip</code>

<code>anon_word_readable_only=no</code>

<code>write_enable=</code><code>yes</code>

<code>anon_mkdir_write_enable=</code><code>yes</code>

<code>anon_upload_enable=</code><code>yes</code>

<code>anon_max_rate=100000</code>

重新開機vsftpd服務生效

驗證發現不能登入報530錯誤

<code>[root@study vsftpd]</code><code># lftp 10.10.125.4 -u vip</code>

<code>密碼: </code>

<code>lftp [email protected]:~&gt; </code><code>ls</code>            

<code>ls</code><code>: 登入失敗: 530 Login incorrect.              </code>

<code>lftp [email protected]:~&gt;</code>

服務端打開日志

<code>[root@xuexi vsftpd]</code><code># tail -f /var/log/secure</code>

<code>Aug 24 10:50:24 xuexi vsftpd[3381]: PAM unable to dlopen(</code><code>/lib64/secruity/pam_userdb</code><code>.so): </code><code>/lib64/secruity/pam_userdb</code><code>.so: cannot </code><code>open</code> <code>shared object </code><code>file</code><code>: No such </code><code>file</code> <code>or directory</code>

<code>Aug 24 10:50:24 xuexi vsftpd[3381]: PAM adding faulty module: </code><code>/lib64/secruity/pam_userdb</code><code>.so</code>

可以得出是由于缺少相關子產品導緻登入失敗

檢查該檔案是否存在

<code>ls</code> <code>-lh </code><code>/lib64/security/pam_userdb</code><code>.so</code>

<code>-rwxr-xr-x. 1 root root 11K Oct  7  2013 </code><code>/lib64/security/pam_userdb</code><code>.so        </code>

<code>哈哈哈尴尬。。。。不細心那不細心。。。</code>

發現子產品已經存在仍然不能認證

使用注入使用者名

echo "vip" &gt;&gt; /etc/vsftpd/chroot_list

echo "ftp" &gt;&gt; /etc/vsftpd/chroot_list

ls: 登入失敗: 500 OOPS: missing value in config file for: guest_username-ftpuser

上邊這個報錯也是由于虛拟使用者設定檔案配置錯誤導緻将按照提示改好之後即可。

登入測試:

<code>lftp </code><code>ftp</code><code>@10.10.125.4:</code><code>/ftpuser</code><code>&gt; </code><code>ls</code>

<code>-rw-r--r--    1 0        0               6 Aug 24 05:41 1111.docx</code>

<code>-rw-r--r--    1 0        0         7884800 Aug 24 05:40 bin.</code><code>tar</code>

到此vsftpd配置完成

相關參考連接配接:http://1745027.blog.51cto.com/1735027/692653

本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1958986