iptables 讲义
iptables讲解

一:前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。
无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。
而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。
目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。
对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。
但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。
所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。
所以市面上通常的防火墙方案,都是两者结合的。
而又由于我们都需要从防火墙所控制的这个口来访问,所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。
二:iptables 的历史以及工作原理1.iptables的发展:iptables的前身叫ipfirewall (内核1.x 时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。
但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。
当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。
它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。
而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。
01Linux安全应用iptables防火墙一v10课件

规则的匹配条件5-1
常见的通用匹配条件协议匹配:-p 协议名地址匹配:-s 源地址、-d 目的地址接口匹配:-i 入站网卡、-o 出站网卡
规则的匹配条件5-2
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
丢弃SYN请求包,放行其他包
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT[root@localhost ~]# iptables -A INPUT -p icmp -j DROP
-p 用来指定协议
查看规则列表-L:列出所有的规则条目-n:以数字形式显示地址、端口等信息-v:以更详细的方式显示规则信息--line-numbers:查看规则时,显示规则的序号
Chapter 3 IPTABLES

state实例
• iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j accept所有通过 eth0传过来的数据包,接受的状态)
mac(只接受这个mac地址的设定)
• iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
规则的一些匹配条件
• • • • • • • • • • • -s:源地址; -d:目标地址; -i:入口网络接口; -o:出口网络接口; --sport:源端口; --dport:目标端口; !:表示“非”; iptables -I INPUT -s '!' 192.168.0.1 -j DROP -p:指明协议(TCP.UDP,ICMP) 指定了端口一定要指定协议; 协议可以单独指定。
对于链的一些操作
• • • • • • • • • • • -L:列出表上或链中的规则; 加上-v:列出更详细的信息; 加上-n:表示以数字的形式; -A:在链中追加一条规则(是加在最后); -I:在链中插入一条规则; -I CHAIN :插在首位; -I CHAIN 3 :插在第三位。 -D:删除链中的规则 -D CHAIN 3 删除第三条规则; -F:清空链的规则(不清空默认策略) --line-numbers:显示规则的编号。
state
• • • • • 数据包的状态 NEW:想要新建立联机的数据包; ESTABLISHED:联机成功的数据包; RELATED:和主机发送出去的数据包相关; INVALID:数据破坏的数据包(不合法的数 据包)。 • ESTABLISHED和RELATED装的包没有必要 去匹配规则,节约资源
iptables

Linux防火墙一、基本知识1、工作原理不阻止内部主动访问外部,但阻止外部主动访问内部。
回应包不属于外主动访问内2、分类:分类一:硬件防火墙:思科、华3、天融信软件防火墙:windows防火墙ISA----升级到---TMG、iptables分类二(七层模型):应用网关防火墙:过滤应用层协议-------应用层包过滤防火墙:过滤IP、端口号、协议(tcp/udp)--------网络层Linux防火墙是典型的包过滤防火墙3、Linux包过滤防火墙概述Netfilter----内核级防火墙位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态”-----框架,默认为空iptables位于/sbin/iptables,用来管理防火墙规则的工具------给框架写规则称为Linux防火墙的“用户态“包过滤的工作层次主要是网络层,针对IP数据包体现在对包内的IP地址、端口等信息的处理上4、Linux框架的四表五链四表raw: 追踪流经防火墙的数据包,判断主动发出还是被动收回用于决定数据包是否被状态跟踪机制处理mangle: 标记和标识,给数据包打标签对数据包进行特殊标记,结合这些标记可以在filter表中对数据包进行有选择性的处理nat:内外互访,网络防火墙,在网关上配置filter:过滤数据包,主机防火墙,在服务器主机上配置注:生成环境中raw和mangle不用,其功能用路由器替代五链PREROUTING:处理外部访问DMZ区的数据包POSTROUTING:处理LAN区访问WAN区的数据包OUTPUT:处理防火墙主动向外发送的数据包INPUT:处理进站的数据包FORWARD:转发链,处理源、目地址都不是防火墙,但必须流经防火墙的数据包注:内访外:先NAT再路由外访内:先路由再NAT5、QOS质量服务,所有流经路由器的数据包打标签,标明是什么包,然后排队有选择性的处理6、DHCP中继协议服务器上手动配置网关、IP,关闭不用的网卡yum install dhcp -yVim /etc/sysctl.conf(开启路由转发)sysctl -pvim /etc/sysconfig/dhcrelay# Command line options hereDHCRELAYARGS=""# DHCPv4 onlyINTERFACES="eth0 eth1"# DHCPv4 onlyDHCPSERVERS="192.168.100.1" (dhcp服务器地址)service dhcrelay restartchkconfig dhcrelay ondhcrelay 192.168.100.17、iptables的框架:表-->链-->规则二、主机防火墙(凡是未被明确允许的,一概拒绝)1、Linux防火墙开、关setup 带*:开启不带*:关闭2、iptables 命令的语法格式:iptables [-t表名] 管理选项 [链名] [条件匹配] [-j 目标]iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 --dport 139 -j ACCEPT从service iptables startchkconfig iptables on1)管理选项①查看规则:-nvLiptables -t filter -nvL --line-numbers或iptables -nvL --line-numbers 注:如果不写表名,默认查filter;清空规则后,默认允许ACCEPT;pkts bytes:这条规则一共处理了多少个数据包,以及多少字节in:从哪一个接口进来的out:从哪一个接口出去的--line-numbers 显示序列号②删除:-F (清除当前表中所有链的规则)iptables -t filter -F-D 删除指定行iptables -D INPUT 3③修改:-P:修改链的默认规则 iptables -P INPUT DROP-A:在末尾添加规则 iptables -t filter -A INPUT-I:在行首添加规则 iptables -t filter -I INPUT添加到指定行 iptables -I INPUT 3 -p udp -s 192.168.100.0/24 --dport 137 -j ACCEPT.-R:修改现有规则 iptables -I INPUT 3 -p udp -s 192.168.100.0/24 --dport 1388 -j ACCEPT2)匹配条件①协议:-p TCP UDP ICMP②IP:-s 源地址允许访问的地址-d 目标IP③Port:--dport 目标端口(d指目标destination)--sport 源端口④多端口匹配使用“-m multiport”结合“--sports源端口列表”或者“--dports目标端口列表”的形式多个端口之间使用逗号“,”分隔,连续的端口也可以使用“:”分隔-m multiport --dports-m multiport --sports (multi:多)-m 加载扩展模块⑤ IP地址范围匹配使用“-m iprange”结合“--src-range源IP范围”或者“--dst-range目标IP 范围”的形式以“-”符号连接起始IP地址、结束IP地址以连接Iptables -I INPUT -p tcp -m iprange --src-range 192.168.100.10-192.168.100.20 --dport 137 -j ACCEPT3)动作 -j①ACCEPT 允许②DROP 丢弃直接丢弃,ping的时候没反应③REJECT 拒绝在拒绝的同时回一个包,ping的时候提示:目标端口不可达4)防火墙规则导入、导出保存命令:iptables-save > /etc/sysconfig/iptables还原命令:iptables-restore < /etc/sysconfig/iptables3、实验先配置服务Dmz开启防火墙service iptables startchkconfig iptables oniptables -Liptables -t filter -Fiptables -P INPUT DROPiptables -Liptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 139 -j ACCEPTiptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 445 -j ACCEPTiptables -A INPUT -p udp -s 192.168.100.0/24 --dport 137 -j ACCEPTiptables -A INPUT -p udp -s 192.168.100.0/24 --dport 138 -j ACCEPTservice iptables save 一定要记住service iptables restart防火墙规则保存位置:/etc/sysconfig/iptables内网所有服务策略:iptables -Fiptables -P INPUT DROPiptables -A INPUT -p tcp -m multiport --dport 139,445,20:21,2222:2225,53,80,3306,25,110,143,22 -j ACCEPTiptables -A INPUT -p udp -m multiport --dport 137,138,53 -j ACCEPT iptables -I INPUT -p tcp -m multiport --sport 25,110,143,80,53 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dport 111,2049,875,32803,32769,892,662,2020 -j ACCEPTiptables -A INPUT -p udp -m multiport --dport 111,2049,875,32803,32769,892,662,2020 -j ACCEPTservice iptables saveservice iptables restartiptables -nL。
iptables

练习
使用 iptables –L 命令来查看您的当前 规则 使用 iptables --help 命令来查看帮助
INPUT 和 OUTPUT 的差别 (1)
对于 INPUT 而言 --dport -d 都是指你自己的端口和地址 --sport 和 -s 指的是发起连接者的端 口和地址
INPUT 和 OUTPUT 的差别 (2)
规则和链 (2)
可以动态添加、删除和修改规则 可以查看当前规则
简单的 iptalbes 命令
iptables -F 清除所有规则 iptables -X 清除所有自定义规则 iptables -L 列出当前所有规则 自定义脚本,最好以 iptables -F 和 iptables -X 开头
iptables 命令
因此,只有在建立新连接、并且还没有从远 程主机接收到通信流时使用的包才被看作是 NEW (当然,这个包是此特定连接的一部 分)。我们已经描述了外出 NEW 包,但 还有可能会有进入 NEW 包(很常见)。 进入 NEW 包通常来自远程机器,在启动 与您的连接时使用。
对于 OUTPUT 而言 --sport -s 都是指你自己的端口和地址 --dport 和 -d 指的是服务器的端口和 地址
INPUT 和 OUTPUT 的差别 (3)
任务:使得您不能 telnet 到 192.168.0.50 ,分别用 INPUT 和 OUTPUT 方法实 现。
INPUT 和 OUTPUT 的差别 (4)
根据封包的目的端口进行匹配 --dport [!] port --dport = --destination-port port 可以用 /etc/service 中的协议名 来代替
进行实验前的准备工作
redhatiptables详解

Iptables通过快速的数据包过滤 机制,减少了不必要的网络传输, 提高了网络性能。
Iptables的发展历程
Iptables的前身是ipfwadm和ipchains,它们在Linux内核2.2版本之前就 已经存在。
随着Linux内核的发展,ipfwadm和ipchains逐渐被淘汰,Iptables成为 主流的防火墙工具。
插入规则
使用`iptables -I`命令可以将规则插入到链的开始位置。例如,要将一条拒绝所有输入 包的规则插入到INPUT链的开始位置,可以使用以下命令:`iptables -I INPUT -j DROP`。
删除规则
删除规则
使用`iptables -D`命令可以删除一条已存在 的规则。例如,要删除前面添加的允许从任 何IP地址访问本机的80端口的规则,可以使 用以下命令:`iptables -D INPUT -p tcp -dport 80 -j ACCEPT`。
redhatiptables详解
目录
• Iptables简介 • Iptables基本概念 • Iptables基本操作 • Iptables常用表和链 • Iptables常用匹配和目标 • Iptables防火墙配置示例
01
Iptables简介
什么是Iptables
Iptables是Linux操作系统下的一个强大的防火墙工具,用于配置和管理网络数据包过滤规则。它允 许用户根据预设的规则对进出的网络数据包进行筛选和操作,从而控制网络通信。
保存和恢复规则
要点一
保存规则
在Red Hat系统上,iptables规则默认保存在 `/etc/sysconfig/iptables`文件中。要保存当前的规则到文 件中,可以使用以下命令:`service iptables save`。
iptables从入门到精通

iptables从入门到精通iptables从入门到精通一.主要知识点: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-numbersChain INPUT (policy DROP)num target prot opt source destination1 ACCEPT udp -- anywhere anywhere2 ACCEPT icmp -- anywhere anywhere3 ACCEPT tcp -- anywhere anywhere4. 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 DROP2)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 ACCEPT3)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 DROP5. Iptables数据包控制常见的数据包处理方式* ACCEPT:放行数据包* DROP:丢弃数据包* REJECT:拒绝数据包* LOG:记录日志信息,并传递给下一条规则处理* 用户自定义链名:传递给自定义链内的规则进行处理* SNAT:修改数据包的源地址信息* DNAT:修改数据包的目标地址信息[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/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 -jSNAT --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.gz3). 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_ftp3).确认开启路由转发功能* 方法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_ftpiptables -Fiptables -Xiptables -Z#------------------------default rule ------------------------------iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -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 -A INPUT -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 -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 80 -jACCEPT#-------------------------ICMP rule ------------------------------------------iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT。
linux IPTABLES包过滤防火墙详解PPT课件

Netfilter/iptables用户空间
用户空间:即iptables组件,它是一种工 具,使插入、修改或者除去过滤表中的 规则变的简单。
IP源地址 IP目标地址 协议(TCP包、UDP包和ICMP包) TCP和UDP包的源端口 TCP和UDP包的目标端口 ICMP消息类型 TCP包头中的SYN位 数据包到达的接口
数据包出去的接口
过滤路由器与普通路由器的区别
过滤路由器在在提供普通路径选择的同时还要仔细的 查看数据包,以决定是否应该发送这个数据包。当然 是由自己的决策所限制的(由管理员设定) 另外过滤路由器(防火墙)又被称作是包过滤网关, 主要因为它涉及到了传输层。
当用户用IPTABLES往链中添加完规则之后,内核空间接管过滤的工作。 ####包过滤工作经过如下步骤### 1、路由,当信息包到达防火墙时,内核先检查包头信息,尤其是目标IP。 2、根据情况将数据包送往过滤表(filter)的不同链
如果信息包源自外界并且数据包的目的地是本机,且防火墙是打开的, 那么内核将其放入INPUT链。 如果信息包源自本机或系统所连接的内部网上的其他源,并且想前往另 一个外部系统,那么内核将其送往OUTPUT链。 如果信息包源自外部系统并前往外部系统,刚被传递到FORWARD链 3、规则检查,将信息包的头信息与它所传递到的链中的每条规则进行比较, 看是否与某条规则完全匹配。 配置RULE的则按规则中指定操作进行。如:ACCEPT或DROP、REJECT 如果不匹配当前规则则继续往下一条规则匹配。 最后如果信息包与链中的任何规则都不匹配,那么内核一般丢弃该包。
1.iptables规则详解

1.iptables规则详解1.什么是防⽕墙,防⽕墙的种类有哪些防⽕墙:古⼈⽤来隔绝失⽕后的⾼墙,阻挡外来的⽕势,起到了隔离的⼿段。
在互联⽹上,我们会采⽤类似于防⽕墙的⽅法,来保护我们的⽹络不受外来攻击,为此我们需要设定⼀些防⽕墙的规则,确定哪些数据允许通过,哪些不能通过,具有这种功能的设备或软件,我们将其称为防⽕墙防⽕墙的种类:逻辑层⾯:主机防⽕墙:针对单个主机进⾏防护,例如Windows防⽕墙⼀般是软件⽹络防⽕墙:处于⽹路⼊⼝的边缘,针对⽹络⼊⼝进⾏防护⼀般是硬件,也可以⽤软件物理层⾯:硬件防⽕墙:⼀个实体的硬件,嵌⼊软件,实现防⽕墙的功能,性能⾼,成本⾼软件防⽕墙:通过软件的⽅式,模拟防⽕墙的功能,运⾏在操作系统上⾯,性能低,成本低2.iptables介绍1.什么是iptables?iptables可以理解为是⼀个代理程序,⽤户通过代理程序,将安全规则添加到安全框架中 net filter(内核空间)netfilter/iptables 是Linux中的包过滤型防⽕墙,是免费的,可以代替昂贵的商业防⽕墙解决⽅案,可以实现数据包的过滤,实现数据包的转换。
2.什么是包过滤防⽕墙?包过滤型防⽕墙在我们⽹络层拦截⽹络数据包的包头(header),可以针对数据包的包头,与我们事先准备好的防⽕墙规则进⾏⽐对,与规则相匹配的包放⾏,不匹配的包丢弃或者执⾏⼀些复杂的动作,包过滤型防⽕墙⼀般作⽤在我们的⽹络层,故通常header中带有客户端来源IP,源端⼝,⽬标IP,⽬标端⼝,协议类型:tcp udp icmp,根据这些状态信息来判断,是否符合我们的IP tables的过滤规则,符合通过,不然拒绝。
3.包过滤型防⽕墙是怎么实现的?是基于net filter安全框架实现的,是内核的⼀部分,如果我们想要让防⽕墙达到防⽕的⽬的,需要我们在内核中,设定⼀些关卡,所有进出的报⽂,根据设定的这些关卡进⾏检查,将符合条件的放⾏,不符合的阻⽌,在net filter中,这些关卡就是链3.iptables链的概念1.什么是链?防⽕墙的作⽤就是在于将经过的报⽂与设定的规则进⾏⽐对,然后执⾏响应的动作,报⽂经过链时,必须匹配链的规则,在链上不⽌⼀条规则,存在着很多规则,当我们将这些规则穿在⼀起的时候就形成了链链的匹配规则,如下图所⽰,当有报⽂经过时,会以此往下匹配规则,如果匹配成功,则执⾏相对于的动作,如果匹配不成功,就以此往下匹配,直到最后⼀条规则还是没有匹配成功,会执⾏链的默认规则。
《iptables讲义》PPT课件

h
13
3.2.6 -[vxn]L
-L [链名] LIST,列出规则
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) n:只显示 IP 地址和端口号码,不显示域名和服务名称
例如: iptables -L 粗略列出 filter 表所有链及所有规则
POSTROUTING:位于 nat 表,用于修改源地址 (SNAT)
h
5
3.1 iptables 语法概述
iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]
h
6
3.2 命令概述
操作命令(-A、-I、-D、-R、-P、-F) 查看命令(-[vnx]L)
ChinaUnix 讲座
2 小时玩转 iptables
cu.platinum@ 2006.03.18
v1.4
h
1
主题大纲
1. 概述 2. 框架图 3. 语法 4. 实例分析 5. 网管策略 6. FAQ 7. 实战
h
2
1. 概述
2.4.x、2.6.x 内核 netfilter/iptables
h
12
3.2.5 -F
-F [链名] FLUSH,清空规则
例如: iptables -F INPUT 清空 filter 表 INPUT 链中的所有规则
iptables -t nat -F PREROUTING 清空 nat 表 PREROUTING 链中的所有规则
注意: 1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则 2、-P 设置了 DROP 后,使用 -F 一定要小心!!! 3、如果不写链名,默认清空某表里所有链里的所有规则
Iptables详解

Iptables详解Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。
如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器,则Iptables 有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
netfilter/iptables过滤防火墙系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。
这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。
在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然netfilter/iptables包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
优点netfilter/iptables的最大优点是它可以配置有状态的防火墙。
有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。
防火墙可以从信息包的连接跟踪状态获得该信息。
在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。
这里有四种有效状态,名称分别为ESTABLISHED 、INVALID 、NEW 和 RELATED 。
状态ESTABLISHED指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。
INVALID 状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。
状态NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。
Linux安全应用-iptables防火墙(PPT 30张)

—— 上述2种称呼都可以表示Linux防火墙
Linux包过滤防火墙概述2-2
包过滤的工作层次
主要是网络层,针对IP数据包 体现在对包内的IP地址、端口等信息的处理上
应用层 传输层 网络层 链路层 外部网络
应用代理 传输层 网络层 链路层 网络层防火墙
应用层 传输层 网络层 链路层 受保护网络
iptables的表、链结构3-2
规则表
表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 raw表:确定是否对该数据包进行状态跟踪 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤)
默认包括4个规则表
iptables的基本语法2-1
语法构成
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT
几个注意事项
不指定表名时,默认指 filter表 C:\Users\Administrator> ping 192.168.4.254 正在 Ping 192.168.4.254 具有 32 字节的数据: 不指定链名时,默认指表内的所有链 来自 192.168.4.254 的回复: 无法连到端口。 除非设置链的默认策略,否则必须指定匹配条件 来自 192.168.4.254 的回复: 无法连到端口。 阻止ping测试 ……
基本语法、控制类型 编写防火墙规则
添加、查看、删除规则 规则的匹配条件
Linux包过滤防火墙概述2-1
iptables详解

iptables详解1 防火墙简介防火墙其实就是一个加固主机或网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险区域的访问。
世界上没有绝对的网络安全,世界上70%的网络安全事件,都是发生在防火墙内部。
严谨的操作习惯,程序化的操作准则,才是最好的防火墙。
2 防火墙的分类1、从特点上分类第一种,软件防火墙,软件防火墙需要运行在特定的计算机上,而且需要计算机的操作系统的支持。
第二种,硬件防火墙,硬件防火墙其实就是一个普通pc机的架构,然后上面跑有专门的操作系统。
第三种,芯片级的防火墙,这种防火墙基于专门的硬件平台,没有操作系统,专有的ASIC芯片使它们比其他类的防火墙速度更快,处理能力极强,性能更高,但是价格却极其昂贵。
2、从技术上分类第一种,包过滤型防火墙,这类的防火墙主要是工作在网络层,根据事先设定好的规则进行检查,检查结果根据事先设定好的处理机制进行处理。
第二种,应用层防火墙,它是工作在TCP/IP模型中的最高层应用层,相比较来说速度要慢一点。
第三种,状态监视器,状态监视做为防火墙其安全性为最佳,但配置比较复杂,且网络速度较慢。
3 防火墙在企业中的部署1、单宿主堡垒主机是单台服务器有防火墙,只为单台服务器防护。
2、双宿主堡垒主机双宿主堡垒主机是一台装有两块网卡的堡垒主机,一般这台堡垒主机应用在网关,防护局域网跟广域网之间通信等安全。
3、三宿主堡垒主机三宿主堡垒主机是一台装有三块网卡的堡垒主机,那么他将外网,内网,DMZ 三个区域隔离开来,同时保护内网已经DMZ区域的安全等。
4、背靠背型内网、外网、DMZ区域都用单独的防火墙分隔开如下图:4 iptables介绍iptables/netfilter(官方网站,)可以通过iptables系统服务命令对iptables进行关闭开启和停止操作,看似iptables像是Linux上的一个服务,其实不是。
linux系统上的服务比如说httpd服务在启动起来的时候,是不是在后台启动一个相应的服务进程且在网卡上监听一个端口,而iptables却不然,那么iptables到底是什么呢?其实iptables只是一个工具而已.我们的linux系统有用户空间,和内核空间,而iptables有两个组件,一是netfilter, netfilter组件只是用来过滤防火墙规则,及作出相应的处理机制的,它是集成在内核中的一部分,也就是说它是工作在内核空间的,那么大家都知道用户是不可能直接跟内核空间打交道的,那么netfilter只是工作在内核空间对规则进行处理的,那么规则从何而来呢? 是从iptables的第二个组件iptables而来的,我们上面说了iptables只是一个工作在用户空间的一个工具而已,那么用户就使用这个工具的一个命令来跟工作在内核空间中的netfiter组件打交道的.其实iptables防火墙就是这样的。
第8章 iptables

8.2.2 iptables的启动与停止
1.iptables服务的启动 2.iptables服务的停止 3.iptables服务的重新启动 4.自动加载iptables服务
– 1)chkconfig – 2)ntsysv
» 使用ntsysv命令,利用文本图形界面对iptables自动 加载进行配置,如图8.4所示。
8.1.1 防火墙概述
1. 什么是防火墙 – 防火墙通常具备以下几个特点。 » 1)位置权威性 » 2)检测合法性 » 3)性能稳定性 2. 防火墙的种类 – 防火墙的分类方法多种多样,不过从传统意义上讲,防火墙大致可 以分为三大类,分别是“包过滤”、“应用代理”和“状态检测”, 无论防火墙的功能多么强大,性能多么完善,归根结底都是在这三 种技术的基础之上进行功能扩展的。
8.3.3 查看iptables规则
查看iptables规则的命令格式如下。 – iptables [-t 表名] -L 链名 『示例8.3』查看nat表中所有链的规则。 – [root@iptables /]# iptables -t nat -L – Chain PREROUTING (policy ACCEPT) – target prot opt source destination – Chain POSTROUTING (policy ACCEPT) – target prot opt source destination – Chain OUTPUT (policy ACCEPT) – target prot opt source destination 『示例8.4』查看filter表中FORWARD链的规则。 – [root@iptables /]# iptables -L FORWARD – Chain FORWARD (policy ACCEPT) – target prot opt source destination – RH-Firewall-1-INPUT all -- anywhere anywhere
《iptables讲义》课件

常见iptables问题及解决方案
总结常见的iptables使用问题和解决方案,如防火墙配置错误、规则失效等。 提供一些建议和技巧,帮助读者排查和解决iptables相关问题。
介绍iptables内置的各种匹配扩展,如tcp、udp、icmp等。 探索这些扩展的用法和参数,进一步加强对规则匹配的灵活性和精确性。
NAT和iptables
探讨iptables在网络地址转换(NAT)方面的应用。 学习如何配置和管理iptables实现端口转发、地址转换和负载均衡等功能。
iptables实战应用举例Biblioteka iptables的三个表和五个链
介绍iptables中常用的三个表(filter、nat和mangle)以及每个表中的五个链 (INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING)。 详细解释每个链的作用和使用场景,帮助理解iptables的链式处理流程。
iptables的内置匹配扩展
《iptables讲义》PPT课件
iptables的基础知识
了解iptables是什么,它是Linux防火墙中的一项重要技术,用于网络数据包过滤和转发。 掌握iptables的工作原理和基本概念。
iptables的核心命令和选项
深入学习iptables的核心命令和选项,如iptables的过滤规则管理、网络地址 转换和连接追踪等。 通过实例演示,掌握各种命令的用法和常见选项的含义。
iptables用法和介绍

iptables⽤法和介绍参考视频:/video/BV12f4y1q73o?from=search&seid=11667345261719018642&spm_id_from=333.337.0.01.阿⾥云故障案例搭建keepalived推出havip,19年⽆法使⽤只能使⽤阿⾥云⾃⼰推出的slb负载均衡2.阿⾥云的iptables防⽕墙屏蔽/放⾏端⼝ IP 都可以正常使⽤ iptables共享上⽹端⼝转发/映射⽆法使⽤阿⾥云NAT⽹关,可以实现iptables共享上⽹端⼝转发/映射⽆法使⽤3.阿⾥云云盾故障导致⽤户使⽤什么命令,云盾就删除什么命令时刻备份好数据防⽕墙⼀些名词容器:存放东西表(table):存放链的容器链(chain):存放规则的容器规则(policy):准许或拒绝规则Netfilter 表(tables)链(chain)规则(policy)⼀栋楼楼⾥的房⼦房⼦⾥的柜⼦柜⼦⾥的⾐服,摆放规则⼀:iptables1.iptables⼯作流程1).防⽕墙是层层过滤的,实际是按照配置规则的顺序从上⽽下,从前到后进⾏过滤的2).如果匹配上规则,即明确表⽰是阻⽌还是通过,数据包就不再向下匹配新的规则3).如果规则中没有明确表明是阻⽌还是通过,也就是没有匹配规则,向下进⾏匹配,直到匹配默认规则得到明确的阻⽌还是通过4).防⽕墙的默认规则是所有规则执⾏完才执⾏的注意:屏蔽规则都是放在最上⾯2.表与链简介:iptables 是 4表五链4表: filter表 nat表 raw表 mangle表filter表:负责过滤功能,防⽕墙;内核模块:iptables_filternat表: network address translation,⽹络地址转换功能;内核模块:iptable_natmangle表拆解报⽂,做出修改,并重新封装的功能;iptable_mangleraw表:关闭nat表上启⽤的连接追踪机制;iptable_raw1)filter表防⽕墙:屏蔽或允许端⼝ IPfilter表强调:主要和主机⾃⾝有关,真正负责主机防⽕墙功能的(过滤流⼊流出的数据包) filter表⽰iptanles默认使⽤的表,这个表定义了三个链(chains)企业⼯作场景:主机防⽕墙INPUT 负责过滤所有⽬标地址是本机地址的数据包通俗来说:就是过滤主机的数据包FORWARD 负责转发流经主机的数据包,起转发的作⽤,和NAT关系很⼤ LVS NAT模式,net.ipv4.ip_forward=0OUTPU 处理所有源地址是本机地址的数据包通俗讲:就是处理从主机发出去的数据包2)nat表实现nat功能实现共享上⽹(内⽹服务器上外⽹)端⼝映射ip映射nat 负责⽹络地址转换的,即来源与⽬的IP地址和port的转换应⽤:和主机本⾝⽆关,⼀般⽤于局域⽹共享上⽹或者特殊的端⼝转换服务相关⼯作场景:1.⽤于企业路由(zebra)或⽹关(iptables),共享上⽹(POSTROUTING)2.做内部外部IP地址⼀对⼀映射(dmz),硬件防⽕墙映射IP到内部服务器,ftp服务(PREROUTING)3.WEB,单个端⼝的映射,直接映射80端⼝(PREROUTING)这个表定义了3个链,nat功能相当于⽹络的acl控制,和⽹络交换机acl类似OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的⽬的地址PREROUTING 在数据包到达防⽕墙时,进⾏路由判断之前执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等(端⼝转发)PORTROUTING 在数据包离开防⽕墙时,进⾏路由判断之后执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等⽣产应⽤:局域⽹共享上⽹查看是否加载iptables相关模块到内核[root@node1 ~]# lsmod | egrep 'filter|nat|ipt'iptable_filter 16384 1iptable_nat 16384 1nf_nat 40960 2 iptable_nat,xt_MASQUERADEnf_conntrack 147456 4 xt_conntrack,nf_nat,nf_conntrack_netlink,xt_MASQUERADEip_tables 28672 2 iptable_filter,iptable_natlibcrc32c 16384 3 nf_conntrack,nf_nat,xfs其中iptables_filter和iptables_nat为核⼼,缺少就⽆法使⽤[root@node1 ~]# systemctl stop firewalld[root@node1 ~]# systemctl disable firewalld然后开启iptables[root@node1 ~]# systemctl start iptables[root@node1 ~]# systemctl enable iptables[root@node1 ~]# iptables -nL 说明:-n是把服务名字转换为端⼝,-L是列出,iptables默认是filter表Chain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0ACCEPT all -- 0.0.0.0/0 0.0.0.0/0ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)target prot opt source destinationREJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destination3.iptables命令参数参数含义-L 显⽰表中的所有规则-n 不要把端⼝或ip反向解析为名字-t 指定表不指定默认为filter表-A append追加,加⼊准许类规则-D delete删除 -D INPUT 1-I insert拒绝类规则放在所有规则最上⾯拒绝类参数含义-p 协议protocal tcp/udp/icmp/all--dport ⽬标端⼝ dest destination 指定端⼝加上协议-p tcp--sport 源端⼝ source 源-s --source 源ip-d --destination ⽬标ip-m 指定模块 multiport(指定多个端⼝)-i input 输⼊的时候从哪个⽹卡进来-o ouput 输出的时候从那个⽹卡出去参数含义-j 满⾜条件后的动作:DROP/ACCEPT/REJECTDROP PEJECT 都是拒绝DROP 会把数据丢掉,不会返回信息给⽤户PEJECT 拒绝返回拒绝信息参数含义-F flush 清除所有规则,不会处理默认规则-X 删除⽤户⾃定义的链-Z 链的计数器清零(数据包计数器与数据包字节计数器)4.配置filter表规则正式配置之前先备份,再清空规则[root@node1 ~]# iptables -F 清除所有规则,不会处理默认规则[root@node1 ~]# iptables -X 删除⽤户⾃定义的链[root@node1 ~]# iptables -Z 链的计数器清零(数据包计数器与数据包字节计数器)[root@node1 ~]# iptables -nL 清空之后的样⼦,然后再进⾏配置Chain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination案例:禁⽌访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP说明:-A 后⾯写链名(追加,允许类规则⽤A) INPUT是链名 -p是添加tcp协议 --dport是⽬标端⼝ -j就是说明后⾯是允许还是拒绝-p 协议tcp/udp/icmp(ping命令拒绝访问)/all--dport ⽬标端⼝,指定端⼝加上协议 -p tcp--sport 源端⼝查看iptables表的顺序[root@node1 ~]# iptables -nL --line-number[root@node1 ~]# iptables -D INPUT 1说明:-D 后⾯写链名(删除类规则⽤D) 1是规则表的序号5.屏蔽某个ip[root@node1 ~]# iptables -I INPUT -s 192.168.20.22 -j DROP说明:-I -s 后⾯加IP 由于禁⽌的是IP所以不需要加端⼝[root@node1 ~]# iptables -nLChain INPUT (policy ACCEPT)target prot opt source destinationDROP all -- 192.168.20.22 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination[root@node1 ~]# iptables -D INPUT 1 删除规则表的禁⽌192.168.20.21的这⾏6.禁⽌某个⽹段连⼊(禁⽌192.168.20.0/24⽹段访问8888端⼝)iptables -I INPUT -s 192.168.20.0/24 -p tcp --dport 8888 -j DROP7.只允许某个⽹段连⼊(允许192.168.20.0⽹段)allow 192.168.20.0/24;deny all;⽅法1:利⽤!进⾏排除iptables -I INPUT ! -s 192.168.20.0/24 -j DROP⽅法2:修改链默认规则,修改为拒绝"添加准许"先配置好规则准许规则再修改默认规则[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:-A 后⾯写链名(追加,允许类规则⽤A)INPUT是链名 ACCEPT(允许的意思)意思是说:防⽕墙规则允许192.168.20.0⽹段访问然后再修改默认规则[root@node1 ~]# iptables -P INPUT DROP说明:-P是修改默认规则的参数,INPUT链内容就改为DROP[root@node1 ~]# iptables -nLChain INPUT (policy DROP)target prot opt source destinationACCEPT all -- 192.168.20.0/24 0.0.0.0/0ACCEPT all -- 192.168.10.0/24 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination8.匹配⽹络连接状态(TCP/IP连接状态)-m state --stateNEW:已经或将启动新的连接ESTABLISHED:已经建⽴的连接RELATED:正在启动的新连接INVALID:⾮法或⽆法识别的连接UNTRACKED:表⽰报⽂未被追踪,⽆法找到[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT9.拒绝多个端⼝访问[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 2222,12306 -j DROP说明:-m是指定模块 multiport是指定多个端⼝ 2222,12306是指两个端⼝[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 1024:2048 -j DROP说明:1024:2048是指从1024端⼝到2048端⼝都拒绝访问10.匹配ICMPICMP:控制报⽂协议 ping⼀般⽤于禁ping虽然被禁ping但不影响访问⽅法1):通过防⽕墙禁ping[root@node1 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP说明:--icmp-type 8 icmp有很多类型禁ping是第8个⽅法2):通过修改内核禁ping[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 临时修改[root@node1 ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 恢复修改将net.ipv4.icmp_echo_ignore_all=1 写⼊到/etc/sysctl.conf 永久修改然后输⼊[root@node1 ~]# sysclt -p 使其⽣效11.限制并发及速率-m limit 限制模块-m ;limt --limt 10/minute #每分钟只能有10个数据包,每秒6个-m ;limt --limt n/{second/minute/hour}说明:指定时间内的请求速率 'n'为速率,后⾯为时间分别为:秒分时-m limit --limit 10/minute --limit-burst 5 #每6秒释放⼯牌给别⼈使⽤--limit-burst[n]说明:在同⼀时间内允许通过的请求'n'为数字,不指定默认为5案例:[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT 先允许22端⼝[root@node1 ~]# iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP12.防⽕墙规则的保护与恢复iptables-save 默认输出到屏幕iptables-restore写⼊到/etc/sysconfig/iptables案例:iptables-save > /etc/sysconfig/iptables 保存到⽂件中iptables-restore < /etc/sysconfig/iptables 恢复防⽕墙策略filter表⼩结封IP 端⼝⽹段禁⽌ping限制速度和并发iptables filter表所有功能可以在云服务器中使⽤13.实际⽣产⽤法iptables 配置⽅式可以远程访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT[root@node1 ~]# iptables -A INPUT -p tcp -m multiport --dport 443,80 -j ACCEPT[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:这⾥还可以添加vpn⽹段例:172.16.1.0/241)设置允许本机lo 通讯规则允许本机回环lo接⼝数据流量流出与流⼊[root@node1 ~]# iptables -A INPUT -i lo -j ACCEPT[root@node1 ~]# iptables -I OUTPUT -o lo -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP[root@node1 ~]# iptables -P FORWARD DROP[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT⼆:nat1:1)共享上⽹[root@node1 ~]# iptables -t nat -A POSTROUTING -s 192.1683.20.0/24 -j SNAT --to-source 10.0.0.50(公⽹)说明:修改的是POSTROUTING(数据包离开防⽕墙时)链源地址为192.168.20.0/24 经过防⽕墙处理修改为10.0.0.50(公⽹)[root@node1 ~]# echo 'net.ipv4.icmp_echo_ignore_all = 0' >> /etc/sysctl.conf[root@node1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf2)端⼝映射/转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp --dport 9001 -j DNAT --to-destination 192.168.20.21:22 3)IP转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp -j DNAT --to-destination 192.168.20.212.nat故障排查1)先看⼀下防⽕墙规则iptables -t nat -nL2)ip⽹关配置查询⽹关ip r或者route -n3)内核转发是否配置在/etc/sysctl.conf⽂件中net.ipv4.ip_forward = 1echo '1' > /proc/sys/net/ipv4/ip_forward4)nat表总结实现共享上⽹(内⽹服务器上外⽹)端⼝转发/映射nat功能在云服务器上⽆法使⽤替代品叫:NAT⽹关三:总结1.禁⽌来⾃10.0.0.188 IP地址访问80端⼝请求iptables -I INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP2.如何使命令在执⾏的时候永久⽣效?iptables-save/etc/sysconfig/iptables3.实现把访问10.0.0.3:80的请求转到192.168.20.21:80iptables -t nat -A PREROUTING -d 10.0.0.3 -P tcp --dport 80 -j DNAT --to-destination 192.168.20.21:80 4.实现192.168.20.0/24段所有主机通过1xx.3x.5x.2xx外⽹IP共享上⽹iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j SNAT --to-destination 1xx.3x.5x.2xxiptables -t nat -A PORTROUTING -s 192.168.20.0/24 -j SNAT MASQUERADE。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3 匹配条件
流入、流出接口(-i、-o) 来源、目的地址(-s、-d) 协议类型 (-p) 来源、目的端口(--sport、--dport)
3.3.1 按网络接口匹配
-i <匹配数据进入的网络接口> 例如: -i eth0 匹配是否从网络接口 eth0 进来 -i ppp0 匹配是否从网络接口 ppp0 进来 -o 匹配数据流出的网络接口 例如: -o eth0 -o ppp0
3.3.2 按来源目的地址匹配
-s <匹配来源地址> 可以是 IP、NET、DOMAIN,也可空(任何地址) 例如: -s 192.168.0.1 匹配来自 192.168.0.1 的数据包 -s 192.168.1.0/24 匹配来自 192.168.1.0/24 网络的数据包 -s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包 -d <匹配目的地址> 可以是 IP、NET、DOMAIN,也可以空 例如: -d 202.106.0.20 匹配去往 202.106.0.20 的数据包 -d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包 -d 匹配去往域名 的数据包
3.2.6 -[vxn]L
-L [链名] LIST,列出规则 v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) n:只显示 IP 地址和端口号码,不显示域名和服务名称 例如: iptables -L 粗略列出 filter 表所有链及所有规则 iptables -t nat -vnL 用详细方式列出 nat 表所有链的所有规则,只显示 IP 地址和端口号 iptables -t nat -vxnL PREROUTING 用详细方式列出 nat 表 PREROUTING 链的所有规则以及详细数字,不反解
-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链) 源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池 (一组连续的 IP 地址) 例如: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \ -j SNAT --to 1.1.1.1 将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \ -j SNAT --to 1.1.1.1-1.1.1.10 同上,只不过修改成一个地址池里的 IP
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理。 动作前面不能加 –j,这也是唯一一种匹配动作前面不加 –j 的情 况。
3.2.5 -F
-F [链名] FLUSH,清空规则 例如: iptables -F INPUT 清空 filter 表 INPUT 链中的所有规则 iptables -t nat -F PREROUTING 清空 nat 表 PREROUTING 链中的所有规则 注意: 1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则 2、-P 设置了 DROP 后,使用 -F 一定要小心!!! 3、如果不写链名,默认清空某表里所有链里的所有规则
11/07/07
IPTABLES 基本实验环境
11/07/07
2.2 链和表
表 filter: nat: 链 INPUT: 位于 FORWARD: 位于 PREROUTING: 位于 POSTROUTING:位于 filter 表,匹配目的 IP 是本机的数据包 filter 表,匹配穿过本机的数据包, nat 表,用于修改目的地址(DNAT) nat 表,用于修改源地址 (SNAT) 顾名思义,用于过滤的时候 顾名思义,用于做 NAT 的时候 NAT:Network Address Translator
3.3.3 按协议类型匹配
-p <匹配协议类型> 可以是 TCP、UDP、ICMP 等,也可为空 例如: -p tcp -p udp -p icmp --icmp-type 类型 ping: type 8 pong: type 0
3.3.4 按来源目的端口匹配
--sport <匹配源端口> 可以是个别端口,可以是端口范围 例如: --sport 1000 匹配源端口是 --sport 1000:3000 匹配源端口是 --sport :3000 匹配源端口是 --sport 1000: 匹配源端口是 1000 的数据包 1000-3000 的数据包(含1000、3000) 3000 以下的数据包(含 3000) 1000 以上的数据包(含 1000)
3.5 附加模块
3.2.3 -R
-R <链名> <规则号码> <具体规则内容> REPLACE,替换一条规则 例如: iptables -R INPUT 3 -j ACCEPT 将原来编号为 3 的规则内容替换为“-j ACCEPT” 注意: 确保规则号码 ≤ 已有规则数,否则报错
3.2.4 -P
-P <链名> <动作> POLICY,设置某个链的默认规则 例如: iptables -P INPUT DROP 设置 filter 表 INPUT 链的默认规则是 DROP 注意:
3.4.5 -j MASQUERADE
-j MASQUERADE 动态源地址转换(动态 IP 的情况下使用) 例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 将源地址是 192.168.0.0/24 的数据包进行地址伪装
80 的数据包 6000-8000 的数据包(含6000、8000) 3000 以下的数据包(含 3000) 1000 以上的数据包(含 1000) 参数使用
3.3.5 匹配应用举例
1、端口匹配 -p udp --dport 53 匹配网络中目的端口是 53 的 UDP 协议数据包 2、地址匹配 -s 10.1.0.0/24 -d 172.17.0.0/16 匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包 3、端口和地址联合匹配 -s 192.168.0.1 -d -p tcp --dport 80 匹配来自 192.168.0.1,去往 的 80 端口的 TCP 协议数据包
--dport <匹配目的端口> 可以是个别端口,可以是端口范围 例如: --dport 80 匹配目的端口是 --dport 6000:8000 匹配目的端口是 --dport :3000 匹配目的端口是 --dport 1000: 匹配目的端口是 注意:--sport 和 --dport 必须配合 -p
3.4.2 -j DROP
-j DROP 丢弃,阻止数据包通过本链而丢弃它 类似 Cisco 中 ACL 里的 deny 例如:
iptables -A FORWARD -s 192.168.80.39 -j DROP 阻止来源地址为 192.168.80.39 的数据包通过本机
3.4.3 -j SNAT
3.2.3 -D
-D <链名> <规则号码 | 具体规则内容> DELETE,删除一条规则 例如: iptables -D INPUT 3(按号码匹配) 删除 filter 表 INPUT 链中的第三条规则(不管它的内容是什么) iptables -D INPUT -s 192.168.0.1 -j DROP(按内容匹配) 删除 filter 表 INPUT 链中内容为“-s 192.168.0.1 -j DROP”的规则 (不管其位置在哪里) 注意: 1、若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条 2、按号码匹配删除时,确保规则号码 ≤ 已有规则数,否则报错 3、按内容匹配删除时,确保规则存在,否则报错
3.1 iptables 语法概述
iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]
3.2 命令概述
操作命令(-A、-I、-D、-R、-P、-F) 查看命令(-[vnx]L)
3.2.1 -A
-A <链名> APPEND,追加一条规则(放到最后) 例如: iptables -t filter -A INPUT -j DROP 在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则) 匹配所有访问本机 IP 的数据包,匹配到的丢弃
注意: 1、--sport、--dport 必须联合 -p 使用,必须指明协议类型是什么 2、条件写的越多,匹配越细致,匹配范围越小
3.4 动作(处理方式)
ACCEPT DROP SNAT DNAT MASQUERADE
3.4.1 -j ACCEPT
-j ACCEPT 通过,允许数据包通过本链而不拦截它 类似 Cisco 中 ACL 里面的 permit 例如: iptables -A INPUT -j ACCEPT 允许所有访问本机 IP 的数据包通过
IPTABLES 安全防护
学习目标
熟悉LINUX防火墙的表,链结构 理解数据包匹配的基本流程 管理和设置IPTABLES 规则 使用SNAT 策略配置共享上网 使用DNAT策略发布企业内网的应用服务 熟练编写IPTABLES 防火墙脚本
11/07/07
主题大纲
1. 2. 3. 4. 5. 6. 7. 概述 框架图 语法 实例分析 网管策略 使用总则、FAQ 实战
1. 概述
2.4.x、2.6.x 内核 netfilter/iptables的防火墙体 系架构
11/07/07
11/07/07