[TOC]

Iptables入门

# 1.iptables介绍


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

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

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

##2.iptables的结构


iptables的结构:

iptables -> Tables -> Chains -> Rules

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

0x02 iptables工作流程


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)隐式扩展包括:

c)常用显式扩展

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

个人见解,不足之处求指正。

防火墙之netfailt、iptables详解的更多相关文章

  1. Linux防火墙iptables详解

    iptables详解(思维导图) 1. 概述 1.1 iptable简介 1.2 防火墙的种类 1.3 netfilter 2. iptables的工作流程 2.1 iptables工作图示 2.2 ...

  2. 《iptables详解 》RHEL6

          iptables详解    Iptables原理 现在防火墙主要分以下三种类型:包过滤.应用代理.状态检测 包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术 ...

  3. iptables详解--转

    出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定 ...

  4. Iptables详解七层过滤

    <Iptables详解七层过滤> 一.防火墙简介 防火墙其实就是一个加固主机或网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险区域的访问.当然需 ...

  5. iptables详解之filter

    iptables详解之filter iptables令很多小伙伴脑阔疼,下面我们来说说如何使用iptables. 一.iptables格式 1.1.iptables 帮助 通过iptables --h ...

  6. iptables详解与Centos7 关闭防火墙

    http://www.cnblogs.com/metoy/p/4320813.html CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1.直接关闭防 ...

  7. iptables详解

    Netfilter包含有三种表,三种表下共包含有五种链,链下面包含各种规则.即表包含若干链,链包含若干规则.  (一)三种表为:filter   nat  mangle 1.filter:处理与本机有 ...

  8. iptables 详解

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  9. [转]iptables详解

    FROM : http://blog.chinaunix.net/uid-26495963-id-3279216.html 一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的 ...

随机推荐

  1. 通过spring实现javamail发送邮件功能

    以前很早的时候大家都用javamail实现发送邮件的功能,而且我们也一直沿用至今,代码拷过来用用就行了,现在我们改为用spring来实现,这样一来减少代码的复杂度,也能更好的契合spring理念 首先 ...

  2. 《JAVASCRIPT高级程序设计》表单基础知识和文本框脚本

    在HTML中,表单是由<form>元素来表示,在javascript中,表单对应的是HTMLFormElement类型,它具有一些独有的属性和方法: 一.表单基础知识 1.取得表单的方式 ...

  3. 自定义IHttpModule

    HttpModule作用是 IIS将接收到的请求分发给相应的ISAPI处理前,先截获该请求. 通过这个我们可以完成很多额外功能. 自定义IHttpModule的例子: 通过自定义HttpModule, ...

  4. 百叶窗特效(用move.js库)

    每逢佳节胖三斤啊,胖了胖了,加上每天坐在电脑前,现在还和一个智障聊天,后天去苏州玩的事情,住哪里啊?去哪里嘿嘿嘿啊? 苏州,找了下,攻略,听说一定要去园林看,听说很牛逼,好吧,陶冶一下我的情操.今天操 ...

  5. 循环语句——for语句

    一.for语句结构:for (初始化表达式; 循环条件表达式 ;循环后的操作表达式 ) { 执行语句: } 循环条件表达式,必须是true或false 示例: class ForDemo { publ ...

  6. mysql 打开sql日志,记录所有sql

    我使用的mysql版本为:5.7.11 win7环境 记录下下载地址,省得每次百度搜了:http://dev.mysql.com/downloads/installer/ mysql 默认没有开启sq ...

  7. C语言一维数组转换为二维数组

    一维转二维代码示例: #include <stdio.h> #include <stdlib.h> #define ROW 3 #define COL 2 int main(i ...

  8. 用js实现文字提示层 ---总结

    文字提示层在项目中应该是比较常见的,我工作中项目中就用到了,原理是一样,只不过形式不一样,今天通过看视频学习,学会了,总结下: 首先,页面效果如下:  需求: 当鼠标移入到红色字体是,提示框会显示在下 ...

  9. 做一款直播类app

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  10. Android通过Apk插件调起微信支付

    App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能.这样就实现了调起微 ...