防火墙是内核的配置,iptables是使用防火墙的工具

iptables语法:

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

详解:

一、表名TABLE

1、raw表:确定是否对数据包进行状态跟踪(目标是关闭nat表上启用的连接追踪功能)。

2、mangle表:为数据包设置标记。

3、nat表:地址转换,修改数据包中的源、目标IP地址或端口;启用connection_track;SNAT,DNAT,PNAT

4、filter表:过滤,确定是否放行该数据包

默认为filter表

二、动作COMMAND

1、对于链的动作:

-F:flush, 清空规则链;

-N:new, 自建一条自定义链

-X: delete, 删除一条自定义的空链

-Z:zero,(数据包和流量)计数器归零

-P:policy,设置默认策略,对filter表来讲,默认规则为ACCEPT或DROP,不能为REJECT;

-E:重命名自定义链

2、对于链中规则的动作:

-A:向链中添加一条规则,默认插入所有规则的最后一条。

-I:向链中插入一条规则,默认插入所有规则的第一条。

iptables -I INPUT 2 ·····

即为在链中第2条规则前添加一条规则。

-D:从链中删除一条规则。

-R:替换链中的一条规则。

3、查询动作:

-L

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

-v: 详细格式,-vv, -vvv

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

-x: exactly,不要对计数器的计数结果做单位换算,而显示其精确值

三、链名CHAIN

PREROUTING:路由前,进行路由选择前处理数据包

INPUT:到达本机内部的报文必经之路,处理入站数据包

FORWARD:由本机转发的报文必经之路,处理转发数据包

OUTPUT:由本机发出的报文的必经之路,处理出站数据包

POSTROUTING:路由后,进行路由选择后处理数据包

四、匹配条件CRETIRIA

1、通用匹配

-s IP地址:指定报文源IP地址匹配的范围;可以是IP,也可以是网络地址;可使用!取反;

--src, --source

-d IP地址:指定报文目标IP地址匹配的范围;

--dst, --destination

-p 协议:指定匹配报文的协议类型,一般有三种tcp, udp和icmp;

-i 网络接口名: 数据报文流入的接口;PREROUTING, INPUT, FORWARD

-o 网络接口名: 数据报文流出的接口;OUTPUT, FORWARD, POSTROUITING

2、扩展匹配

2.1隐式扩展:当使用-p {tcp|udp|icmp}中的一种时,可以直接使用扩展专用选项;

-p tcp:

--sport 源端口号: 指定源端口

--dport 目标端口号: 指定目标端口

-p udp:

--sport 源端口号: 指定源端口

--dport 目标端口号: 指定目标端口

-p icmp [-m icmp]

--icmp-type

0: echo-reply, ping响应

8: echo-request, ping请求

例:iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8

2.2显式扩展:必须明确说明使用哪个模块进行扩展,而后才能使用其扩展专用选项;

(1)state:连接状态

-m state –-state {NEW|ESTABLISHED|RELATED|INVALID|}

接下来介绍下用iptables实现状态检测包过滤

介绍tcp以下4种状态的连接

1].NEW:即3次握手的第一次,一次新的请求

iptable -A OUTPUT -o eth0 -m state --state NEW -j DROP

分析这条规则,其中-m表示扩展加载state状态检测模块,--state NEW表示检测tcp的第一次握手,整条规则的作用就是拒绝从eth0网卡发出的新的tcp连接。

2].ESTABLISHED:二次握手以后,连接断开之前的连接

3].RELATED:相关连的状态,可解决控制ftp连接这种超麻烦的协议

4].INVALID:无法识别的状态

应用案例:

结合NEW和ESTABLISHED这2种状态,实现以下规则

iptables -A INPUT -d 192.168.1.1 -p tcp –dport 22 -m state –-state NEW,ESTABLISHED -j ACCEPT

允许外面向主机发起的新的ssh请求

iptables -A INPUT -d 192.168.1.1 -p tcp -dport 80 -m state –-state NEW,ESTABLISHED -j ACCEPT

允许外面向主机发起的新的web连接

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 22 -m state -–state ESTABLISHED -j ACCEPT

处于连接状态时,允许主机发往外部的ssh数据包

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 80 -m state –-state ESTABLISHED -j ACCEPT

处于连接状态时,允许主机发往外部的web数据包

iptables -P INTUP DROP

拒绝其它所有进来的数据包

iptables -P OUTPUT DROP

拒绝其它所有出去的数据包

这几条规则可以用在web服务器上,只允许客户向服务器发出ssh和web请求的访问,服务器不能主动向外发出任何连接,避免服务器成为***的跳板

(2)mport:多端口匹配

-m {mport|multiport}

--source-ports|--sports port[,port···]

--destination-ports|--dports port[,port···]

--ports port[,port···]

此扩展可以指定不连续的端口,在这里优化以上的案例来说明其作用

iptables -A INPUT -d 192.168.1.1 -m mport –-destination-ports 22,80,443 -m state –-state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -s 192.168.1.1 -m mport –-source-ports 22,80,443 -m state –- state ESTABLISHED -j ACCEPT

iptables -P INTUP DROP

iptables -P OUTPUT DROP

一次可以添加多个端口,端口之间用逗号隔开

(3)iprange:多IP匹配

-m iprange

--src-range IP-IP

--dst-range IP-IP

这里用一个简单的例子来说明

iptables -A INPUT -d 192.168.1.1 -m iprange –src-range 192.168.0.1-192.168.0.100 -p tcp –-dport 80 -j DROP

拒绝192.168.0.1-192.168.0.100这段地址访问192.168.1.1的web服务

(4)connlimit:并发连接请求个数限制

-m connlimit

--connlimit-above [n]

例:iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP

(5)limit:速率限制

-m limit

--limit n[/second|/minute|/hour|/day]平均速率

--limit-burst n突发速率

iptables -A INPUT -d 192.168.1.1 -p tcp –dport 80 -m limit --limit 10/second --limit-burst 30  -j ACCEPT

此条规则限制了每秒10个数据包,突发最大速率是每秒30个数据包

(6)time:时间限制

-m time

--datestart YYYY[-MM][-DD[Thh[:mm[:ss]]]]

--datestop  YYYY[-MM][-DD[Thh[:mm[:ss]]]]

--timestart hh:mm[:ss]

--timestop hh:mm[:ss]

--weekdays day[,day]

Mon, Tue,Wen,Thu,Fri,Sat,Sun

区分以下两种写法来理解这几个选项的意义

iptables -A INPUT  -d 192.168.1.1 -p tcp –-dport 80 -m time –-datestart 2012:07:20:08:30:00 --datestop  2012:07:20:14:30:00 -j ACCEPT

从7月20号8:30到7月30号14:30允许访问本机web服务

iptables -A input -d 192.168.1.1 -p tcp –-dport 80 -m time –- timestart 08:30:00 –-timestop 14:30:00 --datestart 2012:07:20 –-datestop 2012:07:30 -j ACCEPT

从7月20号到7月30号 每天的8:30—14:30时分允许访问本机web服务

(7)string:字符限制(对中文字符匹配有限)

-m string

--algo bm|kmp 指定字符匹配算法

--string "字符" 指定字符

iptables -A out -s 172.16.100.1 -p tcp --sport 80 -m string --algo kmp –string “baidu.com” -j DROP

包含baidu.com的数据包都拒绝

例:匹配源mac地址

-m mac --mac-source mac地址

五、目标动作TARGET

1、ACCEPT

2、DROP:丢弃数据包不予处理,进行完此处理后将不再对比其他规则,直接中断过滤程序。

3、REJECT:拦阻数据包,并返回数据包通知对方,可返回的数据包。

4、LOG:将iptables日志存储在/var/log/messages文件中。

[root@localhost log]# iptables -L -v#显示的参数简单解释

Chain:链

policy:默认策略

pkts:该规则处理数据包的个数

bytes:该规则处理数据包的大小(流量)

target:目标动作

prot:协议(条件)

opt:其他选项

source:源地址

destination:目标地址

以上均为理论知识点,以后遇到具体实例后回继续添加。

转载于:https://blog.51cto.com/littlehorse/1717459

iptables命令详解相关推荐

  1. iptables之iptables命令详解

    #iptables [OPTION] COMMAND CHAIN 匹配标准 -j TARGET     [OPTION]         -t TABLENAME  不指定默认为filter      ...

  2. 全网超详细的Linux iptables命令详解以及详解iptables-save和iptables-restore命令

    文章目录 1. 文章引言 2. iptables的四表五链 2.1 何为四表 2.2 何为五链 3. iptables语法格式 4. 规则的查看与清除 5. 防火墙的备份与还原 5.1 iptable ...

  3. Linux iptables命令详解

    iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制.当数据包需要进入设备.从设备中流出或者由该设备转发.路由时,都可以使用 ...

  4. 摘自ubantuer-Linux防火墙iptables学习笔记(三)iptables命令详解和举例

    网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能有所帮助. 网管员的安全意识要比空喊Linux安全重要得多. iptables -F iptables -X iptables ...

  5. iptables(三)iptables命令详解

    一     语法规则 iptables [-t table] COMMAND [chain] CONDITION -j ACTION-t table 是指'操作的表',filter.nat.mangl ...

  6. linux 网络管理之iptables命令详解

    用途 iptables是Linux上常用的防火墙软件, 工作流程 iptables 会对数据包进行过滤,所以会对请求数据包的包头进行解析,并按照指定的规则进行匹配决定是否允许该数据包进入主机,其过滤规 ...

  7. linux中iptables配置文件及命令详解详解

    linux中iptables配置文件及命令详解详解 2018年05月04日 14:23:41 hxpjava1 阅读数 956 linux中iptables配置文件及命令详解详解 iptables配置 ...

  8. Linux命令详解:iptables 命令

    Linux下 iptables 配置详解 一.Linux防火墙 iptables 相关知识点 1.概要 1.1 防火墙分类 1.2 iptables基础 1.3 管理和设置 iptables 规则 1 ...

  9. nmcli命令详解_【高新课堂】第一百二十五期Liunx必备命令

    点击上方"蓝字"关注我们吧! Liunx系统启动默认为字符界面,一般不会启用图像界面,所以对命令行的熟练程度能更加高效.便捷的管理Liunx服务器. 这节课向读者介绍Liunx系统 ...

最新文章

  1. 在CentOS下安装apche+tomcat+mysql+php
  2. Spring Boot配置IDEA无法创建Spring Initializr项目
  3. html中选择样式,html中css三种常见的样式选择器 zz
  4. xml文件转换成图片_如何把pdf文件转换成图片?
  5. 机器人J中WPR_北方工业大学服务机器人研究项目介绍
  6. 第5章--电商项目-mysql实战--数据库主从配置
  7. yb3防爆电机型号含义_YBK3防爆电机介绍
  8. c# 计算圆锥的体积_急求用c#计算圆柱体和圆锥体的体积的代码,下面是要求:
  9. linux 日志 \var\log
  10. php 字符串表示,php:字符串(string)数据类型实例详解
  11. 平滑阴影blender_【Blender笔记】简单的创建一个平平无奇的石头
  12. 大学数学实验习题--统计推断 03(附答案)
  13. imagej得到灰度图数据_Java图像处理最快技术:ImageJ 学习第一篇
  14. 设计模式---外观(Facade)模式
  15. eclipes 快捷键操作:
  16. 倒排表数据结构、通配符查询、拼写纠正详解
  17. 游戏设计模式-原型模式
  18. 联想微型计算机怎么进入bios,联想怎么进入bios图文教程
  19. Snowflake Snow Snowflakes
  20. 美国计算机有读一年的学校吗,美国计算机排名多少的学校值得去读?相关院校资讯!...

热门文章

  1. python没有return语句的函数将返回_为什么Python没有return返回值
  2. MyBatis3源码解析(8)MyBatis与Spring的结合
  3. vb 6.0 获取重定向的url_免费CloudFlare CDN真香,个人站点加速+Https证书+重定向
  4. 华为服务器装系统一直在读盘,系统重装一直在启动服务器
  5. php $that,PHP中$this和$that指针使用实例
  6. Python 根据文件绝对路径删除文件
  7. Spring Boot整合Swagger3注解@ApiImplicitParam的allowMultiple属性
  8. 论坛中的验证码的作用
  9. java生产者消费者模型到精通_java生产者消费者模型
  10. MySQL5.7--项目数据库不同出现的问题