07_计算机网络笔记-防火墙-iptables


个人博客
https://blog.csdn.net/cPen_web


Linux防火墙概述

firewall	防火墙是防止别人进攻 --> 防火墙就是对进去的数据进行限制
防火墙不能检查病毒,查杀病毒

示例:查看内核版本

[root@cPen_A ~]# uname -r
3.10.0-1127.el7.x86_64
内核kernel:是Linux系统内部最核心的软件
包过滤机制netfilter:是Linux内核里的一个模块,对进出网卡的数据进行管理
防火墙:数据过滤机制
包过滤机制是netfilter,管理工具是iptables

内核 kernel的作用

1. cpu的管理
2. 进程管理
3. 内存的管理
4. 文件系统管理
5. 网络的管理 --> 防火墙
6. 其他硬件的管理
Centos8里防火墙服务不是iptables,是firewalld
	firewalld是一个新式的防火墙
	iptables是老式的防火墙

firewalld和iptables的区别

在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等
	firewalld是对iptables规则进行新的封装,底层仍然使用的是iptables基本的命令

https://www.cnblogs.com/grimm/p/10345693.html
https://blog.csdn.net/lilygg/article/details/84981537

内核态的进程优先级比用户态高,内核态可以访问用户态的空间。用户态不能访问内核态的空间
包过滤防火墙工作在TCP/IP的网络层

iptables的规则表、链结构

规则链

默认的5种规则链

INPUT				处理入站数据包
OUTPUT				处理出站数据包
FORWARD				处理转发数据包
POSTROUTING			在进行路由选择后处理数据包
PREROUTING			在进行路由选择前处理数据包

规则表

规则表是规则链的集合
默认的4个规则表

raw表				确定是否对该数据包进行状态跟踪 --> 新的数据包、还是一个旧的数据包
mangle表			为数据包设置标记 --> 给数据包打标志
nat表				修改数据包中的源、目标IP地址或端口 --> snat/dnat --> 路由功能
filter表			确定是否放行该数据包(过滤) --> 对进入主机本身进行过滤的

示例:查看表里有哪些链

[root@cPen_aliyun ~]# iptables -L -t filter 
[root@cPen_aliyun ~]# iptables -L -t nat
[root@cPen_aliyun ~]# iptables -L -t raw
[root@cPen_aliyun ~]# iptables -L -t mangle 
参数 作用
-L list列出来
-t 指定表的名字
nat 具体的表的名字

表的优先级

raw --> mangle --> nat --> filter

规则链间的匹配顺序

入站数据:PREROUTING、INPUT
出站数据:OUTPUT、POSTROUTING
转发数据:PREROUTING、FORWARD、POSTROUTING

规则链内的匹配顺序

按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)
若在该链内找不到相匹配的规则,则按该链的默认策略处理

图示:数据包过滤匹配流程
数据包
示例:只是防护好本机,不做路由器使用的情况

#清除filter表里的所有的链上的规则
iptables -t filter -F
# 192.168.88.80服务器

#	1.不允许其他的机器ping本机,但是本机可以去ping别人
#不允许其他电脑ping本机,但是允许本机ping其他的电脑 --> 不接收ping的requests包,但是接受reply response
iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP

#	2.不允许其他的机器访问本机的80端口
iptables -t filter -A INPUT -p tcp --dport 80 -j DROP

#	3.只是允许192.168.88.1这台电脑访问本地的22号端口
#设置INPUT链默认的规则为DROP
iptables -P INPUT DROP
iptables -t filter -A INPUT -s 192.168.88.6 -p tcp --dport 22 -j ACCEPT
#	抓包
[root@web-server ~]# tcpdump  -i ens33 -p tcp  src host 192.168.88.254 and  dst port 22 -n 

脚本 - 清除防火墙规则

示例:脚本 - 清除防火墙规则

[root@cPen_A ~]# vim clear_iptables.sh
#!/bin/bash

#清除filter和nat表里的规则
iptables -t filter -F
iptables -t nat -F

#设置filter表里的INPUT链的默认策略为ACCEPT
iptables -t filter -P INPUT ACCEPT

#注:如果调试防火墙规则,出现错误,需要结合计划任务,比如5分钟执行脚本,清除防火墙规则

管理和设置iptables规则

iptables命令的语法格式
	iptables  [-t 表名]  管理选项  [链名]  [条件匹配]  [-j 目标动作或跳转]
几个注意事项
	不指定表名时,默认表示filter表
	不指定链名时,默认表示该表内所有链

示例:查看规则

[root@cPen_A ~]# iptables -L
[root@cPen_A ~]# iptables -L -v
好的,让我来给你总结一下iptables的常见匹配条件: 1. 匹配协议:使用 `-p` 参数指定协议,常见协议包括 TCP、UDP、ICMP等,例如: ``` # 匹配 TCP 协议 iptables -A INPUT -p tcp --dport 22 -j ACCEPT ``` 2. 源/目标地址:使用 `-s` 和 `-d` 参数指定源地址和目标地址,例如: ``` # 允许来自 IP 地址为 192.168.1.100 的主机访问 SSH 服务 iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT # 允许向 IP 地址为 192.168.1.100 的主机发送 HTTP 请求 iptables -A OUTPUT -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT ``` 3. 匹配端口:使用 `--dport` 和 `--sport` 参数指定目标端口和源端口,例如: ``` # 允许访问 SSH 服务 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许从本地主机向远程主机发送 HTTP 请求 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ``` 4. 匹配数据包的状态:使用 `--state` 参数指定数据包的状态,例如: ``` # 允许已经建立的 TCP 连接通过 iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许 ICMP 数据包通过 iptables -A INPUT -p icmp -m state --state NEW -j ACCEPT ``` 5. 匹配 MAC 地址:使用 `-m mac --mac-source` 参数指定源 MAC 地址,例如: ``` # 允许来自 MAC 地址为 00:11:22:33:44:55 的主机访问 SSH 服务 iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT ``` 这些是iptables的常见匹配条件,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mycpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值