配置iptables防火墙

author author     2022-10-01     386

关键词:

    iptables技能: 需要熟悉linux防火墙的表,链结构;理解数据包匹配的基本流程;会管理和设置iptbables规则;会使用防火墙脚本的一般方法。

    linux防火墙功能是由内核实现的

                2.0版本中,包过滤机制是ipfw,管理工具是ipfwadm

                2.2版本中,包过滤机制是ipchain,管理工具是ipchains

                2.4以后的版本中,包过滤机制是netfilter,管理工具是iptables(本次介绍的就是iptables)

    netfilter:

        位于linux内核中的包过滤防火墙功能体系

        称为linux防火墙的"内核态"

    iptables:

        位于/sbin/iptables,是用来管理防火墙的命令工具

        为防火墙体系提供过滤规则和策略,决定如何过滤或处理到达防火墙主机的数据包(工作于TCP/IP的网络层)

        称为linux防火墙的"用户态"

iptables的规则链,规则表结构   

    规则链:

        规则的作用在于对举报进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的链中

        规则链是防火墙规则/策略的集合

    默认的5种规则链:

        INPUT    处理入站数据包

        OUTPUT    处理出站数据包

        FORWARD    处理转发数据包

        POSTROUTING    在进行路由选择后处理数据包

        PRERROUTING    在进行路由选择前处理数据包

    规则表:

        具有某一类相似类型的防火墙规则,按照不通的处理时机去分到不同的规则链之后,被归置到不同的表中

        规则表是规则链的集合

    默认的4张表: 

        raw    确定是否对该数据包进行状态跟踪

        managle    为数据包设置标记

        nat表    修改数据包中的源,目标ip地址或者端口

        filter    确定是否放行该数据包(过滤)

        

技术分享

数据包过滤匹配流程

    规则表的优先顺序

        raw  -->  managle  -->  nat  --> filter

    规则链间的匹配顺序

        入站数据    PREROUTING  -->  INPUT

        出站数据    OUTPUT  -->  POSTROUTING

        转发数据    PREROUTING  --> FORWARD  -->  POSTROUTING

    规则链内的匹配顺序

        按顺序依次进行检查,找到相匹配的规则即停止(log策略除外)

        若找不到的匹配的规则,则按照默认策略处理

    入站数据流:

        来自外界的数据包到达防火墙 -->被PREROUTING处理(确认是需要修改数据包地址等)--->路由选择(判断数据包应该发往何处)---> 如果目标地址是防火墙本身,那么内核将其传递给INPUT链进行处理(决定是否通过)---> 通过以后则交给上层应用程序处理

    转发数据流:

        来自外界的数据包到达防火墙 -->被PREROUTING处理(确认是需要修改数据包地址等)--->路由选择(判断数据包应该发往何处)---> 如果目标地址是其他外部地址,那么内核将其传递给FORWARD链进行处理(是否转发或者拦截)---> 然后在交给POSTROUTING链(是否修改数据包地址等)进行处理

    出站数据流:

        防火墙本机向外部地址发送数据包--->先被OUTPUT链规则处理(是否放行)---> 路由选择 --->然后传递给POSTROUTING(是否修改数据包的地址等)进行处理


管理和设置iptables规则

    iptables 命令的语法格式

        iptables [-t 表名] 管理选项 [链名] [条件批匹配] [-j 目标动作或者跳转]

        iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

   几个注意事项

        不指定表名时,默认是的表是filter

        不指定链名时,默认时该表内所有的链

        除非设置规则链的缺省策略,否则都需要指定匹配条件


iptables命令的管理选项

-t<表>:指定要操纵的表; 
-A:向规则链中添加条目; 
-D:从规则链中删除条目; 
-i:向规则链中插入条目; 
-R:替换规则链中的条目; 
-L:显示规则链中已有的条目; 
-F:清楚规则链中已有的条目; 
-Z:清空规则链中的数据包计算器和字节计数器; 
-N:创建新的用户自定义规则链; 
-P:定义规则链中的默认目标; 
 -h:显示帮助信息; 
-p:指定要匹配的数据包协议类型; 
-s:指定要匹配的数据包源ip地址; 
-d<目标>:指定要跳转的目标; 
-i<网络接口>:指定数据包进入本机的网络接口; 
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

    设置规则内容

        iptables -t filter -A INPUT -p tcp -j ACCEPT    在input表末尾添加一条规则

        iptables -I INPUT -p udp -j ACCETP    插入到input表第一行,原来第一行变为的第二行

        iptables -I INPUT 2 -p icmp -j ACCEPT    插入到input表第二行,原来的第二行变为的第三行              iptables -P INPUT DROP    设置默认input表规则为DROP

        iptables -L INPUT --line-number   显示input表规则以及行数

    清除规则

        iptables -D INPUT 2    清除INPUT第二条规则

 

设置匹配数据包的条件

    通用条件匹配

        可直接使用,不依赖其他的条件或者扩展模块

        包括网络协议,ip地址,网络接口等匹配方式

    隐含条件匹配

        一般需要以特定的协议匹配作为前提

        包括端口,tcp标记,icmp类型等匹配方式

    显式条件匹配

        需要使用"-m 扩展模块" 的形式明确指定匹配方式

        包括多端口,mac地址,ip地址范围,数据包状态等匹配方式

  eg.通用条件匹配

        协议匹配

            使用"-p 协议名"的形式 

            协议名可使用在/etc/protocols 文件中定义的名称

            常用协议有 tcp  udp icmp

        地址匹配

            使用"-s 源地址","-d 目标地址" 的形式

            iptables -I INPUT -p icmp -j REJECT     拒绝icmp协议

            iptables -A FORWARD ! -p icmp -j ACCEPT 允许非icmp协议的转发

            iptables -A FORWARD -s 192.168.1.11 -j REJECT    禁止转发来源地址是192.168.1.11的数据

            iptables -A FORWARD -s 192.168.0.0/20 -j ACCEPT  允许192.168.0.0/20网段数据转发

            iptables -A INPUT -i eth1 -s 192.168.0.0/20 -j DROP 丢弃192.168.0.0/20通过eth1访问的数据包

            iptables -I FORWARD -o eth1 -d 192.168.3.114 -j DROP

            iptables -I FORWARD -i  eth1 -s  192.168.3.114 -j DROP

           

            #  封堵网段2小时

            iptables -I INPUT -s 172.16.10.0/24 -j DROP

            iptables -I FORWARD -s 172.16.10.0/24 -j DROP

            echo "iptables -D INPUT 1"  >> /root/deliptables

            echo "iptables -D FORWARD 1 " >> /etc/deliptables

            at now +2 hours -f /etc/deliptables

    eg. 隐含条件匹配   

        端口匹配

            使用"--sport 源端口", "--dport 目标端口"的形式

            采用 "端口1:端口2"的形式可以指定一个范围的端口

        TCP标记匹配

            使用 "--tcp-flaqs检测范围,被设置的的标记"的形式

        1.只允许的192.168.3.114通过22端口

            iptables -A INPUT -p tcp --dport 22 -s 192.168.3.114 -j ACCEPT

            iptables -A INPUT -p tcp --dport 22 -j DROP  

        2.防止tcp泛洪攻击

            iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT

        3.禁ping(不允许别人ping,允许自己可以ping)   

            iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP   # 拒绝ping请求也可以使用数据8

            iptables -I INPUT -p icmp --icmp-type Echo-Reonly -j ACCEPT  # 允许ping应答也可以使用数字0

            iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT    #暂时不知道是什么鬼。等有时间研究下

        4.开放服务器10000端口到10010端口

            iptables -A INPUT  -p tcp --dport 10000:10010 -j ACCEPT

            iptables -A OUTPUT  -p tcp --dport 10000:10010 -j ACCEPT

    eg. 显式条件匹配

        mac地址匹配

            使用"-m mac" 结合 "--mac-source mac地址"的形式

        多端口匹配

            使用"-m multiport" 结合 "--sports 源端口列表" 或者的是"--dports 目标端口列表"的形式

            多个端口之间使用逗号","分隔,连续的端口使用冒号":"

        1. 禁止转发来自mac地址为00:0C:BA:25:34:3B的主机的数据包

            iptables -A FORWARD -m mac --mac-source 00:0C:BA:25:34:3B -j DROP

        2. 开放防火墙本机的TCP端口:22,23,25,110,10000-10010

            iptables -A INPUT -p tcp -m multiport --dports 22,23,25,110,10000:10010 -j ACCEPT

        3.禁止转发源ip地址为192.168.3.100-192.168.3.110的tcp数据包

            iptables -A FORWARD -p tcp -m iprange --src-range 192.168.3.100-192.168.3.110 -j DROP

        4.禁止转发与正常tcp连接无关的非--syn的包

            iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

        5.拒绝访问主机的新数据包,但是允许访问已经建立连接的相关数据包

            iptables -A INPUT -m state --state NEW -p tcp -j DROP

            iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

数据包控制

    常见的数据包处理方法(后面会详细说明这个)

        ACCEPT    放行数据包

        DROP    丢弃数据包

        REJECT    拒绝数据包

        LOG    记录日志,并传递给下一个规则处理

        用户自定义的链名    传递给自定义的链内的规则处理

导入,导出防火墙规则

        导出规则

            iptables-save

            结合重定向输出">"符号保存规则信息

        导入规则

            iptables-restore   

            结合重定向输入"<"符号恢复规则信息

        iptables-save > /etc/sysconfig/iptables

        iptables-save < /etc/sysconfig/iptables

            

        

本文出自 “Poor Wretch” 博客,请务必保留此出处http://youprince.blog.51cto.com/9272426/1982752

防火墙配置防火墙配置记录

配置filter表防火墙#清除预设表filter中的所有规则链的规则iptables-F#清除预设表filter中使用者自定链中的规则iptables-X#保存iptables配置serviceiptablessave#重启iptables服务serviceiptablesrestart#查看iptables规则iptables-L-n#查看iptables规则文件cat/et... 查看详情

centos防火墙的配置方法详解iptables

CentOS6/7系统是基于linux中的,它的防火墙其实就是iptables了。下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助。iptables是与Linux内核集成的IP信息包过滤系统,其自带防火墙功能,我们在配置完服务... 查看详情

ubuntu14.04配置iptables防火墙

Ubuntu默认安装是没有开启任何防火墙的,为了服务器的安全,建议大家安装启用防火墙设置,这里推荐使用iptables防火墙.如果mysql启本地使用,可以不用打开3306端口.#whereisiptables#查看系统是否安装防火墙可以看到:iptables:/sbin/iptable... 查看详情

linux防火墙iptables配置详解

一、开始配置我们来配置一个filter表的防火墙.(1)查看本机关于IPTABLES的设置情况[[email protected]~]#iptables-L-nChainINPUT(policyACCEPT)target   protoptsource        destin 查看详情

linux防火墙简介–iptables配置策略

Netfilter/iptables简介????要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilter和iptables包含在Linux2.4以后的内核中,可实现防火墙、NAT和数据包分割的功能。Netfilter采用模块化设计,具有良好的可扩展性。Netfil... 查看详情

centos系统配置iptables防火墙

阿里云CentOS系统配置iptables防火墙 虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT。OUTPUT和FORWORD都是ACCEPT的规则一、检查iptables服务状态首... 查看详情

企业防火墙-iptables策略

阅读目录1.1企业中安全优化配置原则1.2iptables防火墙简介1.3iptables表和链1.4iptables工作流程1.5iptables操作1.6iptablesfilter表配置实例1.7iptablesnat表配置实例1.8自定义链的配置1.9附录-防火墙状态机制 1.1 企业中安全优化配置原则... 查看详情

centos7安装配置iptables防火墙

...下如果不想用centos7自带的FIREwall而用7之前版本的iptables当防火墙,这样自动加端口比较方便,可以如下方式配置:一、关闭Firewall防火墙执行以下操作:systemctlstopfirewalld.servicesystemctldisablefirewalld.service二、安装iptables防火墙yuminstall... 查看详情

centos6下防火墙(iptables)的配置方法详解

CentOS6系统是基于linux中的,它的防火墙其实就是iptables了。下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助。iptables是与Linux内核集成的IP信息包过滤系统,其自带防火墙功能,我们在配置完服务... 查看详情

防火墙iptables基础配置

service iptables status    #查看状态service iptables save      #保存规则service iptables stop       查看详情

iptables防火墙配置

            Iptables防火墙配置安装防火墙sudoapt-getinstalliptables查看状态sudoiptables--listwatermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzg2MTQ3Mw==/ 查看详情

iptables系列:如何配置ubuntu14.04中的iptables防火墙

IPTables基本命令在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用s... 查看详情

iptables系列:如何配置ubuntu14.04中的iptables防火墙

IPTables基本命令在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用s... 查看详情

centos7安装配置iptables防火墙

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/50779761CentOS7默认的防火墙不是iptables,而是firewalle.安装iptable iptable-service [plain] viewplain copy  #先检查是否安装了iptables&n 查看详情

阿里云centos配置iptables防火墙

虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT。OUTPUT和FORWORD都是ACCEPT的规则一、检查iptables服务状态首先检查iptables服务的状态[[email protect... 查看详情

iptables防火墙基本配置

linux的防火墙工作在网络层,属于包过滤防火墙,Linux包括netfilter和iptables。netfilter属于“内核态”防火墙而iptables属于“用户态”防火墙。1.iptables包括四表五链四表内容如下:raw表:确定是否对该数据包进行状态跟踪mangle表:为... 查看详情

配置iptables防火墙

    iptables技能:需要熟悉linux防火墙的表,链结构;理解数据包匹配的基本流程;会管理和设置iptbables规则;会使用防火墙脚本的一般方法。    linux防火墙功能是由内核实现的:    &nb... 查看详情

iptables防火墙操作-查看配置重启关闭(代码片段)

查看iptables端口配置iptables-L-n--line-numberiptables端口配置(不开通3389无法远程连接,不开通icmp无法ping)iptables-AINPUT-ptcp--dport443-jACCEPTiptables-AOUTPUT-ptcp--sport443-jACCEPTiptables-AINPUT-ptcp--dport3306-jACCEPTipta 查看详情