IPTABLES 学习笔记【2】

大佬博客, 我就是记个笔记


高级限制

时间(times)

# --timestart:用于指定时间范围的开始时间,不可取反
# --timestop:用于指定时间范围的结束时间,不可取反

# --datestart:用于指定日期范围的开始日期,不可取反
# --datestop:用于指定日期范围的结束时间,不可取反

# --weekdays:用于指定”星期几”,可取反
# --monthdays:用于指定”几号”,可取反

# 9:00 - 19:00 不能访问 http 和 https
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT
iptables -t filter -I OUTPUT -p tcp --dport 443 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT

# 周六周日, 不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --weekdays 6,7 -j REJECT
# 22,23 号, 不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --monthdays 22,23 -j REJECT
# 除 22,23 号, 不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time ! --monthdays 22,23 -j REJECT
# 9:00 - 18:00, 周六周日不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j REJECT
# 22,23,24,25,26,27,28 号中的周五, 不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --weekdays 5 --monthdays 22,23,24,25,26,27,28 -j REJECT
# 2020-01-01 - 2021-01-01 不能访问 http
iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --datestart 2020-01-01 --datestop 2021-01-01 -j REJECT

限制连接数量(connlimit)

# 单 IP 访问 22 端口, 超过两个, 其他拒绝
iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT

# --connlimit-mask, 子网掩码位数
# 相同网段掩码的 IP, 同时访问不超过 2 个
iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -m connlimit --connlimit-above 2 --conlimit-mask 27 j REJECT

限制数据包频率(limit)

涉及"令牌桶"概念
我们可以这样想象,有一个木桶,木桶里面放了5块令牌,而且这个木桶最多也只能放下5块令牌,所有报文如果想要出关入关,都必须要持有木桶中的令牌才行,这个木桶有一个神奇的功能,就是每隔6秒钟会生成一块新的令牌,如果此时,木桶中的令牌不足5块,那么新生成的令牌就存放在木桶中,如果木桶中已经存在5块令牌,新生成的令牌就无处安放了,只能溢出木桶(令牌被丢弃),如果此时有5个报文想要入关,那么这5个报文就去木桶里找令牌,正好一人一个,于是他们5个手持令牌,快乐的入关了,此时木桶空了,再有报文想要入关,已经没有对应的令牌可以使用了,但是,过了6秒钟,新的令牌生成了,此刻,正好来了一个报文想要入关,于是,这个报文拿起这个令牌,就入关了,在这个报文之后,如果很长一段时间内没有新的报文想要入关,木桶中的令牌又会慢慢的积攒了起来,直到达到5个令牌,并且一直保持着5个令牌,直到有人需要使用这些令牌,这就是令牌桶算法的大致逻辑

# --limit 10/minute 每分钟允许 10 个包通过
# 还可以是 /second /hour /day
iptables -t filter -I INPUT 2 -p icmp -m limit --limit 10/minute -j ACCEPT

# 对桶内最多装多少令牌进行限制, "桶内最多装 3 块令牌"
iptables -t filter -I INPUT 2 -p icmp -m limit --limit-burst 3 --limit 10/minute -j ACCEPT

根据tcp报文标志位做限制(tcp --tcp-flags)





ping限制(icmp)

# 限制所有 ping 包
iptables -t filter -A INPUT -p icmp -j ACCEPT

# 能 ping 别人, 不能 ping 自己
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT

根据报文状态限制(stat)

stat 模块把报文分为 5 个状态

  • NEW, 连接中的第一个包
  • ESTABLISHED, NEW 后边的所有包
  • RELATED, 有关联性的包
  • INVALID, 非正常状态
  • UNTRACKED, 非正常状态
# 为了防止别人主动连接我们, 所以我们只放行 ESTABLISHED 状态的包即可(有特殊情况可以放开 REELATED 限制)
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

动作

修改响应(–reject-with)

  • 默认情况
    • 在不指定 --reject-with 的情况下, 显示 icmp-port-unreachable 在这里插入图片描述
  • 指定返回信息
    • icmp-net-unreachable
    • icmp-host-unreachable
    • icmp-port-unreachable
    • icmp-proto-unreachable
    • icmp-net-prohibited
    • icmp-host-pro-hibited
    • icmp-admin-prohibited
      在这里插入图片描述

总结

  • 顺序很重要, 链顺序, 表顺序, 规则条目顺序
  • 相同服务的规则, 严格的放在后边
  • 相同严格的情况下, 被匹配次数多的放在后边
  • 同一条目中多个匹配条件是的关系
  • 作为防火墙要考虑双向性, 内->外, 外->内
  • 默认策略建议为ACCEPT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值