Linux 中使用 firewalld 或 iptables 设置黑名单,禁止指定 IP 连接特定端口

在 Linux 系统中,可以使用 firewalld 或者 iptables 来设置防火墙规则,以阻止特定 IP 地址连接到 MySQL 的默认端口 3306。下面是针对这两种工具的设置方法。

使用 firewalld 设置黑名单

firewalld 是一个动态管理防火墙的工具,它支持网络/防火墙区域(zones)的概念,可以为不同的连接和接口定义规则。

1. 安装并启动 firewalld

确保 firewalld 已安装并且正在运行:

sudo systemctl start firewalld
sudo systemctl enable firewalld
2. 添加拒绝规则

要拒绝来自某个特定 IP 地址(例如:192.168.1.100)对 3306 端口的访问,你可以添加一条直接规则:

sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -p tcp --dport 3306 -j REJECT

这里:

  • --direct 表示我们直接操作内核规则。
  • --add-rule 后面跟着的是规则的具体参数。
  • ipv4 filter INPUT 指定这是 IPv4 的输入链规则。
  • 0 是规则优先级,数字越小优先级越高。
  • -s 192.168.1.100 是源地址。
  • -p tcp --dport 3306 指定协议和目标端口号。
  • -j REJECT 表示拒绝连接。
3. 使规则永久生效

为了让这条规则在系统重启后仍然有效,需要将其标记为永久:

sudo firewall-cmd --runtime-to-permanent

或者直接添加永久规则:

sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -p tcp --dport 3306 -j REJECT
sudo firewall-cmd --reload

使用 iptables 设置黑名单

如果你更倾向于使用 iptables,可以通过以下命令来实现相同的效果:

1. 检查 iptables 状态

首先确认 iptables 是否已经启用:

sudo iptables -L -n
2. 添加拒绝规则

要拒绝来自 192.168.1.100 对 3306 端口的访问,可以添加如下规则:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 3306 -j REJECT
3. 保存规则

为了让这些规则在系统重启后仍然有效,你需要保存它们。根据你的发行版不同,保存方式可能有所差异:

对于基于 Red Hat 的系统(如 CentOS, RHEL):

sudo service iptables save

对于 Debian 和 Ubuntu 系统:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

注意事项

  • 测试:在应用新的防火墙规则之前,最好先在一个非生产环境中进行测试,确保规则按预期工作。
  • 日志记录:考虑添加日志记录规则以便于故障排除。例如,在 REJECT 规则之前插入一条日志记录规则。
  • 备份现有规则:在修改防火墙规则前,建议备份当前配置,以防出现问题时能够快速恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学亮编程手记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值