iptables防火墙规则(一):iptables语法结构,netfilter功能详解及案例演示

目录

一、防火墙概述

1、防火墙分类:

2、iptables介绍:

iptables是什么?

netfilter/iptables功能

iptables工作依据------规则(rules)

iptables中链的概念

iptables中表的概念

数据包流经iptables流程

二、编写防火墙规则

1、iptables语法结构:

制定iptables规则策略

制定iptables规则思路

2、iptables基础应用:

iptables链管理方法

iptables规则管理

iptables规则显示

iptables基本应用

基本匹配使用选项及功能

扩展匹配条件

[iptables filter表应用案例](#iptables filter表应用案例)

3、iptables扩展匹配应用:


一、防火墙概述

1、防火墙分类:

逻辑上划分:防火墙可以大体分为主机防火墙和网络防火墙

物理上划分:防火墙可分为硬件防火墙和软件防火墙

  1. 硬件防火墙有独立的硬件设备,运算效率较高,价格略高,可为计算机网络提供安全防护

  2. 软件防火墙必须部署在主机系统之上,相较于硬件防火墙运算效率低,在一定程度上会影响到主机系统性能,一般用于单机系统或个人计算机中,不直接用于计算机网络中

2、iptables介绍:

iptables是什么?

iptables不是防火墙,是防火墙用户代理

用于把用户的安全设置添加到"安全框架"中

"安全框架"是防火墙

"安全框架"的名称为netfilter

netfilter位于内核空间中,是Linux操作系统核心层内部的一个数据包处理模块

iptables是用于在用户空间对内核空间的netfilter进行操作的命令行工具

netfilter/iptables功能

netfilter/iptables可简称为iptables,为Linux平台下的包过滤防火墙,是开源的,内核自带的,可以代替成本较高的企业级硬件防火墙,能够实现如下功能:

数据包过滤,即防火墙

数据包重定向,即转发

网络地址转换,即可NAT

iptables工作依据------规则(rules)

iptables是按照规则(rules)来办事的,而规则就是管理员所定义的条件;规则一般定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。

规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCP、UDP、ICMP)和服务类型(HTTP、FTP)等。

当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、丢弃(DROP)等

配置防火墙主要工作就是对iptables规则进行添加、修改、删除等

iptables中链的概念

当客户端访问服务器端的web服务时,客户端发送访问请求报文至网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的请求报文会通过内核的TCP协议传输到用户空间的web服务,而客户端报文的目标地址为web服务器所监听的套接字(ip:port)上,当web服务器响应客户端请求时,web服务所回应的响应报文的目标地址为客户端地址。

我们说过,netfilter才是真正的防火墙,属于内核的一部分,所以,我们要想让netfilter起到作用,我们就需要在内核中设置"关口",所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准允放行,符合阻拦条件的则被阻止,于是就出现了input和output关口,然而在iptables中我们把关口叫做"链"。

INPUT:处理入站数据包

OUTPUT:处理出站数据包

FORWARD:处理转发数据包(主要是将数据包转发至本机其它网卡)当数据报文经过本机时,网卡接收数据报文至缓冲区,内核读取报文ip首部,发现报文不是送到本机时(目的ip不是本机),由内核直接送到forward链做匹配,匹配之后若符合forward的规则,再经由postrouting送往下一跳或目标主机

PREROUTING:在进行路由选择前处理数据包,修改到达防火墙数据包的目的IP地址,用于判断目标主机

POSTROUTING:在进行路由选择后处理数据包,修改要离开防火墙数据包的源IP地址,判断经由哪一接口送往下一跳

iptables中表的概念

每个"规则链"上都设置了一串规则,这样的话,我们就可以把不同的"规则链"组合成能够完成某一特定功能集合分类,而这个集合分类我们就称为表,iptables中共有4张表

filter: 过滤功能,确定是否放行该数据包,属于真正防火墙

nat: 网络地址转换功能,修改数据包中的源、目标IP地址或端口

mangle: 对数据包进行重新封装功能,为数据包设置标记

raw: 确定是否对数据包进行跟踪

iptables中表链之间的关系

filter表可以使用哪些链定义规则:INPUT,FORWARD,OUTPUT

nat表中可以使用哪些链定义规则:PREROUTING,OUTPUT ,POSTROUTING,INPUT

mangle 表中可以使用哪些链定义规则:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

raw表中可以使用哪些链定义规则:PREROUTING,OUTPUT

数据包流经iptables流程

iptables中表的优先级 : raw-mangle-nat-filter(由高至低)

#查看iptables配置

iptables -L -n -t filter

#-L:查看规则

#-n:以数字形式显示地址,端口等信息

#-t:指定表名

#-F:清空规则

二、编写防火墙规则

1、iptables语法结构:

iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]

规则组成:

制定iptables规则策略

黑名单:没有被拒绝的流量都可以通过,这种策略下管理员必须针对每一种新出现的攻击,制定新的规则,因此不推荐

白名单:没有被允许的流量都要拒绝,这种策略比较保守,根据需要,主机主机逐渐开放,目前一般都采用白名单策略,推荐

制定iptables规则思路

选择一张表,此表决定了数据报文处理的方式

选择一条链,此链决定了数据报文流经哪些位置

选择合适的条件,此条件决定了对数据报文做何种条件匹配

选择处理数据报文的动作,制定相应的防火墙规则

2、iptables基础应用:

安装iptables-services

centos7系统中默认存在iptables命令,此命令仅为简单查询及操作命令,不包含配置文件,安装iptables-services后,将直接生成配置文件,便于配置保存

yum -y install iptables-services

systemctl start iptables.service

systemctl enable iptables.services

rpm -ql iptables-services

#保存iptables配置

iptables-save > /etc/sysconfig/iptables

#重载iptables配置

#iptables-restore < /etc/sysconfig/iptables

iptables链管理方法

-F, --flush [chain]:清空指定的规则链上的规则;

-Z, --zero [chain [rulenum]]:置零计数器;

注意:每个规则都有两个计数器

packets:被本规则所匹配到的所有报文的个数;

bytes:被本规则所匹配到的所有报文的大小之和;

-P, --policy制定链表的策略(ACCEPT|DROP)

iptables规则管理

-A, --append 追加新规则于指定链的尾部;

-I, --insert 插入新规则于指定链的指定位置,默认为首部;

-R, --replace 替换指定的规则为新的规则;

-D, --delete 根据规则编号或者规则本身删除规则;

iptables规则显示

-L, --list [chain]:列出规则;

-v, --verbose:详细信息;

-n, --numeric:数字格式显示主机地址和端口号;

--line-numbers:列出规则时,显示其在链上的相应的编号;

iptables基本应用

#清除所有规则

#iptables -F

#修改链上默认策略

iptables -t filter -P INPUT DROP

#允许ssh远程连接

#允许http协议通过

#删除允许http协议通过

#删除指定编号的规则,1是规则编号

基本匹配使用选项及功能

-p 指定规则协议,tcp udp icmp all

-s 指定数据包的源地址,ip hostname

-d 指定目的地址

-i 输入接口

-o 输出接口

扩展匹配条件

-p tcp

--sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围

--dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围

-p udp

--sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围

--dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围

--icmp-type

0:echo-reply 允许其他主机ping

8:echo-request 允许ping其他主机

iptables filter表应用案例

#安装ssh,httpd.vsftp,添加一下规则

#问题1:本机无法访问其它主机,例如:ssh http等

#解决方法

#state追踪本机上的请求和响应之间的数据报文的状态。状态有五种:

INVALID、ESTABLISHED、NEW、RELATED、UNTRACKED.

--state state

NEW 新连接请求

ESTABLISHED 只要发送并接到应答,一个数据表的状态就从NEW变为ESTABLISHED,并且该状态会继续匹配这个连接后继数据包(连接态)

INVALID 无法识别的连接(无效态)

RELATED 相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接(衍生态)

#问题2:ftp客户端可以连接ftp服务器,但是看不到数据

#解决方法①:使用连接追踪模块

#找到IPTABLES_MODULES=""这行(第6行)

#启动服务时加载

②#配置标准流程:

3、iptables扩展匹配应用:

#-m icmp

#允许ping回应(echo-reply)

#-m multiport

#multiport:多端口

#在INPUT链中开放本机tcp 22,tcp80端口

#-m iprange

#iprange多ip地址(-src-range原地址范围,--dst-range目的地址范围)

#-m time

#time指定访问时间范围

#每天8:00-18:00

#每周1-5的8:00-18:00

#2020-1-10的18点到2022-1-10的18点

#-m comment 对规则进行备注说明(添加注释)

相关推荐
冉佳驹11 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic
米羊12111 小时前
已有安全措施确认(中)
网络
陌上花开缓缓归以11 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu
江湖有缘11 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
迎仔11 小时前
A-算力中心网络隔离总览:数字世界的“酒店房间“
网络
wangjialelele12 小时前
Linux下的IO操作以及ext系列文件系统
linux·运维·服务器·c语言·c++·个人开发
宝塔面板12 小时前
AllinSSL 一站式搞定 SSL 自动续期:永久免费,开源可自托管
网络·网络协议·ssl
csdn今天倒闭了吗12 小时前
飞牛lucky配置ipv6 ddns+ssl+反向代理
网络·网络协议·ssl
HypoxiaDream12 小时前
LINUX-Ext系列⽂件系统
linux·运维·服务器
小毛驴85012 小时前
Linux curl 命令用法
linux·运维·chrome