Linux学习笔记(10)

###################vsftpd服务###########################################

1.什么是ftp?
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

2.安装ftp

yum install vsftpd  -y
systemctl start vsftpd 
systemctl stop firewalld 
systemctl enable vsftpd 
setenforce 0


lftp ip ##能登陆并且显示,表示安装成功


3.vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录


4.vsftpd服务的配置参数
1)匿名用户设定
anonymous_enable=YES|NO ##匿名用户登陆限制


#<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub


#<匿名用户家目录修改>
anon_root=/direcotry


#<匿名用户上传文件默认权限修改>
anon_umask=xxx


#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO


#<匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载


#<匿名用户删除>
anon_other_write_enable=YES|NO


#<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student


#<最大上传速率>
anon_max_rate=102400


#<最大链接数>
max_clients=2


2)本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制


#<本地用户家目录修改>
local_root=/directory


#<本地用户上传文件权限>
local_umask=xxx


#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*


用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list




用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


#<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单


用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp



#
创建虚拟帐号身份)
vim /etc/vsftpd/loginusers ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123


db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db


vim /etc/pam.d/ckvsftpd ##文件名称任意
account requiredpam_userdb.sodb=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers


vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd
guest_enable=YES


虚拟帐号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser


虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER


mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}


虚拟帐号配置独立)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf


vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高




####################selinux的初级管理###################
什么是selinux?

1.selinux 安全上下文访问规则

• WEB 服务器的 HTTPD 进程设置了 SELINUX 上下文 system_u:system_r:httpd_t 标签。该上下文的重要部分 是第三个用冒号分隔的字段 SELINUX 类型 : httpd_t
• 系统上的文件和资源也设置了 SELINUX 上下文标签 , 并 且重要的部分是 SELINUX 类型。例如 , /var/www/html 中 的文件具有类型 httpd_sys_content_t 。 /tmp 和 /var/tmp 中的文件通常具有类型 tmp_t
• Seliux 策略具有允许以 httpd_t 身份运行的进程访问标记 为 httpd_sys_content_t 的文件的规则。没有规则允许这 些进程访问标记有 tmp_t 的文件 , 因此将拒绝这些访问 , 即 使常规文件权限指出应该允许这些访问


2.如何管理selinux级别
selinux开启或者关闭)
vim /etc/sysconfig/selinux
selinux=disabled        ##关闭状态
selinux=Enforcing        ##强制状态
selinux=Permissive        ##警告状态

getenforce            ##查看状态
当selinux开启时
setenforce 0|1            ##更改selinux运行级别

– 0 表示 permissive # 警告
– 1 表示 enforcing # 强制


3.如何更改文件安全上下文
临时更改)
chcon -t 安全上下文    文件
chcon -t public_content_t /publicftp -R
 一次性定制安全上下文,执行 restorecon -RvvF file 刷新后还原

永久更改)
semanage fcontext -l        ##列出内核安全上下文列表内容
semanage fcontext -l | grep /var/ftp    ##列出某个软件的安全上下文
semanage fcontext -a -t public_content_t '/publicftp(/.*)?'
restorecon -FvvR /publicftp/

-i:忽略不存在的文件。
-f:infilename 文件 infilename 中记录要处理的文件。
-e:directory 排除目录。
-R/-r:递归处理目录。
-n:不改变文件标签。
-o/outfilename:保存文件列表到 outfilename,在文件不正确情况下。
-v:将过程显示到屏幕上。
-F:强制恢复文件安全语境。

• restorecon 是 policycoreutil 软件包的一部分
• semanage 是 policycoreutil-Python 软件包的一部分
• semanage fcontext 可用与显示或修改 restorrecon 用来
设置默认文件上下文的规则
• semanage fcontext 使用扩展正则表达式来指定路径和文 件名。fcontext 规则中最常用的扩展正则表达式是 (/.*)?, 表示随意地匹配 / 后跟任何数量的字符



4.如何控制selinux对服务功能的开关

• SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可 以使用 SELinux 布尔值来调整策略 , 以有选择地进行调整
• 许多软件包都具有 man page *_selinux(8), 其中详细说明 了所使用的一些布尔值 ; man -k ‘_selinux’ 可以轻松地找 到这些手册
• getsebool 用于显示布尔值 , setsebool 用于修改布尔值
• setsebool -P 修改 SELinux 策略 , 以永久保留修改。


getsebool -a | grep 服务名称
getsebool -a | grep ftp
setsebool -P 功能bool值 on|off
setsebool -P    ftpd_anon_write on


三种报错:
553    本地文件不支持
550   系统不支持此服务
530   认证失败
500    权限过大

怎样允许匿名用户上传?
(1):在不考虑selinux情况下允许上传
vim /etc/vsftpd/vsftpd.conf
~~~~~~
local_enable=YES
anon_upload_enable=YES
~~~~~
 chmod 775 /var/ftp/pub/
 chgrp ftp pub/
(2):semanage fcontext -a -t public_content_rw_t "/var/ftp/pub(/.*)?"   ##给/var/ftp/pubselinux标签可执行权限
restorecon -RvvF /var/ftp/pub   ##重新加载文件
(3)打开selinux针对匿名用户上传的权限
getsebool -a | grep ftp
 setsebool -P ftp_home_dir off


5.监控selinux的错误信息
setroubleshoot-server

必须安装 setroubleshoot-server 软件包 , 才能将 SELinux 消息发送至 /var/log/message

提示:安装setroubleshoot-server 软件包 ,如果出现错误,可以去查看/var/log/message,里面有错误提示和解决方案。

• etroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘 要发送至 /var/log/messages
• 摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ), 可用于收集更多信息。 Sealert -l UUID 用于生成 特定事件的报告。 Sealert -a /var/log/audit/audit.log 用于在该文件中生成所有 事件的报告


你可能感兴趣的:(Linux学习笔记(10))