linux默认自带一个功能及其强大的防火墙,也就是我们常说的iptables
我们先看一下iptables的结构
我们可以看到,主要分为4个表:filter,nat,mangle和raw
其中,各自的功能分别是:
filter:filter是Netfileter(iptables)中最重要的机制,其任务是执行数据包的过滤操作,也就是起到防火墙的作用
nat: Network address Translation ,也是防火墙上一个不可或缺的重要机制,比较通俗的方式来说,其功能就是ip分享器,只不过其所能执行的功能,要更加强大
mangle:mangle是一个很特殊的机制,我们可以通过mangle机制来修改经过防火墙的数据包的内容
raw: 负责加速数据穿过防火墙机制的速度,提高防火墙的性能
下面我们着重先说一下filter机制
情景假设
我们有一个服务器安装了两块网卡,并在服务器上运行了httpd和firefox两个程序
INPUT 类型:
网络上其他主机发送给本机进程的数据包,例如别的机器如果访问我们这台服务器上的httpd服务,那么属于这个INPUT
OUTPUT类型:
本机进程生成的数据包就是OUTPUT的包,例如我们使用firefox访问其他服务器的服务
FORWARD类型:
如果数据对于本机而且只是路过,那么久属于FORWARD类型,其实就是类似路由器,替你转发一下
三种类型对应filter表中的三个链,就是INPUT,OUTPUT,FORWARD
例如,我们想保护我们本机的httpd服务,那么我们就要去控制INPUT链,因为只有INPUT类型的数据包才会对本机造成伤害,我们可以这么写:如果传入的数据包是要到本机的TCP 80端口,而且是192.168.2.1这个主机发送过来的,就将这个数据包丢掉
再例如:如果我们不想我们的本机的人通过firefox来访问www.baidu.com,毫无疑问,这条规则属于OUTPUT,因为这个包是要出去访问别人的服务,所以我们可以这么写:如果数据包是由本机产生,并且想发往www.baidu.com所在的TCP 80端口,将这个包丢掉
再例如:我们这台服务器是一个防火墙,想保护内网的web服务器,所有的请求都必须通过当前主机之后,才能到内网的web服务器,那么我如果想限制这些请求,就必须使用FORWARD链了,例如:如果数据包是由192.168.1。1 主机发送出来的,而且数据向到内网的192.168.1.100这个服务器的TCP 80端口,我们就把数据包丢掉,也就是说,FORWARD链是保护其他的主机的,不是自己本身
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021