selinux(强化的linux)
传统的文件权限与账号的关系:自主访问控制,DAC;
以策略规则制定特定程序读取特定文件:强制访问控制,MAC
SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程
主体(subject):就是进程
目标(object):被主体访问的资源,可以是文件、目录、端口等。
策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全策略。
目前主要的策略有:
targeted:针对网络服务限制较多,针对本机限制较少,是默认的策略;
strict:完整的SELinux限制,限制方面较为严格
安全上下文(security context):主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须 一致才能够顺利访问。
安全上下文用冒号分为四个字段:
identify:role:type:
身份标识(Identify):相当于账号方面的身份标识
角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户
类型(type):在默认的targeted策略中,Identify与role字段基本上是不重要的,重要的在于这 个类型字段。
最后一个字段是和MLS和MCS相关的东西,代表灵敏度,一般用s0、s1、s2来命名,数字代表灵敏 度的分级。数值越大、灵敏度越高。
selinux有三种模式
enforcing:强制模式,代表SELinux正在运行中,开始限制domain/type
permissive:宽容模式,代表SELinux正在运行中
disabled:关闭,SELinux并没有实际运行。
getenforce
#查看目前的模式
sestatus
#查看目前的selinux使用的策略
/etc/selinux/config
#查看和修改selinux策略的位置,改变策略之后需要重启
setenforce 0
#转换成permissive
setenforce 1
#转换成enforcing
#修改安全上下文
chcon -R -t -u -r 文件
chcon -R --reference=文件地址
#连同子目录同时修改(R),后面接安全上下文的类型字段(t),后面接身份识别(u),接角色(r)
semanage
防火墙
Netfilter
即数据包过滤机制,真正使用规则干活的是内核的netfilter。
iptables
服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类:
在进行路由选择前处理数据包,用于目标地址转换(PREROUTING);
处理流入的数据包(INPUT);本机只需要修改这个
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
在进行路由选择后处理数据包,用于源地址转换(POSTROUTING)
语法格式:iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] -p 协议名 <-s 源IP/源子网> --sport 源端口 <-s源IP/源子网> --dport 目标端口 -j 动作
eg:禁止某个主机地址ssh远程登录该服务器,允许该主机访问服务器的web服务。服务器地址为 192.168.150.138,客户机地址:192.168.150.139
[root@localhost ~]# iptables -I INPUT -p tcp -s 192.168.150.139 --dport 22 -j
REJECT
[root@localhost ~]# iptables -I INPUT -p tcp -s 192.168.150.139 --dport 80 -j
ACCEPT
firewalld
firewalld 所提供的模式就可以叫做动态防火墙,firewalld支持动态更新技术并加入了区域的概念。区域就是firewalld预 先准备了几套防火墙策略集合(策略模板),用户可以选择不同的集合,从而实现防火墙策略之间的快速切换。
firewalld服务是默认的防火墙配置管理工具,拥有基于CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式。firewall-config是图形化工具,firewall-cmd是命令行工具。
常见区域及策略
阻塞block | 拒绝流入的流量,除非与流出的流量有关 |
工作work | 拒绝流入的流量,除非与流出的流量有关 |
家庭home | 拒绝流入的流量,除非与流出的流量有关 |
公共public | 不相信任何计算机,只选择接收传入的网络连接 |
隔离DMZ | 非军事区域,缓冲作用,接收传入网络连接 |
信任trusted | 允许所有 |
丢弃drop | 拒绝流入的流量,除非与流出的流量有关 |
内部internal | =home |
外部external | 拒绝流入的流量,除非与流出的流量有关;与ssh有关则允许 |
firewalld服务软件包:
firewall-config-0.3.9-14.el7.noarch
firewalld-0.3.9-14.el7.noarch
firewalld命令行的主要参数:
--get-services | 预先定义的服务 |
--add-service=服务名 | 默认区域允许该服务的流量 |
--add-port=端口号/协议 | 默认区域允许该端口的流量 |
在使用firewalld前需要停止iptables:systemctl stop iptables
重启防火墙服务:systemctl restart firewalld
富规则:允许所有,禁止某个ip访问