防火墙
防火墙作用
防火墙作为一种访问控制设备, 常常安装在内部网络和外部网络的边际上。主要用于保护内部网络的信息安全。
防火墙分类
逻辑上划分,防火墙可以大体分为主机防火墙和网络防火墙
- 主机防火墙:针对于单个主机进行防护
- 网络防火墙:针对网络进行防护,处于网络边缘,防火墙背后是本地局域网
物理上划分,防火墙可分为硬件防火墙和软件防火墙
- 硬件防火墙:在硬件级别实现防火墙功能,另一部分基于软件实现,其性能高,硬件成本高
- 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,其性能相较于硬件防火墙低,成本较低
Web应用防火墙(WAF)
Web应用防火墙是对web防护(网页保护)的安全防护设备(软件),主要用于截获所有HTTP数据或仅仅满足某些规则的会话,多见于云平台中。
网络防火墙主外(服务集体),主机防火墙主内(服务个人)
iptables介绍
iptables官网及名称
iptables全称为netfilter/iptables, 是linux平台下自带的的开源包过滤防火墙。
iptables功能
- 包过滤
- NAT
- 协助实现策略路由和流量控制
- 包标记
iptables组成
规则
iptables是按照规则(rules)来办事的,而规则就是运维人员所定义的条件;规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。
规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCP、UDP、ICMP)和服务类型(HTTP、FTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、丢弃(DROP)等
链
当客户端访问服务器端的web服务时,客户端发送访问请求报文至网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的请求报文会通过内核的TCP协议传输到用户空间的web服务,而客户端报文的目标地址为web服务器所监听的套接字(ip:port)上,当web服务器响应客户端请求时,web服务所回应的响应报文的目标地址为客户端地址,我们说过,netfilter才是真正的防火墙,属于内核的一部分,所以,我们要想让netfilter起到作用,我们就需要在内核中设置“关口”,所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准允放行,符合阻拦条件的则被阻止,于是就出现了input和output关口,然而在iptables中我们把关口叫做“链”。
五条链
- INPUT
- OUTPUT
- FORWARD
- PREROUTING
- POSTROUTING
四张表
- filter: 实现对数据包的过滤
- nat: 主要修改数据包的地址和端口,例如源地址或目标地址
- mangle:对数据包进行修改,例如给数据包打标记MARK
- raw:主要做连接追踪
iptables-services安装
说明
只要有iptables命令就可以写规则,但是在centos7上软件包不安装完全,是没有iptables服务的(主要安装iptables-services软件包)。
iptables-services安装
# yum -y install iptables-services
# systemctl start iptables.service
# systemctl enable iptables.service
iptables策略管理
Iptables基本语法
-A 增加一条规则,后接链名,默认是加到规则的最后面
-D 删除
-L 列出规则
-n 以数值显示
-I 在最前面插入规则
-v 显示统计数据,与-L一起用,看到的信息更多
-F 清空规则
-z 清空计数器
-x 清空自定义链
-t 后接表名
-P policy,默认策略
-p protocol,后接协议名
--dport 目标端口
--sport 源端口
-d destination,目标地址
-s source,源地址
-i 接网卡接口, 进入的网卡接口
-o 接网卡接口, 出去的网卡接口
-j 后接动作
动作的分类:
ACCEPT 接收数据包
DROP 丢弃数据包
REJECT 拒绝数据包,和DROP的区别就是REJECT会返回错误信息,DROP不会
MASQUEREAD IP地址伪装,使用NAT转换成外网IP,可以PPP拔号(外网IP不固定情况)
SNAT 源地址转换,它与MASQUEREAD的区别是SNAT是接一个固定IP
DNAT 目标地址转换
LOG 记录日志
查看规则
注意: 不指定表,默认为filter表
# iptables -L
# iptables -t filter -L
# iptables -t nat -L
# iptables -t mangle -L
# iptables -t raw -L
清空默认规则
这三张表可能有默认的规则,我们先把规则都清掉
# iptables -t filter -F
# iptables -t nat -F
# iptables -t mangle -F
保存规则
# service iptables save
web服务器防火墙规则配置
场景:
仅允许web客户端访问web服务端TCP 80端口,其它任何访问都拒绝。
# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# service iptables save