LinuxProbe 0x13 网站服务程序、SELinux安全子系统、个人用户主页功能、虚拟网站主机功能
作者:互联网
-
网站服务程序
Web网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务。 ,
Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户。
网站服务程序分类:Apache、Nginx、Tomcat、IIS(Internet Information Services, 物联网信息服务; IIS只适用用windows系统)
挂载系统镜像
# mkdir -p /media/cdrom
# mount /dev/cdrom /media/cdrom
mount: /media/cdrom: WARNING: device write-protected, mounted read-only.
# vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
创建软件仓库的配置文件
# vim /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0
安装Apache服务程序
# dnf install httpd
启动服务并加入到开机启动中
# systemctl start httpd
# systemctl enable httpd
-
配置服务文件参数
Linux系统中的配置文件
作用 | 文件名称 |
服务目录 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
网站数据目录 | /var/www/html |
访问日志 | /var/log/httpd/access_log |
错误日志 | /var/log/httpd/error_log |
主配置文件中保存的是最重要的服务参数,一般名称都是以在/etc中,以软件名称命名的一个文件夹,里面叫做“服务名称.conf”, 配置文件中,所有以井号(#)开始的行都是注释行。
# dnf install -y httpd 安装httpd服务
# 修改配置文件
# 主配置文件一般在 /etc/服务名称/服务名称.conf
# 一般配置文件 /etc/服务名称.d
在httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息、全局配置、区域配置。
配置httpd服务程序时最常用的参数以及用途描述
参数 | 作用 |
ServerRoot | 服务目录 |
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 网站数据目录(默认目录 /var/www/html) |
Listen | 监听的IP地址与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认为300秒 |
修改项目默认目录
将约第122行用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot,同时还需要将约第127行与134行用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot。
修改项目默认目录
将约第122行用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot,同时还需要将约第127行与134行用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot。
# vim /etc/httpd/conf/httpd.conf
122 DocumentRoot "/home/wwwroot"
123
124 #
125 # Relax access to content within /var/www.
126 #
127 <Directory "/home/wwwroot">
128 AllowOverride None
129 # Allow open access:
130 Require all granted
131 </Directory>
132
133 # Further relax access to the default document root:
134 <Directory "/home/wwwroot">
重启服务
# systemctl restart httpd
# systemctl status httpd 查看状态 确认是否开启
# systemctl enable httpd 加入开机启动项
# firefox
-
SELinux安全子系统
SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
如果一般权限和防火墙是门窗,那么SELinux便是在外面安装的防护栏,让系统内部更加安全。
“SELinux域”和“SELinux安全上下文”称为是Linux系统中的双保险
SELinux服务有三种配置模式
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
# vim /etc/selinux/config 重启生效
SELINUX=enforcing
# getenforce 查看当前状态
# setenforce 0 临时更改状态0禁用1启用
查看 SELINUX 安全上下文方法: ls命令中“-Z”参数用于查看文件的安全上下文值,而“-d”参数代表对象是个文件夹。
# ls -ldZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
# ls -ldZ /home/wwwroot
drwxrwxrwx. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot
文件上设置的SELinux安全上下文是由用户段、角色段以及类型段等多个信息项共同组成。
用户段system_u代表系统进程的身份,
角色段object_r代表文件目录的角色,
类型段httpd_sys_content_t代表网站服务的系统文件。
semanage:用于管理SELinux的策略,英文全称为:“SELinux manage”,语法格式为:“semanage [参数] [文件]”。
参数 | 作用 |
-l | 查询 |
-a | 添加 |
-m | 修改 |
-d | 删除 |
semanage命令不仅能够像传统chcon命令那样—设置文件、目录的策略,还能够管理网络端口、消息接口(这些新特性将在本章后文中涵盖)。
向新的网站数据目录中新添加一条SELinux安全上下文,让这个目录以及里面的所有文件能够被httpd服务程序所访问
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
使用restorecon命令将设置好的SELinux安全上下文立即生效。在使用restorecon命令时,可以加上-Rv参数对指定的目录进行递归操作,以及显示SELinux安全上下文的修改过程
# restorecon -Rv /home/wwwroot/
-
个人用户主页功能
httpd服务程序提供的个人用户主页功能完全可以胜任这个工作。
开启个人主页功能
第1步:编辑 /etc/httpd/conf.d/userdir.conf 配置文件,
修改第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;
修改第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。
第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。把家目录的权限修改为755,保证其他人也有权限读取里面的内容。
第3步:重新启动httpd服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)
第4步: 用setsebool命令来修改SELinux策略, 开启httpd服务的个人用户主页功能, -P参数参数永久有效
# vim /etc/httpd/conf.d/userdir.conf
11 <IfModule mod_userdir.c>
12 #
13 # UserDir is disabled by default since it can confirm the presence
14 # of a username on the system (depending on home directory
15 # permissions).
16 #
17 # UserDir disabled
18
19 #
20 # To enable requests to /~user/ to serve the user's public_html
21 # directory, remove the "UserDir disabled" line above, and uncomment
22 # the following line instead:
23 #
24 UserDir public_html
25 </IfModule>
26
27 #
28 # Control access to UserDir directories. The following is an example
29 # for a site where these directories are restricted to read-only.
30 #
31 <Directory "/home/*/public_html">
32 AllowOverride FileInfo AuthConfig Limit Indexes
33 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
34 Require method GET POST OPTIONS
35 </Directory>
# su - zhangsan
$ mkdir public_html
$ echo "Welcome" > public_html/index.html
$ chmod -R 755 /home/zhangsan
# getsebool -a | grep http 查看SELinux域策略
# setsebool -P httpd_enable_homedirs=on
# firefox
开启个人用户站点登录验证
第1步:先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。
第2步:继续编辑个人用户主页功能的配置文件。把第31~37行的参数信息修改成下列内容,
# htpasswd -c /etc/httpd/passwd zhangsan
New password:此处输入用于网页验证的密码
Re-type new password:再输入一遍进行确认
Adding password for user zhangsan
# vim /etc/httpd/conf.d/userdir.conf
31 <Directory "/home/*/public_html">
32 AllowOverride all 伪静态不需要可以 none
#刚刚生成出的密码验证文件保存路径
33 authuserfile "/etc/httpd/passwd"
#当用户访问网站时的提示信息
34 authname "My privately website"
#验证方式为口令模式 基本验证模式
35 authtype basic
#访问网站时需要验证的用户名称
36 require user zhangsan
37 </Directory>
# systemctl restart httpd
验证时使用的账户和密码是用htpasswd命令生成的专门用于网站登录的口令密码,而不是系统中的用户密码
-
虚拟网站主机功能
虚拟专用服务器(Virtual Private Server,VPS)与云计算技术诞生以前,IDC服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能。
利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离,让这些虚拟的服务器共同使用物理服务器的硬件资源,供应商只能限制硬盘的使用空间大小。
Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,用户请求的资源不同,最终获取到的网页内容也各不相同。
网卡绑定多个IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens160
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
# nmcli reload ens160
# nmcli connection up ens160
基于IP地址
如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。而且,每个网站都有一个独立的IP地址,对搜索引擎优化也大有裨益。
第1步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。
第2步:在httpd服务的配置文件中大约132行处开始,分别追加写入三个基于IP地址的虚拟主机网站参数,然后保存并退出,并重启httpd服务。
第3步: 把新的网站数据目录的SELinux安全上下文设置正确 ,并使用restorecon命令让新设置的SELinux安全上下文立即生效。
# mkdir -p /home/wwwroot/10
# mkdir -p /home/wwwroot/20
# mkdir -p /home/wwwroot/30
# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
# echo "IP:192.168.10.20" > /home/wwwroot/20/index.html
# echo "IP:192.168.10.30" > /home/wwwroot/30/index.html
# vim /etc/httpd/conf/httpd.conf
132 <VirtualHost 192.168.10.10>注:IP地址
133 DocumentRoot /home/wwwroot/10注:家目录
134 ServerName www.linuxprobe.com注:域名 rhel8中可不加
135 <Directory /home/wwwroot/10>注:权限
136 AllowOverride None注:是否支持伪静态
137 Require all granted注:对请求授权
138 </Directory>
139 </VirtualHost>
140 <VirtualHost 192.168.10.20>
141 DocumentRoot /home/wwwroot/20
142 ServerName www.linuxcool.com
143 <Directory /home/wwwroot/20>
144 AllowOverride None
145 Require all granted
146 </Directory>
147 </VirtualHost>
148 <VirtualHost 192.168.10.30>
149 DocumentRoot /home/wwwroot/30
150 ServerName www.linuxdown.com
151 <Directory /home/wwwroot/30>
152 AllowOverride None
153 Require all granted
154 </Directory>
155 </VirtualHost>
# systemctl restart httpd
# systemctl enable httpd
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
# restorecon -Rv /home/wwwroot
基于主机域名
当服务器无法为每个网站都分配一个独立IP地址的时候,可以尝试让Apache自动识别用户请求的域名,从而根据不同的域名请求来传输不同的内容。 /etc/hosts是Linux系统中用于强制把某个主机域名解析到指定IP地址的配置文件。
第1步:手工定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。
第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录。
第3步:在httpd服务的配置文件中大约132行处开始,分别追加写入三个基于主机名的虚拟主机网站参数,然后保存并退出,并重启httpd服务。
第4步: 正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合,并用restorecon命令让新配置的SELinux安全上下文立即生效。
# vim /etc/hosts
192.168.10.10 www.linuxprobe.com www.linuxcool.com www.linuxdown.com
# mkdir -p /home/wwwroot/linuxprobe
# mkdir -p /home/wwwroot/linuxcool
# mkdir -p /home/wwwroot/linuxdown
# echo "www.linuxprobe.com" > /home/wwwroot/linuxprobe/index.html
# echo "www.linuxcool.com" > /home/wwwroot/linuxcool/index.html
# echo "www.linuxdown.com" > /home/wwwroot/linuxdown/index.html
# vim /etc/httpd/conf/httpd.conf
132 <VirtualHost 192.168.10.10>
133 Documentroot /home/wwwroot/linuxprobe
134 ServerName www.linuxprobe.com
135 <Directory /home/wwwroot/linuxprobe>
136 AllowOverride None
137 Require all granted
138 </Directory>
139 </VirtualHost>
140 <VirtualHost 192.168.10.10>
141 Documentroot /home/wwwroot/linuxcool
142 ServerName www.linuxcool.com
143 <Directory /home/wwwroot/linuxcool>
144 AllowOverride None
145 Require all granted
146 </Directory>
147 </VirtualHost>
148 <VirtualHost 192.168.10.10>
149 Documentroot /home/wwwroot/linuxdown
150 ServerName www.linuxdown.com
151 <Directory /home/wwwroot/linuxdown>
152 AllowOverride None
153 Require all granted
154 </Directory>
155 </VirtualHost>
# systemctl restart httpd
# systemctl enable httpd
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe/*
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool/*
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown
# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown/*
# restorecon -Rv /home/wwwroot
标签:服务程序,httpd,LinuxProbe,网站,SELinux,wwwroot,content,semanage,home 来源: https://blog.csdn.net/lansexuehu365/article/details/117197898