公司网站如何优化,wordpress 访问插件,windows live writer wordpress,成都户外网站建设一、SELinux的说明
开发背景与目的#xff1a; SELinux由美国国家安全局#xff08;NSA#xff09;开发#xff0c;旨在避免资源的误用。传统的Linux基于自主访问控制#xff08;DAC#xff09;#xff0c;通过判断进程所有者/用户组与文件权限来控制访问#xff0c;对…一、SELinux的说明
开发背景与目的 SELinux由美国国家安全局NSA开发旨在避免资源的误用。传统的Linux基于自主访问控制DAC通过判断进程所有者/用户组与文件权限来控制访问对root用户权限限制较少。而NSA为更好地控制权限与进程问题以Linux为研究目标将成果整合进Linux内核形成SELinux。 核心概念 自主访问控制DAC根据进程所有者/用户组对比文件权限来决定是否可访问文件root用户不受各种权限设置限制。强制访问控制MAC以策略规则制定特定程序读取特定文件的权限控制方式即使是root用户使用不同进程时获取的权限依进程设置而定且进程不能任意使用系统文件资源SELinux提供默认策略及规则供选择启用。
二、SELinux的工作原理
主体、目标与策略 主体subject即进程。目标object被主体访问的资源如文件、目录、端口等。策略policy依据某些服务制定基本访问安全策略包含详细规则指定不同服务对资源的访问与否。主要策略有targeted默认对网络服务限制多、本机限制少和strict限制严格。
#查看文件的安全上下文
[rootlocalhost ~]# ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 home安全上下文用冒号分为四个字段 Identifyroletype 身份标识Identify相当于账号方面的身份标识主要有以下三种常见的类型 root表示root的账号身份 system_u表示程序方面的标识通常就是进程 unconfined_u代表的是一般用户账号相关的身份。 角色role通过角色字段可知道这个数据是属于程序、文件资源还是代表用户。一般角色 有 object_r代表的是文件或目录等文件资源 system_r代表的是进程。 类型type在默认的targeted策略中Identify与role字段基本上是不重要的重要的在于这 个类型字段。而类型字段在文件与进程的定义不太相同分别是 type在文件资源上面称为类型。 domain在主体程序中则称为域。 domain需要与type搭配则该程序才能够顺利读取文件资源。 最后一个字段是和MLS和MCS相关的东西代表灵敏度一般用s0、s1、s2来命名数字代表灵敏 度的分级。数值越大、灵敏度越高。
三、SELinux的启动、关闭与查看
三种模式 enforcing强制模式SELinux正在运行开始限制domain/type。permissive宽容模式SELinux正在运行但仅发出警告信息不实际限制domain/type访问。disabled关闭SELinux未实际运行。 查看与切换模式 通过getenforce查看当前模式sestatus查看SELinux状态、使用策略等信息。可通过setenforce 0切换到permissive模式setenforce 1切换到enforcing模式改变策略后需重新启动系统在enforcing、permissive、disabled之间切换某些情况也需重新启动。
#查看目前的模式
[rootlocalhost ~]# getenforce
Enforcing
#查看目前的selinux使用的策略
[rootserver /]# sestatus
SELinux status: enabled # 是否启用selinux
SELinuxfs mount: /sys/fs/selinux #selinux的相关文件数据挂载点
SELinux root directory: /etc/selinux
Loaded policy name: targeted #目前的策略
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33#查看selinux的策略
[rootserver ~]# vim /etc/selinux/config
改变策略之后需要重新启动
如果由enforcing或permissive改成disabled或由disabled改为其它两个也必须要重新启动。
将selinux模式在enforcing和permissive之间切换的方法为
setenforce 0 转换成permissive宽容模式
setenforce 1转换成enforcing强制模式restorecon [-Rv] 文件或目录
-R连同子目录一起修改
-v将过程显示到屏幕上
restorecon怎么会知道每个目录记载的默认selinux type类型呢因为系统将每个目录的默认selinux type类型记录在/etc/selinux/targeted/contexts/目录内。但是该目录内有很多不同的数据所以我们可以用semanage这个命令的功能来查询与修改。
semanage login|user|port|interface|fcontext|translation -l
semanage fcontext -{a|d|m} [-frst] file_spec
-l为查询
-a增加一些目录的默认安全上下文的设置
-m修改
-d删除。修改安全上下文
chcon [-R] [-t type] [-u user] [-r role] 文件
-R连同该目录下的子目录也同时修改
-t后面接安全上下文的类型字段
-u后面接身份识别
-r后面接角色
chcon [-R] --reference范例文件 文件 将文件的安全上下文按照范例文件修改
restorecon [-Rv] 文件或目录
-R连同子目录一起修改
-v将过程显示到屏幕上
restorecon怎么会知道每个目录记载的默认selinux type类型呢因为系统将每个目录的默认
selinux type类型记录在/etc/selinux/targeted/contexts/目录内。但是该目录内有很多不同
的数据所以我们可以用semanage这个命令的功能来查询与修改。
semanage login|user|port|interface|fcontext|translation -l
semanage fcontext -{a|d|m} [-frst] file_spec
-l为查询
-a增加一些目录的默认安全上下文的设置
-m修改
-d删除。四、SELinux对Linux服务的影响
实验一httpd服务演示安全上下文值设定 服务端设置好httpd服务相关配置后通过客户端测试只能访问到http服务测试界面修改自定义目录/www的安全上下文值为httpd_sys_content_t可通过chcon -t httpd_sys_content_t /www -R或按/var/www/html文件修改后可成功访问。
[rootserver ~]# systemctl disable firewalld --now
[rootserver ~]# getenforce
Enforcing
[rootserver ~]# cat /etc/nginx/conf.d/test_ip.conf
server {listen 192.168.121.100:80;root /www/ip/100;location / {}
}
server {listen 192.168.121.200:80;root /www/ip/200;location / {}
}
[rootserver ~]# systemctl restart nginx.service
[rootserver ~]# curl 192.168.121.100
html
headtitle403 Forbidden/title/head
body
centerh1403 Forbidden/h1/center
hrcenternginx/1.26.1/center
/body
/html
然后我们进行安全上下文的修改
方法1直接修改自定义目录的安全上下文
[rootserver ~]# chcon -t httpd_sys_content_t /www/ -R方法2将自定义目录的安全上下文的值按照按照指定文件进行修改
[rootserver ~]# chcon -R --reference/usr/share/nginx/html/index.html /www[rootserver ~]# curl 192.168.121.100
this is 100实验二web服务端口改变演示端口设定
[rootserver ~]# vim /etc/nginx/conf.d/test_port.conf
server {listen 192.168.121.153:80;root /www/port/80;location / {}
}
server {listen 192.168.121.153:10000;root /www/port/10000;location / {}
}
#重启nginx服务出现错误查看其状态日志信息拒绝访问10000端口
[rootserver ~]# systemctl restart nginx.service
Job for nginx.service failed because the control process exited with error code.
See systemctl status nginx.service and journalctl -xeu nginx.service for details.#向 SELinux 策略中添加一条规则将 http_port_t 类型分配给 TCP 端口 10000:
[rootserver ~]# semanage port -a -t http_port_t -p tcp 10000
[rootserver ~]# systemctl restart nginx.service一、防火墙概述
定义与分类 防火墙是位于内部网和外部网之间的屏障按预定义规则控制数据包进出。可分为硬件防火墙由厂商设计的主机硬件以数据包过滤机制为主和软件防火墙如Netfilter、TCP Wrappers等这里主要介绍Linux系统的Netfilter。Netfilter是Linux内核内建的数据包过滤机制能分析数据包头部数据涉及OSI七层协议的2、3、4层可进行多种过滤操作如拒绝特定端口、来源IP、带有特殊标志的数据包等但不能有效阻挡病毒或木马程序对内部LAN攻击也较难防范。
二、iptables
介绍 iptables服务把处理或过滤流量的策略条目称为规则多条规则组成规则链依据数据包处理位置分类包括 目标地址转换PREROUTING 处理流入的数据包INPUT 处理流出的数据包OUTPUT 处理转发的数据包FORWARD 在进行路由选择后处理数据包用于源地址转换POSTROUTING。防火墙按从上至下顺序读取策略规则找到匹配项即执行相应行为若无匹配项则执行默认策略。其命令格式及各参数有明确含义可根据流量的多种信息进行匹配并处理。 实验与案例 准备工作
#安装iptables相关的包由于我们这里是9.X版本应该安装iptables-nft-services
[rootserver ~]# yum install iptables-nft-services -y#关闭firewalld ,开启iptables并且查看其状态是不是active
[rootserver ~]# systemctl stop firewalld
[rootserver ~]# systemctl start iptables
[rootserver ~]# systemctl status iptables.service#清除所有的规则表
[rootserver ~]# iptables -F#展示所有的规则策略
[rootserver ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
[rootserver ~]#实验一搭建web服务设置任何人能够通过80端口访问。
#向 INPUT 链中插入一条规则允许所有进入系统的 TCP 数据包并且目标端口是 80
[rootserver ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT #列出当前 iptables 的所有规则并显示每条规则的行号
[rootserver ~]# iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:httpChain FORWARD (policy ACCEPT)
num target prot opt source destinationChain OUTPUT (policy ACCEPT)
num target prot opt source destination#从 INPUT 链中删除第 1 条规则
[rootserver ~]# iptables -D INPUT 1实验二禁止所有人ssh远程登录该服务器
#禁止所有人ssh远程登录该服务器拒绝访问22端口
[rootserver ~]# iptables -I INPUT -p tcp --dport 22 -j REJECT#从IPINPUT链中删除第一条规则这条命令只能在虚拟机中执行因为前一条命令已经拒绝ssh远程登录
[rootserver ~]# iptables -D INPUT 1实验三禁止192.168。121.11主机地址ssh远程登录该服务器允许该主机访问服务器的web服务。服务器地址为 192.168.121.10
#拒绝192.168.121.11通过ssh远程连接服务器
[rootserver ~]# iptables -I INPUT -p tcp -s 192.168.121.11 --dport 22 -j REJECT#允许192.168.121.11访问服务器的web服务
[rootserver ~]# iptables -I INPUT -p tcp -s 192.168.121.11 --dport 80 -j ACCEPT三、firewalld
介绍 与iptables不同iptables修改规则需重新完整加载所有规则可能对运行系统产生不良影响而firewalld是动态防火墙规则变更只需保存更新即可支持IPv4和IPv6设置还引入了区域概念即几套防火墙策略集合策略模板用户可快速切换。
[rootserver ~]# systemctl stop iptables.service
[rootserver ~]# systemctl start firewalld.service
[rootserver ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)Active: active (running) since Sun 2024-11-24 17:06:08 CST; 8s ago#查看帮助
[rootserver ~]# firewall-cmd --help#查看所有规则
[rootserver ~]# firewall-cmd --list-all