LinuxProbe 0x13 网站服务程序、SELinux安全子系统、个人用户主页功能、虚拟网站主机功能
2021/5/24 7:29:23
本文主要是介绍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
这篇关于LinuxProbe 0x13 网站服务程序、SELinux安全子系统、个人用户主页功能、虚拟网站主机功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南