SELinux 使用示例

Published on 2015 - 06 - 10

SELinux 使用示例


1.关闭SELinux<

vi /etc/sysconfig/selinux

SELINUX=disabled #启动改成 enforcing

2.与Apache Httpd相关的 SELinux 安全策略

setsebool -P httpd_can_net-work_connect_db_1

允许httpd脚本或模块通过网络连接数据库

setsebool -P httpd_enable_cgi 1

允许httpd支持CGI程序

setsebool -P httpd_use_cifs 1

允许httpd访问cifs文件系统资源

setsebool -P allow_httpd_mod_auth_pam 1

允许Apache使用mod_auth_pam模块

setsebool -P httpd_use_nfs 1

允许httpd访问NFS文件系统资源

setsebool -P httpd_can_sendmail 1

允许http守护进程发送电子邮件

setsebool -P httpd_can_network_memcache 1

允许httpd 连接网络memcache服务器

如果希望多个进程域,(如:Apache,FTP,rsync等)共享相同的文件,我们可以设置文件安全上下文为 public_content_t 或者 public_content_rw_t,这些安全上下文允许上面提到的所有服务进程域读取文件内容,如果修改为可读写,则需要 public_content_t 的类型标签。
通过添加 `public_content_t` 类型标签,允许httpd服务读取/var/httpd 目录:

semanage fcontext -a -t public_content_t "/var/httpd(/.*)?"
restorecon -F -R -v /var/httpd


通过添加 `public_content_rw_t` 类型标签,允许httpd可读写/var/web目录及子目录。注意,该设置需要开启布尔值 `allow_httpd_anon_write`:

semanage fcontext -a -t public_content_rw_t "/var/web(/.*)?"
restorecon -F -R -v /var/httpd/incoming
具体的安全上下文描述信息在下表:
文件与目录描述 安全上下文类型标签
/var/cache 缓存目录资源 httpd_cache_t
Apache 配置文件 httpd_config_t
作为CVS内容的文件资源 httpd_cvs_content_t
apache日志文件资源 httpd_log_t
httpd代理内容资源 httpd_squid_content_t
httpd系统资源 httpd_sys_content_t
可读写httpd系统资源 httpd_sys_rw_content_t

3.与FTP相关的 SELinux 安全策略

setsebool -P ftp_home_dir 1
允许ftp读写用户家(home)目录中的数据

setsebool -P allow_ftpd_full_access 1
允许本地账号登陆ftp可以读写文件系统中的所有文件

setsebool -P ftpd_connect_db 1
允许ftp连接数据库

setsebool -P allow_fptd_use_cifs 1
允许FTP共享cifs文件系统

setsebool -P allow_ftpd_use_nfs 1
允许FTP共享NES文件系统


允许ftp读取/var/ftp目录

semanage fcontext -a -t public_content_t "/var/ftp(/.*)?"
restorecon -F -R -v /var/ftp

允许ftp读写/var/ftp目录

semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?"
restorecon -F -R -v /var/ftp
具体的安全上下文描述信息在下表:
文件与目录描述 安全上下文类型标签
/etc/目录下的ftp文档 ftpd_etc_t
控制ftp程序仅在ftpd_t域下运行 ftpd_exec_t
控制ftp程序仅在ftpd_initrc_t域下运行 ftpd_exec_t
ftp锁数据文件 ftpd_lock_t
ftp在/tmp目录下生成的临时文件 ftpd_tmp_t

4.MySQL 相关的SELinux安全策略

setsebool -P allow_user_mysql_connect 1

允许用户连接mysql服务器

setsebool -P mysql_connect_any 1
允许mysqld服务连接所有的端口号

具体的安全上下文描述信息在下表:
文件与目录描述 安全上下文类型标签
mysqld数据库文件 mysqld_db_t
存储在/etc目录下的mysql文件 mysqld_etc_t
控制mysql程序仅在mysqld_t域中运行 mysqld_exec_t
控制mysql程序仅在mysqld_initrc_t域中运行 mysqld_initrc_exec_t
ftp在/tmp目录下生成的临时文件 ftp_tmp_t
控制mysql程序仅在mysqld_safe_t域中运行 mysqld_safe_exec_t
mysq存储在/tmp目录下的临时文件 mysqld_tmp_t
mysql存储在/var/run目录下的文件 mysqld_var_run_t

5.NFS相关的SELinux安全策略

setsebool -P allow_ftpd_use_nfs 1
允许ftp服务器使用NFS文件系统共享

setsebool -P git_system_use_nfs 1
允许git访问NFS文件系统

setsebool -P qemu_use_nfs 1
允许qemu使用NFS文件系统

setsebool -P rsync_use_nfs 1
允许rsync服务器共享NFS文件系统

setsebool -P cobbler_use_nfs 1
允许cobbler 访问NFS文件系统
具体的安全上下文描述信息在下表:
文件与目录描述 安全上下文类型标签
nfs数据文件 nfs_t
控制NFS程序仅在nfsd_t域中运行 nfsd_exec_t
控制NFS程序仅在nfsd_initrc_exec_t域中运行 nfsd_initrc_exec_t
设置文件为之都NFS文件 nfsd_ro_t
设置文件为可读写NFS文件 nfsd_rw_t

6.Samba相关的SELinux安全策略

setsebool -P samba_domain_controller 1
允许samba作为域控制添加账户和修改密码

setsebool -P samba_export_all_ro 1
允许samba以只读方式共享任意文件或目录

setsebool -P samba_export_all rw 1
允许samba以读写方式共享任意文件或目录

setsebool -P use_samba_home_dirs 1
开启samba家目录

setsebool -P samba_enable_home_dirs 1
允许samba共享账户家目录
具体的安全上下文描述信息在下表:
文件与目录描述 安全上下文类型标签
samba存储在/etc/目录下的文件 samba_etc_t
samba存储在/tmp/目录下的文件 samba_net_tmp_t
samba存储在/var/目录下的文件 samba_var_t
samba密码文件 samba_secrets_t
samba共享文件 samba_share_t
samba日志文件 samba_log_t
控制samba程序仅在samba_initrc_t域中运行 samba_initrc_exec_t
控制samba程序仅在samba_net_t域中运行 samba_net_exec_t