作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主,而云服务器基本上就不会使用系统自带的防火墙,而是使用安全组来代替了防火墙的功能,可以简单理解安全组就是web版的防火墙,我们主要从以下几个方面来讲解Linux防火墙:
Linux防火墙-什么是防火墙
Linux防火墙-4表5链
Linux防火墙-filter表(本章节)
Linux防火墙-nat表
Linux防火墙-常用命令
Linux防火墙-案例(一)
Linux防火墙-案例(二)
Linux防火墙-小结
上一小节,我们介绍了Linux防火墙的基本表链情况,今天就来重点介绍filter这个表及对应的链。它也是实现防火墙最核心功能的表。
filter
filter 表是 Linux 网络过滤框架 netfilter 中的一个关键部分,主要用于实现数据包过滤功能,以下是对其重点介绍:
一、关联链及作用位置
filter 表主要与 INPUT、FORWARD 和 OUTPUT 链相关联。
二、规则设置及示例
filter 表的规则设置主要通过相关的命令行工具(如 iptables)来实现。
iptables -A [链名] -[匹配条件] -j [动作]
iptables -I [链名] -[匹配条件] -j [动作]
-A 表示在指定链的末尾添加一条规则;
-I 表示在指定链的最前面插入一条规则;
[匹配条件]
可以是下面
包括源 IP 地址(-s
选项)
目标 IP 地址(-d
选项)
协议类型(-p
选项)
-j [动作]
表示指定对匹配到的数据包采取的动作
ACCEPT(允许通过)
DROP(丢弃)
REJECT(拒绝并返回错误信息)
#来源于192.168.1.1所有请求都被允许
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
拒绝某个ip的全部连接
#来源于192.168.1.2的所有请求都被拒绝
iptables -A INPUT -s 192.168.1.2 -j DROP
允许某个ip连接22端口
#只允许192.168.1.3连接的tcp的22端口(也就是sshd服务)
iptables -A INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT
三、重要性及应用场景
在介绍什么是防火墙的时候,我们介绍过,我们要去访问隔壁小区的张三需要经过下面几个步骤:
1.我们自己小区的门卫要允许我出门,并且不限制我去那个小区,也不限制我去找谁(全放开或者部分放开)。
2.小区A门卫要允许外人进来,并且张三也允许其他人(可是只是我们小区,也可以是所有人)。
3.我去找张三玩了以后,小区A的门卫要允许我离开(可以理解可以进来就可以出去,因为都是原路 ),我们自己小区要允许我回来。(当然2个操作基本上默认都是默认开放的)。
其实延伸出来一个问题,是不是每个人要出去,或者要进来都要有规则,有没有一个默认规则呢,凡是保安的小本本没记录的都按照默认的规则来执行,是放行还是拒绝。
#默认没有任何规则,任何人都可以进出。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
也就是这里默认都是允许的,如果说从安全的角度来说,这个肯定不安全的,所以正确的防火墙配置应该是默认都拒绝,然后开放你想开放的端口。
#只允许张三被外面的访问,只允许22端口被外面访问
#其他住户都不允许访问
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这里假设的是一个小区里面的住户就是一个服务:比如张三就是22端口,李四就是80端口,王五就是3306端口。
目前这个规则就是只允许张三(22端口)允许所有人访问,其他住户李四和王五都不允许任何人来访问。
1.这里的规则只是为了让你认识基本规则,真实环境还有些其他配置才可以正常正常使用。
2.防火墙是按照顺序执行,如果执行到某个规则是拒绝,则不会往后面执行,即便后面有放行规则,所以在插入的时候是使用插入到最前面(-I)还是追加到后面(-A)就会有很大的区别。
3.如果默认规则是允许,则前面放置的所有允许规都是没有意义的,只有拒绝才是有意义的。
4.如果默认是规则是拒绝,则必须允许规则,否则我们就无法进入。