iptables 初探

来源:互联网 发布:linux 进程逻辑地址 编辑:程序博客网 时间:2024/05/17 03:44

一、netfilter


  网络过滤器:放入内核特定的位置,必须是tcp/ip的协议栈经过的地方,能够实现读取规则的地方叫做网络过滤器(netfilter)

  iptables发展到现在有五个特定的位置被作为网络过滤器,被称为五个钩子函数(hook functions),也叫五个规则链。

  1.INPUT (数据包流入口):当收到访问防火墙本地地址的数据包时,应用此链的规则

  2.OUTPUT(数据包出口):当防火墙本机向外发出数据时,应用此链的规则。

  3.FORWARD (转发管卡):当收到要通过防火墙发送给其他网络地址的数据包时,应用此链的规则。

  4.PREROUTING (路由前):在对数据包做路由选择之前,应用此链的规则。

  5.POSTROUTING(路由后):在对数据包做路由选择之后,应用此链的规则。

二、规则表


  Netfilter/iptables可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行,被认为是Linux中实现包过滤功能的第四代应用程序。Netfilter/iptables包含在Linux 2.4以后的内核中,可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。内核模块可以注册一个新的规则表(table),并要求数据包流经指定的规则表。这种数据包选择用于实现数据报过滤(filter表),网络地址转换(NAT表)及数据报处理(mangle表)。

  1、filter:filter表格不会对数据报进行修改,而只对数据报进行过滤(允许通过或者不允许通过)。

  2、NAT:实现对需要转发数据报的地址进行地址转换

  3、mangle:实现对数据报的修改或给数据报附上一些外带数据。(修改报文原数据就是来修改TTL的。能够实现将数据包的元数据拆开,在里面做标记/修改内容的。而防火墙标记,其实就是靠mangle来实现的。)

  对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT

  对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING

  而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

三、iptables基本原理


  通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用Netfilter/iptables系统提供的特殊命令iptables,建立这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:

  iptables [-t table] command [match] [target]

  不难看出,一条iptables规则包含如下4个基本元素:

  1)、[-t table]:表

  2)、command:命令

  3)、[match]:匹配

  4)、[target]:目标

四、command

  1.链管理命令

  -P :设置默认策略的                       iptables -P INPUT (DROP|ACCEPT)

  -F: 清除所有的已订定的规则;       iptables -F

  -X: 用于删除用户自定义的空链             iptables -X

  -Z:清空链,及链中默认规则的计数器的     iptables -Z

  2.规则管理命令

  -A:追加,在当前链的最后新增一个规则

  -I num : 插入,把当前规则插入为第几条。

  -R num:Replays替换/修改第几条规则

  -D num:删除,明确指定删除第几条规则

  3.查看管理命令 “-L”

  附加子命令

  -n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。

  -v:显示详细信息

  -vv

  -vvv :越多越详细

  -x:在计数器上显示精确值,不做单位换算

  --line-numbers : 显示规则的行号

  -t nat:显示所有的关卡的信息

五:match(匹配规则)

  1、IP地址匹配

  必须为地址(IP)或者网段(IP/MASK)地址可以通过加!去反

  -s:指定作为源地址匹配

  -d:表示匹配目标地址

  2、协议匹配

  -p:用于匹配协议的(TCP/UDP/ICMP…)

  3、流入流出匹配

  -i eth0:从这块网卡流入的数据--流入一般用在INPUT和PREROUTING上

  -o eth0:从这块网卡流出的数据--流出一般在OUTPUT和POSTROUTING上

  4、端口配置 (1024-65535用户使用范围,1024以下为系统使用)

  默认不能设置多个非连续端口,当开启多端口扩展支持多个非连续端口

  -m multiport:表示启用多端口扩展

  TCP/UDP --dport 21,25,33

  TCP/UDP --dport XX-XX:目标端口,单个端口,或者连续端口

  TCP/UDP --dport 22   --dport 21-23 (此时表示21,22,23)

  TCP/UDP --sport:源端口

  5、TCP标志位

  --tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)

  6、ICMP数据报文

  -p icmp:icmp数据报文的扩展

  六:target(目标)  -j ACCEPT/REJECT/DROP…

  ACCEPT:接受

  REJECT:明示拒绝

  DROP:悄悄丢弃(一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表)

  custom_chain:转向一个自定义的链

  DNAT:目的地址转换

  SNAT:源地址转换

  MASQUERADE:源地址伪装

  REDIRECT:重定向:主要用于实现端口重定向

  MARK:打防火墙标记的

  RETURN:返回(在自定义链执行完毕后使用返回,来返回原规则链)

  LOG 表示将包的有关信息记录入日志

  TOS 表示改写数据包的TOS值

六:基本操作


  service iptables save       保存iptables规则

  /etc/init.d/iptables save   保存iptables规则

  service iptables stop       关闭iptables

  service iptables start      开启iptables

  service iptables restart    重启iptables
0 0