Selinux 基于APACHE 需要修改的内容

1. 关闭iptables

1
2
[root@allentuns ~]# service iptables status
iptables: Firewall is not running.

2. 启动Selinux

1
2
[root@allentuns ~]# egrep '^SELINUX=' /etc/sysconfig/selinux
SELINUX=enforcing

3. 安装httpd服务

1
2
# yum -y install httpd
# yum -y install vim

4. 修改httpd配置文件

1
2
3
4
5
[root@allentuns ~]# cd /etc/httpd/conf/
[root@allentuns conf]# cp httpd.conf httpd.conf.bak
[root@allentuns conf]# vim httpd.conf
#修改一行
ServerName localhost:80

5. 启动httpd服务

1
# service httpd start

6. 测试【1】

SELINUX for APACHE  VSFTP_selinux

7. 创建新的web目录

1
2
3
[root@allentuns ~]# mkdir /www
[root@allentuns ~]# cd /www/
[root@allentuns www]# echo '<h1>This is test web</h1>'>index.html

8. 删除apache的欢迎页面,重新启动httpd服务

1
2
3
4
[root@allentuns www]# rm -rf /etc/httpd/conf.d/welcome.conf
[root@allentuns www]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

9. 测试【2】

SELINUX for APACHE  VSFTP_selinux_02


10. 使用新创建的web页面

1
2
3
4
[root@allentuns www]# vim /etc/httpd/conf/httpd.conf
#修改一下两行
DocumentRoot "/www"
<Directory "/www">

11. 重新加载配置文件

1
[root@allentuns www]# service httpd reload

12. 测试【3】

SELINUX for APACHE  VSFTP_selinux_03


13. 为什么会没有权限呢?
这个时候我们关闭selinux,在来继续访问

1
2
3
[root@allentuns www]# setenforce 0
[root@allentuns www]# getenforce
Permissive

14. 测试【4】

SELINUX for APACHE  VSFTP_selinux_04


15. 看来真是selinux的问题,我们开启selinux ,然后通过修改selinux对文件的属性来访问服务

1
2
3
[root@allentuns www]# setenforce 1
[root@allentuns www]# getenforce
Enforcing

16.查看文件对应的selinux属性值

1
2
[root@allentuns www]# ls -Z
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html

17. 通过chcon修改对应的属性值

1
2
3
4
5
6
7
8
9
10
11
[root@allentuns www]# chcon --help |less
Usage: chcon [OPTION]... CONTEXT FILE...
or:  chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
or:  chcon [OPTION]... --reference=RFILE FILE...
Change the SELinux security context of each FILE to CONTEXT.
[root@allentuns www]# ls -Z /var/www/
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
[root@allentuns www]# chcon -t httpd_sys_content_t index.html

18. 测试【5】SELINUX for APACHE  VSFTP_selinux_05


大家也看到了吧 在开启Selinux的情况下 修改修改文本的属性值,也可以保证服务的安全!!



_______________________________________________________________________________________________

          Selinux 基于APACHE 需要修改的内容


一、如何让暱名用户能够上传文件到ftp服务器?


1,修改ftp目录的访问权限


# cd /var/ftp/


# setfacl -m u:ftp:rwx pub


2,修改配置文件/etc/vsftp/vsftp.conf


anonymous_enable=YES-----------暱名登录ftp


anon_upload_enable=YES---------暱名上传


anon_mkdir_write_enable=YES------暱名创建目录


anon_other_write_enable=YES------暱名进行其他操作


3,登录ftp上传文件


# lftp localhost  -----------登录ftp服务器


lftp localhost:/pub> cd pub ----------------------- 进入pub目录


lftp localhost:/pub> lcd /etc-------------------------进入文件系统的/etc目录,注意lcd命令,对于cd命令,这里使用lcd,其他命令可以使用!命令,如!Ls,显示的就是进入ftp前的当前目录。


lftp localhost:/pub> put shadow


868 bytes transferred



然而,开启了selinux后,这些功能形同样会失效。


这时,就需要用到getseboolsetsebool


# getsebool -a | grep ftp--------------显示所有与ftp有关的功能开关


allow_ftpd_anon_write --> off-----------开启selinux后,默认暱名用户无写权限


allow_ftpd_full_access --> off-----------默认无访问权限


allow_ftpd_use_cifs --> off


allow_ftpd_use_nfs --> off


ftp_home_dir --> off


ftpd_connect_db --> off


ftpd_use_passive_mode --> off


httpd_enable_ftp_server --> off


tftp_anon_write --> off


要想暱名用户能够上传,这时就需要启用这两个功能了。


# setsebool -P allow_ftpd_anon_write=1


# setsebool -P allow_ftpd_anon_write=on


以上两种任选一种。


-P选项,表示永久有效。


# setsebool -P allow_ftpd_full_access=1


这样,暱名用户就可以再次上传了。


_________________________________________________________________________________________________________

Selinux 基于SAMBA 需要修改的内容


[root@server1 pub]# mkdir /erikxue

[root@server1 pub]# chmod 777 /erikxue

[root@server1 pub]# ls -Z /etc/samba/

-rw-r--r--. root root system_u:object_r:samba_etc_t:s0 lmhosts

-rw-r--r--. root root system_u:object_r:samba_etc_t:s0 smb.conf

-rw-r--r--. root root system_u:object_r:samba_etc_t:s0 smbusers

[root@server1 pub]# ll -Z /ccc/

drwxr-xr-x. nobody nobody unconfined_u:object_r:default_t:s0 /erikxue

[root@server1 pub]# chcon -u system_u /erikxue/

[root@server1 pub]#chcon -t samba_etc_t /erikxue/

[root@server1 pub]# ll -Zd /erikxue/

drwxrwxrwx. root root system_u:object_r:samba_etc_t:s0 ccc
同时需要开启布尔值

[root@server1 /]# getsebool-a | grep samba

samba_create_home_dirs --> off

samba_domain_controller --> off

samba_enable_home_dirs--> off

samba_export_all_ro --> off

samba_export_all_rw--> off

samba_run_unconfined --> off

samba_share_fusefs --> off

samba_share_nfs --> off

use_samba_home_dirs --> off

virt_use_samba --> off

[root@server1 /]# setsebool -P

Usage: setsebool [ -P ] boolean value | bool1=val1 bool2=val2...

[root@server1 /]# setsebool-P samba_enable_home_dirs on

[root@server1 /]# setsebool-P samba_export_all_rw 1