從Serv-U到vsftp的數據遷移

一、FTP協議概述

1、什麼是FTP協議
FTP協議(File Transfer Protocol)即遠程文件傳輸協議,是一個用於簡化IP網絡上系統之間文件傳送的協議,FTP是TCP/IP的一種具體應用,它工作在OSI模型的第7層,TCP模型的第四層上,即應用層,使用TCP傳輸而不是UDP,FTP建立的就是一個可靠的連接。採用FTP協議可使 Internet用戶高效地從網上的FTP服務器下載大信息量的數據文件,將遠程主機上的文件拷貝到自己的計算機上,以達到資源共享和傳遞信息的目的。
2、FTP工作原理
FTP有兩個過程一個是控制連接,一個是數據傳輸。FTP協議不像HTTP協議一樣需要一個端口作爲連接(默認時HTTP端口是80,FTP端口是21)。FTP協議需要兩個端口,一個端口是作爲控制連接端口,也就是FTP的21端口,用於發送指令給服務器以及等待服務器響應;另外一個端口用於數據傳輸端口,端口號爲20(僅用PORT模式),是用建立數據傳輸通道的,主要作用是從客戶向服務器發送一個文件,從服務器向客戶發送一個文件,從服務器向客戶發送文件或目錄列表。
3、FTP的傳輸模式
FTP可用多種格式傳輸文件,通常由系統決定,大多數系統(包括UNIX系統)只有兩種模式:文本模式和二進制模式。文本傳輸器使用ASCII字符,並由回車鍵和換行符分開,而二進制不用轉換或格式化就可傳字符,二進制模式比文本模式更快,並且可以傳輸所有 ASCII值,所以系統管理員一般將FTP設置成二進制模式。
4、FTP的工作方式
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP服務器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
1)、Port模式
FTP 客戶端首先動態的選擇一個端口(一般是1024以上的)和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
2)、Passive模式
在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
二、Serv-U及vsftp軟件簡介
Serv-U,是一種被廣泛運用的FTP服務器端軟件,支持3x/9x/ME/NT/2K等全Windows系列。可以設定多個FTP服務器、限定登錄用戶的權限、登錄主目錄及空間大小等,功能非常完備。 它具有非常完備的安全特性,支持SSl FTP傳輸,支持在多個Serv-U和FTP客戶端通過SSL加密連接保護您的數據安全等。
VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。
三、實施步驟
1、問題描述
單位需要更新FTP服務器,並且由於費用的問題,不想升級原來的Serv-U軟件,想改用基於GPL的Vsftp軟件,我們的任務是將原有的FTP賬號信息和用戶數據遷移到基於Vsftp的FTP服務器上,允許賬號的密碼重新設置,在這裏我們設置的密碼與用戶名相同。
2、環境介紹
原有FTP服務器1臺,在服務器上安裝了windows2003標準版本及Serv-U軟件,在Serv-U中創建了500多個用戶賬號,並且有將近1T的用戶數據;新服務器1臺,安裝Red Hat Enterprise Linux Server release 5.5操作系統。
3、vsftp的安裝
軟件安裝有二種方式,可以根據服務器的環境設置,任選一種:
1)、RPM方式
rpm –ivh /mnt/cdrom/Servervs/ftpd-2.0.5-24.el5_8.1.i386.rpm
2)、YUM方式
yum install vsftpd
4、用戶數據的遷移
爲了在linux及windows之間數據共享,我們需要安裝samba-client,然後使用mount命令將windows的FTP數據目錄掛載到/mnt/samba目錄下,使用cp命令進行用戶數據的遷移:
yum install samba-client 
mount.cifs //10.0.0.1/ftpdata /mnt/samba -o user=administrator
cp –a  /mnt/samba/*  /var/ftp/pub 
5、ftp賬號的遷移
成功遷移了用戶數據後,接下來我們要遷移用戶的賬號。爲了遷移Serv-U裏的賬號名稱信息,先要將Serv-U軟件安裝目錄下的ServUDaemon.ini上傳到linux的FTP服務器中。分析ServUDaemon.ini文件,我們可以看到賬號的名稱都是分佈在以User開頭的每一行中,另外我們還可以看到賬號名稱和其他屬性用“=”和“|”隔離,如User1=admin|1|0,這樣我們就可以利用linux系統下的cut及管道命令來分離出賬號名稱,具體命令如下:
cat ServUDaemon.ini | grep ^User | cut -d \= -f 2 | cut -d \| -f 1 > test
得到test文件後,我們就可以利用腳本自動添加vsftp賬號,腳本代碼如下:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
usernames=$(cat /root/test)
i=0
for username in $usernames
do
i=$((i+1))
useradd -d /var/ftp/pub/$username -s /sbin/nologin $username 2> /dev/null
echo $username|passwd --stdin $username
echo $username >> /etc/vsftpd/user_list
echo $username >> /etc/vsftpd/chroot_list
echo $username "has been created!"
chown -R $username /var/ftp/pub/$username
echo $username "is ok"
done
其中/etc/vsftpd/user_list和chroot_list文件爲vsftp的設置文件,只有將賬號添加到這兩個文件後,纔可以達到控制用戶和鎖定用戶目錄的作用。
6、vsftp的安全設置
1)、Netfilter的設置
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; 
EXTIF="eth1"    
INIF="eth0"                                                      
export EXTIF INIF  PATH
#清除規則、設定預設策略及開放lo與相關的設定值
  iptables -F
  iptables -X
  iptables -Z
  iptables -P INPUT   DROP
  iptables -P OUTPUT  ACCEPT
  iptables -P FORWARD ACCEPT
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -i $EXTIF --dport  21   -j ACCEPT  
iptables -A INPUT -p TCP -i $EXTIF --dport  20   -j ACCEPT
2)、vsftpd.conf的設置
不允許匿名登錄:anonymous_enable=NO
鎖定用戶目錄:chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
其他安全策略:pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
四、結束語
通過以上的操作,我們基本實現了將FTP用戶從windows平臺下的Serv-U遷移到linux平臺下的Vsftp中使用,並且介紹了簡單安全策略的應用,希望對大家有所幫助。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章