自學鳥哥linux服務-vsftpd

實驗環境虛擬機CentOS 6.5

IPADDR=192.168.1.224

安裝vsftpd

yum -y install vsftpd


配置文件:

vim/etc/vsftpd/vsftpd.conf


查看端口

[root@localhost ~]# netstat -anp |grep vsftpd

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1409/vsftpd   

配置文件說明20端口爲數據傳輸端口

# Make sure PORT transfer connections originate from port 20 (ftp-data).

connect_from_port_20=YES

所以要開放端口TCP 21 20  兩個端口

iptables -I INPUT -p tcp --dport 20:21 -j ACCETP

service iptables save


防火牆加載ftp模塊                        #不加載訪問不了

vim /etc/sysconfig/iptables-config

加入以下兩個,順序不要錯

IPTABLES_MODULES="ip_conntrack_ftp"

IPTABLES_MODULES="ip_nat_ftp"

重啓防火牆

/etc/init.d/iptables restart



原理:

vsftpd 分主動模式和被動模式,

默認爲主動模式:

客戶端通過21端口訪問ftp服務器建立連接後,再通過20端口交換數據,主動模式就是服務器20端口主動連接客戶端開放的隨機端口,進行傳輸!因此如果客戶端在內網的話,路由難以開放隨機端口,數據是很難傳得入內網的.

被動模式:

客戶端通過21端口訪問ftp服務器建立連接後,被動模式就是服務器隨機打開端口xxxx叫客戶端訪問服務器的xxxx端口進行數據傳輸!因此這種模式也大大不安全,因此我們可以自己設置開放的端口來控制!


##################配置主動模式#################################################

vim /etc/vsftpd/vsftpd.conf


anonymous_enable=YES                                  #允許區名訪問

local_enable=YES                                      #允許本地登錄

write_enable=YES                                      #允許寫

anon_upload_enable=YES                                #允許區名上傳

anon_mkdir_write_enable=YES                           #允許區名mkdir和寫

dirmessage_enable=YES                                 #啓用目錄歡迎信息

xferlog_enable=YES                                    #啓用日誌

ftpd_banner=######This is my FTP service.######       #全局歡迎信息

chroot_local_user=YES                                 #更改用戶目錄爲家目錄限制訪問別的目錄


保存

重啓服務

/etc/init.d/vsftpd restart

查看selinux

setsebool -a |grep ftp

[root@localhost pub]# getsebool -a |grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off


設置selinux

setsebool -P allow_ftpd_anon_write on  

setsebool -P allow_ftpd_full_access on

setsebool -P ftp_home_dir on

再查看

[root@localhost pub]# getsebool -a |grep ftp                                                    

allow_ftpd_anon_write --> on

allow_ftpd_full_access --> on

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> on

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off


創建用戶

#創建不能登錄的用戶bob 並指定家目錄爲/var/ftpusers/

useradd -s /sbin/nologin -d /var/ftpusers/ bob  

passwd bob


創建目錄歡迎信息文件

因爲剛纔啓用了dirmessage_enable=YES,進入目錄出現歡迎信息

所有我在pub目錄下創建歡迎信息文件

echo "########There is pub#######" > /var/pub/.message     


                               

###############測試###############################

windows下打開cmd

ftp 192.168.1.224

看到歡迎信息

######This is my FTP service.######  

輸入用戶名ftp

輸入dir

>dir

看到pub目錄了

>pwd

>"/"        #顯示爲根

>cd pub

250-"########There is pub#######" 進入pub目錄出現在歡迎信息


用資源管理器訪問ftp://192.168.1.224

看到pub目錄。

上傳文件失敗,提示沒權限。   


服務器查看權限

這時這個根目錄其實是/var/ftp/

[root@localhost pub]# ll -d /var/ftp/                   

drwxr-xr-x. 3 root root 4096 4月   3 14:04 /var/ftp/     

[root@localhost pub]# ll /var/ftp/

drwxr-xr-x. 3 ftp ftp 4096 4月   3 14:30 pub


因此ftp目錄上是沒權限寫入的。

只能寫入pub目錄裏。

windows下訪問ftp://192.168.1.224

區名登錄看到pub

右鍵選擇 登錄 輸入用戶名bob 密碼123456

登錄成功

上傳下載操作都OK


############下面繼續配置文件的一些常用功能##############

(一).FTP服務器的流量控制

max_clients=100             ;允許的最大連接數,定義爲100,默認爲0,表沒有限制

max_per_ip=5               ;每個IP允許的連接數,0表沒有限制,需要運行於獨立模式方可

anon_max_rate=50000        ;匿名用戶最大帶寬,單位爲bps

local_max_rate=200000       ;系統用戶最大帶寬


如何對指定用戶進行流量限制呢?

#vi /etc/vsftpd/vsftpd.conf,添加一行:

user_config_dir=/etc/vsftpd/userconf

#touch /etc/vsftpd/userconf/netseek_com  爲netseek_com這個用戶建立一個netseek_com文件

#vi /etc/vsftpd/userconf/netseek_com  添加以下內容

local_max_rate=100000 


(二)改變上傳所有者

#chown_uploads=YES                     #改變上傳所有者

#chown_username=ltiaw                  #上傳所有者改爲ltiaw



#chroot_list_enable=YES                      #啓用改爲根目錄的list

#chroot_list_file=/etc/vsftpd/chroot_list   #指定list文件

啓用這裏的時間把上面啓用所有人都chroot註釋掉 #chroot_local_user=YES

這個可以指定用戶誰chroot,不放去list文件的用戶就不chroot


(三)用戶訪問控制

userlist_enable=YES   #用戶控制啓用

查看文件

vim /etc/vsftpd/user_list

內容如下:


# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody


意思是:默認是拒絕這個文件下的用戶名,還有 /etc/vsftpd/ftpusers 這個文件裏的用戶也是拒絕的!

所以root是登錄不了的。

也可以在配置文件里加入:userlist_deny=NO

1.userlist_deny=NO  這樣user_list裏的用戶名就是允許的,

但是/etc/vsftpd/ftpusers 裏的還是禁止的.


2./etc/vsftpd/ftpusers文件,是由這個配置文件控制的: vim /etc/pam.d/vsftpd 

具體怎麼控制自己看了。



抓包

tcpdump -i eth0 host 192.168.1.5 and host 192.168.1.224 |grep -v ssh

分別傳輸文件兩次,發現果然是服務器20訪問客戶端端口,而且第一次與第二次的端口不是同的並大於1024








##########################被動模式###########################################

vim /etc/vsftpd/vsftpd.conf

註釋20端口 #connect_from_port_20=YES     

增加下面三行

pasv_enable=yes               #啓用被動模式

pasv_min_port=4500            #被動模式起始端口爲:4500

pasv_max_port=5000            #被動模式結束端口爲:5000


保存重啓服務

/etc/init.d/vsftpd restart


開放端口:

iptables -I INPUT -p tcp --dport 4500:5000 -j ACCETP

/etc/init.d/iptables save


抓包:

tcpdump -i eth0 host 192.168.1.224 and host 192.168.1.5 |grep -v ssh 

客戶端傳文件


15:55:32.341781 IP 192.168.1.5.ssowatch > 192.168.1.224.4693: Flags [.], seq 1:1461, ack 1, win 65535, length 1460

15:55:32.341795 IP 192.168.1.5.ssowatch > 192.168.1.224.4693: Flags [P.], seq 1461:1847, ack 1, win 65535, length 386


5:55:37.358912 IP 192.168.1.5.vxcrnbuport > 192.168.1.224.4776: Flags [.], ack 447, win 65090, length 0

15:55:37.358921 IP 192.168.1.5.vxcrnbuport > 192.168.1.224.4776: Flags [F.], seq 1, ack 447, win 65090, length 0


正是我剛纔開放的端口4500-5000之間的~


開啓成功





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章