本文是一篇关于Linux系统初学者的实验记录。
参考书籍:《Linux就该这么学》
实验环境:
VmwareWorkStation 17——虚拟机软件
RedHatEnterpriseLinux[RHEL]8——红帽操作系统
目录
前言:
备注:
正文:
实验1:安装Apache程序
Step1:把系统镜像挂载到/media/cdrom目录
Step2:使用Vim文本编辑器创建软件仓库的配置文件
Step3:安装Apache服务程序
Step4:启用httpd服务程序并将其加入到开机启动项
实验2:配置服务参数文件:修改保存网站数据的目录
Step1:建立网站数据的保存目录,并创建首页文件
Step2:打开httpd服务程序的主配置文件,并修改:
Step3:重启httpd服务程序并验证效果
实验3:SELinux安全子系统
Step1:验证前文中权限不足是由于SELinux而导致的
Step2:semanage命令
Step3:向新的网站数据目录中新添加一条SELinux安全上下文
实验4:个人用户主页功能
Step1:编辑配置文件,开启个人用户主页功能
step2:在用户家目录中建立用于保存网站数据的目录及首页文件
Step3:查看SELinux域安全策略
实验5:在网站中添加密码功能
Step1:使用htpasswd命令生成密码数据库
Step2:继续编辑个人用户主页功能的配置文件
Web网络服务,一般是指允许用户通过浏览器访问互联网中各种资源的服务。
Web网络服务是一种被动访问的服务程序,只有接收到互联网中其他主机发出的请求后才会相应,最终用于提供服务程序的Web服务器会通过HTTP或HTTPS把请求的内容传送給用户。
目前能提供Web网络服务的程序有:IIS、Nginx和Apache等
IIS(Internet Information Service,互联网信息服务)是Windows系统中默认的Web服务程序。
Nigix程序作为一款轻量级的网站服务软件,有好的稳定性和丰富的功能。
Apache程序是RHEL5、6、7、8系统中默认的Web服务程序,名字取自美国印第安人的土著语,寓意为“拥有高超的作战策略和无穷的耐性”。
打开firefox,访问127.0.0.1(测试页面)
在Linux系统中配置服务,其实就是修改服务的配置文件。
Linux系统中的配置文件:
作用 | 文件名称 |
服务目录 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
网站数据目录 | /var/www/html |
访问日志 | /var/log/httpd/access_log |
错误日志 | /var/log/httpd/error_log |
主配置文件中保存的是最重要的服务参数
在主配置文件中,存在上中类型的信息:注释行信息、全局配置、区域配置
全局配置参数可以用于所有的子站点,区域配置参数则是单独针对每个独立的子站点进行设置的。
配置httpd服务程序时最常用的参数以及用途描述:
参数 | 作用 |
ServerRoot | 服务目录 |
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 网站数据目录 |
Listen | 监听的IP地址与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认300秒 |
由表可知:Document参数用于定义网站数据的保存路径,参数默认值/var/www/html
当前网站普遍的首页名称是index.html。
尝试修改网页内容,并在firefox中查看:
SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。
Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
它能够从多方面监控违法行为:
对服务程序的功能进行限制(SELinux域限制可以确保服务程序做不了出格的事情)
对文件资源的访问进行限制(SELinux安全上下文确保文件资源只能被其所属的服务程序访问)
系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源
这样即使系统遭到入侵,也无法利用系统内的服务程序进行越权操作。
SELinux服务有3种配置模式:
enforcing:强制启用安全策略模式,将拦截服务的不合法请求
permissive:遇到服务越权访问时,只发出警告而不强制拦截
disabled:对于越权的行为不警告也不拦截
本实验回在强制启用安全策略模式下进行:
使用getenforce命令获取当前SELinux服务的运行模式:
关闭SELinux服务后再查看网页:
httpd服务的程序功能是允许用户访问访问网站内容,因此SELinux肯定会默认放行用户对网站的请求操作。但是刚刚网站数据的默认保存目录被修改为/home/wwwroot,这是普通用户的家目录,这违反了SELinux的监管原则。
验证:
恢复SELinux服务到启用安全策略模式,分别查看原始网站数据的保存目录与当前网站数据的保存目录是否拥有不同的SELinux安全上下文值。
semanage命令是用于管理SELinux的策略,英文全称”SELinux manage“。
语法格式:semanage [参数][文件]
SELinux服务极大地提升了Linux系统的安全性,将用户权限牢牢地锁在笼子里。
不仅能像传统的chcon命令那样设置文件、目录的策略,还能够管理网络接口、消息接口
semanage命令中常用的参数以及作用:
参数 | 作用 |
-l | 查询 |
-a | 添加 |
-m | 修改 |
-d | 删除 |
设置立即生效:
允许访问,此时SELinux启用中。
如果想在系统中为每位用户建立一个独立的网站,通常的方法是基于虚拟网站主机功能来部署多个网站。
httpd服务程序提供的个人用户主页功能可以完全胜任这个工作。
该功能可以让系统内所有用户在自己的家目录管理个人网站,访问起来非常容易。
还需修改家目录的权限为755,保证其他人也有权限读取里面的内容。
重新启动httpd服务程序,在浏览器地址栏输入网址
格式:”网址/~用户名"
报错原因:
该用户的网站数据目录本身就是存放到与这个用户对应的家目录中的,所以不需要修改家目录的SELinux安全上下文。
考虑SELinux域的概念:SELinux域确保服务程序不能执行违规的操作
httpd服务中突然开启的这项个人用户主页功能是否被SELinux域默认允许过?
实验验证:
使用getsebool命令查询并过滤出所有HTTP协议相关的安全策略。
使用setsebool命令来修改SELinux策略中各条规则的布尔值。
setsebool命令要加-P参数,让修改后的策略规则永久立即生效。
再次查看网页:
网站的拥有者并不希望直接将网页内容显示出来,而只想让通过身份验证的用户看到里面的内容,这时就可以在网站中添加密码功能。
-c参数表示第一次生成;后边是添加密码数据库的存放文件;验证要用到的用户名称
尝试登录网站: