Linux基础入门:⑩防火墙管理

iptables介绍

从逻辑分类防火墙
主机防火墙 针对单个主机进行防护
网络防火墙 处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网
从物理分类防火墙
硬件防火墙 在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高
软件防火墙 应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低

iptables从根本意义上来说并不是防火墙,而是一个客户端工具,netfilter才是防火墙真正的安全框架,netfilter位于内核空间。

iptables四表五链

四表
filter表 负责过滤功能,防火墙;内核模块:iptables_filter
nat表 network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表 拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw表 关闭nat表上启用的连接追踪机制;iptable_raw
五链
PREROUTING |raw表,mangle表,nat表
INPUT |mangle表,filter表,(centos7中还有nat表,centos6中没有
FORWARD |mangle表,filter表
OUTPUT |raw表,mangle表,nat表,filter表
POSTROUTING |mangle表,nat表
优先级次序(由高而低):raw --> mangle --> nat --> filter

iptables基本用法

处理动作作用
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息
SNAT源地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
DNAT目标地址转换
REDIRECT在本机做端口映射
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
选项作用
-A在指定链尾部添加规则
-D删除匹配的规则
-R替换匹配的规则
-I在指定位置插入规则(例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上)
-L/S列出指定链或所有链的规则
-F删除指定链或所有链的规则
-N创建用户自定义链[例:iptables -N allowed]
-X删除指定的用户自定义链
-P为指定链设置默认规则策略,对自定义链不起作用
-Z将指定链或所有链的计数器清零
-E更改自定义链的名称[例:iptables -E allowed disallowed]
-nip地址和端口号以数字方式显示[例:iptables -nL]
常用规则匹配器作用
-ptcp/udp/icmp/all匹配协议,all会匹配所有协议
-s addr[/mask]匹配源地址
-d addr[/mask]匹配目标地址
–sportport1[:port2]匹配源端口(可指定连续的端口)
–dportport1[:port2]匹配目的端口(可指定连续的端口)
-o interface匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT(例:iptables -AFORWARD -o eth0)
-i interface匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。
–icmp-type匹配icmp类型(使用iptables -p icmp -h可查看可用的ICMP类型)
–tcp-flags maskcomp匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记。(例:iptables-A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT 表示匹配SYN和ACK标记的数据包)

iptables命令

命令作用
iptables -A将一个规则添加到链末尾
iptables -D将指定的链中删除规则
iptables -F将指定的链中删除所有规则
iptables -I将在指定链的指定编号位置插入一个规则
iptables -L列出指定链中所有规则
iptables -t nat -L列出所有NAT链中所有规则
iptables -N建立用户定义链
iptables -X删除用户定义链
iptables -P修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)
命令参数作用
–dport指定目标TCP/IP端口 如 –dport 80
–sport指定源TCP/IP端口 如 –sport 80
-p tcp指定协议为tcp
-p icmp指定协议为ICMP
-p udp指定协议为UDP
-j DROP拒绝
-j ACCEPT允许
-j REJECT拒绝并向发出消息的计算机发一个消息
-j LOG在/var/log/messages中登记分组匹配的记录
-m mac –mac绑定MAC地址
-m limit –limit 1/s 1/m设置时间策列
-s 192.168.1.153或192.168.1.0/24指定源地址或地址段
-d 192.168.1.153或192.168.1.0/24指定目标地址或地址段
-s ! 192.168.1.0指定源地址以外的

iprange扩展模块

使用iprange扩展模块可以指定"一段连续的IP地址范围",用于匹配报文的源地址或者目标地址。
iprange扩展模块中有两个扩展匹配条件可以使用
–src-range:源地址范围
–dst-range:目标地址范围

string扩展模块

使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。
-m string:表示使用string扩展模块
–algo:用于指定匹配算法,可选的算法有bm与kmp,此选项为必须选项,我们不用纠结于选择哪个算法,但
是我们必须指定一个。
–string:用于指定需要匹配的字符串。

time扩展模块

过time扩展模块,根据时间段区匹配报文,如果报文到达的时间在指定的时间范围以内,则符合匹配条件。
-m time:表示使用time扩展模块
–timestart:选项用于指定起始时间,00:00:00格式时分秒。
–timestop:选项用于指定结束时间。
–weekdays:选项用于用数字指定星期几,还能用缩写表示,例如:Mon, Tue, Wed,Thu, Fri, Sat, Sun
–monthdays,–datestart,–datestop:指定日期范围

connlimit扩展模块

connlimit扩展模块,可以限制每个IP地址同时链接到server端的链接数量,注意:我们不用指定IP,其默认就
是针对"每个客户端IP",即对单IP的并发连接数限制。一般和协议、端口配合使用
–connlimit-above:限制连接上限
–connlimit-mask:按照网段限制连接上限

limit扩展模块

limit模块对"报文到达速率"进行限制,我们可以以秒为单位进行限制,也可以以分钟、小时、天作为单位进行限
制。
–limit限制比较有意思,主要用来限制单位时间内可以流入的数据包的数量。
使用"–limit"选项时,可以选择的时间单位有多种,如下 /second /minute /hour /day

tcp-flags模块

–tcp-flags指的就是tcp头中的标志位,看来,在使用iptables时,我们可以通过此扩展匹配条件,去匹配tcp报
文的头部的标识位,然后根据标识位的实际情况实现访问控制的功能。在网络部分我们讲了三次握手,四次挥手,讲
了TCP的包头,这里主要指tcp包头中的标志位,SYN,ACK,FIN,RST,URG,PSH。

state扩展

state是一个非常重要的扩展,可以基于连接追踪功能去查看每一报文当前所处的状态。不论什么协议,客户端
第一次访问时,服务器会去内核内存中的追踪表查看他之前是否来过,查不到就证明是第一次来,记录入追踪表,如
果查到以前来过就不检查规则,直接允许访问,这称为连接追踪机制。

白名单、黑名单机制

报文在经过iptables的链时,会匹配链中的规则,遇到匹配的规则时,就执行对应的动作,如果链中的规则都无
法匹配到当前报文,则使用链的默认策略(默认动作),链的默认策略通常设置为ACCEPT或者DROP。那么,当链的默认策略设置为ACCEPT时,如果对应的链中没有配置任何规则,就表示接受所有的报文,如果对应的链中存在规则,但是这些规则没有匹配到报文,报文还是会被接受。
同理,当链的默认策略设置为DROP时,如果对应的链中没有配置任何规则,就表示拒绝所有报文,如果对应的
链中存在规则,但是这些规则没有匹配到报文,报文还是会被拒绝。所以,当链的默认策略设置为ACCEPT时,按照道理来说,我们在链中配置规则时,对应的动作应该设置为DROP或者REJECT,为什么呢?
因为默认策略已经为ACCEPT了,如果我们在设置规则时,对应动作仍然为ACCEPT,那么所有报文都会被放行了,因为不管报文是否被规则匹配到都会被ACCEPT,所以就失去了访问控制的意义。所以,当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单"机制。
同理,当链的默认策略为DROP时,链中的规则对应的动作应该为ACCEPT,表示只有匹配到规则的报文才会被放行,没有被规则匹配到的报文都会被默认拒绝,这就是"白名单"机制。
默认策略设置为DROP的缺点,在对应的链中没有设置任何规则时,这样使用默认策略为DROP是非常不明智的,因为管理员也会把自己拒之门外,即使对应的链中存在放行规则,当我们不小心使用"iptables -F"清空规则时,放行规则被删除,则所有数据包都无法进入,这个时候就相当于给管理员挖了个坑,所以,我们如果想要用"白名单"的机制,最好将链的默认策略保持为"ACCEPT",然后将"拒绝所有请求"这条规则放在链的尾部,将"行规则"放在前面,这样做,既能实现"白名单"机制,又能保证在规则被清空时,管理员还有机会连接到主机

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值