firewalld简述
firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘
对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,
对于能够被规则所匹配的报文做出相应处理的组件(这个组件可以是硬件,也可以是软件):
- 主机防火墙
- 网络防火墙
功能(也叫表)
filter:过滤,防火墙
nat:network address translation,网络地址转换
mangle:拆分报文,做出修改,在封装起来
raw:关闭nat表上启用的连接追踪功能
链(内置):
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
数据报文的流向
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
各功能可以在哪些链上实现
filter: INPUT,FORWARD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,INPUT,POSTROUTING(SNAT)
mangle: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT
路由发生的时刻(PREROUTING,POSTROUTING)
报文进入本机后:
判断目标主机
报文发出之前:
判断经由哪个借口送往下一跳
添加规则时的考量点
(1)要实现什么功能:判断添加在哪张表上;
(2)报文流经的路径:判断添加在哪个链上;
firewalld优先级
策略应用优先级:raw, mangle, nat, filter
策略常用优先级:filter,nat,mangle,raw
链管理
-F: flush,清空规则链:省略链,表示清空指定表上的所有的链 -N: new, 创建新的自定义规则链: -X: drop, 删除用户自定义的空的规则链-P: Policy, 为指定链这是默认策略,对filter表中的链而言,默认策略通常有ACCEPT,DROP,REJECT;
规则管理
-A:append,将新规则追加于指定链的尾部 -I:insert,将新规则插入至指定链的指定位置 -D:delete,删除指定链上的指定规则:
查看防火墙策略
-L:list, 列出指定链上的所有规则: -n:number,以数字格式显示地址和端口号 -v:verbose,显示详细信息
-vv,-vvv --line-numbers:显示规则编号:
匹配条件
-s, source:检查报文中源ip地址是否符合此处指定的地址范围
-d, destination:检查报文中ip地址是否符合此处指定的地址范围
-p, protocol(udp|tcp|icmp):检查报文中的协议
-i, input-interface:数据报文的流入接口:仅能用于PREROUTING,INPUT,FORWARD链上
-o, out-interface:数据报文的流出接口:仅能用于POSTROUTING,OUTPUT,FORWARD链上
-j target:jump至指定的target
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
RETURN:返回调用链
REDIRECT:端口重定向
LOG:记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装
....
自定义链:由自定义链中的的规则进行匹配
例子
清空所有策略: iptables -F
清空自定义链: iptables -X
自定义一个链 iptables -N old_forward
修改自定义链的名字 iptables -E old_forward new_forward
把filter中forward链的默认策略打成drop iptables -P FORWARD DROP
查看filter表中的策略并且显示行数: iptables -L -n --line-number
删除filter表中forward链中的第9条策略: iptables -t filter -D FORWARD 9
限制所有主机(0.0.0.0)拒绝ping本主机 iptables -t filter -A
INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT
显示所有主机(0.0.0.0)拒绝通过ens33网卡ping本主机 iptables -t
filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT
nat表
#源地址为192.168.250.0网段的ip地址经过防火墙都转换成
192.168.31.100这个ip地址(SNAT:源地址转换)
iptables -t nat -A POSTROUTING -s 192.168.250.0/24 ! -d
192.168.250.0/24 -j SNAT --to-source 192.168.31.100
#访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都
转发给192.168.250.1(DNAT目标地址转换)
iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j
DNAT --to-destination 192.168.250.1:80
#访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都
转发给192.168.31.100的9999号端口(DNAT目标端口地址转换)
iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j
DNAT --to-destination 192.168.31.100:9999
iptables工具:
-t:指定表
-L:查看规则
-n:以数字形式查看
-F:清空所有规则
-X:清除自定义链
-P:指定链的默认规则
-j:指定要执行的动作
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
-A:append追加策略
-s:source源ip(网段)
-d:destination目标ip(网段)
-I:insert插入策略
-p:protocol指定协议
--dport:指定目标端口
--sport:指定源端口
--line-num:显示规则行号
-D:按照行号删除某链中的规则
-i:指定网卡
dnat 和 snat
防火墙修改内核参数:
临时修改:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久修改:
修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf