vsftpd伺服器的配置:
查找並安裝ftp包:
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
[root@localhost ~]# yum list all |grep ftp
[root@localhost ~]# yum info vsftpd
[root@localhost ~]# yum install -y vsftpd
[root@localhost ~]# rpm -qc vsftpd
編輯配置文件允許匿名訪問:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# chkconfig vsftpd on
[root@localhost ~]# service vsftpd start
查看ftp使用的埠:
[root@localhost ~]# netstat -tupln |grep ftp
本地進行匿名訪問:
[root@localhost ~]# ftp 127.0.0.1
[root@localhost ~]# lftp 127.0.0.1
[root@localhost ~]# useradd user1
[root@localhost ~]# echo "123" |passwd --stdin user1
本地用戶進行訪問:
[root@localhost ~]# ftp 127.0.0.1
文件上傳許可權設置:
[root@localhost ~]# cd /var/ftp
用戶無上傳許可權:
修改文件許可權,賦予用戶上傳許可權:
[root@localhost ftp]# chmod o wt pub
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ftp]# service vsftpd restart
拒絕文件下載許可權設置:
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ftp]# service vsftpd restart
其它有關ftp許可權設置:
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
可以創建文件夾許可權:
設置重命名和刪除許可權:
設置用戶訪問ftp的目錄提示信息:
[root@localhost ftp]# cd pub/
[root@localhost pub]# vim .message
用戶訪問是出現提示信息:
查看ftp日誌:
[root@localhost pub]# cd /var/log/
[root@localhost log]# ll |grep xferlog
數據傳輸方式:
ascii碼傳輸:
二進位傳輸:
設置訪問歡迎消息:
限制用戶只能訪問指定目錄:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
將用戶加入到chroot—list中,限定其訪問目錄:
[root@localhost vsftpd]#vim /etc/vsftpd/chroot_list
user1
[root@localhost ~]# service vsftpd restart
設置目錄下用戶能切換目錄,其他用戶不能切換用戶:
user1和root都不能登錄,(不要密碼):
[root@localhost vsftpd]# vim user_list
user1
user1和root都不能登錄,(要密碼):
[root@localhost vsftpd]# vim ftpusers
user1
設置目錄中用戶user1可以訪問不是目錄中用戶不允許訪問:
[root@localhost vsftpd]# service vsftpd restart
[root@localhost vsftpd]# echo "user2" >>user_list
安全設置,只允許指定ip用戶訪問:
[root@localhost vsftpd]# vim /etc/hosts.deny
[root@localhost vsftpd]# vim /etc/hosts.allow
本機(ip 192.168.1.100)進行訪問:
外部主機(ip 192.168.1.2)進行訪問:
ftps服務的安全及應用:
ftp證書的創建:
安裝抓包工具wireshark測試ftp安全性:
[root@localhost ~]# yum list all |grep wireshark
[root@localhost ~]# yum list all |grep wireshark
用抓包工具抓去伺服器eth0網卡的埠信息:
[root@localhost ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
[root@localhost ~]# service vsftpd start
外部用戶訪問時發現用戶名及密碼被抓取(安全性很低):
創建ftp證書,增強用戶訪問安全性:
證書的創建:
[root@localhost ~]# cd /etc/pki/
[root@localhost pki]# vim tls/openssl.cnf
[root@localhost pki]# cd CA/
證書相關配置:
[root@localhost CA]# mkdir crl certs newcerts
[root@localhost CA]# touch index.txt serial
[root@localhost CA]# echo "01" >serial
[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem
[root@localhost CA]# openssl req -new -key vsftpd.key -out vsftpd.csr
產生證書,並配置相關信息:
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
ftps服務證書的頒發:
[root@localhost CA]# chmod 600 private/cakey.pem
[root@localhost CA]# mkdir /etc/vsftpd/certs
[root@localhost CA]# cd /etc/vsftpd/certs/
[root@localhost certs]# openssl genrsa 1024 >vsftpd.key
[root@localhost certs]# openssl req -new -key vsftpd.key -out vsftpd.csr
檢索證書頒發信息:
[root@localhost certs]# openssl ca -in vsftpd.csr -out vsftpd.cert
配置證書相關服務:
[root@localhost certs]# chmod 600 *
[root@localhost certs]# vim /etc/vsftpd/vsftpd.conf
[root@localhost certs]# service vsftpd restart
外部用戶進行訪問:
此時在查看抓包工具,以及無法抓去合法用戶信息(安全性提高):
虛擬用戶的使用:
虛擬用戶的創建:
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser.txt
資料庫文件的創建與安裝:
[root@localhost vsftpd]# cd /mnt/cdrom/Server/
[root@localhost Server]# ll |grep db
[root@localhost Server]# rpm -qlp db4-utils-4.3.29-10.el5.i386.rpm
[root@localhost Server]# yum install db4-utils -y
[root@localhost ~]# cd /etc/vsftpd/
建立訪問者的庫文件:
[root@localhost vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
進入/etc/pam.d/下創建vsftpd.vu並作相關的配置:
[root@localhost Server]# cd /etc/pam.d/
[root@localhost pam.d]# cp vsftpd vsftpd.vu
[root@localhost pam.d]# vim vsftpd.vu
創建本地用戶,用於虛擬用戶的映射:
[root@localhost home]# useradd -D -b /home
[root@localhost home]# useradd user3
[root@localhost home]# echo "123" |passwd --stdin user3
[root@localhost home]# chmod 777 user3
將虛擬用戶映射為本地用戶:
[root@localhost pam.d]# vim /etc/vsftpd/vsftpd.conf
[root@localhost home]# service vsftpd restart
利用虛擬用戶訪問ftp:
ftps的簡單管理應用實例:
要求簡介:新增一塊硬碟,將新的硬碟掛在到本地/mnt/ftppart/,並創建公共目錄/mnt/ftppart/public,為每個訪問用戶創建一個家目錄/mnt/ftppart/home/,並指定大小為10M,允許匿名登錄下載,但下載速度為100K/s,本地用戶可以下載,上傳,創建,修改,和刪除,下載速度為1M/s.並且限制同時訪問用戶不超過2個,每個用戶最大鏈接數為2個.
配置步驟:
查看新增磁碟並格式化:
[root@localhost ~]# fdisk –l
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# mkfs -t ext3 /dev/sdb1
創建本地掛載點並掛在新增磁碟:
[root@localhost ~]# mkdir /mnt/ftppart
[root@localhost ~]# mount /dev/sdb1 /mnt/ftppart/
[root@localhost ~]# df –h
安裝ftp服務:
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
創建公共目錄和用戶個人家目錄:
[root@localhost Server]# cd /mnt/ftppart/
[root@localhost ftppart]# mkdir public
[root@localhost ftppart]# cd public/
[root@localhost public]# touch p1 p2
修改用戶家目錄:
[root@localhost public]# grep user /etc/passwd
[root@localhost public]# vim /etc/passwd
[root@localhost public]# cd /mnt/ftppart/
[root@localhost ftppart]# mkdir home
[root@localhost home]# cd /home/
[root@localhost home]# mv * /mnt/ftppart/home/
修改新建用戶家目錄:
[root@localhost home]# useradd -D -b /mnt/ftppart/home
設置新磁碟啟動時自動掛載:
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# mount -o remount /dev/sdb1
[root@localhost ~]# cd /mnt/ftppart/
[root@localhost ftppart]# quotacheck -augv –c
[root@localhost ftppart]# edquota -p user1 user2
[root@localhost ftppart]# quotaon /dev/sdb1
[root@localhost ftppart]# echo "quotaon /dev/sdb1" >>/etc/rc.d/rc.local
修改ftp配置文件實現各種要求限制:
[root@localhost ftppart]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ftppart]# service vsftpd restart
外部主機匿名訪問:
匿名上傳文件:
利用user1進行登錄:
用戶user1可以上傳,創建,修改,和刪除.
上傳文檔wj.doc:
創建文件夾2:
最大鏈接用戶為2個驗證:
vsftpd服務的拓展延伸:
vsftpd.conf的參數: | |
Anonymous_enable=yes | 允許匿名登陸 |
Dirmessage_enable=yes | 切換目錄時,顯示目錄下.message的內容 |
Local_umask=022 | FTP上本地的文件許可權,默認是077 |
Connect_form_port_20=yes | 啟用FTP數據埠的數據連接 * |
Xferlog_enable=yes | 激活上傳和下傳的日誌 |
Xferlog_std_format=yes | 使用標準的日誌格式 |
Ftpd_banner=XXXXX | 歡迎信息 |
Pam_service_name=vsftpd | 驗證方式 * |
Listen=yes | 獨立的VSFTPD伺服器 * |
Anon_upload_enable=yes | 開放上傳許可權 |
Anon_mkdir_write_enable=yes | 可創建目錄的同時可以在此目錄中上傳文件 |
Write_enable=yes | 開放本地用戶寫的許可權 |
Anon_other_write_enable=yes | 匿名帳號可以有刪除的許可權 |
Anon_world_readable_only=no | 放開匿名用戶瀏覽許可權 |
Ascii_upload_enable=yes | 啟用上傳的ASCII傳輸方式 |
Ascii_download_enable=yes | 啟用下載的ASCII傳輸方式 |
Banner_file=/var/vsftpd_banner_file | 用戶連接后歡迎信息使用的是此文件中的相關信息 |
Idle_session_timeout=600(秒) | 用戶會話空閑后10分鐘 |
Data_connection_timeout=120(秒) | 將數據連接空閑2分鐘斷 |
Accept_timeout=60(秒) | 將客戶端空閑1分鐘后斷 |
Connect_timeout=60(秒) | 中斷1分鐘后又重新連接 |
Local_max_rate=50000(bite) | 本地用戶傳輸率50K |
Anon_max_rate=30000(bite) | 匿名用戶傳輸率30K |
Pasv_min_port=50000 | 將客戶端的數據連接埠改在 |
Pasv_max_port=60000 | 50000—60000之間 |
Max_clients=200 | FTP的最大連接數 |
Max_per_ip=4 | 每IP的最大連接數 |
Listen_port=5555 | 從5555埠進行數據連接 |
Local_enble=yes | 本地帳戶能夠登陸 |
Write_enable=no | 本地帳戶登陸后無權刪除和修改文件 |
下面這是一組 | |
Chroot_local_user=yes | 本地所有帳戶都只能在自家目錄 |
Chroot_list_enable=yes | 文件中的名單可以調用 |
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list | 前提是chroot_local_user=no |
這又是一組 | |
Userlist_enable=yes | 在指定的文件中的用戶不可以訪問 |
Userlist_deny=yes | |
Userlist_file=/指定的路徑/vsftpd.user_list | |
又開始單的了 | |
Banner_fail=/路徑/文件名 | 連接失敗時顯示文件中的內容 |
Ls_recurse_enable=no | |
Async_abor_enable=yes | |
one_process_model=yes | |
Listen_address=10.2.2.2 | 將虛擬服務綁定到某埠 |
Guest_enable=yes | 虛擬用戶可以登陸 |
Guest_username=所設的用戶名 | 將虛擬用戶映射為本地用戶 |
User_config_dir=/任意指定的路徑/為用戶策略自己所建的文件夾 | 指定不同虛擬用戶配置文件的路徑 |
又是一組 | |
Chown_uploads=yes | 改變上傳文件的所有者為root |
Chown_username=root | |
又是一組 | |
Deny_email_enable=yes | 是否允許禁止匿名用戶使用某些郵件地址 |
Banned_email_file=//任意指定的路徑/xx/ | |
又是單的 | |
Pasv_enable=yes | 伺服器端用被動模式 |
User_config_dir=/任意指定的路徑//任意文件目錄 | 指定虛擬用戶存放配置文件的路徑 |
打開vsFTP伺服器的日誌功能:
把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣我們就能在/var/log目錄下查看vsftpd.log.這是vsFTP的日誌功能,這對於我們來說是極為重要的.
#xferlog_file=/var/log/vsftpd.log
綁定IP到vsFTP:
也就是說,如何讓用戶只能通過某個IP來訪問FTP.其實這個功能很有意思.如果綁定的是內網的IP,外部是沒有辦法訪問的.如果綁定的是對外服務的IP,內網也只能通過對外服務的IP來訪問FTP
在/etc/vsftpd/vsftpd.conf中加一行,以我的區域網為例,請看第一帖中的操作環境,這樣外網就不能訪問我的FTP了,內網也可能通過192.168.0.2來訪問FTP
listen_address=192.168.0.2
加完后,要重啟vsFTP伺服器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
關閉 vsftpd: [ 確定 ]
啟動 vsftpd: [ 確定 ]
磁碟空間有限解決辦法:
我的硬碟空間有限,如何把帳號ftp默認的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區,因為空間緊張,我能否把ftp這個用戶的默認路徑放到別的分區?
可以,應該如下操作!
要把ftp這個用戶刪除
#userdel -r ftp
會有錯誤信息,不過不用理,這是正常的.
然後我們再把這個用戶添加上,比如我想為帳號ftp的家目錄設置在/mnt/LinG/ftp,我們就可以如下操作
[root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp
僅僅是這樣做還不行,因為這樣還是不能讓匿名用戶找到它的家目錄,所以我們必須改變/mnt/LinG/ftp這個目錄的許可權.
[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/
把系統默認用standalone啟動改為用xinetd啟動:
如何把Redhat 9.0中系統默認安裝的vsftpd-1.1.3-8.i386.rpm,系統默認vsFTPd是用standalone啟動方式 ,改為xinetd啟動方式 ?如果是用源碼包安裝的,安裝后就是xinetd模式,如果是用RPM包安裝的,在Redhat 9.0中,應該用下面的方法來解決.
1.在/etc/xinetd.d/目錄中創建一個文件vsftpd
[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd
/etc/xinetd.d/vsftpd內容如下:
service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd
# server_args =
# log_on_success = DURATION USERID
# log_on_failure = USERID nice = 10 disable = no }
2.複製vsftpd.conf到/etc/目錄下,因為xinetd對vsFTPd配製文件應該在/etc目錄下,所以我們就必須把這個文件複製到/etc目錄下,否則會出現系統中local用戶無法登入,也就是說,不複製這個文件會出現ftp非匿名用戶無法訪問,只能用匿名用戶訪問.
[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
3.更改配製文件/etc/vsftpd.conf,把如下的項注掉:也就是把
listen=YES
改為
#listen=YES
或者是把這行刪除也行.
4.把/etc/init.d/vsftpd這個文件刪除.其實最好的備份到別處,因為我們有時實驗來實驗去,可能還會轉到standalone模式啟動.我就直接移動到別的目錄,比如是/root下面的backup目錄.
[root@linuxsir001 root]#mkdir /root/backup
[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup
5.運行ntsysv,把vsftpd的服務取消
[root@linuxsir001 root]#ntsysv [ ] vsftpd
6.重啟xinetd服務
[root@linuxsir001 root]# service xinetd restart
[火星人 ] linux下ftp服務的搭建與應用已經有560次圍觀