本节所讲内容:
• 用户和组的相关配置文件
• 管理用户和组
• 进入单用户模式找回root身份
• 暴力破解rhel5下shadow文件中的密码
FTP服务端:xuegod63.cn IP:192.168.1.63
FTP客户端:xuegod64.cn IP:192.168.1.64
FTP服务概述:
FTP服务器(File TransferProtocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议
常见FTP服务器:
windows:Serv-U FTP Server
Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。
今天的主角:vsftp
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
特点:
它是一个安全、高速、稳定的FTP服务器;
模式: C/S 模式
端口:
[root@xuegod64 ~]#vim /etc/services
20 (传数据) 21 (传指令)
fsp(File Service Protocol):文件服务协议。
安装vsftp服务器端
[root@xuegod63 ~]# rpm-ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
或
yum -y install vsftpd
安装客户端:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm
注:从RHEL6开始,系统镜像中默认没有ftp客户端命令。取而代之的是lftp命令
Linux客户端:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https,hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常好一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。
配置文件
/var/ftp/pub/ #默认的共享目录
/etc/vsftpd/vsftpd.conf #vsftpd主配置文件
/etc/vsftpd/ftpusers #用户指定哪些用户不能访问ftp服务器,黑名单
/etc/vsftpd/user_list #用户指定哪些用户能访问ftp服务器,白名单
/var/ftp/ #默认情况下匿名用户的根目录
启动服务
[root@xuegod63 ~]#service vsftpd restart
[root@xuegod63 ~]#chkconfig vsftpd on
[root@xuegod63 ~]#netstat -anptu | grep ftp
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2877/vsftpd
互动: 为什么看不到20端口?。
因为没有数据通信。
FTP服务的使用方法
Linux:
[root@xuegod63 ~]# lftp192.168.1.63
lftp 192.168.1.63:~>ls
drwxr-xr-x 2 0 0 4096 Mar 31 12:47 pub
windows:
修改配置文件,实战举例
例1:公司技术部准备搭建一台功能简单的FTP 服务器,允许所有员工上传和下载文件,并允许创建用
户自己的目录。
允许匿名用户访问
anonymous_enable=YES
允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
重启服务
[root@xuegod63 ~]#service vsftpd restart
启动服务:
service vsftpd restart
测试: 不能写
(2)创建上传目录ftp 用户的写入权限
注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!
下面我们来一步一步的实现,先修改目录权限,创建一个公司上传用的目录,叫xuegoddata,设置拥有者为ftp 用户所有,目录权限是755
[root@xuegod63 vsftpd]# mkdir/var/ftp/xuegoddata
[root@xuegod63 vsftpd]# chown ftp/var/ftp/xuegoddata/
[root@xuegod63 vsftpd]# ll -d !$
ll -d /var/ftp/xuegoddata/
drwxr-xr-x 2 ftp root 4096 Mar 9 19:30 /var/ftp/xuegoddata/
然后重新启动服务
[root@xuegod63 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
(5)测试
匿名登录FTP
现在我们匿名上传
现在匿名上传的文件是禁止删除滴~
这样匿名用户的上传就算成功了
注:工作中,匿名用户只是只读访问,写的权限也没有的。
例2:
公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文
件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别适用team1 和team2
帐号进行管理。先要求仅允许team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将
这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。
ftp 和www web服务器相结合。
www web服务器根目录: /var/www/html
只允许:team1和team2两用户可以上传。 vsftp禁止匿名。
分析:
将FTP 和WEB 服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安
全性,首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot 功能将team1
和team2 锁定在/var/www/html 目录下。如果需要删除文件则还需要注意本地权限
解决方案:
(1)建立维护网站内容的ftp 帐号team1 和team2 并禁止本地登录,然后设置其密码
[root@xuegod63 ~]# useradd -s /sbin/nologinteam1
[root@xuegod63 ~]# useradd -s /sbin/nologinteam2
[root@xuegod63 ~]# echo "123456" |passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updatedsuccessfully.
[root@xuegod63 ~]# echo "123456" |passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updatedsuccessfully.
2)配置vsftpd.conf 主配置文件并作相应修改
[root@xuegod63 vsftpd]# cp vsftpd.conf.backvsftpd.conf
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录
改:
为:
local_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
保存退出
(3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
[root@xuegod63 vsftpd]# touch/etc/vsftpd/chroot_list
[root@xuegod63 ~]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Nov 10 17:08/etc/vsftpd/chroot_list
[root@xuegod63 ~]# vim/etc/vsftpd/chroot_list #写入以下内容,一行,一个用户名
team1
team2
(5)重启vsftpd 服务使配置生效
service vsftpd restart
(6)修改本地权限
[root@xuegod63 ~]# ll -d /var/www/html/
drwxr-xr-x. 2 root root 4096 Oct 6 2011/var/www/html/
[root@xuegod63 ~]# chmod -R o+w/var/www/html/
[root@xuegod63 ~]# ll -d /var/www/html/
drwxr-xrwx. 2 root root 4096 Oct 6 2011/var/www/html/
(7)测试
测试:
windows :windows+R 再运行cmd
C:\Users\shen>ftp 192.168.1.63
连接到 192.168.1.63。
220 (vsFTPd 2.2.2)
用户(192.168.1.63:(none)): team1
331 Please specify the password.
密码:123456
230 Login successful.
ftp> pwd
257 "/"
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir test
257 "/test" created
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
test
226 Directory send OK.
ftp: 收到 6 字节,用时 0.00秒 6.00千字节/秒。
测试删除:
ftp> rm -rf test
550 Remove directory operation failed.
ftp> rmdir test #删除时,不用能用rm命令,因为rm命令不是ftp上的命令。
250 Remove directory operation successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp>
FTP虚拟用户的使用
概述:通过虚拟用户能讲ftp的用户和系统用户进行分离,这样即使黑客破解了ftp的账号和密码,也只是能访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性。
公司环境:
假设A公司有一台ftp服务器,此服务器提供了供公司员工下载的一些资料,普通员工只有查看和下载权限,但是没有上传和修改的权限,公司经理拥有上传和下载的权限
实现步骤:
1、创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码
[root@xuegod163 ~]# vim/etc/vsftpd/vusers.list
xsb
123
boss
456
注:其中xsb为普通员工登录账号,boss为经理登录账号
2、生成数据库
使用db_load生成,如果没有此命令,可以使用以下命令进行安装
[root@xuegod163 ~]# yum -yinstall db4-utils
生成用户数据库
[root@xuegod163 ~]# db_load -T-t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
注:-T:允许应用程序能够将文本文件转译载入数据库
-t:hash使用hash码加密
-f:指定包含用户名和密码的文本文件
3、修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取
[root@xuegod163 ~]# chmod 600/etc/vsftpd/vusers.db
4、创建两个系统用户virtual和rm并修改目录权限
[root@xuegod63 ~]# chmod600 /etc/vsftpd/vusers.db
[root@xuegod63 ~]#useradd -d /var/ftp/xsb -s /sbin/nologin virtual
[root@xuegod63 ~]#useradd -d /var/ftp/boss -s /sbin/nologin rm
[root@xuegod63 ~]# chmod755 /var/ftp/xsb/
[root@xuegod63 ~]# chmod755 /var/ftp/boss/
5、配置PAM文件
为了是服务器能使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块
PAM概述:
PAM(Plugable AuthenticationModule)为可插拔认证模块,不必重新安装应用系统,通过修
改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此
目录下保存着大量与认证有关的配置文件,并以服务名称命名。
[root@xuegod163 ~]# vim/etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
注:文件最后调用的数据库文件时省略掉了db后缀
6、修改主配置文件
[root@xuegod163 ~]# vim/etc/vsftpd/vsftpd.conf
local_enable=YES #允许本地用户登录
write_enable=YES #允许写入
anon_umask=022 #设置上传文件的默认权限
chroot_local_user=YES #限制目录
#guest_enable=YES #开启虚拟用户支持,可以在用户单独配置文件中设置
#guest_username=virtual #设置映射本地用户,可以在用户单独配置文件中设置
pam_service_name=vsftpd.vu #指定PAM文件
max_clients=300 #最大接入的客户端数量
max_per_ip=10 #设置每个IP地址最大连接数
如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端进行登录了,但是所有的虚拟用户权限一样。
建立独立的配置文件,设置不同用户的权限
[root@xuegod163 ~]# vim/etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir #指定用户配置文件的路径
[root@xuegod163 ~]# vim/etc/vsftpd/vusers_dir/xsb
guest_enable=yes
guest_username=virtual
anon_world_readable_only=no #允许匿名用户浏览整个服务器的文件
anon_max_rate=50000 #设置传输速率为50KB/s
[root@xuegod163 ~]# vim/etc/vsftpd/vusers_dir/boss
guest_enable=yes
guest_username=rm
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes #允许创建目录
anon_upload_enable=yes #允许上传文件
anon_max_rate=100000 #甚至传输速率为100KB/s
anon_other_write_enable=yes #允许修改、重命名、删除文件
客户端验证:
先拷贝一些测试文件
[root@xuegod163 ~]# cp/etc/passwd /var/ftp/xsb/
[root@xuegod163 ~]# cp/etc/hosts /var/ftp/boss/
客户端登录验证
使用xsb用户登录时,上传文件失败,权限不允许
使用boss用户登录上传文件成功