Linux下搭建ftp服務

來源:互聯網
上載者:User

         Linux下搭建ftp服務一般都用vsftpd(very secure ftp daemon),因為ftp協議是採用明碼傳輸的,沒有安全性可言,vsftpd則是一個提供較安全的ftp服務軟體,下面簡單介紹一下vsftpd的搭建,測試環境為centos 6.3。

         

1、檢查是否已安裝軟體
[root@localhost ~]# rpm -qa | grep vsftpd[root@localhost ~]#

什麼都不顯示則表示系統還沒有安裝該軟體,否則會顯示安裝軟體的版本資訊。

2、安裝vsftpd沒有rpm安裝包的話可以到系統安裝盤中的package檔案夾下去找,也可以通過yum安裝,下面用rpm安裝方式。
[root@localhost tmp]# rpm -ivh vsftpd-2.2.2-11.el6.i686.rpm Preparing...                ########################################### [100%]   1:vsftpd                 ########################################### [100%][root@localhost tmp]#

vsftpd安裝成功。

3、查看防護牆
[root@localhost tmp]# chkconfig iptables --listiptables       0:off1:off2:on3:on4:on5:on6:off[root@localhost tmp]#

從上面輸出可以看到防火牆開著,如果想關閉防火牆可以執行下面的命令:

[root@localhost tmp]# chkconfig iptables off[root@localhost tmp]# chkconfig iptables --listiptables       0:off1:off2:off3:off4:off5:off6:off[root@localhost tmp]#

可以看到防火牆都關了,想重啟防火牆則可以執行下面的命令。

[root@localhost tmp]# chkconfig iptables on[root@localhost tmp]# chkconfig iptables --listiptables       0:off1:off2:on3:on4:on5:on6:off

如果不想關閉防火牆的話,那麼就需要添加連接埠號碼,執行下面命令:

[root@localhost tmp]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT[root@localhost tmp]# /etc/init.d/iptables statusTable: filterChain INPUT (policy ACCEPT)num  target     prot opt source               destination         1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)num  target     prot opt source               destination         1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)num  target     prot opt source               destination         [root@localhost tmp]#

從上面的status中可以看到21連接埠已經開啟,21連接埠是ftp的預設連接埠號碼,儲存對防火牆的設定執行下面的命令:

[root@localhost tmp]# /etc/init.d/iptables save  iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ][root@localhost tmp]#

如果僅僅是在防火牆中添加連接埠是不行的,因為服務端的資料通道到了防火牆之後就找不到原始的用戶端了,所以還是串連不上的。要解決這個問題就需要在防火牆中添加ip_nat_ftp和ip_conntrack_ftp兩個模組,如下所示:

[root@localhost ~]# vi /etc/sysconfig/iptables-config # Load additional iptables modules (nat helpers)#   Default: -none-# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which# are loaded after the firewall rules are applied. Options for the helpers are# stored in /etc/modprobe.conf.#IPTABLES_MODULES=""IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"

進入iptables-config設定檔中修改IPTABLES_MODULES參數,兩個模組名稱以空格隔開,儲存退出後重啟服務就可以了。

4、查看selinux
[root@localhost tmp]# sestatusSELinux status:                 enabled   <==是否啟動 SELinuxSELinuxfs mount:                /selinuxCurrent mode:                   enforcing  <==目前的模式Mode from config file:          enforcingPolicy version:                 24Policy from config file:        targeted[root@localhost tmp]#
4.1、關閉selinux
[root@localhost ~]# vi /etc/sysconfig/selinux# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#     enforcing - SELinux security policy is enforced.#     permissive - SELinux prints warnings instead of enforcing.#     disabled - No SELinux policy is loaded.#SELINUX=enforcingSELINUX=disabled# SELINUXTYPE= can take one of these two values:#     targeted - Targeted processes are protected,#     mls - Multi Level Security protection.SELINUXTYPE=targeted

預設模式為enforcing的將其改為disabled就可以了。(如果不關閉selinux的話,本人在配置過程中發現用戶端串連不上)

以上面方式修改selinux後不要忘記重啟。

4.2、開啟selinux

如果不想關閉selinux的話,可以在selinux中修改ftp的參數設定:

[root@localhost ~]# getsebool -a | grep ftpallow_ftpd_anon_write --> offallow_ftpd_full_access --> offallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftp_home_dir --> offftpd_connect_db --> offftpd_use_passive_mode --> offhttpd_enable_ftp_server --> offtftp_anon_write --> off[root@localhost ~]#

以上是selinux中預設的ftp參數設定,如果想串連ftp需修改allow_ftpd_full_access和ftp_home_dir兩個參數值。

[root@localhost ~]# setsebool -P allow_ftpd_full_access=1[root@localhost ~]# setsebool -P ftp_home_dir=1[root@localhost ~]# service vsftpd restart

執行以上命令後就可以在selinux處於enforcing模式下串連ftp了。

5、vsftpd設定檔

vsftpd安裝好之後設定檔都放在/etc/vsftpd/目錄下面

[root@localhost ~]# cd /etc/vsftpd/[root@localhost vsftpd]# ll -atotal 36drwxr-xr-x.   2 root root  4096 Oct 29 16:03 .drwxr-xr-x. 117 root root 12288 Oct 29 16:03 ..-rw-------.   1 root root   125 Jun 22 15:54 ftpusers-rw-------.   1 root root   361 Jun 22 15:54 user_list-rw-------.   1 root root  4599 Jun 22 15:54 vsftpd.conf   <<==主設定檔-rwxr--r--.   1 root root   338 Jun 22 15:54 vsftpd_conf_migrate.sh[root@localhost vsftpd]#

5.1、ftpusers檔案

用於限制實體賬戶無法登入ftp

[root@localhost vsftpd]# cat ftpusers # Users that are not allowed to login via ftprootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesnobody[root@localhost vsftpd]#

如上所示代表我系統中的這些使用者無法登入ftp,如果不想讓某個實體使用者不能登入ftp,只需將使用者名稱寫入這個檔案就可以了。

5.3、user_list檔案

該檔案的作用跟ftpusers檔案的作用是一樣的,都是限定使用者登入ftp的,區別在於user_list中的配置是否起作用還要跟vsftpd.conf檔案中的userlist_enable和userlist_deny兩個參數有關係。

5.4、chroot_list檔案

該檔案預設是沒有建立的,主要用於將某些帳號的目錄限制在家目錄下,這樣就提高了安全性,這個檔案要起作用的話還依賴於vsftpd.conf檔案中的chroot_enable和chroot_list_file兩個參數。

5.5、vsftpd.conf主設定檔
[root@localhost vsftpd]# cat vsftpd.conf | grep -v '^#'anonymous_enable=YES  local_enable=YES  write_enable=YES    local_umask=022     dirmessage_enable=YES xferlog_enable=YES  connect_from_port_20=YES   xferlog_std_format=YES   listen=YES  pam_service_name=vsftpd    userlist_enable=YES  tcp_wrappers=YES  [root@localhost vsftpd]#  

以上參數配置都是安裝好之後的預設參數值,下面簡單介紹一下一些常用的參數。

connect_from_port_20=YES   <<==主動串連時,服務端資料轉送的連接埠號碼

listen_port=21 <<==ftp命令通道的連接埠號碼(預設就是21),連接埠適用於standalone啟動模式

dirmessage_enable=YES <<==當使用者進入某個目錄後,顯示需要注意的內容,跟message_file參數有關

message_file=./message <<==當dirmessage_enable=YES顯示指定檔案中的資訊

listen=YES <<==表示vsftpd是以stand alone方式啟動的

pasv_enable=YES   <<==支援被動式聯機模式

use_localtime=YES   <<==使用本地時間

write_enable=YES   <<==允許使用者上傳資料

connect_timeout=60 <<==主動模式下,60秒內得不到用戶端響應則強制斷線

accept_timeout=60 <<==被動模式下,60秒內得不到用戶端響應則強制斷線

data_connection_timeout=180   <<==如果客戶在180秒內無法完成資料的傳輸,則強制斷線

idle_session_timeout=180 <<==180秒內無任何操作則強制斷線

max_clients=10 <<=限制同一時間最多可以有10個用戶端串連到vsftpd(適用於stand alone啟動)

max_per_id=1 <<==表示每個ip來源只能建立一個串連

ftpd_banner=welcome <<==登入vaftpd後的提示資訊

banner_file = /file  <<==表明用某個檔案中的內容作為提示資訊

guest_enable=YES <<==任何實體賬戶登入後都被認為是guest

guest_username=ftp <<==當guest_enable有效時,guest所擁有的許可權跟ftp使用者的許可權一樣

local_enable=YES  <<== 表示系統使用者能以實體使用者的方式登入ftp

local_max_rate=0 <<==實體使用者的傳輸速度,單位bytes/second,0為不限制

local_umask=022    <<==實體使用者上傳檔案的許可權

chroot_local_user=YES <<==限制實體使用者是否在自己的家目錄下

chroot_list_enable=YES <<==表示只有chroot_list_file參數指定的檔案下的使用者才會chroot

chroot_list_file=/etc/vsftpd/chroot_list  <<==指定只有在chroot_list檔案中的使用者才用chroot,如果登入的使用者名稱不在chroot_list中,則使用者無法登入

userlist_enable=YES <<==控制user_list檔案是否有效,但還要看user_deny參數

userlist_deny=YES <<==配合userlist_enable參數來限制某些帳號的登入

userlist_file=/etc/vsftpd/user_list  <<==指定userlist檔案所在

anonymous_enable=YES <<==是否允許匿名登入

xferlog_enable=YES <<==使用者上傳下載都會被記錄下來

xferlog_std_format=YES  <<==支援wuftp登入格式

tcp_wrappers=YES <<==是否支援tcp wrappers

pam_service_name=vsftpd    <<==pam模組的名稱,表示支援pam模組的管理

6、啟動vsftpd服務

vaftpd可以用stand alone和super daemon兩種模式啟動,一般情況下我們都用stand alone啟動。

[root@localhost ~]# chkconfig iptables on[root@localhost ~]# service iptables start  [root@localhost ~]# chkconfig iptables --listiptables       0:off1:off2:on3:on4:on5:on6:off[root@localhost ~]# ftp localhost              Trying ::1...ftp: connect to address ::1Connection refusedTrying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): yao331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> bye221 Goodbye.[root@localhost ~]#

如果執行ftp localhost時報命令找不到,則需要安裝ftp軟體包。

 

執行到這裡就表示ftp服務已經搭建好了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.