部署FTP站点(匿名用户)
c
mkdir -p /var/ftp/文档中心 //创建目录
cd /var/ftp/文档中心
mkdir 产品技术文档 公司品牌宣传 常用软件工具 公司规章制度
chown -R ftp.ftp /var/ftp/文档中心 //修改所属主和所属组,避免用户无法读写目录中的数据
c
yum -y install vsftpd.x86_64 //安装vsftpd
systemctl restart vsftpd
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=yes //允许匿名用户登陆anonymous
local_enable=NO //禁止本地用户登陆
#local_umask=022 //注释此行表示取消对本地用户设置新增文件的权限掩码
write_enable=YES //具有写入权限
anon_upload_enable=YES //允许匿名用户具备上传权限
anon_umask=022 //设置匿名用户的新增文件的权限掩码
anon_mkdir_write_enable=YES //允许匿名用户创建目录
anon_other_write_enable=NO //禁止匿名用户修改或删除文件
ss -lnt |grep 21 //查看端口是否允许
部署FTP专属站点
建立用户并设置主目录
c
useradd -d /var/ftp/项目部 user1
useradd -d /var/ftp/行政部 user2
passwd user1
passwd user2
//在共享目录下放置测试文件
touch /var/ftp/项目部/1.txt
touch /var/ftp/行政部/2.txt
创建另外一个ftp配置文件
c
vim /etc/vsftpd/vsftpd2100.conf
anonymous_enable=NO //禁止匿名用户登陆
local_enable=YES //允许用户名登陆
write_enable=YES //允许写入
local_umask=022 //创建文件的默认权限为755
chroot_local_user=YES //禁止用户切换目录
chroot_list_enable=YES //开启chroot_list功能
chroot_list_file=/etc/vsftpd/chroot_list //chroot_list文件目录
pam_service_name=vsftpd //服务名称为vsftpd
listen_port=2100 //对应端口为2100
vim /etc/vsftpd/chroot_list //创建chroot_list文件
user1
user2 //将要收到禁止切换目录的用户添加进去
systemctl restart vsftpd@vsftpd2100 //开启vsftpd2100服务
ss -tlnp|grep 2100 //查看2100端口是否开启
客户端
c
[root@Client ~]# ftp 192.168.0.7 2100
ftp> pwd //登陆user1查看路径
257 "/var/ftp/项目部"
ftp> ls //之前写的文件也在里面
227 Entering Passive Mode (192,168,0,7,204,178).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Aug 09 14:29 2.txt
226 Directory send OK.
ftp> get 2.txt //下载到主目录
local: 2.txt remote: 2.txt
227 Entering Passive Mode (192,168,0,7,227,195).
150 Opening BINARY mode data connection for 2.txt (0 bytes).
226 Transfer complete.
ftp> mkdir test.txt //创建成功
257 "/var/ftp/项目部/test.txt" created
ftp> ls //权限为755
227 Entering Passive Mode (192,168,0,7,35,204).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Aug 09 14:29 2.txt
drwxr-xr-x 2 1003 1003 6 Aug 09 15:10 test.txt
226 Directory send OK.
ftp> cd /root
550 Failed to change directory. //禁止切换目录
比赛
使用ftp服务上传网页代码。
使用vsftpd服务;
ftp的上传文件根目录即为web服务器的网站根目录;
ftp登录的用户为ftpuser;
通过ftp上传的文件用户为webuser, 文件权限为644,目录权限为755。
c
yum -y install vsftpd
vim /root/ftp_vuser //创建用户密码的文本文件
ftpuser
123
db_load -T -t hash -f /root/ftp_vuser /etc/vsftpd/ftp_vuser.db
//从/root/ftp_vuser文件中生成虚拟用户数据库文件ftp_vuser.db
chmod 600 /etc/vsftpd/ftp_vuser.db //修改文件权限为600,不修改可能报错
useradd -d /data/share/htdocs/skills -s /sbin/nologin webuser
//添加虚拟用户的映射账户,创建映射用户的宿主目录
chmod 777 /data/share/htdocs/skills
c
vim /etc/pam.d/vsftpd.login //为虚拟用户建立PAM认证文件
auth required pam_userdb.so db=/etc/vsftpd/ftp_vuser //指定虚拟用户数据库文件
account required pam_userdb.so db=/etc/vsftpd/ftp_vuser
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vim /etc/vsftpd/vsftpd.conf
local_enable=YES //不用管
write_enable=YES //允许执行写操作
chroot_local_user=YES //所有用户被限制在ftp目录内,不能跨出该目录,除非有例外情况
pam_service_name=vsftpd.login //PAM认证文件
//下面需要自己补充
allow_writeable_chroot=YES // 允许写入根路径
local_root=/data/share/htdocs/skills //设置ftp文件主目录(登录ftp后显示的目录)
支持虚拟用户配置
guest_enable=yes //启用虚拟用户
guest_username=webuser //虚拟用户映射到的系统账号
user_config_dir=/etc/vsftpd/vusers_dir //虚拟用户配置文件存放目录
mkdir /etc/vsftpd/vusers_dir
c
vim /etc/vsftpd/vusers_dir/ftpuser //创建虚拟用户的权限配置文件
virtual_use_local_privs=NO
write_enable=YES //虚拟用户可写入
anon_world_readable_only=NO
anon_upload_enable=YES //虚拟用户可上传
anon_mkdir_write_enable=YES //虚拟用户可创建文件
anon_other_write_enable=YES //虚拟用户可重命名,删除
anon_umask=022 //设置虚拟用户创建文件的权限为755
systemctl restart vsftpd
客户端
c
yum -y install lftp
lftp -u ftpuser:123 ftp.sdskills.org
比赛2
禁止使用不安全的FTP,请使用"CSK Global Root CA"证书颁发机构,颁发的证书,启用FTPS服务;
用户webadmin,登录ftp服务器,根目录为/webdata/;
登录后限制在自己的根目录;
允许WEB管理员上传和下载文件,但是禁止上传后缀名为.doc .docx .xlsx的文件。
限制用户的下载最大速度为100kb/s;最大同一IP在线人数为2人;
用于通过工具或者浏览器下载的最大速度不超过 100kb/s
一个IP地址同时登陆的用户进程/人数不超过2人。
c
yum install vsftpd -y //安装vsftpd
yum -y install openssl
mkdir /CA
cd /CA //进入证书目录
mkdir certs
mkdir newcerts
mkdir private
touch index.txt
openssl genrsa -out private/ftp.key 4096 //生成密钥
openssl req -new -key private/ftp.key -out certs/ftp.csr //生成证书请求文件
openssl ca -keyfile private/cakey.pem -cert cacert.pem -in certs/ftp.csr -out ftp.crt //根证书服务器颁发证书(web跟根证书服务器是同一台可以直接颁发)
openssl ca -revoke /csk-rootca/newcerts/01.pem #吊销证书
c
mkdir /webdata //创建要求的目录
chmod 777 /webdata/ //给目录最高权限,它就算最高也会被限制
useradd webadmin //创建要求的用户
passwd webadmin //为用户设置密码
c
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份配置文件
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES //锁定所有系统用户在主目录中
force_local_data_ssl=YES //启用证书认证
force_local_logins_ssl=YES //启用证书登录
ssl_enable=YES //启用ssl
rsa_cert_file=/ca/ftp.crt //证书文件路径
rsa_private_key_file=/ca/ftp.key //密钥文件路径
local_root=/webdata //设置本地用户登录的主目录
allow_writeable_chroot=YES //系统用户具有读写权限
deny_file={*.doc,*.docx,*.xlsx} //拒绝文件后缀,doc,docx,xlsx
local_max_rate=100000 //本地用户最大传输速率
max_per_ip=2 //每个IP同时发起最大连接数为2
systemctl restart vsftpd //重启vsftpd
客户端
c
yum -y install lftp //安装ftp服务
vim /etc/lftp.conf
set ssl:verify-certificate no //不验证证书,不然拒绝访问
touch test.doc
touch test.docx
touch test.xlsx
touch test.txt //创建测试文件
c
lftp -u webadmin:123 172.16.100.202/ftp.sdskills.com
257 "/"
lftp webadmin@ftp.sdskills.com:/> put test.doc
put: Access failed: 550 Permission denied. (test.doc)
lftp webadmin@ftp.sdskills.com:/> put test.xlsx
put: Access failed: 550 Permission denied. (test.xlsx)
lftp webadmin@ftp.sdskills.com:/> put test.dec
lftp webadmin@ftp.sdskills.com:/> ls
-rw-r--r-- 1 1001 1001 0 Sep 05 20:49 test.dec
lftp webadmin@ftp.sdskills.com:/> cd /root/
cd: Access failed: 550 Failed to change directory. (/root)
vsftpd
安装vsftpd及相关依赖
c
yum -y install vsftpd* pam* db4*
vsftpd : ftp 软件
pam : 认证模块
DB4 : 支持文件数据库
vsftpd配置文件说明
c
/etc/vsftpd/vsftpd.conf //vsftpd核心配置文件
/etc/vsftpd/ftpusers //用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list //指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_config_migrate.sh //是vsftpd操作的一些变量和设置脚本
/var/ftp/ //默认情况下匿名用户的根目录
vsftpd配置详解
属性 | 属性值 | 含义 |
---|---|---|
anonymous_enable | YES/NO | 是否允许匿名用户(anonymous)登录FTP,如果该设置被注释,则默认允许 |
local_enable | YES/NO | 是否允许本地系统用户登录 |
write_enable | YES/NO | 是否开启任何形式的FTP写入命令,上传文件 |
local_umask | xxx | 本地用户的umask设置,如果注释该设置则默认为077,但一般都设置为022 |
anon_upload_enable | YES/NO | 是否允许匿名用户上传文件,如果要设置为允许,则需要先开启write_enable,否则无效,此外对于目录还要具有写权限 |
anon_mkdir_write_enable | YES/NO | 是否允许匿名用户创建新目录 |
dirmessage_enable | YES/NO | 当进入某个目录时,发送信息提示给远程用户 |
xferlog_enable | YES/NO | 是否开启 上传/下载 的日志记录 |
connect_from_port_20 | YES/NO | 是否使用20端口来连接FTP |
shown_uploads | YES/NO | 匿名上传的文件是否由某一指定用户 chown_username 所有 |
shown_username | 有效用户名 | 匿名上传的文件由该设定的用户所有 |
xferlog_file | 有效路径 | 设置日志文件的保存位置,默认为/var/log/vferlog |
c
cp vsftpd.conf{,.bak} //将文件复制后加上.bak
vsftpd配置匿名用户
c
vim vsftpd.conf //进入主配置文件
cat vsftpd.conf | grep -v ^# //-v 反向查找 ^开头 查找开头不带#的内容
c
write_enbale=YES
anon_umask=022 //设置匿名用户文件的权限掩码
anonymous_enable=YES //允许匿名用户的访问
anon_upload_enable=YES //允许匿名用户上传文件
anon_mkdir_write_enable=YES //允许匿名用户创建目录
anon_other_write_enable=YES //允许匿名用户拥有其他的写入权限(改名,删除,覆盖)
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
//剩下的都是默认参数
anon_root=/var/ftp //匿名用户的FTP根目录
anon_max_rate=0 //限制最大传输速率(字节/秒)0为无限制
c
netstat -lnpt | grep vsftpd //查看FTP进程
权限设置
c
cd /var/ftp //进入FTP根目录
//如果匿名用户需要在此目录上 上传文件,需要把目录的属主,属组改为FTP
chown -R ftp.ftp pub/ //属主,属组都修改为FTP
后面需要重启服务
vsftpd配置系统用户
创建用户
c
useradd zhangsan //创建用户
useradd lisi
passwd zhangsan
passwd lisi //设置密码
修改配置文件
c
vim /etc/vsftpd/vsftpd.conf
local_enable=YES //是否允许本地系统用户访问
local_umask=077 //本地用户所上传文件权限掩码
local_root=/var/ftp //设置本地用户的FTP根目录,如果不指定默认是系统用户的home目录
chroot_local_user=YES //标识所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
//配置不能多空格,会导致服务起不来
local_max_rate=0 //限制最大传输速率(字节/秒)0为无限制
chroot_list_enable=YES //标识是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list //表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的,默认是可以的
添加用户进白名单
c
vim /etc/vsftpd/user_list
zhangsan
lisi
vsftp配置虚拟用户
建立虚拟FTP用户账号
c
useradd -s /sbin/nologin vu
创建虚拟用户文件
c
cd /etc/vsftpd/
vim user
wangwu
12345
maliu
12345
基数代表用户名,偶数行代表密码
创建数据文件
通过db_load工具创建出Berkeley DB格式的数据库文件
c
db_load -T -t hash -f user user.db
-f 指定数据原文件
-T 允许非Berkeley DB的应用程序使用文本格式转化的DB数据文件
-t hash 读取文件的基本方法
建立支持虚拟用户的PAM认证文件
c
vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
修改配置文件
c
vim /etc/vsftpd/vsftpd.conf
write_enable=YES //是否启用写入权限(上传,删除文件)
dirmessage_enable=YES //用户切换进入目录时显示,message文件
xferlog_enable=YES //启用日志文件,记录到/var/log/xferlog
connect_from_port_20=YES //允许服务器主动模式(从20端口建立数据连接)
xferlog_std_format=YES //启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
listen=YES //是否以独立运行的方式监听服务
userlist_enable=YES //是否启用user_list列表文件
tcp_wrappers=YES //是否启用tcp_wrappers主机访问控制
allow_writeable_chroot=YES
guest_enable=YES //设置启用虚拟用户功能
guest_username=vu //设置虚拟 用户的宿主用户
pam_service_name=vsftpd.vu //用户认证PAM文件位置
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES //设置虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/user_dir //设置虚拟用户个人vsftp的配置文件存放位置
listen_address=192.168.1.1 //设置监听FTP服务的IP地址
listen_port=21 //设置监听FTP服务的端口号
download_enable=YES //是否允许下载文件
pasv_enable=YES //允许服务器被动模式
pasv_max_port=24600 //设置被动模式服务器的最大端口号
pasv_min_port=24500 //设置被动模式服务器的最小端口号
userlist_deny=YES //是否禁用user_list列表文件
max_clients=0 //限制并发客户端连接数
max_per_ip=0 //限制同一IP地址的并发连接数
ascii_upload_enable=YES //表示是否允许用户可以上传一个二进制文件,默认是不允许
chown_username=root //表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_download_enable=YES //表示是由允许用户可以下载一个二进制文件,默认不允许
nopriv_user=vsftpd //设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户
async_abor_enable=YES //设置支持异步传输的功能
ftpd_banner=Welcome to awei FTP servers //设置vsftpd的登录标语
为虚拟用户创建个人的配置文件
c
mkdir /etc/vsftpd/user_dir
vim /etc/vsftpd/user_dir/zhao //如果用户叫zhao就以zhao命名
local_root=/etc/vsftpd/data //虚拟用户的数据存放路径
mkdir /etc/vsftpd/data //创建虚拟用户数据存放目录
chmod 777 /etc/vsftpd/data/ //给予权限
lftp
c
-f:指定lftp指令要执行的脚本文件
-c:执行指定的命令后退出
--help:限制帮助信息
--version:限制指令的版本号
c
lftp 192.168.107.129 //登录ftp服务器
get hahaa -o / //下载hahaha到/目录下
mirror test/ //mirror可以下载ftp上的目录
选拔赛
c
yum -y install vsftpd
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //不允许匿名
listen_port=2121 //监听2121
pasv_enable=YES //开启被动模式
pasv_max_port=31500 //端口范围31000-31500
pasv_min_port=31000
idle_session_timeout=210 //设置会话超时时间210
userlist_deny=YES //限制用户
useradd ZZFTP001
useradd ZZFTP002
vim /etc/vsftpd/user_list
ZZFTP002
systemctl restart vsftpd
firewall-cmd --add-port=2121/tcp
mkdir /home/ZZFTP001/WordFile
chmod -R 777 /home/ZZFTP001/
测试
lftp ZZFTP001:123@10.10.10.13:2121 //我把防火墙关了
get WordFile