第三十八节、selinux配置/http程序部署

一、apache网站服务程序httpd

apache基金会
http 协议
httpd 安装的rpm软件包名
httpd 服务名称

#安装服务
[root@localhost ~]# yum install httpd -y
#清空防火墙配置并保存
[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
#将httpd服务重启并加入开机启动项
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl enable httpd 
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

主配置文件/etc/httpd/conf/httpd.conf修改网站的发布目录

[root@localhost conf]# vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/home/wwwroot"
#网站默认根目录
#修改selinux安全上下文允许http访问/home/wwwroot发布目录
#先查看原始目录的权限戳得到selinux安全上下文信息
[root@localhost wwwroot]# ls -dZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
#安全上下文httpd_sys_content_t
#semanage管理selinux上下文和域,fcontext表示修改上下文内容,a表示修改,t跟具体的值,最后的目录不能带斜杠,否则无法生效,要对目录及目录下所有文件依次修改
[root@localhost wwwroot]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot
[root@localhost wwwroot]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/*
#让设置立即生效
[root@localhost wwwroot]# restorecon  -Rv /home/wwwroot
restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

虚拟主机:同时提供多个网站服务

  • 基于IP
  • 基于域名
  • 基于端口号
    基于IP的虚拟主机首先更改网卡配置文件添加多个IP后重启网卡
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
[root@localhost ~]#  systemctl restart network
#修改http主配置文件添加虚拟主机信息
<VirtualHost 192.168.10.10>
DocumentRoot  "/home/wwwroot/10"
Servername www.linuxprobe.com
<Directory "/home/wwwroot/10">
allowoverride none
require all granted
</Directory>
</VirtualHost >
<VirtualHost 192.168.10.20>
DocumentRoot  "/home/wwwroot/20"
Servername www.linuxprobe.com
<Directory "/home/wwwroot/20">
allowoverride none
require all granted
</Directory>
</VirtualHost >
<VirtualHost 192.168.10.30>
DocumentRoot  "/home/wwwroot/30"
Servername www.linuxprobe.com
<Directory "/home/wwwroot/30">
allowoverride none
require all granted
</Directory>
</VirtualHost >
#selinux上下文针对各自发布目录的限制进行添加
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/10
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/10/*
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/20
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/20/*
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/30
[root@localhost ~]# semanage  fcontext -a -t httpd_sys_content_t  /home/wwwroot/30/*
[root@localhost ~]# restorecon  -Rv /home/wwwroot

基于域名的虚拟主机首先需要编辑主机的/etc/hosts文件

#hosts添加语句
192.168.10.10  www.linuxprobe.com   bbs.linuxprobe.com  tech.linuxprobe.com
#创建对应网站家目录及各自默认索引页index.html
[root@localhost ~]# mkdir -p /home/wwwroot/{www,bbs,tech}
[root@localhost ~]#  echo "wwwwww">/home/wwwroot/www/index.html
[root@localhost ~]#  echo "bbsbbs">/home/wwwroot/bbs/index.html
[root@localhost ~]#  echo "techtech">/home/wwwroot/tech/index.html
#修改主配置文件添加虚拟主机
<VirtualHost 192.168.10.10>
DocumentRoot  "/home/wwwroot/www"
Servername www.linuxprobe.com
<Directory  "/home/wwwroot/www">
allowoverride none
require all granted
</Directory>
</VirtualHost >
<VirtualHost 192.168.10.10>
DocumentRoot  "/home/wwwroot/bbs"
Servername bbs.linuxprobe.com
<Directory  "/home/wwwroot/bbs">
allowoverride none
require all granted
</Directory>
</VirtualHost >
#同样在selinux修改对应目录的上下文后试验成功

基于端口号的虚拟主机设置,涉及到selinux的域和上下文两处设置

#先创建虚拟主机对应的网站发布目录及索引文件
[root@localhost ~]# mkdir -p /home/wwwroot/{6111,6222}
[root@localhost ~]#  echo "61111">/home/wwwroot/6111/index.html
[root@localhost ~]#  echo "62222">/home/wwwroot/6222/index.html
#添加虚拟主机添加监听的端口号
Listen 80
Listen 6111
Listen 6222
<VirtualHost 192.168.10.10:6111>
DocumentRoot  "/home/wwwroot/6111"
Servername bbs.linuxprobe.com
<Directory  "/home/wwwroot/6111">
allowoverride none
require all granted
</Directory>
</VirtualHost >
<VirtualHost 192.168.10.10:6222>
DocumentRoot  "/home/wwwroot/6222"
Servername bbs.linuxprobe.com
<Directory  "/home/wwwroot/6222">
allowoverride none
require all granted
</Directory>
</VirtualHost >
#修改对应目录的selinux上下文
#修改selinux的域放行6111、6222端口
#先查看默认的端口号http_port_t  对应的端口号
[root@localhost ~]# semanage port -l |grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
[root@localhost ~]# semanage port -a -t http_port_t  -p  tcp  6111
[root@localhost ~]# semanage port -a -t http_port_t  -p  tcp  6222
#重启httpd服务后访问正常

针对浏览器限制访问例如:只允许火狐浏览器

#在配置文件中针对某个目录添加代码
<Directory "/var/www/html/server">
SetEnvif  User-Agent "Firefox" ff=1   #设置环境变量起别名ff
Order  Allow,Deny                             #设置规则,除了允许的其他全部拒绝
allow from env=ff                               #定义允许的条件
</Directory>
二、安全子系统selinux

SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL 7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
例如,您在自己的电脑上下载了一个美图软件,当您全神贯注地使用它给照片进行美颜的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情(哪怕是访问电脑中的图片资源,都情有可原)。SELinux安全子系统就是为了杜绝此类情况而设计的,它能够从多方面监控违法行为:对服务程序的功能进行限制(SELinux域限制可以确保服务程序做不了出格的事情);对文件资源的访问限制(SELinux安全上下文确保文件资源只能被其所属的服务程序进行访问)。
“SELinux域”和“SELinux安全上下文”称为是Linux系统中的双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,这样即便黑客入侵了系统,也无法利用系统内的服务程序进行越权操作。

[root@localhost wwwroot]# cat /etc/selinux/config 
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.      #强制状态,管理服务程序
#     permissive - SELinux prints warnings instead of enforcing.  #警告模式只会将信息写入日志
#     disabled - No SELinux policy is loaded.                  #关闭状态
SELINUX=enforcing
#查看selinux状态
[root@localhost wwwroot]#  getenforce 
Enforcing
#临时设置selinux状态重启后失效,0禁用,1启用
[root@localhost wwwroot]# setenforce 1

查看selinux域

[root@localhost conf]#  getsebool -a|grep http|grep homedir
httpd_enable_homedirs --> off

设置selinux域,参数P永久生效

[root@localhost conf]# setsebool -P httpd_enable_homedirs=on

selinux的上下文就是对文件目录的权限戳进行管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351