Linux防火墙-Netfilter和iptables

防火墙概述

防火墙(FireWall ) :隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ(demilitarized zone)网络中.

在这里插入图片描述

Netfilter

在这里插入图片描述

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中。
Netfilter是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作。

官方帮助文档:https://netfilter.org/documentation/

netfilter五个勾子函数

Netfilter在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则,规则
由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上
在这里插入图片描述

三种报文流向

三种报文流向
  1.流入本机:  PREROUTING --> INPUT   --> 用户空间进程
  2.流出本机:  用户空间进程 --> OUTPUT  --> POSTROUTING
  3.转发:     PREROUTING --> FORWARD --> POSTROUTING

iptables的组成

前面提到用户可以通过一个命令工具(iptables)向Netfilter写入规则, 也就是说iptables是一个提供命令行的工具,它工作在用户空间,用来编写规则,写好的规则被送到netfilter,告诉内核如何去处理信息包。

[root@centos8 ~]# rpm -qi iptables
Name        : iptables
Version     : 1.8.4
Release     : 17.el8
Architecture: x86_64
Install Date: Sun 12 Nov 2023 10:28:15 AM CST
Group       : Unspecified
Size        : 1989969
License     : GPLv2 and Artistic 2.0 and ISC
Signature   : RSA/SHA256, Fri 29 Jan 2021 06:10:36 AM CST, Key ID 05b555b38483c65d
Source RPM  : iptables-1.8.4-17.el8.src.rpm
Build Date  : Fri 29 Jan 2021 01:05:26 AM CST
Build Host  : x86-01.mbox.centos.org
Relocations : (not relocatable)
Packager    : CentOS Buildsys <bugs@centos.org>
Vendor      : CentOS
URL         : http://www.netfilter.org/projects/iptables
Summary     : Tools for managing Linux kernel packet filtering capabilities
Description :
The iptables utility controls the network packet filtering code in the
Linux kernel. If you need to set up firewalls and/or IP masquerading,
you should either install nftables or this package.

Note: This package contains the nftables-based variants of iptables and
ip6tables, which are drop-in replacements of the legacy tools.

iptables由五个表table和五个链chain以及一些规则组成
在这里插入图片描述

五表table

五个表table: filter、nat、mangle、raw、security
  filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表nat: network address translation地址转换规则表
  mangle:修改数据标记位规则表
  raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
  security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现优

优先级由高到低的顺序为:

security --> raw --> mangle --> nat --> fi1ter
root@zabbix-server:~# iptables -vnL -t filter
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
[root@centos8 ~]# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
[root@centos8 ~]# iptables -vnL -t mangle
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@centos8 ~]# iptables -vnL -t raw
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
[root@centos8 ~]# iptables -vnL -t security
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

五链chain

链chain
  内置链:每个内置链对应于一个钩子函数
  自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效
  
五个内置链chain:
  INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING

表和链的对应关系
在这里插入图片描述
数据包过滤匹配流程
在这里插入图片描述

内核中数据包的传输过程
  1.当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去
  2.如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。
    本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出
  3.如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

iptables规则添加时考量点

iptables规则添加时考量点
  1.要实现哪种功能:判断添加在哪张表上
  2.报文流经的路径:判断添加在哪个链上
  3.报文的流向:判断源和目的
  4.匹配规则:业务需要

实验:控制某个主机谁可以访问谁不能访问

1.实验环境准备
[root@centos8 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

关闭firewalld,并不是就此关闭掉了linux的防火墙,而是关掉系统默认的防火墙规则,系统默认的防火墙规则不能满足我们自己的需求,于是我们自定义防火墙规则。

2.iptables命令格式详解:
iptables -t filter -A INPUT -s 192.169.10.1 -j DROP

# -t 表示使用的那个表 默认使用的filter,可以不加
# -A 表示append,追加规则,有前后次序
# INPUT 表示INPUT链
# -s 表示source源地址,哪个源地址的请求
# -j 表示jump,跳跃
# DROP 表示删除或抛弃
3.拒绝某个服务器ping

当前152可以ping通148
在这里插入图片描述
配置148拒绝152的ping

iptables -A INPUT -s 192.168.10.152 -j DROP

在这里插入图片描述
在这里插入图片描述
此时可以在148上抓包看看

tcpdump -i ens33 -nn icmp

# ubuntu安装tcpdump
apt install -y tcpdump

在这里插入图片描述
可以查看148上配置的规则

iptables -vnL

在这里插入图片描述
当我删除iptables的配置规则后,152和148就有去有回了

iptables -D INPUT -s 192.168.10.152 -j DROP

在这里插入图片描述

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值