第三十八節(jié)、selinux配置/http程序部署

一、apache網(wǎng)站服務(wù)程序httpd

apache基金會
http 協(xié)議
httpd 安裝的rpm軟件包名
httpd 服務(wù)名稱

#安裝服務(wù)
[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服務(wù)重啟并加入開機啟動項
[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修改網(wǎng)站的發(fā)布目錄

[root@localhost conf]# vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/home/wwwroot"
#網(wǎng)站默認根目錄
#修改selinux安全上下文允許http訪問/home/wwwroot發(fā)布目錄
#先查看原始目錄的權(quán)限戳得到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表示修改上下文內(nèi)容,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/*
#讓設(shè)置立即生效
[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

虛擬主機:同時提供多個網(wǎng)站服務(wù)

  • 基于IP
  • 基于域名
  • 基于端口號
    基于IP的虛擬主機首先更改網(wǎng)卡配置文件添加多個IP后重啟網(wǎng)卡
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上下文針對各自發(fā)布目錄的限制進行添加
[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
#創(chuàng)建對應(yīng)網(wǎng)站家目錄及各自默認索引頁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修改對應(yīng)目錄的上下文后試驗成功

基于端口號的虛擬主機設(shè)置,涉及到selinux的域和上下文兩處設(shè)置

#先創(chuàng)建虛擬主機對應(yīng)的網(wǎng)站發(fā)布目錄及索引文件
[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
#添加虛擬主機添加監(jiān)聽的端口號
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 >
#修改對應(yīng)目錄的selinux上下文
#修改selinux的域放行6111、6222端口
#先查看默認的端口號http_port_t  對應(yīng)的端口號
[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服務(wù)后訪問正常

針對瀏覽器限制訪問例如:只允許火狐瀏覽器

#在配置文件中針對某個目錄添加代碼
<Directory "/var/www/html/server">
SetEnvif  User-Agent "Firefox" ff=1   #設(shè)置環(huán)境變量起別名ff
Order  Allow,Deny                             #設(shè)置規(guī)則,除了允許的其他全部拒絕
allow from env=ff                               #定義允許的條件
</Directory>
二、安全子系統(tǒng)selinux

SELinux(Security-Enhanced Linux)是美國國家安全局在Linux開源社區(qū)的幫助下開發(fā)的一個強制訪問控制(MAC,Mandatory Access Control)的安全子系統(tǒng)。RHEL 7系統(tǒng)使用SELinux技術(shù)的目的是為了讓各個服務(wù)進程都受到約束,使其僅獲取到本應(yīng)獲取的資源。
例如,您在自己的電腦上下載了一個美圖軟件,當您全神貫注地使用它給照片進行美顏的時候,它卻在后臺默默監(jiān)聽著瀏覽器中輸入的密碼信息,而這顯然不應(yīng)該是它應(yīng)做的事情(哪怕是訪問電腦中的圖片資源,都情有可原)。SELinux安全子系統(tǒng)就是為了杜絕此類情況而設(shè)計的,它能夠從多方面監(jiān)控違法行為:對服務(wù)程序的功能進行限制(SELinux域限制可以確保服務(wù)程序做不了出格的事情);對文件資源的訪問限制(SELinux安全上下文確保文件資源只能被其所屬的服務(wù)程序進行訪問)。
“SELinux域”和“SELinux安全上下文”稱為是Linux系統(tǒng)中的雙保險,系統(tǒng)內(nèi)的服務(wù)程序只能規(guī)規(guī)矩矩地拿到自己所應(yīng)該獲取的資源,這樣即便黑客入侵了系統(tǒng),也無法利用系統(tǒng)內(nèi)的服務(wù)程序進行越權(quán)操作。

[root@localhost wwwroot]# cat /etc/selinux/config 
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.      #強制狀態(tài),管理服務(wù)程序
#     permissive - SELinux prints warnings instead of enforcing.  #警告模式只會將信息寫入日志
#     disabled - No SELinux policy is loaded.                  #關(guān)閉狀態(tài)
SELINUX=enforcing
#查看selinux狀態(tài)
[root@localhost wwwroot]#  getenforce 
Enforcing
#臨時設(shè)置selinux狀態(tài)重啟后失效,0禁用,1啟用
[root@localhost wwwroot]# setenforce 1

查看selinux域

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

設(shè)置selinux域,參數(shù)P永久生效

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

selinux的上下文就是對文件目錄的權(quán)限戳進行管理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。