netfilter基础及iptables基本应用

防火墙及netfilter基础

firewall

工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,对能够被规则匹配的报文作出相应处理的组件。

可分为主机防火墙和网络防火墙

可以是软件,也可以是硬件,专业的硬件防火墙:checkpoint, netscreen

iptables:规则管理工具,是工作于用户空间的程序,可自动检查语法错误;

netfilter: 网络过滤器, 是工作于内核空间TCP/IP网络协议栈上的框架;

IDS:Intrusion Detecting System,即入侵检测系统

NIDS:网络入侵检测系统

HIDS:主机入侵检测系统

IPS:
Intrusion Protec System,即入侵防御系统

HoneyPot:
蜜罐

Iptables

发展历程

ipfw --> ipchains--> iptables/netfilter

Linux本无防火墙系统,参考OpenBSD移植而来,取名ipfw;后发现firewall的防护功能依赖于众多串在一起的规则链来实现,故改名ipchains;再后来规则被规划的越来越详细,防护功能依赖于多条链结合来实现,最终定名iptables/netfilter

路由发生的时刻:

报文进入本机后:

判断目标地址

报文离开本机之前:

判断经由哪个接口发出;

报文流向经由的位置:

到本内部:prerouting, input

由本机发出:output, postrouting

由本机转发:prerouting, forward, postrouing

规则的组成部分:

报文的匹配条件, 匹配之后如何处理

匹配条件:基本匹配条件、扩展匹配条件

如何处理:内建处理机制、自定义处理机制(自定义的链)

注意:报文不可能经由自定义链,自定义链只有在内置链上被引用才能生效(即做为自定义目标)

netfilter规则的功能:

filter:过滤

NAT Server(Network Address Translation):地址转换

mangle:修改报文首部中的某些信息

raw:关闭nat表上启用的连接追踪功能

以上即iptables的四表

hooks function(钩子函数)

prerouting:

进入本机后路由功能发生前

①:raw,mangle,nat

input:

到达本机内部

②:mangle,filter

output:

由本机发出

③:raw,mangle,nat,filter

forward:

由本机转发

④:mangle,filter

postrouting:

路由功能发生后,即将离开本机前

⑤:mangle,nat

以上即iptables的五链(CHAIN),组合起来即构成内核中专门用于实现报文检查功能的框架--netfilter

各钩子存有众多规则,按功能存放,具有相同功能的规则集中存放,而不同功能的规则单独存放,报文到达后会按照功能的优先级按次序依次检查,由此组成iptables的表。

各功能实现位置:

filter:input, forward, output

nat:prerouting(修改目标主机地址), output, postrouting(修改源主机地址)

mangle:prerouting, input, forward, output,
postrouting

raw:prerouting, output,nat的补充功能,只能发生在nat的前半段

功能的优先级:

由高而低:raw
--> mangle --> nat --> filter

数据包过滤匹配流程示意图

添加规则时的考量点:

(1)
要实现的功能:判断添加在哪个表上;

(2)
报文流向及经由路径:判断添加在哪个链上;

链上的规则次序即为检查次序,因此有一定的法则

(1)
同类规则,匹配范围小的放上面;

(2)
不同类规则,匹配报文几率较大的放上面;

(3)
应该设置默认策略;

iptables基本用法

iptables命令

生成规则,送往netfilter;

规则通过内核接口直接送至内核;立即生效,但不会永久有效;

要想永久有效需保存至配置文件,且此配置文件需开机自动加载或由用户手动加载

语法格式

iptables[-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

常用选项

-t TABLE:指明要操作的表,省略时默认为filter, 共有filter, nat, mangle, raw四个表可用;

SUBCOMMAND:子命令

CHAIN:指明要操作的链

CRETERIA:指明匹配条件

-j TARGET:指明处理动作

SUBCOMMAND(子命令)

对链的操作

-F:flush,清空指定表的指定链上所有规则,省略链名时,清空默认表中所有链的所有规则;

-N:new, 新建一个用户自定义的链,自定义链只能作为默认链上的跳转对象,即在默认链上通过引用来生效自定义链;

-X:drop,删除用户自定义的空链,内置链无法删除;

-Z:zero,将规则的计数器置0;每个链上的每条规则都有两个计数器,一个记录被当前规则所匹配到的报文个数,另一个记录被当前规则所匹配到的报文大小之和;

-P:policy,设置链的默认处理机制,当所有链都无法匹配,或能匹配到但无法做出有效处理机制时,默认处理机制即生效;

filter表的可用策略:ACCEPT、DROP、REJECT

-E:rename,重命名自定义链;

注意:被引用中的链,无法删除和改名

对链上规则的操作

-A:append,在链尾追加一条规则;

-I:insert,在指定位置插入一条规则;

-D:delete,删除指定的规则;

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

查看操作

-L:list,列出指定链上的所有规则;

-n:numeric,以数字格式显示地址和端口号,即不反解;

-v:verbose,详细格式,显示规则的详细信息,包括规则计数器等;

--line-numbers:显示规则编号;

-x:exactly,显示计数器的精确值,即不做单位换算;

pktsbytes target     prot opt in     out    source      destination

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

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

target: 处理目标 (目标可以为用户自定义的链);

prot: 协议 {tcp, udp, icmp};

opt:可选项;

in:数据包流入接口;

out:数据包流出接口;

source:源地址;

destination:目标地址;

CRETERIA(匹配条件)

检查IP首部,检查TCP、UDP或ICMP首部;

基于扩展机制,也可以进行额外的检查,如做连接追踪等;

可同时指定多个匹配条件,此时指定的所有条件要都满足才能被匹配到;

通用匹配

-s, --src, --source  IP|Network:检查报文源IP地址;

-d, --dst,--destination:检查报文目标IP地址;

-p,--protocol:检查报文中的协议,即ip首部中的protocols所标识的协议(tcp、udp、icmp三者之一);

-i,--in-interface:检查报文的流入接口;通常只用于PREROUTING, INPUT,FORWARD链上的规则;

-o,--out-interface:检查报文的流出接口;通常只用于FORWARD,  OUTPUT, POSTROUTING链上的规则;

注意:可以取反,在选项前加“!”

扩展匹配

使用iptables的模块实现扩展性检查机制

隐式扩展

如果在通用匹配上使用-p选项指明了协议的话,[-m 模块名称]可省略

tcp

--dport:目标端口

--sport:源端口

--tcp-flags LIST1 LIST2

LIST1:要检查的标识位

LIST2:在LIST1中出现过的,且必须为1标记位,而余下的则必须为0

示例:“--tcp-flags syn,ack,fin,rst   syn”:表示只检查4个标识位syn,ack,fin,rst,且syn必须=0,而ack,fin,rst必须=1

--syn:用于匹配tcp会话三次握手的第一次

udp

--dport

--sport

icmp

--icmp-type

8:echo request(ping请求)

0:echo reply(ping响应)

示例:配置本机的dns服务,并放行之;默认策略为drop

注意:规则1和2只能放行外机指向本机做解析,若无规则3和4,本机自己请求的解析将无法被放行

显式扩展

必须指明使用的扩展机制

格式:-m模块名称,每个模块会引入新的匹配机制

查询可用的模块命令

rpm -ql iptables

小写字母,以“.so”结尾

multiport扩展:

以离散定义多端口匹配;最多指定15个端口;

专用选项:

--source-ports,--sports PORT[,PORT,...]

--destination-ports,--dports PORT[,PORT,...]

--portsPORT[,PORT,...]

示例:

# iptables -I INPUT 1 -d 172.16.100.11 -ptcp -m multiport --dports 22,80,443 -j ACCEPT

# iptables -I OUTPUT 1 -s 172.16.100.11 -ptcp -m multiport --sports 22,80,443 -j ACCEPT

iprange扩展:

指定连续的ip地址范围;在匹配非整个网络地址时使用;

专用选项:

[!]--src-range IP[-IP]

[!]--dst-range IP[-IP]

示例:

# iptables -A INPUT -d 172.16.100.11 -p tcp--dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.11 -p tcp--sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT

string扩展:

检查报文中出现的字符串,与给定的字符串作匹配;

字符串匹配检查算法:

kmp,bm

专用选项:

--algo{kmp|bm}

--string"STRING"

--hex-string "HEX_STRING":HEX_STRING为编码成16进制格式的字串;

示例:

# iptables -I OUTPUT 1 -s 172.16.100.11 -ptcp --sport 80 -m string --string "sex" --algo kmp -j REJECT

time扩展:

基于时间区间做访问控制

专用选项:

--datestartYYYY[-MM][-DD][hh[:mm[:ss]]]

--dattestop

--timestart

--timestop

--weekdaysDAY1[,DAY2,...]

示例:

#iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT

connlimit扩展:

基于连接数作限制;对每个IP能够发起的并发连接数作限制;

专用选项:

--connlimit-above[n]

示例:

#iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit--connlimit-above 5 -j REJECT

limit扩展:

基于发包速率作限制;

专用选项:令牌桶算法

--limit  n[/second|/minute|/hour|/day]

--limit-burstn

示例:

# iptables -R INPUT 3 -d 172.16.100.11 -picmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT

state扩展:

-j TARGET

-j(jump),跳转目标

内置目标

ACCEPT:接受

DROP:丢弃

REJECT:拒绝

自定义连接

时间: 2024-08-24 08:58:21

netfilter基础及iptables基本应用的相关文章

【原创】Linux基础之iptables

iptables 1.4.21 官方:https://www.netfilter.org/projects/iptables/index.html iptables is the userspace command line program used to configure the Linux 2.4.x and later packet filtering ruleset. It is targeted towards system administrators. iptables是一个命令

防火墙及netfilter基础iptables基本用法

iptables firewall: 主机防火墙 网络防火墙 工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 网络防火墙: 专业的硬件防火墙: checkpoint,netscreen 主机: iptables: 程序 iptables:规则编写工具 netfilter: 网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架: IDS:IntrusionDetecting System NIDS HIDS IPS:Intru

iptables与netfilter基础与示例

该怎么描述防火墙的实现呢?既然说不明白那就不说了,自己领悟吧! 一.防火墙是什么? 通过一些规则在网络数据报文必经的几个钩子上做端口的限制,实现数据过滤的功能. 二.数据报文传输的路径是怎样的? 1. 客户端发出数据报文---->到达服务器的网络接口-----(判断目标是服务器自己)将报文送入内核处理---->将处理好的数据报文转发出去---->通过网络接口发还给客户端 2.客户端发出数据报文---->到达服务器的网络接口-----(判断目标不是服务器)将数据转发出去---->

linux基础之iptables

Linux iptables相关: iptables用法 iptables [-ttable] command chain(链) [cretiria(匹配标准)] –jaction -t [raw,mangle,net ,filter] Command: 对链,或者对链中的规则进行管理操作 链中规则: -A  添加一条规则 -I   # 在第几条规则后插入一条规则 -R  # 修改第几条规则 -D  # 删除第几条规则 链: -N  增加 -X  删除空链 -E  重命名一条自定义链 -F  清

系统基础优化--iptables selinux 系统字符集

1.2.系统优化讲解 1.2.1.查看系统环境 01.查看系统版本 [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.9 (Final) [[email protected] ~]# 02.查看系统架构信息 [[email protected] ~]# uname -m x86_64 [[email protected] ~]# 03.查看内核信息 [[email protected] ~]# uname -r 2.

linux基础之iptables (二) SNAT和DNAT

iptables要实现内网和外网通信,有两种方式: nat: Network Address Translation,安全性,网络层+传输层 proxy: 代理,应用层 nat: SNAT: 只修改请求报文的源地址 DNAT:只修改请求报文的目标地址 nat表: PREROUTTING: DNAT OUTPUT POSTROUTING: SNAT 实例: 以三台电脑搭建环境,其中一台作为外网主机,一台作为网关,一台作为内网主机 1. 以192.168.1.4这台电脑作为连接内网和外网的接口,et

【linux基础】22、iptables(上)

一.网络安全模型 1.防火墙简介 防火墙(Firewall):也称防护墙,它是一种位于内部网络与外部网络之间的网络安全系统. 工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是二者的结合 主机防火墙:工作于主机边缘,只能对一台主机起到保护作用 网络防火墙:工作于网络边缘,对多台主机起到保护作用 主机防火墙 + 网络防火墙 硬件防火墙:能高效地处理网络报文,CPU是特制的,在硬件基础上能直接处理报文(解包) 网络层:网络防火墙 应用层

Netfilter/iptables防火墙

http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免费防火墙,功能十分强大.在接下来的这个<深入浅出Netfilter/iptables防火墙框架>系列中,51CTO安全/Linux专家李洋将对Netfilter/iptables进行详尽的.条理的介绍.本文是基础篇,先介绍Netfilter/iptables框架的原理. 1.Netfilter/i

Iptables基础整理

Iptables基础框架 Iptables基于内核netfilter安全框架运行,主要有过滤数据包和NAT地址转换功能. Iptables基本表链结构 filter INPUT FORWARD OUTPUT     nat     OUTPUT PREROUTING POSTROUTING mangle INPUT FORWARD OUTPUT PREROUTING POSTROUTING raw     OUTPUT PREROUTING   Iptables主要通过规则链的方式进行数据包的过