安装vsftpd
#cd /etc/yum.repos.d/
# rm -rf *
# wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
# yum clean all
# yum -y install vsftpd
1.关闭匿名用户登录
ftp
支持匿名登录是不安全,所以要禁止匿名
ftp
登录
在
/etc/vsftpd/vsftpd.conf
修改以下三项
anonymous_enable=NO
#anon_upload_enable=YES (本来就是注释掉的,不需要改)
#anon_mkdir_write_enable=YES
(本来就是注释掉的,不需要改)
[root@red-hat-5 ~]# service vsftpd restart
关闭
vsftpd
:
[
确定
]
为
vsftpd
启动
vsftpd
:
[
确定
]
2.创建一个系统用户来登录ftp
[root@red-hat-5 ~]# useradd -s /sbin/nologin viong
建设一个不能登录系统用户.
只用来登录
ftp
服务
,
这里如果没设置用户目录。默认是在
home
下
添加ftp用户(用户名:ftpuser ftp根目录/home/wwwroot/ftpuser)
- useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser
3.
加强
vsftp
安全设置
从以上可以看出
ftp
家目录存在安全漏洞
,
所以要修改以下设置
:
(1)限制系统用户锁定在家目录
Vi /etc/vsftpd/vsftpd.conf
去掉前面
#
号
chroot_list_enable=YES (开启目录锁定选项,默认不锁定)
chroot_list_file=/etc/vsftpd/chroot_list
(指定锁定目录的用户列表
)
然后把所有用户加入
/etc/vsftpd/chroot_list
即可
[root@red-hat-5 ~]# ls /etc/vsftpd/ chroot_list
默认是不存在
,
需要我们手动建立
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@red-hat-5 ~]# touch /etc/vsftpd/chroot_list
[root@red-hat-5 ~]# cut -d : -f 1 /etc/passwd>>/etc/vsftpd/chroot_list
把本地用户都加入到
chroot_list
cut
命令是切去某一列
,-d
是每列的分隔符
,-f
是切取第几列
,
然后重定向到chroot
文件
[root@red-hat-5 ~]# ll /etc/vsftpd/
总计
24
-rw-r--r-- 1 root root 197 12-25 19:57 chroot_list
-rw--------1 root root 125 2007-12-13 ftpusers
ftpusers指的是阻止这个文件中的用户登陆
-rw------- 1 root root 361 2007-12-13 user_list
-rw------- 1 root root 4396 12-25 19:19 vsftpd.conf
-rwxr--r-- 1 root root 338 2007-12-13 vsftpd_conf_migrate.sh
(2)限制重要系统用户不能登录ftp权限
[root@red-hat-5 ~]# cat /etc/vsftpd/ftpusers
默认会加入一些比较重要系统用户
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
ftpusers利用系统的pam模块阻止某一些用户登录
(3)利用ftp用户策略允许登录ftp的系统用户
系统添加一个用户也默认有
ftp
的登陆权限,是不安全,要一个个设置,有点繁琐。利用
ftp
用户策略解决这个问题
,
即
user_list
文件设置,只有
user_list
中存在的用户才能登录系统
修改配置文件
:vi /etc/vsftpd/vsftpd.conf
在
userlist_enable=YES
文件后面添加
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
[root@red-hat-5 ~]# service vsftpd restart
关闭
vsftpd
:
[
确定
]
为
vsftpd
启动
vsftpd
:
[
确定
]
user_list使用介绍:
[root@hx10 vsftpd]# more 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.
表示:
userlist_deny=NO,那么/etc/vsftpd/user_list的用户才可以登录,需要把刚创建的帐号加入这个文件,当然还会阻止/etc/vsftpd/ftpusers的用户登录
userlist_deny=YES,那么/etc/vsftpd/user_list的用户不可以登录,即使设置密码
(4)设置登录ftp目标ip地址
为了让
ftp
更安全
,
我们设置
ftp
目标
ip
地址访问
C:\Users\Administrator>ipconfig
查看本地ip
...................................
以太网适配器
VMware Network Adapter VMnet1:6
连接特定的
DNS
后缀
. . . . . . . :
IPv4
地址
. . . . . . . . . . . . : 192.168.184.1
子网掩码
. . . . . . . . . . . . : 255.255.255.0
默认网关
. . . . . . . . . . . . . :
只允许这个
ip
地址访问
ftp ssh
,可以写条
iptable
做限制
.
如下
:
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 22 -j ACCEPT
允许
192.168.184.1
访问本地
22
端口
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 21 -j ACCEPT
允许
192.168.184.1
访问本地
21
端口
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 65341:65351 -j ACCEPT
允许
192.168.184.1
访问本地
PASV
端口
[root@red-hat-5 ~]# iptables -P INPUT DROP
禁止任何输入的数据包
[root@red-hat-5 ~]# service iptables save
保存
iptables
设置
将当前规则保存到
/etc/sysconfig/iptables: [
确定
]
[root@red-hat-5 ~]# service iptables status
检查
iptables
的设置
表格
:filter
Chain INPUT (policy DROP)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT tcp -- 192.168.184.1 0.0.0.0/0 tcp dpt:22
3 ACCEPT tcp -- 192.168.184.1 0.0.0.0/0 tcp dpt:21
4 ACCEPT tcp -192.168.184.1 0.0.0.0/0 tcp dpts:65341:65351