selinux称为内核级加强型防火墙;selinux的目的在于明确的指明某个进程可以访问那些资源(文件,网络端口等);selinux是由美国国家安全局(NSA)开发 ,整合到linux内核的一个模块。selinux的主要作用有:针对文件,会对系统中每个文件添加安全上下文(context);针对进程会对系统中的每个进程添加安全上下文;会在系统服务上设定sebool开关;当进程的安全上下文和文件的安全上下文不匹配时,进程无法访问文件;sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值。
在服务端:
touch /mnt/westos
mv /mnt/westos /var/ftp/ ##这样是为了让文件具有在mnt目录下默认的上下文
在客户端:
lftp 172.25.254.168
ls ##不显示westos,因为安全上下文不允许
ls -Z /var/ftp/ ##查看安全上下文
semanage fcontext -l | grep /var/ftp ##查看该目录下所有文件的默认安全上下文
chcon -t public_content_t /var/ftp/westos ##修改安全上下文
lftp 172.25.254.101
ls ##显示westos
ps:上边对于上下文的修改是临时的,重启selinux之后就会还原
selinux的重启步骤:修改为disabled———>reboot————>修改为enforcing————>reboot
2.永久修改安全上下文
semanage fcontxet -a -t public_content_t '/westos(/.*)?' ##/westos(/.*)?表示该目录以及其下的文件
semanage fcontxet -l | grep /westos ##查看默认安全上下文
restorecon -FvvR /westos/ ##刷新安全上下文
重置selinux的方法:
touch /.autorelabel
reboot
3.sebool对于服务的影响(以ftp为例)
setenforce 1 ##若为0,会影响实验
getsebool -a | grep ftp ##找出有关ftp的sebool值
setsebool -P ftp_home_dir on ##开启上传的权限 -P表示永久,P为大写
lftp 172.25.254.101 -u westos ##注意使用本地用户
put /etc/passwd ##可以成功上传
4.selinux报错分析以及解决方案的提供工具:seroubleshoot-server.x86_64
touch /mnt/westos
mv /mnt/westos /var/ftp/
> /var/log/messages ##清空selinux的解决方案
> /var/log/audit/audit.log ##清空selinux的报错信息
在firefox中 ftp://172.25.254.101/ ##注意setenforce 1,若为0可以直接看到westos
cat /var/log/messages ##查看selinux的解决方案
cat /var/log/audit/audit.log ##查看selinux的报错信息
restorecon -v /var/ftp/* ##刷新网页就可以看到westos
yum remove setroubleshoot-server ##卸载工具
rm -f /var/ftp/westos
cat /var/log/messages ##查看selinux的解决方案,看不到解决方法
cat /var/log/audit/audit.log ##查看selinux的报错信息
semanage port -l |gerp http ##查看http的端口
cat /etc/services | grep http ##查看名称含http的端口
cat /etc/services | grep 21 ##查看端口含21的服务
cat /etc/services | grep -E “\<21\>” ##查看端口是21的服务,-E “\<21\>”是为了防止扩展
补:网络端口:用套接字实现————>数据库
主要的网络协议:tcp/ip协议 udp协议
yum install httpd
vim /etc/httpd/conf/httpd.conf ##修改Listen=6666
systemctl restart httpd ##重启失败,注意前提是setenforce 0
semanage port -a -t hhtp_port_t -p tcp 6666 ##添加6666的端口
systemctl restart httpd ##重启服务成功
semanage port -l | grep http ##查看端口是否添加成功
ps:若还不能重启,先清空日志,再重启,查看日志,若是selinux出现问题(如setbool...)
则需要重置selinux---->touch /.autorelabel--->reboot