selinux 的一个例子

时间:2022-02-20 20:53:17

     在linux当中selinux是一个非常好的安全工具,它的目标是,用最小的权限做要做的事情。一开始遇到selinux相关的问题的时候,总是按照网上最通用的办法,关掉selinux,当他不存在,既然不存在,也不必研究。但是在生产环境当中,需要在selinux开启的时候完成一些功能,于是,学习就此展开。我们的需求是这样的,使用sftp将文件传送至服务器端的指定目录下,而这个目录是apache httpd 服务存放文件的地方,并且这个用户不能访问除此之外的其他目录。

    这里需要记下的是sshd的chroot,selinux的策略

     1.chroot部分,依靠下列片段实现。在sshd_config 当中注释掉冲突设置并增添以下内容:

Subsystem sftp internal-sftp

Match Group sftponly

        ChrootDirectory /var/www/html

        X11Forwarding no

        AllowTcpForwarding no

        ForceCommand internal-sftp

    2,增加对应的seliunx策略组。

module sshdhttpd 1.0;

require {
        type httpd_sys_content_t;
        type sshd_t;
        class dir { getattr unlink ioctl execute append read setattr swapon write lock create rename link search rmdir remove_
name reparent add_name open } ;
        class file {  open getattr relabelto link unlink ioctl append read setattr write lock create rename relabelfrom  } ;
}

#============= sshd_t ==============
allow sshd_t httpd_sys_content_t:dir { getattr unlink ioctl execute append read setattr swapon write lock create rename link s
earch rmdir remove_name reparent add_name open } ;
allow sshd_t httpd_sys_content_t:file { open getattr relabelto unlink ioctl append read setattr write lock create rename relab
elfrom link };
    激活方式为:
#checkmodule -M -m -o sshdhttpd.mod sshdhttpd.te
#semodule_package -o sshdhttpd.pp -m sshdhttpd.mod
#semodule -i sshdhttpd.pp

参考资料:

http://www.selinuxproject.org/page/ObjectClassesPerms#dir
http://www.selinuxproject.org/page/ObjectClassesPerms#dir