Iptables入门教程

转自:http://drops.wooyun.org/tips/1424

linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。

netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。

 

2014041522224868618.png

0x01 iptables的结构


iptables的结构:

iptables -> Tables -> Chains -> Rules

简单地讲,tables由chains组成,而chains又由rules组成。iptables 默认有四个表Filter, NAT, Mangle, Raw,其对于的链如下图。

enter image description here

0x02 iptables工作流程


enter image description here

0x03 filter表详解


1. 在iptables中,filter表起过滤数据包的功能,它具有以下三种内建链:

INPUT链 – 处理来自外部的数据。 
OUTPUT链 – 处理向外发送的数据。 
FORWARD链 – 将数据转发到本机的其他网卡设备上。 

2. 数据流向场景

访问本机:在INPUT链上做过滤

本机访问外部:在OUTPUT链上做过滤

通过本机访问其他主机:在FORWARD链上做过滤

3. Iptables基本操作

启动iptables:service iptables start

关闭iptables:service iptables stop

重启iptables:service iptables restart

查看iptables状态:service iptables status

保存iptables配置:service iptables save

Iptables服务配置文件:/etc/sysconfig/iptables-config

Iptables规则保存文件:/etc/sysconfig/iptables

打开iptables转发:echo "1"> /proc/sys/net/ipv4/ip_forward

0x04 iptables命令参考


命令:

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

1. 表名

表名:Filter, NAT, Mangle, Raw

起包过滤功能的为表Filter,可以不填,不填默认为Filter

2. 命令选项

选项名功能及特点
-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查看规则列表时,同时显示规则在链中的顺序号

3. 链名

可以根据数据流向来确定具体使用哪个链,在Filter中的使用情况如下:

INPUT链 – 处理来自外部的数据。 
OUTPUT链 – 处理向外发送的数据。 
FORWARD链 – 将数据转发到本机的其他网卡设备上。

4. 条件匹配

条件匹配分为基本匹配和扩展匹配,拓展匹配又分为隐式扩展和显示扩展。

a)基本匹配包括:

匹配参数说明
-p指定规则协议,如tcp, udp,icmp等,可以使用all来指定所有协议
-s指定数据包的源地址参数,可以使IP地址、网络地址、主机名
-d指定目的地址
-i输入接口
-o输出接口

b)隐式扩展包括:

enter image description here

c)常用显式扩展

enter image description here

5. 目标值

数据包控制方式包括四种为:

ACCEPT:允许数据包通过。 
DROP:直接丢弃数据包,不给出任何回应信息。 
REJECT:拒绝数据包通过,必须时会给数据发送端一个响应信息。 
LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 
QUEUE:防火墙将数据包移交到用户空间 
RETURN:防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain) 

0x05 Iptables常见命令


a) 1. 删除iptables现有规则

iptables –F 

b) 2. 查看iptables规则

iptables –L(iptables –L –v -n) 

c) 3. 增加一条规则到最后

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 

d) 4.添加一条规则到指定位置

iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 

e) 5.  删除一条规则

iptabels -D INPUT 2 

f) 6.修改一条规则

iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 

g) 7. 设置默认策略

iptables -P INPUT DROP 

h) 8.允许远程主机进行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 

i) 9.允许本地主机进行SSH连接

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A INTPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

j) 10.允许HTTP请求

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 

k) 11.限制ping 192.168.146.3主机的数据包数,平均2/s个,最多不能超过3个

iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT 

l) 12.限制SSH连接速率(默认策略是DROP)

iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPT  
iptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 2 -m state --state NEW -j ACCEPT 

0x06 如何正确配置iptables


a) 1. 删除现有规则

iptables -F

b) 2.  配置默认链策略

iptables -P INPUT DROP 
iptables -P FORWARD DROP 
iptables -P OUTPUT DROP 

c) 3. 允许远程主机进行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 

d) 4. 允许本地主机进行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 

e) 5. 允许HTTP请求

iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT 

0x07 使用iptables抵抗常见攻击


1.防止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 

2. 防止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分钟后即可恢复访问。

3. 防止单个ip访问量过大

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP 

4. 木马反弹

iptables –A OUTPUT –m state --state NEW –j DROP 

5. 防止ping攻击

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT 

转载于:https://www.cnblogs.com/mengzhongshi/p/3710511.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

No identities are available for signing 的解决办法

今天重新上传做好的app提交到app store,结果就出现标题上的错误。“No identities are available for signing”。 以后碰到这样的问题按照下面几个步骤来做: 进入Distribution -----下载发布证书 -----双击安装-----重启Xcode就能上传了 其他细节 如果再…

匿名方法和Lambda表达式

出于MVVM学习的需要,复习下匿名方法和Lambda表达式,因为之前用的也比较少,所以用的也不是很熟练,Baidu下相关的知识,写了这个Demo,目标是用简单的方法展示这个怎么用。 这里偏重的和LINQ中的Lambda表达式 …

烂橘子

Problem Statement: 问题陈述: Given a matrix of dimension r*c where each cell in the matrix can have values 0, 1 or 2 which has the following meaning: 给定尺寸r * C的矩阵,其中矩阵中的每个单元可以具有其具有以下含义的值0,1或2…

别人的算法学习之路

http://www.cnblogs.com/figure9/p/3708351.html 我的算法学习之路 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论&a…

git config命令使用第二篇——section操作,多个key值操作,使用正则

接上一篇,git config命令使用第一篇——介绍,基本操作,增删改查:http://blog.csdn.net/hutaoer06051/article/details/8275069 1. 删除一个section 命令参数 --remove-section 格式:git config [--local|--global|--system] --rem…

MySQL面试准备——64页pdf

本笔记为以前整理的零碎的关于Mysql的知识点,有深入源码的也有浅层的八股。已经被我整理成了一个pdf。 实习岗位正好也是和数据库内核有关的,之后应该还会更新。做个整理,方便秋招的时候快速回顾吧。 链接:链接 提取码&#xff1a…

python点图_Python | 点图

python点图The dot plot is a type of data representation in which each data-point in the figure is represented as a dot. Dot plot underlies discrete functions unlike a continuous function in a line plot. Each value could be correlated but cannot be connecte…

SAP-MM:发票、贷方凭证、事后借记、后续贷记

发票和事后借记 相同点:增加对供应商的应付款 不同点:针对同一订单收货,发票要先于事后借记(事后借记是对供应商后期发票金额的补充);发票和金额、订单数量有关系,而事后借记只是订单金额调整的…

nios pio interrupt 的使能

关于nios 中的中断,因为要16c550中需要nios的中断环境去测试,所以就用到了中断。 硬件:在nios中添加硬件PIO,但是要使能中断功能。如下图所示: 系统列化,PIO的连接就不说了。但是要注意两地方:edge type&am…

《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》

Build Hash Table流程 1、初始化row buffer2、从build input table中读一行3、若读完build input table所有row,返回状态READING_ROW_FROM_PROBE_item4、否则,向hash map中写入一条row5、如果hash map 写入成功,返回2,继续执行6、…

适合高速驱动电路的推挽电路

http://www.dzsc.com/data/html/2008-9-10/69023.html 图1是使用NPN/PNP型晶体管的互补推挽电路,适于驱动功率MOSFET的门极。此电路虽然具有门极电流的驱动能力,但射极输出波形不能比输人信号快。 图2是此电路的开关波形。它表示出tf、tr都快&#xff0c…

socket编程常见函数使用方法

socket知识 有了IP地址,socket可知道是与哪一台主机的哪一个进程通信 有了端口号,就知道是这个进程的哪一个套接字进行传输 应用进程使用描述符与它的套接字进行通信,也就是说一个进程创建一个套接字时就会返回一个套接字描述符 socket的…

html 表格套表格_HTML表格

html 表格套表格A table is a set of rows and columns, which could be created on a webpage in HTML, by <table> tag. The tabular representation of complex data makes it readable. 表格是一组行和列&#xff0c;可以通过<table>标签在HTML网页上创建。 复…

HDU计算机网络系统2021复习提纲

目录计算机网络系统的主要功能TCP/IP模型与OSI模型的层次结构及各层功能。&#xff08;掌握&#xff09;TCP/IP参考模型各层次所对应的主要设备局域网的体系结构与IEEE.802标准数据链路层的编址方式和主要设备原理数据链路层CSMA/CD的技术原理交换机VLAN原理与划分方法数据链路…

掷骰子

Description: 描述&#xff1a; In this article, we are going to see a dynamic programing problem which can be featured in any interview rounds. 在本文中&#xff0c;我们将看到一个动态的编程问题&#xff0c;该问题可以在任何采访回合中体现。 Problem statement:…

《YOLO算法笔记》(草稿)

检测算法回顾 5、6年前的检测算法大体如下&#xff1a; 手动涉及特征时应该考虑的因素&#xff1a; 1、尺度不变性 2、光照不变性 3、旋转不变性 这一步骤称为特征工程&#xff0c;最重要的一个算法称为sift&#xff0c;(回顾SIFT讲解)体现了上述所有的观点。 在分类的过程中…

LLVM与Codegen技术

LLVM 百度百科 LLVM是构架编译器(compiler)的框架系统&#xff0c;以C编写而成&#xff0c;用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)&#xff0c;对开发者保持开放&#xff0c;并兼容已有…

html网页转图片_HTML图片

html网页转图片HTML图片 (HTML Images) Images are visuals of something that look elegant. In web pages, images are used to create a good and appealing design. 图像是外观精美的视觉效果。 在网页中&#xff0c;图像用于创建良好且吸引人的设计。 The <img> ta…

OLAP 技术之列式存储与数据压缩(快查询方法之一)

前言 列式存储和数据压缩&#xff0c;对于一款高性能数据库来说是必不可少的特性。一个非常流行的观点认为&#xff0c;如果你想让查询变得更快&#xff0c;最简单且有效的方法是减少数据扫描范围和数据传输时的大小&#xff0c;而列式存储和数据压缩就可以帮助我们实现上述两…

sql 视图嵌套视图_SQL视图

sql 视图嵌套视图SQL | 观看次数 (SQL | Views) Views in SQL are virtual tables. A view also has rows and columns as theyre during a real table within the database. We will create a view by selecting fields from one or more tables present within the database.…