防火墙
从逻辑上分类:主机防火墙 网络防火墙
从物理上分类:硬件防火墙 软件防火墙
IPTABLES:一个客户端代理,将用户的安全设定执行到对应的“安全框架——netfilter”中。 netfilter才是防火墙真正的安全框架(framework),位于内核空间
其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规 则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。
五链
- PREROUTING
- 在进行路由判断之前所要进行的规则(DNAT/REDIRECT
- INPUT
- 处理入站的数据包
- OUTPUT
- 处理出站的数据包
- FORWORD
- 处理转发的数据包
- POSTROUTING
- 在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
常用应用场景,报文流向:
到本地某个进程的报文:PREROUTING‐‐> INPUT‐‐>OUTPUT ‐‐>POSTROUTING
由本机转发的报文:PREROUTING ‐‐> FORWARD ‐‐> POSTROUTING
由本机的某个进程发出报文(通常为响应报文): OUTPUT ‐‐> POSTROUTING
四表
-
raw表
- 关闭nat上启用的连接追踪机制
-
mangle表
- 拆解报文、修改报文、重新封装报文
-
nat表
- 网络地址转换
-
filter表
- 负责过滤功能,防火墙
规则表的先后顺序:raw→mangle→nat→filter
相同规则的集合叫做表,多张表的集合叫做链 不是每条链上都有四张表
PREROUTING:raw/mangle/nat
INPUT:mangle/filter/nat
OUTPUT:raw/mangle/nat/filter
POSTROUTING:mangle/nat
FORWARD:mangle/filter
实际上在操作过程中,是通过表作为入口进行操作,通过表查询定义的规则,操作规则
规则概念
accept:接受
drop:丢弃
reject:拒绝
snat:源地址转换,解决内网用户同一个公网地址上上网的问题
masquerade:是snat的一种特殊形式,使用动态的、临时会变的ip上
dnat:目标地址转换
redirect:在本机作端口映射
log:记录日志,/var/log/messages文件记录日志信息,然后将数据包传递给下一条规则
iptables
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] –
j[ACCEPT|DROP]
-t table 指定表
raw mangle nat filter 默认
subcommand子命令
-N:new, 自定义一条新的规则链
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃 案例
基本匹配条件
-s:指定源ip地址
-d:指定目的ip地址
-p:指定协议类型
-i:指定网卡流入,PREROUTING/INPUT/FORWARD
-o:指定网卡流出,OUTPUT/POSTROUTING
扩展条件 -m 扩展模块
tcp/udp
--dport:指定目的端口
--sport:指定源端口
state模块:
用于针对tcp连接进行限制
--state NEW:连接中的第一个包的状态是NEW
ESTABLISHED:NEW状态后面的包是ESTABLISHED
RELATED:与命令连接中的报文有关系,比如ftp服务有连个进程,一个是命令进程一个是数据
丢弃来自IP地址x.x.x.x的包
BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP
允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED
-j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j
ACCEPT
firewalld
firewall-cmd命令中使用的参数以及作用
区域 | 默认规则 |
---|---|
internal | 等同于home区域 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相 关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
--get-default-zone
查询默认的区域名称
--set-default-zone=<区域名称>
设置默认的区域,使其永久生效
--list-all
显示当前区域的网卡配置参数、资源、端口以及服务等信息
--add-port=<端口号/协议>
设置默认区域允许该端口的流量
--reload
让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
SElinux
SELinux服务有三种配置模式,具体如下。
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
[root@localhost ~]# vim /etc/selinux/config