搭建sftp伺服器需要多長時間
FTP不安全,萬不得已情況下,才可使用。
vsftp安全性相對較好
可採用sftp代替FTP
Linux另外常用的FTP:
proftp
vsftp
pureftp
下面以VSFTP為例:
安裝方式一:源碼包安裝
useradd -s /bin/false -d /var/ftp ftpvirtual
cd ......
make
make install
cp vsftpd.conf /etc
/usr/local/sbin/vsftpd & #啟動
安裝方式二:rpm安裝,推薦
rpm -ivh vsftpd-2.0.1-5.i386.rpm
或者 yum install vsftpd
/etc/init.d/vsftpd start
兩種方式安裝完成後,配置方法都一樣,下面開始講配置。
首先講主配置文件常見配置
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名登錄
local_enable=NO #禁止本地用戶登錄
write_enable=YES #對本地用戶的寫許可權
local_umask=022 #本地用戶文件生成掩碼
dirmessage_enable=YES #顯示隱藏文件
xferlog_enable=YES #啟用上傳和下載日誌
connect_from_port_20=YES #伺服器將啟用FTP數據埠的連接請求
xferlog_std_format=YES #伺服器將使用標準的ftpd xferlog日誌格式
pam_service_name=vsftpd #設置PAM認證服務的配置文件名稱
userlist_enable=YES #設置文件中指定的用戶是否可以訪問vsftpd伺服器
listen=YES #FTP伺服器將處於獨立啟動模式
tcp_wrappers=YES #使用tcp_wrappers作為主機訪問控制方式
chroot_local_user=YES #將FTP本地用戶禁錮在宿主目錄中
chroot_list_enable=YES #將用戶禁錮在宿主目錄中
listen_address=192.168.0.2 #偵聽地址
pasv_enable=YES #是否允使用被動模式,默認是允許的。
pasv_min_port=10000 #指定使用被動模式時打開埠的最小值
pasv_max_port=10004 #指定使用被動模式時打開埠的最大值。
max_clients=100 #設置FTP伺服器所允許的最大客戶端連接數,值為0時表示不限制
max_per_ip=5 #同一IP地址允許的最大客戶端連接數,值為0時表示不限制,即線程
local_max_rate=500000 #設置本地用戶的最大傳輸速率,單位為bytes/sec,值為0時表示不限制
anon_max_rate=200000 #設置匿名用戶的最大傳輸速率,單位為bytes/sec,值為0表示不限制
use_localtime=YES #在vsftp之中的時間默認值是顯式GMT時間,因此我們會發現上面的時間與我們時寄存取的時間差八小時。改了這一項就好了。
listen_port=10021 改埠
one_process_model=NO yes可增加性能,增加負載,便降低安全,建議NO
nopriv_user=nobody 默認以nobody運行vsftp
對外服務,建議使用stand alone方式啟動,性能好。
僅內部人員,建議用super daemon啟動,修改如下:
listen=NO
……略
vsftp默認使用GMT時間,建議修改如下:
use_localtime=YES
/etc/vsftpd.ftpusers #保存不允許進行FTP登錄的本地用戶帳號,提高系統的安全性
/etc/vsftpd.user_list
#禁止vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=YES
#僅允許vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=NO
日誌:
vsftpd_log_file=/var/log/vsftpd.log
下面開始講vsftp四種「用戶認證」的方式
一、匿名用戶 ftp anonymous
/var/ftp 默認主目錄
在/etc/vsftpd/vsftpd.conf中:
anonymous_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES #可刪除
chmod -R 777 /var/ftp/pub/
修改/var/ftp/pub的SELinux許可權
執行以下命令,修改/var/ftp/pub這目錄的類型:
chcon -R -t ftpd_anon_rw_t /var/ftp/pub/
anon_root=/var/www/html/ftp #改匿名用戶的宿主目錄
二、本地用戶
默認支持,使用各自的宿主目錄。不安全
local_root=/opt #新增這一項,改成其他路徑
三、虛擬用戶 PAM文件方式 推薦
建立虛擬用戶口令庫文件
# cat logins.txt
mike
pwabcd
john
pw1234
生成vsftpd的認證文件
db_load -T -t hash -f logins /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
新創建虛擬用戶所需的PAM配置文件
cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
新創建虛擬用戶的系統用戶所要訪問的目錄並設置相應許可權
# useradd -s /bin/false -d /home/ftpsite ftpvirtual
# chmod 700 /home/ftpsite
#設置vsftpd.conf配置文件,支持虛擬用戶
guest_enable=YES
guest_username=ftpvirtual
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vsftpd_user_conf #添加用戶配置文件目錄設置
/etc/vsftpd/vsftpd_user_conf/mike (同名),這里沒有的設置默認按vsftpd.conf的設置執行
anon_world_readable_only=NO #可以瀏覽FTP目錄和下載文件
anon_upload_enable=YES #用戶可以上傳文件,等同於 write_enable=yes 允許上傳
anon_mkdir_write_enable=YES #具有建立和刪除目錄的權利
anon_other_write_enable=YES #具有文件改名和刪除文件的許可權
local_root=/data/userspace #設置虛擬用戶登錄後的主目錄
anon_max_rate=1024000 #以Bytes/s為單位,這里限8Mbit,范圍大概在80%到120%之間
四、虛擬用戶 mysql認證方式 推薦
1. mysql安裝見mysql筆記
2.1 openssl-0.9.8e 源程序預編譯時在日誌中可能出現md5.h "Present But Cannot Be Compiled的錯誤,卸載下面某些包可能解決問題。
cyrus-sals-sql cyrus-sasl-ntlm cyrus-sasl-gssapi cyrus-sasl-devel openldap-devel
然後移除系統可能自帶的:
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置庫文件搜索路徑
#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#ldconfig -v
2.2 或者安裝openssl-0.9.8e的rpm包
3. pam_mysql-0.7RC1.tar.gz
#./configure --with-mysql=/usr/local/mysql --with-openssl=/usr/local/ssl
如果mysql是rpm安裝的,則不帶--with-mysql參數,如果openssl是rpm安裝的,參數為--with-openssl
make;make install
注意pam_mysql.so路徑,可能在/usr/lib/security/pam_mysql.so或/lib/security/pam_mysql.so
vi /etc/pam.d/vsftp.mysql #新建,僅兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
4.0 准備資料庫、表和數據
mysql> create database vsftp;
mysql> grant select on vsftp.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftp.* to [email protected] identified by '123456';
mysql> use vsftp;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> passwd char(48) binary NOT NULL,
-> primary key(id)
-> );
mysql> insert into users(name,passwd) values('hlc',password('hlc'));
mysql> insert into users(name,passwd) values('holly',password('holly'));
5.0 修改主配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vsftp
listen=YES
pam_service_name=vsftpd.mysql
以上完成了vsftp的配置,下面是補充:
dirmessage_enable=YES #設置歡迎語 在每個目錄下建立.message,寫入歡迎語即可。
db_load支持包(前面三個即可):
db4
db4-devel
db4-utils
db4-java
db4-tcl
Linux建議關閉selinux或征對FTP不做任何安全
setsebool -P -ftpd_disable_trans on
setsebool -P -allow_ftpd_full_access on
servie vsftpd restart
或者需要重啟伺服器
底下列出FTP訪問中所出現數字代碼的含意。
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,准備傳送。
150 文件狀態正常,開啟數據埠。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制埠關閉,可以注銷。
225 數據鏈接開啟,但無傳輸動作。
226 關閉數據埠,請求的文件操作成功。
227 進入passive mode。
230 用戶登錄。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要帳戶信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁碟空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。
② ssh服務介紹
SSH是Secure Shell Protocol的簡寫。在進行數據傳輸之前,SSH先對聯機數據包通過加密技術進行加密處理,加密後在進行數據傳輸。確保了傳遞的數據安全。
SSH是專為遠程登陸會話和其他網路服務提供的安全性協議。利用SSH協議可以有效的防止遠程管理過程中的信息泄漏問題。
在默認狀態下,SSH服務主要提供兩個服務功能;一個是提供類似telnet遠程聯機伺服器的服務,即上面提到的SSH服務:另一個類似FTP服務的sftp-server,藉助SSH協議來傳輸數據的,提供更安全的SFTP服務 提醒SSH客戶端(ssh命令)還包含一個很有用的遠程安全拷貝命令scp,也是通過ssh協議工作的
小結:
1)SSH是安全的加密協議,用於遠程連接Linux伺服器。
2)SSH默認的埠是22,安全協議版本是SSH2,除了2還有ssh1有漏洞
3)SSH伺服器端主要包含兩個伺服器功能SSH遠程連接,SFTP服務。
4)Linux SSH客戶端包含ssh遠程連接命令,以及遠程拷貝scp命令等。
修改SSH服務的運行參數,是通過修改配置文件/etc /ssh/sshd_config實現的。
Port 52114 (ssh默認連接埠是22 修改他)
PermitRootLogin no(禁止遠程root登陸)
PermitEmptyPasswords no(禁止空密碼的登陸)
UseDNS no(不適用DNS)
ListenAddress 172.16.1.61:22 (只監聽內網IP 可以加埠號)
在遠程管理linux系統基本上都要使用到ssh,原因很簡單:telnet、FTP等傳輸方式是以明文傳送用戶認證信息,本質上是不安全的,存在被網路竊聽的危險。SSH(Secure Shell)目前較可靠,是專為遠程登錄會話和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題,透過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。
ssh_config和sshd_config都是ssh伺服器的配置文件,二者區別在於,前者是針對客戶端的配置文件,後者則是針對服務端的配置文件。兩個配置文件都允許你通過設置不同的選項來改變客戶端程序的運行方式。下面列出來的是兩個配置文件中最重要的一些關鍵詞,每一行為「關鍵詞&值」的形式,其中「關鍵詞」是忽略大小寫的。
1、編輯 /etc/ssh/ssh_config 文件
Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
Port 22
Cipher blowfish
EscapeChar ~
下面對上述選項參數逐進行解釋:
Site-wide defaults for various options
帶「#」表示該句為注釋不起作,該句不屬於配置文件原文,意在說明下面選項均為系統初始默認的選項。說明一下,實際配置文件中也有很多選項前面加有「#」注釋,雖然表示不起作用,其實是說明此為系統默認的初始化設置。
Host *
"Host"只對匹配後面字串的計算機有效,「 」表示所有的計算機。從該項格式前置一些可以看出,這是一個類似於全局的選項,表示下面縮進的選項都適用於該設置,可以指定某計算機替換 號使下面選項只針對該算機器生效。
ForwardAgent no
"ForwardAgent"設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。
ForwardX11 no
"ForwardX11"設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。
RhostsAuthentication no
"RhostsAuthentication"設置是否使用基於rhosts的安全驗證。
RhostsRSAAuthentication no
"RhostsRSAAuthentication"設置是否使用用RSA演算法的基於rhosts的安全驗證。
RSAAuthentication yes
"RSAAuthentication"設置是否使用RSA演算法進行安全驗證。
PasswordAuthentication yes
"PasswordAuthentication"設置是否使用口令驗證。
FallBackToRsh no
"FallBackToRsh"設置如果用ssh連接出現錯誤是否自動使用rsh,由於rsh並不安全,所以此選項應當設置為"no"。
UseRsh no
"UseRsh"設置是否在這台計算機上使用"rlogin/rsh",原因同上,設為"no"。
BatchMode no
"BatchMode":批處理模式,一般設為"no";如果設為"yes",互動式輸入口令的提示將被禁止,這個選項對腳本文件和批處理任務十分有用。
CheckHostIP yes
"CheckHostIP"設置ssh是否查看連接到伺服器的主機的IP地址以防止DNS欺騙。建議設置為"yes"。
StrictHostKeyChecking no
"StrictHostKeyChecking"如果設為"yes",ssh將不會自動把計算機的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦計算機的密匙發生了變化,就拒絕連接。
IdentityFile ~/.ssh/identity
"IdentityFile"設置讀取用戶的RSA安全驗證標識。
Port 22
"Port"設置連接到遠程主機的埠,ssh默認埠為22。
Cipher blowfish
「Cipher」設置加密用的密鑰,blowfish可以自己隨意設置。
EscapeChar ~
「EscapeChar」設置escape字元。
2、編輯 /etc/ssh/sshd_config 文件:
This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin
下面逐行說明上面的選項設置:
Port 22
"Port"設置sshd監聽的埠號。
ListenAddress 192.168.1.1
"ListenAddress」設置sshd伺服器綁定的IP地址。
HostKey /etc/ssh/ssh_host_key
"HostKey」設置包含計算機私人密匙的文件。
ServerKeyBits 1024
"ServerKeyBits」定義伺服器密匙的位數。
LoginGraceTime 600
"LoginGraceTime」設置如果用戶不能成功登錄,在切斷連接之前伺服器需要等待的時間(以秒為單位)。
KeyRegenerationInterval 3600
"KeyRegenerationInterval」設置在多少秒之後自動重新生成伺服器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的信息。
PermitRootLogin no
"PermitRootLogin」設置是否允許root通過ssh登錄。這個選項從安全形度來講應設成"no"。
IgnoreRhosts yes
"IgnoreRhosts」設置驗證的時候是否使用「rhosts」和「shosts」文件。
IgnoreUserKnownHosts yes
"IgnoreUserKnownHosts」設置ssh daemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略用戶的"$HOME/.ssh/known_hosts」
StrictModes yes
"StrictModes」設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的許可權和所有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫許可權。
X11Forwarding no
"X11Forwarding」設置是否允許X11轉發。
PrintMotd yes
"PrintMotd」設置sshd是否在用戶登錄的時候顯示「/etc/motd」中的信息。
SyslogFacility AUTH
"SyslogFacility」設置在記錄來自sshd的消息的時候,是否給出「facility code」。
LogLevel INFO
"LogLevel」設置記錄sshd日誌消息的層次。INFO是一個好的選擇。查看sshd的man幫助頁,已獲取更多的信息。
RhostsAuthentication no
"RhostsAuthentication」設置只用rhosts或「/etc/hosts.equiv」進行安全驗證是否已經足夠了。
RhostsRSAAuthentication no
"RhostsRSA」設置是否允許用rhosts或「/etc/hosts.equiv」加上RSA進行安全驗證。
RSAAuthentication yes
"RSAAuthentication」設置是否允許只有RSA安全驗證。
PasswordAuthentication yes
"PasswordAuthentication」設置是否允許口令驗證。
PermitEmptyPasswords no
"PermitEmptyPasswords」設置是否允許用口令為空的帳號登錄。
AllowUsers admin
"AllowUsers」的後面可以跟任意的數量的用戶名的匹配串,這些字元串用空格隔開。主機名可以是域名或IP地址。
通常情況下我們在連接 OpenSSH伺服器的時候假如 UseDNS選項是打開的話,伺服器會先根據客戶端的 IP地址進行 DNS PTR反向查詢出客戶端的主機名,然後根據查詢出的客戶端主機名進行DNS正向A記錄查詢,並驗證是否與原始 IP地址一致,通過此種措施來防止客戶端欺騙。平時我們都是動態 IP不會有PTR記錄,所以打開此選項也沒有太多作用。我們可以通過關閉此功能來提高連接 OpenSSH 伺服器的速度。
1)執行命令生成私鑰和公鑰 ssh-keygen -t dsa 如圖:
3)我們切換過去就不需要密碼了 如圖
③ 搭建FTP伺服器需要哪些步驟
搭建FTP伺服器要先創建一個用戶賬戶用於登錄FTP,然後添加IIS程序服務,然後才是創建發布自己的FTP站點。
一、右鍵計算機選擇管理,點開本地用戶和組選擇用戶。
注意事項
1、在內網中搭建FTP最重要的就是映射埠,要不外網是無法訪問到本機的FTP伺服器上。做映射必須要登入路由器上去。每個人的路由都是不同的,但是總體功能還是大同小異的。
2、如果出現沒有訪問許可權,找到IE瀏覽器Internet選項中的「高級」 ,將「啟用ftp文件夾視圖」添加勾號,將「使用被動FTP」的勾號去掉。重新訪問即可。
④ 如何搭建ftp伺服器實現文件共享
這里以windows系統和linux系統為例,簡單介紹一下如何在這2種系統下搭建ftp伺服器,整個過程非常簡單,感興趣的朋友可以自己嘗試一下:
windows
windows系統自帶有ftp伺服器,只需要在控制面板的「程序和功能」模塊中開啟一下就行,下面我簡單介紹一下操作過程:
1.首先,打開控制面板,依次點擊「程序」->「啟用或關閉windows功能」,在彈出的windows功能窗口中勾選「ftp伺服器」和「iis管理控制台」,如下,等待程序安裝完成:
2.接著在搜畢鍵索欄打開「iis控制器」,右鍵左側的「網站」條目,在彈出的功能列表中選擇「添加ftp站點...」,這時我們就可以直接設置ftp伺服器根目錄了(也就是需要共享的文件夾),如下:
3.然後就是設置ftp伺服器ip地址和埠號,這里可以設置為內網ip,也可以設置為外網ip,根據自己需求設置就行,如下:
4.接著就是設置訪問用戶及讀寫許可權,這里可以是匿名用戶、指定用戶、所有用戶、用戶組等,如下:
5.最後設置完成後,在瀏覽器輸入「ftp://ftp伺服器ip地址」就可以直接訪問ftp伺服器了,如下,所有文件都已列出,可以直接進行下載:
linux
這里需要先安裝vsftp這個工具包,然後啟動ftp服務,之後就可以直接訪問ftp伺服器上的文件了,下面我簡單介紹一下操作過程:
1.首先,安裝vsftpd工具包,這個直接在終端輸入命令「yuminstall-yvsftpd」就行,或者手桐巧(「aptinstall-yvsftpd」),如下:
2.安裝完成後,這里你可以對/etc/vsftpd/vsftpd.conf文件進行進行簡單配置,設置用戶訪問策略等,官方文檔有詳細說明,修改對應參數就行,如下:
3.接著就是啟動ftp服務,直接運行「systemctlstartvsftpd」命令(或者「servicevsftpdstart」命令)就行,如下,ftp服務已經正常運行:
4.最後就可以直接使用sftp或者ftp命令連接ftp伺服器了,效果如下,輸入用戶password,成功驗證後就可以直接上傳下載文件了:
至此,我們就完成了在windows系統和linux系統下搭建ftp伺服器。總的來說,整個過輪橡程非常簡單,只要你熟悉一下上面的操作過程,很快就能掌握的,當然,你也可以藉助現有的ftp軟體來搭建ftp伺服器,都行,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
⑤ 如何建立ftp伺服器
1、首先,我們創建一個用於登錄FTP以進行操作的用戶帳戶。右鍵單擊我的桌面並選擇「管理選項」,轉到「管理」界面,然後打開「本地用戶和組」選項。我們可以在列表中看到用戶選項。