iptables&firewalld

1.火墙介绍

1.1 netfilter

  • netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

1.2 iptables

  • iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

  • iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的,是用来填写netfilter的工具

netfilter/iptables 的最大优点是它可以配置有状态的防火墙。

1.3 iptables&firewalld

  • iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理

  • 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念,即不同的防火墙策略集合,用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

2.火墙管理工具切换

2.1 iptables -------> fiewalld的切换

systemctl disable --now iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld

2.2 firewalld----->iptables的切换

systemct disable --now firewalld即刻开机不启动firewalld

systemctl mask firewalld冻结firewalld使不被其他程序打开

firewall-cmd --state查看firewalld状态
在这里插入图片描述

dnf install iptables-services -y安装iptables
在这里插入图片描述

systemctl enable --now iptables启动iptables并设定开机启动

systemctl status iptables.service查看iptables状态
在这里插入图片描述

3. iptables 的使用

3.1 iptables策略记录文件

/etc/sysconfig/iptables	
#iptables策略记录文件

iptables -nL
#与iptables策略记录文件一致

在这里插入图片描述在这里插入图片描述

3.2 永久保存策略

二选一:

  • iptales-save > /etc/sysconfig/iptables读取火墙策略信息并导入iptables策略记录文件
  • service iptables save 保存策略信息

在这里插入图片描述
在这里插入图片描述

4.火墙默认策略

4.1 默认的3张表

介绍
filter 经过本机内核的数据 (input、output 、forward)
nat 不经过内核的数据 (postrouting、prerouting、input、output)
mangle 当filter和nat表不够用时使用 (input 、output 、forward 、postrouting、 prerouting
iptables -t filter -L
iptables -t nat -L
iptables -t mangle -L

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 默认策略中的5条链

解释
input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之前

4.3 iptables命令

iptables的命令 用途
-t 指定表名称
-n 不做解析(显示主机IP)
-L 查看
-A 添加策略
-D 删除策略
-p 协议
- -dport 目的地端口
-s 来源
-j 动作
-j   ACCEPT 允许
-j    DROP 丢弃(无回应)
-j    REJECT 拒绝(有回应)
-j   SNAT 源地址转换
-j   DNAT 目的地地址转换
-N 新建链
-E 更改链名称
-X 删除链
-D 删除规则
-I 插入规则
-R 更改规则
-P 更改默认规则

4.3.1 查看表信息

iptables -L 				默认查看
iptables -nL				不做地址解析
iptables -t filter -nL 		-t指定表,-n不做地址解析,-L查看

在这里插入图片描述

4.3.2 策略读取规则

注意:火墙中的策略读取是 从上到下的读取方式,当所读取到的策略和当前的资源达到的匹配的程度,就执行当前的策略,不会读取后续的策略了。
iptables -F
iptables -nL
iptables -A INPUT -j REJECT

在这里插入图片描述

[westos@westos_student28 ~]$ ssh root@172.25.254.128
ssh: connect to host 172.25.254.128 port 22: Connection refused
[westos@westos_student28 ~]$ ping 172.25.254.128
PING 172.25.254.128 (172.25.254.128) 56(84) bytes of data.
From 172.25.254.128 icmp_seq=1 Destination Port Unreachable
不可以ping通和连接

在这里插入图片描述

iptables -D INPUT 1
在这里插入图片描述

[westos@westos_student28 ~]$ ping 172.25.254.128
PING 172.25.254.128 (172.25.254.128) 56(84) bytes of data.
64 bytes from 172.25.254.128: icmp_seq=1 ttl=64 time=0.184 ms
[westos@westos_student28 ~]$ ssh root@172.25.254.128
root@172.25.254.128's password: 
可以ping通和连接

在这里插入图片描述

iptables -A INPUT -j DROP

在这里插入图片描述

[westos@westos_student28 ~]$ ping 172.25.254.128
PING 172.25.254.128 (172.25.254.128) 56(84) bytes of data.
^C  卡在连接页面,没有回应

在这里插入图片描述

iptables -D INPUT 1
iptables -A INPUT -j REJECT
iptables -A INPUT -s 172.25.254.28 -j ACCEPT
访问被拒绝,火墙中的策略读取是由上到下,当所读取到的策略和当前的资源达到匹配的程度,就执行当前的策略,不往后读取。
在这里插入图片描述
在这里插入图片描述

iptables -D INPUT 2
iptables -I INPUT 1 -s 172.25.254.28 -j ACCEPT
访问被允许,通信成功。
在这里插入图片描述
在这里插入图片描述

4.3.3 只允许指定IP访问SSH(指定服务)

iptables -F
iptables -A INPUT -s 172.25.254.28 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT
在这里插入图片描述

只可以访问ssh,无法ping通:

[root@westos_student28 ~]# ping 172.25.254.128 
PING 172.25.254.128 (172.25.254.128) 56(84) bytes of data.
From 172.25.254.128 icmp_seq=1 Destination Port Unreachable`

在这里插入图片描述

4.3.4 -R 更改策略

iptables -R INPUT 1 -s 172.25.254.28 -p tcp --dport 80 -j ACCEPT

在这里插入图片描述

[root@node111 Desktop]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination   
ACCEPT     tcp  --  node111              anywhere             tcp dpt:ssh      
                        ------>更改为
ACCEPT     tcp  --  172.25.254.28        anywhere             tcp dpt:http

在这里插入图片描述

4.3.5 -R更改默认策略

注意:默认策略是ACCEPT,如果想要更改可以使用-P,但注意**-P后面不能指定为REJECT**,只能跟ACCEPT或者DROP。

[root@node111 Desktop]# iptables -D INPUT 2
[root@node111 Desktop]# iptables -D INPUT 1
[root@node111 Desktop]# iptables -P INPUT DROP
[root@node111 Desktop]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination 

在这里插入图片描述

4.3.6 对链的控制

iptables -N westos			新建链
iptables -E westos MMYXY	更改链名称
iptables -X MMYXY			删除链

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 数据包状态

  • 1.数据包的状态转变:为了解决掉在传输数据包时由于火墙读取策略导致的延迟问题,转换数据包的状态可以使已经检测过的数据包再次传输时直接通过火墙策略而不必等候火墙策略的读取。

  • 2.数据包的三种状态

状态 含义
RELATED 建立过连接的
ESTABLISHED 正在连接的
NEW 新的
  • 3.在添加火墙策略时写入数据包的状态:
    iptables -F
    (1)设定建立过连接和正在建立连接的数据包的火墙策略为允许:
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    (2)设定本机的回环接口允许新的数据包:
    iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
    (3)对于新的指定服务的数据包添加火墙策略设定为允许:
    iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
    (4)添加火墙策略,设定除指定IP的所有主机都可以进行的服务:
    iptables -A INPUT -m state --state NEW ! -s 172.25.264.28 -p tcp --dport 22 -j ACCEPT
    (!代表非)
    (5)对于剩余其他新的数据包添加火墙策略设定为拒绝:
    iptables -A INPUT -m state --state NEW -j REJECT
    (5)永久保存火墙策略
    service iptables save

实验:

[root@node111 Desktop]# iptables -F
[root@node111 Desktop]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@node111 Desktop]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[root@node111 Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@node111 Desktop]# iptables -A INPUT -m state --state NEW ! -s 172.25.254.28 -p tcp --dport 22 -j ACCEPT
[root@node111 Desktop]# iptables -A INPUT -m state --state NEW -j REJECT
[root@node111 Desktop]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

测试:

28不可以
[root@westos_student28 ~]# ping 172.25.254.128 
PING 172.25.254.128 (172.25.254.128) 56(84) bytes of data.
From 172.25.254.128 icmp_seq=1 Destination Port Unreachable
[root@westos_student28 ~]# ssh [email protected]
ssh: connect to host 172.25.254.128 port 22: Connection refused

除指定IP的主机,可以进行ssh连接

4.5 NAT表中的SNAT和DNAT

实验环境:

双网卡主机:172.25.254.228和1.1.1.228
单网卡主机1:1.1.1.128 相当于内网主机
单网卡主机2:172.25.254.128 相当于外网主机

4.5.1 SNAT:在路由之后做的源地址转换

实验目的:

可以让单网卡主机连接到不同网段的主机 ,使1(内网)- - ->172(外网)

双网卡主机:node222

enp1s0 inet 172.25.254.228 
enp7s0 inet 1.1.1.228

路由转换功能开启:

[root@node222 network-scripts]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
iptables -t nat -A POSTROUTING -o enp1s0 -j SNAT --to-source 172.25.254.228 
#iptables -t nat -A PREROUTING -i enp1s0 -j DNAT --to-dest 1.1.1.228 
[root@node222 ~]# iptables -nL   空
        
[root@node222 ~]# iptables -t nat -L   
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  anywhere             anywhere             to:172.25.254.228


[root@node222 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@node222 ~]# systemctl restart iptables.service 

单网卡主机1:1.1.1.128

ifconfig : 1.1.1.128
route -n : 1.1.1.228

单网卡主机2: 172.25.254.28

问题:
双网卡主机可以ping通单网卡主机2
单网卡主机1可以ping同双网卡主机,ping单网卡主机2不行

测试:
1.1.1.228可以ping通172.25.254.228,也可以ssh上

猜你喜欢

转载自blog.csdn.net/weixin_46074899/article/details/110732439