找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 技术 查看内容

SELinux 环境下网络服务设置 , 第 1 部分

2012-05-14 15:25    评论: 4 收藏: 1 分享: 3    

SELinux 环境下 Samba 配置

Samba 的 SELinux 的文件类型

SELinux 环境中,Samba 服务器的 smbd 和 nmbd 守护进程都是在受限的 smbd_t 域中运行。并且和其他受限的网络服务相互隔离。下面的示例演示的是 SELinux 下的  smb 进程

 $ ps -eZ | grep smb 
 unconfined_u:system_r:smbd_t:s0 16420 ?        00:00:00 smbd 
 unconfined_u:system_r:smbd_t:s0 16422 ?        00:00:00 smbd 

缺省情况下,smbd 只能读写 samba_share_t 类型的文件 , 不能读写 httpd_sys_content_t 类型的文件。如果希望 smbd 能读写 httpd_sys_content_t 类型的文件,可以重新标记文件的类型。另外还可以修改布尔值如允许 Samba 提供 NFS 文件系统等共享资源。如果需要修改文件和目录的 SELinux 类型属性时可以使用三个命令:chcon、 semanage fcontext 和 restorecon 命令 。

Samba 的 SELinux 的布尔变量

SELinux 也为 Samba 提供了一些布尔变量用来调整 SELinux 策略,如果希望 Samba 服务器共享 NFS 文件系统,可以使用如下命令:

# setsebool -P samba_share_nfs on

下面是常用的布尔变量;

  • allow_smbd_anon_write 开放此布尔变量启用允许 smbd 保留一个区域的共同文件。
  • samba_create_home_dirs 开放此布尔变量启用允许 Samab 独立创建新的主目录。这通常是用于 PAM 机制。
  • samba_domain_controller 当启用此布尔变量时允许 Samba 作为域控制器,以及赋予它的权限执行相关的命令,如使用 useradd,groupadd 的 和 passwd 。
  • samba_enable_home_dirs 启用此布尔变量允许 Samba 共享用户的主目录。
  • samba_export_all_rw 启用此布尔变量允许公布任何文件或目录,允许读取和写入权限。
  • samba_run_unconfined 启用此布尔变量允许允许的 Samba 运行 / var / lib/samba/ scripts 目录中的脚本。
  • samba_share_nfs 启用此布尔变量将允许 Samba 共享 NFS 文件系统。
  • use_samba_home_dirs 启用此布尔变量可以使用远程服务器 Samba 的主目录。
  • virt_use_samba 允许虚拟机访问 CIFS 文件。

配置实例

(1) 共享一个新建的目录

受限创建一个目录作为 Samba 的共享资源,然后在目录下建立一个文件检验共享是否成功。

 #mkdir /myshare 
 #touch /myshare/file1 

设置创建目录和目录中文件的类型 

 #semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
 # restorecon -R -v /myshare 

修改 Samba 配置文件 /etc/samba/smb.conf,添加共享资源定义包括如下行:: 

 [myshare] 
 comment = My share 
 path = /myshare 
 public = yes 
 writeable = yes 
创建一个 samba 用户
 # smbpasswd -a testuser 
 New SMB password: Enter a password 
 Retype new SMB password: Enter the same password again 
 Added user testuser. 

启动 Samba 服务 

 service smb start 

查询可以使用的共享资源: 

 $ smbclient -U testuser -L localhost 

使用 mount 命令挂载共享资源,并且检验文件: 

 #mount //localhost/myshare /test/ -o user= testuser 
 # ls /test/ 

(2)共享一个网页

如果要共享一个网页文件目录如 Apache 服务器的  /var/www/html,是不能使用文件类型的。此时可以使用  samba_export_all_ro 和  samba_export_all_rw 两个布尔值变量,达到共享目录和文件的目的。步骤如下:

修改 samba 配置文件,添加如下行:

 [website] 
 comment = Sharing a website 
 path = /var/www/html/ 
 public = yes 
 writeable = yes 

开放 samba_export_all_ro 布尔值变量 

 #setsebool -P samba_export_all_ro on 

设置权限: 

 #chmod 777 /var/www/html/ 

共享目录: 

 #mount //localhost/myshare /test/ -o user= testuser 
 # ls /test/ 

SELinux 环境下 NFS 配置

NFS 的 SELinux 的文件类型

SELinux 环境中,nfs 服务器的守护进程都是在受限的 nfs_t 域中运行。并且和其他受限的网络服务相互隔离。SELinux 策略不允许使用 NFS 共享远程文件。如果一定要共享远程文件,可以使用 nfs_export_all_ro 和  nfs_export_all_rw 等布尔值变量调整 SELinux 的策略。按照 SELinux 的策略规定客户端安装 NFS 文件系统采用的默认文件系统是 nfs_t,此外 SELinux 还针对 nfsd 定义了一些文件类型:

  • var_lib_nfs_t 这种类型用于现有的和新的文件复制或在创建的 /var/lib/nfs 目录中。在正常运行这种类型应该不需要改变。要恢复到默认设置,可以使用超级用户权限运行命令:restorecon -R -v /var/lib/nfs。
  • nfsd_exec_t /usr/sbin/rpc.nfsd 程序文件和其他涉及到 NFS 可执行文件和库都是这种类型。其他文件不使用此类型的任何文件。

NFS 的 SELinux 的布尔变量

SELinux 提供了几个布尔变量用来调整 NFS,你可以在系统安全和 NFS 功能之间取得平衡。例如:

将本机的 NFS 共享设置成可读可写,需要开放相关布尔值变量:

 #setsebool -P nfs_export_all_rw on 

如果你想要将远程 NFS 的家目录共享到本机,需要开放相关布尔值变量:

 #setsebool -P use_nfs_home_dirs on 

下面是常用的布尔变量;

  • allow_ftpd_use_nfs 当启用时这个布尔变量允许 ftpd 访问 NFS 挂载。
  • allow_nfsd_anon_write 当启用时这个布尔变量允许写入到一个公共目录匿名 nfsd。
  • httpd_use_nfs 当启用时这个布尔变量容许的 httpd 访问一个 NFS 文件系统上存储的文件。
  • nfs_export_all_ro 当启用时这个布尔变量允许任何文件或目录通过 NFS 导出,允许只读权限。
  • nfs_export_all_rw 当启用时这个布尔变量允许任何通过 NFS 导出的文件或目录,允许读取和写入权限。
  • qemu_use_nfs 当启用时这个布尔变量允许 QEMU 使用 NFS 文件系统。
  • samba_share_nfs 启用此布尔变量将允许 Samba 共享 NFS 文件系统。
  • use_nfs_home_dirs 当启用时这个布尔变量允许将支持 NFS 主目录。
  • virt_use_nfs 当启用时这个布尔变量允许虚拟机访问 NFS 文件。
  • xen_use_nfs 当启用时这个布尔变量允许 Xen 使用 NFS 文件。

一个例子

这个例子中 NFS 服务器的 IP 地址 192.168.1.1,NFS 客户端的 IP 地址为 192.168.1.10,两台主机在同一子网(192.168.1.0/24)。

首先在 NFS 服务器端使用 setsebool 命令确保 nfs_export_all_rw 布尔变量已经打开,使得 NFS 客户端能够以只读的方式安装 NFS 文件系统。然后创建一个顶级目录,作为共享资源,然后在目录中建立一个文件提供给客户端访问,命令如下:

 #setsebool  -P nfs_export_all_rw on 
 #mkdir – p /share/nfs 
 #cp /etc/profile /share/nfs/test 
# chmod  - R 777 /share/nfs 

下面编辑 /etc/exports 文件把共享资源加入。 

 /share/nfs 	 192.168.1.10(rw) 

确保防火墙修改设置正确。然后启动 nfs 服务 

 # service nfs start 
 Starting NFS services: 		 [  OK  ] 
 Starting NFS quotas: 		 [  OK  ] 
 Starting NFS daemon: 		 [  OK  ] 
 Starting NFS mountd: 		 [  OK  ] 

 运行 exports 命令确保共享资源公布,使用 showmount 命令查询共享资源。

 #exportfs -rv 
 exporting 192.168.1.10:/share/nfs 
 # showmount -e 
 Export list for nfs-srv: 
 /share/nfs 192.168.1.10 

下面在 NFS 客户端可以使用命令挂载 NFS 服务器的共享资源了 :

 # mount.nfs 192.168.1.1:/share/nfs /mnt 
 # ls /mnt 
 total 0 
 -rwxrwxrwx.  1 root root 0 2012-01-16 12:07 test 

总结

第 2 部分将讨论 vsftp 、MySQL、Bind dns 服务的配置。

关于作者

曹江华,毕业于工科大学机电一体化专业,从事 CAD 设计。后从事小型数据库的应用。1999 年开始从事构建网络、管理维护、数据库管理工作。关注开放系统和网络安全。出版多本 Unix/Linux 安全管理书籍。

来自:http://www.ibm.com/developerworks/cn/linux/l-cn-selinux-services1/

12
查看其它分页:

最新评论

我也要发表评论

微博评论 2012-05-11 08:29 回复
所以在操作实验的时候,要关闭selinux

来自 小中中的围脖 的新浪微博
7th 2012-05-17 00:02 回复

实际生产环境中selinux应该都是开着的吧!

DeadFire 2012-05-18 10:06 回复
回复 7th 的帖子

应该是根据情况来决定开或者关。

7th 2012-05-20 23:25 回复
回复 DeadFire 的帖子

如果是运行oracle10g肯定关着的,因为不兼容!

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。