文章目录
一、引言
对于第一次学习linux防火墙的同学来说,各种名词可能会把自己脑袋搞晕,不清楚各个名词之前的关系,我就是如此。网上的资料有很多但是很杂很乱,新出来的ChatGPT比百度好用多了,我在这里进行归纳整理,帮助初学者更好的理解,以下演示环境为centos7。
二、什么是linux防火墙
防火墙主要分为硬件防火墙和软件防火墙,硬件防护墙是专门设计的一台主机,其中的操作系统主要以提供数据包数据的过滤机制为主,将其他不必要的功能拿掉,因此数据包过滤的效率最佳。本文讲解软件防火墙,硬件防护墙这里不讨论。软件防火墙主要分为数据包过滤型的Netfilter和依据服务软件程序作为分析的TCP Wrappers。本文只介绍Netfilter这种数据包过滤式的防火墙机制,它可以通过iptables命令的方式来进行规则的排序与修改。
贴一个CHATGPT的回答
规则指的是“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
三、iptables、iptables.service、firewalld三者之间的关系
在学习防火墙的过程中接触到的名字有iptables、iptables.service、firewalld,傻傻的搞不清这三者之间的关系…
3.1 iptables和iptables.service之间的区别
总结出以下几点:
1、不是因为有iptables.service才有iptables,iptables是基于内核的,是默认安装的软件,一般来说无需手动安装;而iptables.service是需要手动安装的,安装命令:yum install iptables-service
。
2、iptables是一个命令行工具,可以用来创建防火墙的规则;而iptables.service是一个systemd服务单元,用于管理iptables防火墙规则的加载和保存。它不是一个命令行工具,而是一个服务。
3、iptables命令添加的防火墙规则只是临时的,系统重启后就会消失,所以需要iptables.sevice来对添加的规则进行保存,在系统重启后重载对应的防火墙规则,在系统关机时卸载对应的规则。
3.2 iptables.service和firewalld之间的区别
总结以下几点
1、firewalld也是基于iptables的;
2、firewalld是用户友好型,通过“区域”和“服务”来简化防火墙设置;而iptables命令较为复杂,但是控制更为精细;
3、firewalld是动态的,更改即刻生效,不需要重新加载整个规则集;而iptables.service是静态的,需要重启服务或者手动重新加载规则集来使更改生效。
四、如何创建防火墙规则
当一个网络数据包要进入到主机之前,会先经过Netfilter进行检查,那就是iptables规则。检查通过则接受(ACCEPT)进入本机取得资源,如果检查不通过,则可能予以丢弃(Drop)。
4.1 iptable的表格(tables)与链(chain)
iptables有三个表格,包含管理本机进出的Filter,管理后端主机(防火墙内部的其他计算机)的NAT,管理特殊标志使用的Mangle。本文只讲解用来保护linux主机本身,也就是说只需要关注Filter表格内的INPUT与OUTPUT两条链。
4.2 iptables语法
此处只简单说下
# 查看防火墙规则
iptables -L -n
# 添加防护墙规则
iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|