LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux配置 >

Vsftpd的安全配置案例

时间:2012-12-19 11:10来源:51cto 编辑:dairight 点击:
案例一 配置ftp服务器,要求如下: 匿名用户只能下载,匿名用户的根目录为/var/abc/,要求用户在该虚拟机上新增虚拟磁盘(30G),对磁盘进行分区,新增磁盘的第一个分区(10G)格式化
案例一 配置ftp服务器,要求如下:
匿名用户只能下载,匿名用户的根目录为/var/abc/,要求用户在该虚拟机上新增虚拟磁盘(30G),对磁盘进行分区,新增磁盘的第一个分区(10G)格式化为EXT3文件系统,将该分区挂载在/part1目录下,在/part1上创建home目录,将linux主机上本地帐号的默认家目录改为/part1/home,在该系统中创建user1和user2帐号,user3以及user4在进行ftp访问时,可以访问到自己的家目录,每个用户的空间限制为8M,速率为3MB/S,要求该ftp服务器同时的在线访问量为80个连接,每用户的连接数最多为3个,禁止user5登录。

案例二 使用tcp_wrapper,作ip限制。利用CA 实现安全ftp的安全访问

一.配置如下:
修改用户家目录
[root@root ~]# useradd -D -b /part1/home
先要做磁盘配额
[root@mail ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 3916.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p  
Partition number (1-4): 1
Last cylinder or +size or +sizeM or +sizeK (1218-3916, default 3916): +10G
Command (m for help): w

二.格式化硬盘命令:
Mkfs -t   ext3 /dev/sdb1
创建目录,并挂载硬盘

三.编辑配置文件如下:
[root@mail ~]# vim /etc/fstab       
[root@mail ~]# mount /dev/sdb1 /part1/home

[root@mail ~]# mount -o remount /dev/sdb1
[root@mail ~]# mount
/dev/sdb1 on /part1/home type ext3 (rw,usrquota)
usrquota这个磁盘配额参数也已经添加成功了
[root@mail ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                       13G  2.2G  9.8G  18% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/sdb1             9.2G  150M  8.6G   2% /part1/home

四。现在开始生成磁盘配额数据库
[root@mail ~]# quotacheck  -auvg
切换到/part1/home 目录下
[root@root home]# ll
总计 24
-rw------- 1 root root  6144 12-18 01:10 aquota.user
drwx------ 2 root root 16384 12-18 00:23 lost+found

五。现在可以看到,生成磁盘配额数据库后,在/part1/home下面就自动的产生了文件,aquota.user
这个文件就是用来存放所有磁盘配额的信息。

六.启用磁盘配额。
[root@mail ~]# quotaon /part1/home

七.编辑磁盘配额。
# edquota user3
现在我们系统中有个用户user3,我们就针对这个用户来做磁盘配额
 

八.如果我们需要给多个用户做磁盘配额的话,一个一个指定又太麻烦了,有一个方法可以减轻负担。
[root@mail ~]# edquota -p user1 user2
使用如下命令查看user2的磁盘配额情况
[root@mail ~]# edquota user2
验证如下:
[user3@root ~]$ dd if=/dev/zero of=u3 bs=1M count=8
sdb1: write failed, user block limit reached.
dd: 写入 “u3”: 超出磁盘限额
8+0 records in
7+0 records out
[root@root ~]# edquota -p user3 user4
[root@root ~]# repquota -a
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  152688       0       0              4     0     0       
user3     --    8000    8000    8000              9     0     0       
user4     --      32    8000    8000              8     0     0     

九.Vsftpd服务器的配置部分 
[root@mail vsftpd]# vim vsftpd.conf 
 96 chroot_list_enable=YES
 97 # (default follows)
 98 chroot_list_file=/etc/vsftpd/chroot_list
 97 # (default follows)
 98 chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
max_clients=80
max_per_ip=3
anon_root=/var/abc
local_max_rate=3000000

十.禁止user3 user4登录后禁止更改目录
[root@mail vsftpd]# vim chroot_list 
user3
user4
验证:
[root@root ~]# ftp 127.0.0.1
Name (127.0.0.1:user3): user3
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /home
550 Failed to change directory.    不能切换目录了
每个ip最多能连接3次
 
下载速率
 
禁止本地user5用户登录:
#vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES  
把用户加入/etc/vsftpd/ftpusers
 

案例二 配置解析
查看服务器是否支持tcp_wrapper
[root@localhost Server]# ldd $(which vsftpd)
linux-gate.so.1 =>  (0x00138000)
libssl.so.6 => /lib/libssl.so.6 (0x001ba000)
 libwrap.so.0 => /lib/libwrap.so.0 (0x00af5000)
 可以看到是该服务器是支持tcp_wrapper的 只允许某个ip登录或者一个网段
vim /etc/hosts.allow    
vsftpd:192.168.10.10:allow  #也可以 vsftpd:192.168.10.0/255.255.255.0:allow 允许某个网段
vim /etc/hosta.deny
vsftpd:all:deny
验证ftp server 的ip是192.168.10.10
C:\Documents and Settings\Administrator>ftp 192.168.10.10
Connected to 192.168.10.10.
421 Service not available.
使用ip为192.168.10.10 登录
User (192.168.10.10:(none)): user1
Connection closed[root@localhost etc]# ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.10:root): user1
230 Login successful. by remote host.
看到可以登录。
Ftps的配置部分
 注意:先把tcp_wrapper里面的配置清空以免影响访问
[root@localhost Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm 
[root@localhost Server]# rpm -ivh wireshark-1.0.8-1.el5_3.1.i386.rpm
[root@localhost Server]# tshark -ni eth0 -R "tcp.dstport eq 21"
使用抓包工具是可以看到用户名和密码的。
 
CA 部分
私钥是cakey.pem,根证书是cacer.pem
 45 dir             = /etc/pki/CA 
 87 [ policy_match ]
 88 countryName             = optional
 89 stateOrProvinceName     = optional
 90 organizationName        = optional
 91 organizationalUnitName  = optional
 92 commonName              = optional
 93 emailAddress            = optional
[root@localhost CA]# mkdir certs newcerts crl
[root@localhost CA]# touch index.txt serial

CA服务器产生自己的证书
[root@localhost CA]# openssl genrsa 1024 > private/cakey.pem
CA服务器产生证书
[root@localhost CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem

ftp服务器产生自己的私钥
[root@localhost CA]# mkdir /etc/vsftpd/certs
[root@localhost CA]# cd /etc/vsftpd/certs/
[root@localhost certs]# openssl genrsa 1024 >vsftpd.key

ftp服务器产生请求
[root@localhost certs]# openssl req -new -key vsftpd.key -out vsftpd.csr

CA 服务器颁发证书
[root@localhost certs]# openssl ca -in vsftpd.csr -out vsftpd.cert

修改CA服务器的证书及私钥的权限
[root@localhost vsftpd]# cd /etc/pki/CA
[root@localhost CA]# chmod 600 private/cakey.pem
[root@localhost CA]# chmod 600 cacert.pem 
当用户通过ftps方式访问ftp服务器是,要使用ftp服务器的证书。所以要在ftp的配置文件中说明证书及私钥位置
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert
rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key
测试:
C:\Documents and Settings\Administrator>ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.0.5)
User (192.168.10.10:(none)): user1
530 Non-anonymous sessions must use encryption.  #可以看到已经加密了
Login failed.                 《-- 不支持加密访问
使用第三方软件进行测试如下
 



默认进入自己的家目录


可以切换目录

使用抓包工具进行抓包,可以发现已经加密了
[root@localhost vsftpd]# tshark -ni eth0 -R "tcp.dstport eq 21"

转载请保留固定链接: https://linuxeye.com/configuration/1066.html

------分隔线----------------------------
标签:安全Vsftpd
栏目列表
推荐内容