一.主要知识点:

1. Iptables表链结构
2. 数据包过滤流程
3. Iptables书写规则
4. Iptables条件匹配
5. Iptables数据包控制
6. Iptables七层过滤
7. Iptables脚本
二.具体的知识点介绍
1. Iptables表链结构
1)默认的4个规则表
*         raw表:确定是否对该数据包进行状态跟踪
*         mangle表:为数据包设置标记
*         nat表:修改数据包中的源、目标IP地址或端口
*         filter表:确定是否放行该数据包(过滤)
2)默认的5种规则链
*         INPUT:处理入站数据包
*         OUTPUT:处理出站数据包
*         FORWARD:处理转发数据包
*         POSTROUTING链:在进行路由选择后处理数据包
*         PREROUTING链:在进行路由选择前处理数据包
2. 数据包过滤流程
规则表间的优先顺序
*         依次为:raw à mangle à nat à filter
规则链间的匹配顺序
*         入站数据:PREROUTING à INPUT
*         出站数据:OUTPUT à POSTROUTING
*         转发数据:PREROUTING à FORWARD à POSTROUTING
如图:

3. Iptables书写规则
iptables命令的语法格式
*         iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
几个注意事项
*         不指定表名时,默认表示filter表
*         不指定链名时,默认表示该表内所有链
*         除非设置规则链的缺省策略,否则需要指定匹配条件
清除规则
*         -D:删除指定位置或内容的规则
*         -F:清空规则链内的所有规则
*         -Z:清空计数器
自定义规则链
*         -N:创建一条新的规则链
*         -X:删除自定义的规则链
其他
*         -h:查看iptables命令的使用帮助
例如:
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy DROP)
num targetprot opt source               destination
1ACCEPT     udp -- anywhere             anywhere
2ACCEPT     icmp -- anywhere             anywhere
3ACCEPT     tcp -- anywhere             anywhere
4. Iptables条件匹配
1)通用条件匹配
协议匹配
*         使用“-p 协议名”的形式
*         协议名可使用在“/etc/protocols”文件中定义的名称
*         常用的协议包括tcp、udp、icmp等
地址匹配
*         使用“-s 源地址”、 “-d 目标地址”的形式
*         地址可以是单个IP地址、网络地址(带掩码长度)
接口匹配
*         使用“-i 网络接口名”、 “-o 网络接口名”的形式,分别对应接收、发送数据包的网络接口
例如:
[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
[root@localhost ~]# iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP
2)Iptables隐含条件匹配
端口匹配
*         使用“--sport 源端口”、“--dport 目标端口”的形式
*         采用“端口1:端口2”的形式可以指定一个范围的端口
TCP标记匹配
*         使用“--tcp-flags 检查范围被设置的标记”的形式
*         如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
ICMP类型匹配
*         使用“--icmp-type ICMP类型”的形式
*         ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply
例如:
[root@localhost ~]# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
3)Iptables扩展条件匹配
MAC地址匹配
*         使用“-m mac”结合“--mac-source MAC地址”的形式
多端口匹配
*         使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式
*         多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔
IP地址范围匹配
*         使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标IP范围” 的形式
*         以“-”符号连接起始IP地址、结束IP地址
例如:
[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
5. Iptables数据包控制
常见的数据包处理方式
*         ACCEPT:放行数据包
*         DROP:丢弃数据包
*         REJECT:拒绝数据包
*         LOG:记录日志信息,并传递给下一条规则处理
*         用户自定义链名:传递给自定义链内的规则进行处理
*         SNAT:修改数据包的源地址信息
*         DNAT:修改数据包的目标地址信息
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m limit --limit3/minute --limit-burst 8 -j LOG
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT--to-source 218.29.30.31
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
[root@localhost ~]#iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6(:80)
6. Iptables七层过滤
1). 整体实现过程
*         添加内核补丁,重新编译内核,并以新内核引导系统
*         添加iptables补丁,重新编译安装iptables
*         安装l7-protocols协议定义包
*         使用iptables命令设置应用层过滤规则
2). 使用的软件包列表
*         Linux内核源码包:linux-2.6.28.8.tar.bz2
*         iptables源码包:iptables-1.4.2.tar.bz2
*         layer7补丁源码包:netfilter-layer7-v2.21.tar.gz
*         协议定义包:l7-protocols-2009-05-10.tar.gz
3). layer7应用层协议匹配
*         匹配格式:-m layer7 --l7proto 协议名
*         支持以下常见应用层协议的过滤
*          qq:腾讯公司QQ程序的通讯协议
*          msnmessenger:微软公司MSN程序的通讯协议
*          msn-filetransfer:MSN程序的文件传输协议
*          bittorrent:BT下载类软件使用的通讯协议
*          xunlei:迅雷下载工具使用的通讯协议
*          edonkey:电驴下载工具使用的通讯协议
*         其他各种应用层协议:ftp、http、dns、imap、pop3……
4). 规则示例:过滤使用qq协议的转发数据包
*          iptables -A FORWARD -m layer7 --l7proto qq -j DROP
7. Iptables脚本
防火墙脚本的一般结构
1).设置网段、网卡、IP地址等变量
2).加载包过滤相关的内核模块
*          FTP相关:ip_nat_ftp、ip_conntrack_ftp
3).确认开启路由转发功能
*         方法1:/sbin/sysctl -w net.ipv4.ip_forward=1
*         方法2:echo 1 > /proc/sys/net/ipv4/ip_forward
*         方法3:修改/etc/sysctl.conf,设置 net.ipv4.ip_forward = 1
4).用于添加的具体防火墙规则内容
*         清空原有规则,建立新的规则
例如:
/sbin/modprobe ip_tables
/sbin/modprobe ip_nat_ftp
iptables -F
iptables -X
iptables -Z
#------------------------default rule ------------------------------
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#------------------------limit packet per second------------------------------
/sbin/iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m limit --limit 12/min --limit-burst 2 -j DROP
#------------------------ssh rule -------------------------------------------
iptables -t filter -AINPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
#------------------------www-ftp-mail-dns rule --------------------------------
iptables -t filter -AINPUT -i   eth0 -p tcp --dport 80     -j ACCEPT
iptables -t filter -AOUTPUT -o eth0 -p tcp --sport 80     -j ACCEPT
#-------------------------ICMP rule ------------------------------------------
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

iptables从入门到精通相关推荐

  1. 《网络安全入门到精通》-1.2 - Linux系统 - firewalld防火墙iptables防火墙

    「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「订阅专栏」:此文章已录入专栏<网络安全入门到精通> Linux防火墙 Frewalld 1.常 ...

  2. Kali Linux 从入门到精通(十一)–提权

    Kali Linux 从入门到精通(十一)–提权 本地提权 已实现本地低权限账号登录 远程溢出 直接获得账号密码 希望获取更高权限 实现对目标进一步控制 系统之间权限隔离 操作系统安全的基础 用户空间 ...

  3. Kali Linux 从入门到精通(八)-主动信息收集

    Kali Linux 从入门到精通(八)-主动信息收集 基本介绍 直接与目标系统交互通信 无法避免留下访问的痕迹 使用受控的第三方电脑进行探测 使用代理或已经被控制的主机 做好被封杀的准本 使用噪声迷 ...

  4. Iaas-openstack从入门到精通

    学习课程连接: openstack从入门到精通 第二章 openstack核心组件详细介绍 2-1openstack和kubernetes联系和区别 2-2准备安装openstack需要实验环境 虚拟 ...

  5. java从入门到精通_想要开始学java?你要的java从入门到精通布列如下!

    java从入门到精通,让我来告诉你! 毫无疑问,java是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握java看似是一件十分困难的事.其实,只要掌握了科学的学习方法 ...

  6. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通

    UE5 Niagara学习教程  课程获取:虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通-云桥网 你会学到什么 我将通过创建各种各样的实时效果来教你虚幻引擎中强大的粒子系统. 我们将从简单的基 ...

  7. Revit:从入门到精通学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小:8.07 GB |时长:12h 16m Re ...

  8. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  9. meteor从入门到精通_我已经大规模运行Meteor一年了。 这就是我所学到的。

    meteor从入门到精通 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 我已经大规模运行Meteor一年了. 这就是我所学到的. (I've been runni ...

最新文章

  1. 网络推广网站浅析如何做好关键词布局优化?
  2. 夺命雷公狗---linux NO:22 linux下的yum安装的高级配置
  3. 史上最难10道Java面试题!
  4. Java解析json出现双引号变成转义字符解决办法
  5. IntelliJ IDEA中怎么创建xml文件?
  6. KmeansDBSCAN
  7. mysql 如何把整列数据*10_10张图告诉你,MySQL 是如何查找数据的?
  8. iOS开发者《用2块钱快速创建你的网站或博客》
  9. JavaWeb快速入门(一)——新建JavaWeb项目
  10. Python开发之路(1)— 使用Pyaudio进行录音和播音
  11. python百度关键词自动提交订单_Python+selenium刷百度关键词点击
  12. java的jar文件
  13. Josh‘s Notes: SystemVerilog 验证 (Part 1 — 验证导论)
  14. Fluter 应用调试
  15. plc 滑台流程图_直线滑台模组PLC控制说明
  16. OPTIONS预检请求
  17. 【HTTP】如何避免OPTIONS请求?
  18. Word2010设置显示中文几号字
  19. html 文本转语音,百度文字转语音免费接口使用实例
  20. 转-用Driver Studio工具包开发WDM型的USB设备驱动程序

热门文章

  1. AndoridSQLite数据库开发基础教程(6)
  2. Visual Studio 2019更新到16.2.1
  3. Beaglebone Black教程项目1闪烁板载LED
  4. Playmaker Input篇教程之引入的核心概念
  5. python怎么发送邮件_python中是如何借助smtp协议发送邮件的?
  6. python scrapy框架基如何实现多线程_【转】爬虫的一般方法、异步、并发与框架scrapy的效率比较...
  7. ERP成分简介--听觉感觉反应
  8. 《星球大战:前线2》预告片发布
  9. 招银网络笔试java_2020招银网络科技校园招聘常见问题
  10. 波士顿动力警犬遭禁用!反对呼声太高,纽约警局认怂