iptables防火墙规则


简介

iptables 是一个用于配置 Linux 内核防火墙规则的工具。它是一个强大而灵活的工具,可以用于定义数据包的过滤规则、网络地址转换 (NAT)、端口转发等。iptables 提供了一种对网络流量进行细粒度控制的方式,可以用于保护系统免受网络攻击,限制网络访问,实现网络地址转换等功能。

基本的 iptables 概念和使用方法:

  1. 表(Tables): iptables 有四个主要的表,分别是:

    • filter 表: 用于过滤数据包,决定是否允许或拒绝数据包通过。
    • nat 表: 用于网络地址转换,例如,将私有 IP 地址映射到公共 IP 地址。
    • mangle 表: 用于修改数据包的特定字段,如 TTL(生存时间)。
    • raw 表: 用于配置连接跟踪表规则。
  2. 链(Chains): 每个表包含一些链,链是规则的集合,用于定义数据包的处理流程。常见的链包括

    • INPUT(处理输入数据包)
    • OUTPUT(处理输出数据包)
    • FORWARD(处理转发数据包)
  3. 规则(Rules): 规则定义了数据包的匹配条件以及匹配条件满足时应该执行的动作。每个规则包含一个匹配条件和一个动作。常见的动作包括 :

    • ACCEPT(允许通过)
    • DROP(丢弃数据包)
    • REJECT(拒绝数据包并发送拒绝信息)
  4. 目标(Target): 目标是规则执行时的动作,例如 ACCEPT、DROP 等。目标指定了数据包应该如何处理。

iptables的一些常用规则

一、清空规则并设置默认链策略

清空现有规则:

iptables -F

设置默认链策略为DROP:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

二、屏蔽指定的IP地址

屏蔽指定IP地址(例如BLOCK_THIS_IP):

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
# 或仅屏蔽来自该IP的TCP数据包
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

三、允许Ping测试

允许外部对本机进行Ping测试:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

允许本机Ping外部主机:

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

四、允许环回访问

允许本机的环回访问:

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

五、允许SSH连接请求

允许所有来自外部的SSH连接请求:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允许本机发起的SSH连接:

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

六、允许HTTP和HTTPS连接请求

# 允许HTTP连接: 80端口
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

# 允许HTTPS连接: 443端口
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

七、允许出站DNS连接

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

八、允许NIS连接

# 获取NIS相关端口
rpcinfo -p | grep ypbind

# 允许连接到111端口的请求数据包,以及ypbind使用到的端口
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

九、允许IMAP和IMAPS

# 允许IMAP连接: 143端口
iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

# 允许IMAPS连接: 993端口
iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

十、允许POP3和POP3S

# 允许POP3连接: 110端口
iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

# 允许POP3S连接: 995端口
iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

十一、防止DoS攻击

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

十二、转发与NAT

1. 允许路由

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

2. DNAT与端口转发

# 启用DNAT转发
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to-destination 192.168.102.37:22
# 允许连接到422端口的请求
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

3. SNAT与MASQUERADE

SNAT:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.5.3

MASQUERADE:

iptables -t nat -A POSTROUTING -s 10.8.0.

0/255.255.255.0 -o eth0 -j MASQUERADE

4. 负载平衡

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

十三、自定义链记录丢弃的数据包

# 新建名为LOGGING的链
iptables -N LOGGING
# 将所有来自INPUT链中的数据包跳转到LOGGING链中
iptables -A INPUT -j LOGGING
# 指定自定义的日志前缀"IPTables Packet Dropped: "
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
# 丢弃这些数据包
iptables -A LOGGING -j DROP

以上是一些常用的iptables规则和设置,可以根据实际需求进行适当调整。iptables的配置需要谨慎,确保不影响正常的网络通信。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XMYX-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值