web服务器+selinux实验

embedded/2025/1/12 8:35:18/

实验1:基本实现

yum install nginx -y
systemctl start nginx.service

systemctl restart nginx.service

vim /etc/nginx/nginx.conf  修改配置文件

把 root 的路径改为 /var/www/html

echo "hello world" > /var/www/html/index.html   

重启服务

[root@server ~]# curl 192.168.245.128
hello world

 

注意:所有实验中配置更改后都要重启nginx

 实验2:一般实现:修改端口、默认目录、默认文件访问web页面

1. 通过不同的端口访问同一web页面 

在/etc/nginx/conf.d下创建新的文件-- ip.conf
配置如下
server { listen 192.168.245.128:888; location / { root /web/html;} 
} 
如果root在location里面,那么会覆盖server模块里的root

保存后重启服务

 2. 通过不同的默认目录访问同一web页面

 实际就是实验一。因为如果是刚开始的文件,那么显示的应该是linux那个页面

3. 通过不同的文件访问web页面 

mkdir /web/haha

echo "i am haha " > /web/haha/index.html

root /web;  (还是上面那个配置文件,改个路径)

实验3:虚拟主机:基于不同端口、不同目录、不同IP、不同域名访问不同页面 

1. 基于不同端口访问不同页面

server { listen 192.168.245.128:122; location / { root /web/122;} 
} 
server { listen 192.168.245.128:132; location / { root /web/132;} 
} 

2. 基于不同目录访问不同页面

 。。。 感觉和2.3一样

3. 基于不同IP访问不同页面 

nmcli connection modify ens160 +ipv4.addresses 192.168.245.123/24
nmcli connection up ens160
mkdir /web/{123,132}
echo my ip is 123 > /web/123/index.html
echo my ip is 132 > /web/132/index.html
vim /etc/nginx/conf.d/ip.conf
server {
listen 192 .168.245.128:80;
root /web/132;
location / {
index index.html;
}
}
server {
listen 192 .168.245.123:80;
root /web/123;
location / {
index index.html;
}
}

4.基于不同域名访问不同页面 

server {
listen 192.168.245.128:80;
server_name www.xixi132.com;
location / {
root /web/132;
}
}
server {
listen 192.168.245.128:80;
server_name www.haha123.com;
location / {
root /web/123;
}
}

 vim /etc/hosts

实验4:访问控制

1. 基于不同用户的访问控制 

htpasswd -cb /etc/nginx/conf.d/auth_passwd li4 123
htpasswd -cb /etc/nginx/conf.d/auth_passwd2 tom 123
server {
listen 192.168.245.128:80;
location / {
root /web/132;
auth_basic on;   
auth_basic_user_file /etc/nginx/conf.d/auth_passwd;
}
}
server {
listen 192.168.245.123:80;
location / {
root /web/123;
auth_basic on;   
auth_basic_user_file /etc/nginx/conf.d/auth_passwd;
}
}

 2. 基于源ip的访问控制

server {
listen 80;
location / {
root /web/132;
allow 192.168.245.123/24;
deny 192.168.245.128/24;
}
}

实验5:证书

cd /etc/pki/tls/certs/
openssl genrsa -out miyao.key
openssl req -utf8 -new -key /etc/pki/tls/certs/miyao.key -x509 -days 100 -out /zhengshu.crt
server {
listen 192.168.245.128:443 ssl;
location / {
root /web/132;
}
ssl_certificate "/zhengshu.crt";
ssl_certificate_key "/etc/pki/tls/certs/miyao.key";
}

实验6nginx发布动态页面的方法 

yum install php php-fpm -y
echo "<?php phpinfo(); ?>" > /web/php/index.php

server {
listen 80;
location / {
root /web/php;
include /etc/nginx/default.d/php.conf;
}
}

selinux

1. 在enforing 模式下,nginx的端口号被修改,并是实现页面正常访问

要想访问的时候不是403,那么就要修改nginx中root 目录的安全上下文

[root@server ~]# ls -Zd /web/132

unconfined_u:object_r:default_t:s0 /web/132

[root@server ~]# ls -Zd /usr/share/nginx/html/

system_u:object_r:httpd_sys_content_t:s0 /usr/share/nginx/html/

[root@server ~]# chcon -Rv -t httpd_sys_content_t /web/132

正在更改 '/web/132/index.html' 的安全上下文

正在更改 '/web/132/index.php' 的安全上下文

正在更改 '/web/132' 的安全上下文

[root@server ~]# ls -Zd /web/132

unconfined_u:object_r:httpd_sys_content_t:s0 /web/132

查看selinux允许的端口号
semanage port -l | grep http_port_t
使用semanage命令将777端口号添加到http_port_t类型列表中
semanage port -a -t http_port_t -p tcp 777
server {
listen 777;
location / {
root /web/132;
}
}

2. enforing 模式下,演示ssh端口号修改的selinux设定


vim /etc/ssh/sshd_config # 修改ssh的端口号为33
semanage port -a -t ssh_port_t -p tcp 2222 # 添加33端口


http://www.ppmy.cn/embedded/153246.html

相关文章

设计模式 行为型 模板方法模式(Template Method Pattern)与 常见技术框架应用 解析

模板方法模式&#xff08;Template Method Pattern&#xff09;是软件设计模式中的一种行为设计模式。它定义了一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重定义算法的某些特定步骤。 假设我们在制作不同…

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫&#xff0c;也被称为“幸运猫”&#xff0c;是一种象征财富和好运的吉祥物&#xff0c;经常…

报错 - decord 在 macOS Silicon 安装失败

问题&#xff1a;在 macOS M2 上 pip 安装 decord 出错&#xff1a; ERROR: Could not find a version that satisfies the requirement decord (from versions: none) ERROR: No matching distribution found for decord使用 decord 源码编译&#xff0c;make 也会出很多问题 …

Oracle 数据库是否学习剖析

Oracle 作为数据库领域的国际老牌劲旅&#xff0c;即便你毫无 IT 基础&#xff0c;非科班出身&#xff0c;它依然值得你深入探究。 Oracle 数据库历经数十年风雨洗礼&#xff0c;沉淀出无与伦比的稳定性。全球众多大型企业&#xff0c;从金融巨头到跨国电商&#xff0c;其核心业…

Web前端基础知识(七)

要在JS中获取元素节点&#xff0c;需要使用DOM API提供的方法。 innerHTML&#xff1a;不仅会返回一个纯文本&#xff0c;还可以解析一下这个文本中的语意。 innerText: 忽略HTML标记。 举例&#xff1a; <body> <div id"box1">这是一个ID选择器标签…

Linux 免杀

Linux 免杀概念 在网络安全领域&#xff0c;“免杀” 主要是指让恶意软件&#xff08;如病毒、木马、后门程序等&#xff09;躲避杀毒软件&#xff08;Antivirus&#xff0c;AV&#xff09;的检测。在 Linux 环境下&#xff0c;杀毒软件会通过多种方式来检测恶意程序&#xff…

centos systemd方式配置jar开机自启

将后端服务&#xff08;一个 Java 应用程序&#xff09;注册为 CentOS 上的 systemd 服务&#xff0c;可以让你方便地管理其启动、停止和重启。以下是详细步骤&#xff1a; 创建 systemd 服务单元文件 创建一个 systemd 服务单元文件&#xff0c;例如 /etc/systemd/system/de…