SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。
selinux分为三种工作状态:
enforcing模式:selinux的正常工作模式即开启状态,这时的selinux就像一个保护程序,自动禁止进行对系统安全有威胁的操作。
disable模式:selinux功能的关闭模式,不会对威胁操作进行组织,系统将不受保护。
permissive模式:允许违规操作的进行,但是会用日志的方式记录下来。
###(以下操作均在vsftpd服务安装并开启,lftp服务安装,防火墙关闭或者防火墙允许ftp服务访问的状态下进行)
1.通过设置安全上下文,来决定ftp目录里面的内容是否可被连接用户查看到:
使用getenforce指令可以查看selinux的状态,编辑配置文件/etc/sysconfig/selinux可以配置selinux的工作模式,配置完成后需要重启后生效:
设置selinux为正常工作模式:
重启后,在/mnt目录下建立文件file1,并将文件移动到/var/ftp即连接本机用户的默认目录下,使用ls -Z /var/ftp可以查看到安全上下文:
使用lftp连接到本机后,由于selinu功能的开启,并不能看到在该目录下的文件file1:
将selinux设置为警告模式后,也就是说允许该操作的执行。这样在连接到的目录里就又可随意看到文件file1了,但设置为警告模式后,selinux就会允许违规操作的执行了,这样对系统来说并不是很安全。想要允许该操作的执行但又不影响到系统的安全性,可以通过设置文件的安全山下文来实现:
设置文件file1的安全上下文为public_content_t,就可以在不影响系统安全的情况下查看到file1文件了:
2.设置目录的安全上下文:
在根目录下建立目录,并在该目录下建立文件。编辑vsftpd服务的配置文件,将lftp服务连接后的默认所在目录修改为/westos:
在vsftpd服务配置完成后重启vsftpd服务使配置生效:
在vsftpd服务重启之后,修改目录的安全上下文:
使用restorecon -FvvR /westos指令刷新设置之后,连接本机就可以看到westos目录里面的文件了:
3.使用setsebool给程序添加功能开关:
在selinux关闭的情况下,上传文件的权限可以通过配置vsftpd.conf文件来设置
当selinux开启之后,上传文件的权限就会受到限制。这时候就需要使用setsebool功能来进行设置了:
使用getsebool -a | grep ftp指令可以查看到关于ftp的功能开启的情况,其中文件的上传权限包含在ftp_home_dir开关里:
使用setsebool -P ftp_home_dir on 开启功能:
当功能开启之后就可以上穿文件了:
4.配置端口:
配置http服务的端口,需要下载http并开启服务:
编辑/etc/httpd/conf/httpd.conf文件,设置端口为6666并保存退出:
在配置完成后,重启httpd服务会出错,将selinux设置为警告模式后就可以重启了:
查看httpd服务的端口情况:
设置端口为6666:
设置成功者之后就可以看到6666已经被添加到端口中了: