0x00 简介

iptables防火墙由Netfilter项目开发,自linux2.4就融入了内核。linux内核中的Netfilter框架可将数据包操作函数挂接至网络栈。iptables便在这个框架之上提供了数据包过滤等操作。iptables组件提供了同名的用户层工具,解析命令行参数传递给内核来设置防火墙策略。

iptables工作于网络层,可以基于数据链路层的MAC地址来过滤IP数据包,不能用于数据链路层(如ARP协议)。

0x01 术语&结构

iptables共有4个表:filter,nat,mangle,raw  功能对应于过滤规则,NAT规则,修改分组数据的特定规则,独立于Netfilter链接跟踪子系统起作用的规则。

表tables由链chains组成,chains由规则rules组成。

最重要的链是filter表中的INPUT、OUTPUT、FORWARD 和 nat表中的PREROUTING、POSTROUTING。

0x02 规则匹配

iptables对满足匹配的目标执行相应的动作,匹配方式常见的如下:

-s(--source) 匹配源地址,指定数据包的源地址参数(IP、网络地址、主机名)
-d(--destination) 匹配目标地址
-p(--protocol) 指定规则协议,如tcp, udp,icmp等,可以使用all来指定所有协议
-i(--in-interface) 流入的网络接口(如eth0)
-o(--out-interface) 流出接口
--state 连接状态(INVALID、ESTABLISHED等)
--string 匹配应用层数据字节序列
--comment 在内核内存中为一条规则关联注释数据

上述参数为基本匹配,还有隐式扩展和显示扩展匹配:

0x03 目标

每条匹配条件之后跟一个目标,触发动作。

ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给出任何回应信息。就像是没有收到过数据包。
REJECT:拒绝数据包通过,丢弃数据包,同时发送适当响应报文。
LOG:将数据包信息记录到syslog,然后将数据包传递给下一条规则。
QUEUE:防火墙将数据包移交到用户空间
RETURN:防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain),在调用链中继续处理数据包。

0x04 命令行选项

iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
     不指定-t默认为filter表,-j也许是jump的缩写
-A 在指定链的末尾添加(--append)一条新的规则
-D 删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则
-I 在指定链中插入(--insert)一条新的规则,默认在链的开头插入
-R 修改、替换(--replace)指定链中的一条规则,按规则序号或内容确定
-L 列出(--list)指定链中的所有的规则进行查看,默认列出表中所有链的内容
-F 清空(--flush)指定链中的所有规则,默认清空表中所有链的内容
-N 新建(--new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(--delete-chain)
-P 设置指定链的默认策略(--policy)
-n 用数字形式(--numeric)显示输出结果,若显示主机的 IP地址而不是主机名
-P 设置指定链的默认策略(--policy)
-v 查看规则列表时显示详细(--verbose)的信息
-V 查看iptables命令工具的版本(--Version)信息
-h 查看命令帮助信息(--help)
--line-number 查看规则列表时,同时显示规则在链中的顺序号

0x05 示例

1.清空规则

iptables -F        #flush filter
iptables -F -t nat    #flush nat
iptables -X        #删除用户自定义的规则链
iptables -P INPUT DROP  #设置指定链的策略
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

2.端口访问控制

#容许远程ssh到本地
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
#允许本地主机进行SSH连接
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT

3.增删改查

#增加一条规则到最后-A
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT #删除一条规则-D,全部删除-F
iptabels -D INPUT 2 #删除INPUT链中的2号规则,下标从1开始(通过-L组合--line-number查看) #修改一条规则
iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT #查看iptables规则
iptables –L(iptables –L –v -n)

4.防御措施

#防止单个ip访问量过大
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP #防止ping攻击,限制会响应的icmp数据包的大小
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
#或者干脆不响应
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP(或REJECT) #防止DOS攻击
利用recent模块抵御DOS攻击
iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP 单个IP最多连接3个会话
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH 只要是新的连接请求,就把它加入到SSH列表中
Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP 5分钟内你的尝试次数达到3次,就拒绝提供SSH列表中的这个IP服务。被限制5分钟后即可恢复访问。 #防止syn洪水攻击
思路一:限制syn的请求速度(这个方式需要调节一个合理的速度值,不然会影响正常用户的请求)
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP 思路二:限制单个ip的最大syn连接数
iptables –A INPUT –i eth0 –p tcp --syn -m connlimit --connlimit-above 15 -j DROP

5.FORWARD转发

待续。。。

0xFF 参考

1.《linux防火墙》,Michael Rash

2.Iptables入门教程 http://drops.wooyun.org/tips/1424

iptables常规使用的更多相关文章

  1. [iptables]iptables常规设置

    转自:http://leil.plmeizi.com/archives/centos-iptables%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95%E8%BD%AC/ 关闭 ...

  2. Linux下iptables拦截Nginx的问题

    环境:CentOS 6.4 X64,Nginx 1.5.3 问题:配置好Nginx后,加入了“iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT” ...

  3. iptables常用命令

    常规: iptables -t filter -A INPUT -d -p tcp --dport -j DROPiptables -A INPUT -m iprange --src-range 22 ...

  4. 利用iptables实现基于端口的网络流量统计

    如何统计某个应用的网络流量(包括网络流入量和网络流出量)问题,可以转换成如何基于端口号进行网络流量统计的问题.大部分网络应用程序都是传输层及以上的协议,因此基于端口号(tcp, udp)统计网络流量基 ...

  5. ebtables和iptables与linux bridge的交互

    本文为翻译文,不一定是逐字逐句的翻译,而且中间会加上自己的一点见解,如有理解错误的地方,还请大家指出,我定虚心学习.原文见链接 其中斜体字是自己的理解,建议和ebtables手册和iptables手册 ...

  6. Linux 下的 netfilter 认识与常规操作

    Linux 下的 netfilter 认识与常规操作 前言 博客写到今天,1年7个月.可是包含所有写作经历,这个时间线可以达到三年. 上次更新了一篇 "镇站之宝" ,也是本站阅读量 ...

  7. iptables简易使用教程

    iptables是linux里比较常用的防火墙,也是centos7.0之前的版本默认自带的防火墙. 配置防火墙需特别注意一件事情:如果服务器在异地机房,需要谨慎配置端口,以免造成新配置生效后无法远程登 ...

  8. 解决Linux系统没有/etc/sysconfig/iptables文件

    Linux系统中,防火墙默认是不开启的,一般也没有配置过任何防火墙的策略,所以不存在/etc/sysconfig/iptables文件. 一.常规解决方法: 1.在控制台使用iptables命令随便写 ...

  9. 基于Linux下Iptables限制BT下载的研究

    基于Linux下Iptables限制BT下载的研究   摘要:     当前BT下载技术和软件飞速发展,给人们网上冲浪获取资源带来了极大的便利, 但同时BT占用大量的网络带宽等资源也给网络和网络管理员 ...

随机推荐

  1. Winform调用系统的剪切,复制,粘贴文件功能

    // <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name="files"> ...

  2. Hibernate hbm2ddl.auto DDL语句 控制台输出的配置

    在开发中我们需要知道hbm2ddl.auto生成的SQL语句,来判断代码的正确性,现在记录配置的过程. Hibernate的DDL语句在控制台的输出配置: 一.在lib中确保只有下面的三个相关包:1) ...

  3. 纯手工打造漂亮的瀑布流,五大插件一个都不少Bootstrap+jQuery+Masonry+imagesLoaded+Lightbox!

    前两天写的文章<纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!>受到很多网友的喜爱,今天特别推出姊妹篇<纯手工打造漂亮的瀑 ...

  4. Qt 学习笔记 TreeWidget 增删改

    在窗体上放一个TreeWidget控件和四个PushButton加一个Horizontal Spacer 布局如图 给树添加元素节点的方法和实现 .h文件 QTreeWidgetItem * AddT ...

  5. Linux 中 Weblogic 启动和关闭

    a.start weblogic1)找到 /Oracle/Middleware/user_projects/domains/ 用户_domain目录. nohup ./startWebLogic.sh ...

  6. 【分布式协调】之理解paxos

    感叹一下 不得不说近几年国内软件行业发生了巨大的变化,之前几乎所有应用都围绕桌面展开,而近几年很多让人神魂颠倒的关键词一个接一个的映入眼帘:web2.0.移动应用.云计算.大数据.互联网的浪潮一波接着 ...

  7. HTML5+JS 《五子飞》游戏实现(五)移动棋子

    上一章 我们知道了怎么处理两个重要的吃棋动作,想要吃对方的棋子,首先得移动自己的棋子.现在里沃特跟大家分享分享,怎么移动棋子. 想要移动棋子,在页面上,首先要点击一下要移动的棋子,然后再点击一下目标位 ...

  8. js基础知识温习:js中的对象

    在JavaScript中对象是一个无序属性的集合,其属性可以包含基本值.对象或者函数. 对象最简单的创建方式 JavaScript中创建对象最简单的方式就是创建一个Object对象的实例,然后再添加属 ...

  9. 样条函数 -- spline function

    一类分段(片)光滑.并且在各段交接处也有一定光滑性的函数.简称样条.样条一词来源于工程绘图人员为了将一些指定点连接成一条光顺曲线所使用的工具,即富有弹性的细木条或薄钢条.由这样的样条形成的曲线在连接点 ...

  10. fir2(n,f,m)

    编辑 函数fir2用来设计多通带任意响应FIR滤波器,该滤波器的幅频特性由向量对f和m确定,f为归一化频率向量,m为对应频率点上的幅度.当设计的滤波器在频率为π的幅度响应不是0时,滤波器的阶数n为偶数