iptabales

Iptables防火墙:

Linux防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和1限制,属于典型的包过滤防火墙(或称为网络层防火墙)

Linux防火墙分为两种,分别为netfilter和iptables,这两个防火墙都被称之为防火墙,这两个防火墙的区别:

  • netfilter:称之为内核空间,是linux内核中实现包过滤防火墙的内部结构。属于“内核态,又名内核空间” 的防火墙体系
  • Iptables:管理linux防火墙的命令程序,位于/sbin/iptables目录下,属于”用户态,又称为用户空间‘防火墙体系。

iptables的表,链结构:

iptables采用了“表”和“链”的非标层结构。

其中,每个规则 表 相当于一个内核空间的容器,根据规则集的不同用途划分为默认的四个表,在每个“ 表 ”容器内包含不同的规则 “链 ” ,根据处理数据包的不同时机划分为五种链。

规则表的作用:

  1. Raw表:主要用来决定是否对数据包进行状态跟踪。raw表对应的内核模块为iptabl_raw,表内包含两个链,分别是OUTPUT,PREROUTING.
  2. 2)Mangle表:用来修改数据包的TOS(Type Of Service,服务类型),TTL(Time To Live,生存周期),或者为数据包设置Mark标记,已实现流量整形,策略路由等高级应用,mangle表对应的内核模块为iptable_mangle,表内包含五个链,即PREROUTING、POSTROUTING、INPUT、OUTPUT、FOTWARD。
  3. 3)Nat表:nat(Network Address Translation,网络地址转换)主要用来修改数据包的IP地址、端口号等信息,nat表对应的内核模块为iptable_nat,表内包含三个链,即PREROUTING、POSTROUTING、OUTPUT。
  4. 4)Filter表:用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包,Filter表对应的内核模块为iptable_filter,表内包含三个链,即INPUT、OUTPUT、FORWARD。

注意:当数据包抵达防火墙时,将依次应用 raw表、mangle表、nat表、filter表中对应链内的规则(如果存在),应用顺序为 raw----mangle----nat-----filter。默认顺序是filter表

规则链:

在处理数据包时,根据防火墙规则的不同介入实际,iptables默认划分五个不同的规则链,这五种的名称,项目如下

  1. INPUT:处理入站数据包
  2. OUTPUT:处理出站数据包
  3. FORWARD:处理转发数据包
  4. POSTROUTING:在进行路由选择后处理数据包(内转外、源地址转换)
  5. PREROUTING :在进行路由选择前处理数据包(外传内,目标地址转换)

规则链之间的顺序:

PREROUTING-------INPUT----FORWARD---OUTPUT---POSTROUTING

根据规则链大额划分原则·1,不同链的处理时间是比较固定的,因此规则链之间大额应用顺序取决于数据包的流向。

  1. 1,入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING(是否修改数据包地址等),然后进行路由选择(判断该数据包该发往何处):如果数据包的目的地址是防火墙本机(如internet用户访问网关大额web服务器端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后在交给系统上层应用程序(如httpd服务器)进行响应。(处理顺序:PREROUTING链→INPUT链)
  2. 转发数据流向:来自外界的数据包到达防火墙后,首相被PREROUTING链处理,然后在进行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发或链接、丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。(处理顺序:PREROUTING链→FORWARD链→POSTROUTING链)
  3. 出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理,然后进行路由选择,在交给POSTROUTING链(是否修改数据包的地址等)进行处理(处理顺序:OUTPUT链→POSTROUTING链)

规则链内部各条防火墙规则之间的顺序:

匹配即停止的原则,当数据包经过每条规则链时,依次按第一条规则,第二条规则。。。的顺序进行匹配和处理,链内的过滤遵循“匹配即停止” 原则,一旦找不到一条相匹配的规则(使用LOG日志操作的规则除外),则不在检擦本链内后续的其他规则,通过比对完整的链,也找不到与数据包相匹配的规则,就安装该规则的默认策略进行处理。

编写防火墙规则:

  1. 基本语法,数据包控制类型:

使用iptables命令管理,编写防火墙规则时,基本命令格式如下:

Iptables[-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

表名,链名:用来指定iptables命令所操作的表和链,未指定表名时将默认使用filtar表。

管理选项: iptables规则的操作方式,比如插入,增加,删除,查看等。

匹配条件: 指定要处理的数据包特征,不符合指定条件的数据包将不会处理

控制类型:指的是数据包的处理方式,比如允许,拒绝,丢弃等。

对于控制类型,都有哪些?

  1. ACCEPT:允许数据包通过
  2. DROP: 直接丢弃数据包,不会给出任何回应信息
  3. REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应信息
  4. LOG :在/var/log/messqges 文件中记录日志信息,然后将数据包传递给下一条规则。“匹配即停止”对LOG操作来说就是一个特例,因为LOG只是一个辅助动作,并没有真正处理数据包。

操作实例

在filter表(-t filter )的INPUT 链中插入(-l )一条规则,拒绝(-j REJECT)发给本机的使用ICMP协议的数据包(-p icmp)

iptanles -t filter -I INPUT -p icmp -j REJECT

上述操作产生的直接效果是其他主机无法ping通本机。

防火墙中,添加,查看,删除,等基本操作:

iptables命令的管理控制选项

-A 在指定链的末尾添加(append)一条新的规则

-D  删除(delete)指定链中的某一条规则,可以按规则序号和内容删除

-I 在指定链中插入(insert)一条新的规则,默认在第一行添加

-R  修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换

-L  列出(list)指定链中所有的规则进行查看

-E  重命名用户定义的链,不改变链本身

-F  清空(flush)

-N  新建(new-chain)一条用户自己定义的规则链

-X  删除指定表中用户自定义的规则链(delete-chain)

-P  设置指定链的默认策略(policy)

-Z 将所有表的所有链的字节和数据包计数器清零

-n  使用数字形式(numeric)显示输出结果

-v  查看规则表详细信息(verbose)的信息

-V  查看版本(version)

-h  获取帮助(help

--line-numbers:查看规则列表时,同时显示规则在链中的顺序号

! 对命令结果取反

-j 选择操作类型

-p 选择协议

添加新规则:

添加新的防火墙规则时,使用管理选项 -A -I ,谴责用来追加规则,后来着用来插入规则。

例如:如果要filter表INPUT链的末尾添加一条防火墙规则,可以执行什么操作?(作为匹配条件,我们选tcp)

iptables -t filter -A INPUT -p tcp -j ACCEPT

使用-I 选项时,允许同时自定义添加规则顺序号,为指定序列号时默认作为第一条

例如:添加两条规则将分别位于filter表大额第一条,第二条。

iptables -I INPUT -p udp -j ACCEPT=iptables -t filter -p udp -j ACCEPT

iptables -I INPUT 2 -p icmp -j ACCEPT

查看防火墙规则列表

iptables -L INPUT --line-numbers #查看

iptables -n -L INPUT --line-numbers #数字形式

删除filter表中INPUT链中的第三条规则

iptables -D INPUT 4

清除filter表中的所有防火墙规则

iptables -F

指定表删除

iptables -t net -F

iptables -t mangle -F

设置默认策略:

iptables的各条链中,默认策略是规则匹配的最后一个缓解,当找不到任何一条能个匹配的数据包规则时,则执行默认策略,默认策略的控制类型为ACCEPT,DROP。

例如:执行操作可以将filter表中FORWARD链的默认策略设为丢弃,OUTPUT链默认策略为允许:

iptables -t filter -P FOPWARD DROP

iptables -P OUTPUT ACCEPT

注意事项:

不指定表名时,默认指filter表。

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

除非设置链的默认策略,否则必须指定匹配条件。

选项,链名,控制类型使用大写字母,其他均为小写。

规则匹配条件:

三大类:通用匹配,隐含匹配。显示匹配

作用:防火墙对符合什么条件的数据包进行处理,避免“误杀”。

  1. 通用匹配:也称之为常规匹配,可以独立使用,不依赖于其他条件或扩展模块,常见的通用匹配包括,协议匹配,地址匹配,网络接口匹配。
  2. 协议匹配:编写防火墙规则的时候“-p协议名称”来指定,用来检擦数据包所使用的网络协议(--protocol)如tcp,udp,icmp和all(针对所有IP数据包)等。可用的协议类型存放于LINUX系统的/etc/protocol文件中

例如:若要丢弃通过icmp协议访问防火墙的数据包,允许转发经过防火墙的除icmp协议之外的数据包,可以执行什么操作?

iptables -I INPOT -p icmp -j DROP

iptables -I FORWARD -p icmp ! -j ACCEPT

  1. 地址配置:编写防火墙规则时使用“-s”源地址或“-d 目标地址”的形式指定1.用来检擦数据包的源地址(--source)或目标地址(--destination)。IP地址,王大大地址等都是可以接收的,但不建议使用主机名,域名地址(解析过程或影响效率)。

例如:若要拒绝转发源地址为192.168.1.11的数据,允许转发源地址位于192.168.7.0/24网段的数据,可以执行什么操作?

iptables -A FORWARD -s 1921.68.1.11 -j REJECT

iptables -A FORWARD -s 1921.68.7.0/24 -j REJECT

网络接口匹配:编写防火墙规则时,使用“-i 接口名”和“-o 接口名”的形式,用于检擦数据包从防火墙的那一个接口进入或发出,分为对应入站网卡(--in-interface),出站网卡(--out-interface)。

例如:若要丢弃从外网网口(ens36)访问防火墙本机且源地址为私有地址的数据包,可以执行什么操作。

iptables -A INPUT -i ens36 -s 10.0.0.0/8 -j DROP

iptables -A INPUT -i ens36 -s 172.16.0.0/16 -j DROP

iptables -A INPUT -i ens36 -s 192.168.0.0/24 -j DROP

  1. 隐含匹配:要求指定协议匹配1作为前提条件,相当于子条件,不能独立使用,常见的隐含匹配包括,端口匹配,TCP标记匹配,ICMP类型匹配。
    1. 隐含匹配:编写iptables规则时使用“--sport 源端口”或“--dport 目标端口”的形式,针对的协议为TCP和UDP,用来检查数据包的源端口(--source-port)或目标端口(--destination-port)。单个端口号或者以冒号“:”分割的端口范围都是可以接受的,但不连续的多端口的能采用这种方式。

列如:若要允许网段192.168.4.0/24转发DNS查询的数据包,可以执行什么操作?

[root@localhost ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

[root@localhost ~]# iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT

例如:构建vsftpd服务器时,若要开发20,21端口,以及用于被动模式的端口范围

24300-24600,可以执行什么操作?

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

iptables -A INPUT -p tcp --dport 14300:24600 -j ACCEPT

  1. ICMP类型匹配:编写防火墙规则是使用“--icmp-tyoe ICMP类型”的形式,针对的协议ICMP,用来检查ICMP数据包的类型(--icmp-type)。ICMP类型使用字符串或数字代码表示,如“Echo-Request请求(代码为8)”,“Destination-Unreachable 目标不可达(代码为3)”,分别对应ICMP协议的请求,回显,目标不可达。

例如:若要禁止从其它主机ping本机,但是允许本机ping其他主机,可以执行什么操作?

iptables -A INPUT -p icmp --icmp-typs 8 -j DROP

iptables -A INPUT -p icmp --icmp-typs 3 -j DROP

iptables -A INPUT -p icmp --icmp-typs 0 -j DROP

iptables -A INPUT -p ICMP -j DROP

  1. 显式匹配:这种匹配方式要求有额外的内核模块提供支持,必须手动以"-m模块名称"的形式调用相应的模块,然后方可设置匹配条件。添加了带显式匹配条件的规则以后,可以执行"Ismod .l grep xt_“命令查看到相关的内核扩展模块(如 xt_multiport、xt_iprange、xt_mac、 xt_state)。常见的显式匹配包括多端口匹配、IP范围匹配、MAC地址匹配、状态匹配。
    1. (1)多端口匹配编写iptables规则时使用“-m multiport --dports端口列表”、“-m multiport – sports端口列表”的形式,用来检查数据包的源端口、目标端口,多个端口之间以逗号进行分隔。
    2. 例如,―若要允许本机开放25、80、110、143端口,以便提供电子邮件服务,可以执行以下操作。
      1. iptables -A INPUT -p tcp -m multiport --dport 25,,80,110,143 -j ACCEPT
  • (2)IP范围匹配:编写iptables 规则时使用"-m iprange --src-range lP范围”、“-m iprange --dst-range lP范围”的形式,用来检查数据包的源地址、目标地址,其中IP范围采用"起始地址-结束地址”的形式表示。
    1. 例如,若要允许转发源IP地址位于192.168.4.21与192.168.4.28之间的TCP数据句,可以执行以下操作。
    2. iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
  • (3)MAC地址匹配:编写 iptables规则时使用“-m mac --mac-source MAC地址”的形式,用来检查数据包的源MAC地址。由于MAC地址本身的局限性,此类匹配条件一般只适用于内部网络。
    1. 例如,若要根据MAC地址封锁主机,禁止其访问本机的任何应用,可以参考以下操作。
    2. iptables -A INPUT -p tcp -m mac --mac-source 本地mca地址 -j DROP
  • (4)状态匹配:编写 iptables规则时使用"-m state --state连接状态”的形式,基于iptables的状态跟踪机制用来检查数据包的连接状态(State)。常见的连接状态包括NEW(与任何连接无关的)、ESTABLISHED(响应请求或者已建立连接的)和RELATED(与已有连接有相关性的,如FTP数据连接)。
    1. 例如,若要禁止转发与正常TCP连接无关的非–syn请求数据包(如伪造的网络攻击数据包),可以执行以下操作。
    2. iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
    3. 若之开发本机的web服务端口(80端口),但对发给本机的TCP应答数据包予以放行,其他入站数据包均丢弃,则对应的入站控制规则可以执行什么操作?
    4. iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
    5. iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
    6. iptables -P INPUT DROP

filewalld转iptables防火墙

systemctl stop firewalld

yum -y install iptables*

vim /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dpo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值