个人博客
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