案例一

配置ftp服务器,要求如下,

1.匿名用户只能下载,匿名用户的根目录为/var/abc/,要求用户在该虚拟机上新增虚拟磁盘(30G),对磁盘进行分区,新增磁盘的第一个分区(10G)格式化为EXT3文件系统,将该分区挂载在/part1目录下,在/part1上创建home目录,将linux主机上本地帐号的默认家目录改为/part1/home,在该系统中创建user1user2帐号,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

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析

[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,我们就针对这个用户来做磁盘配额

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_02 

八.如果我们需要给多个用户做磁盘配额的话,一个一个指定又太麻烦了,有一个方法可以减轻负担。

[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

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_03 

下载速率

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_04 

禁止本地user5用户登录:

#vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES  

把用户加入/etc/vsftpd/ftpusers

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_05 

案例二 配置解析

1.查看服务器是否支持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 ip192.168.10.10

C:\Documents and Settings\Administrator>ftp 192.168.10.10

Connected to 192.168.10.10.

421 Service not available.

使用ip192.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"

使用抓包工具是可以看到用户名和密码的。

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_06 

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

5.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

7.ftp服务器产生自己的私钥

[root@localhost CA]# mkdir /etc/vsftpd/certs

[root@localhost CA]# cd /etc/vsftpd/certs/

[root@localhost certs]# openssl genrsa 1024 >vsftpd.key

8.ftp服务器产生请求

[root@localhost certs]# openssl req -new -key vsftpd.key -out vsftpd.csr

9.CA 服务器颁发证书

[root@localhost certs]# openssl ca -in vsftpd.csr -out vsftpd.cert

10.修改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.                 《-- 不支持加密访问

使用第三方软件进行测试如下

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_07 

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_08

默认进入自己的家目录

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_09

可以切换目录

Vsftpd的安全配置案例分析_Vsftpd的安全配置案例分析_10

使用抓包工具进行抓包,可以发现已经加密了

[root@localhost vsftpd]# tshark -ni eth0 -R "tcp.dstport eq 21"