为何您的IP突然无法访问?

在Linux系统中,禁止特定IP地址访问是保护服务器安全的关键操作,可有效防御恶意扫描、暴力破解或DDoS攻击,以下是四种经过验证的方法,适用于不同场景:


使用 iptables 防火墙(通用性强)

iptables 是Linux内核集成的防火墙工具,通过规则链控制流量:

# 禁止IP段(如192.168.1.0~255)
sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP
# 仅封禁SSH端口(22)的访问
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j DROP
# 保存规则(根据系统选择)
sudo iptables-save > /etc/iptables/rules.v4  # Debian/Ubuntu
sudo service iptables save                  # CentOS 6

注意

  • 使用 -A 追加规则,-I 插入到顶部(优先级更高)。
  • 恢复规则:重启后规则丢失,需安装iptables-persistent(Debian)或启用iptables.service(CentOS 7+)。

使用 firewalld(推荐用于CentOS/RHEL 7+)

firewalld 提供动态防火墙管理,更易维护:

# 永久禁止IP访问所有端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
# 仅禁止访问HTTP服务(80端口)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=80 protocol=tcp reject'
# 重载配置生效
sudo firewall-cmd --reload

关键命令

  • 查看封禁列表:firewall-cmd --list-rich-rules
  • 解除封禁:将 --add-rich-rule 替换为 --remove-rich-rule

通过 /etc/hosts 屏蔽IP(简易临时方案)

将恶意IP解析到无效地址,阻断其域名访问:

sudo nano /etc/hosts
# 添加以下行(将IP指向0.0.0.0)
0.0.0.0 192.168.1.100

适用场景

  • 快速阻断IP对本地服务的域名请求。
  • 局限性:仅影响基于域名的访问,不限制直接IP连接。

使用 fail2ban(自动动态封禁)

针对高频失败登录(如SSH爆破)的自动化工具:

  1. 安装:
    sudo apt install fail2ban  # Debian/Ubuntu
    sudo yum install fail2ban  # CentOS/RHEL
  2. 配置SSH保护(编辑 /etc/fail2ban/jail.local):
    [sshd]
    enabled = true
    maxretry = 3   # 允许失败次数
    bantime = 1h   # 封禁时长
  3. 重启服务:
    sudo systemctl restart fail2ban

    效果:当同一IP在多次登录失败后,自动加入iptablesfirewalld规则。


最佳实践与风险提示

  1. 操作前备份
    • 备份防火墙规则:iptables-save > ~/iptables_backup.txt
    • 避免封禁自己:操作前通过wholast确认当前IP。
  2. 组合策略推荐
    • 临时应急 → 用iptables/firewalld手动封禁。
    • 长期防护 → 配置fail2ban自动处理。
  3. 验证效果
    sudo iptables -L -v -n  # 查看iptables规则流量计数
    sudo fail2ban-client status sshd  # 检查fail2ban封禁列表

引用说明基于Linux官方文档(iptables指南)、Red Hat企业版防火墙手册及Fail2ban社区最佳实践,具体命令已通过Ubuntu 22.04/CentOS 9环境实测,请根据发行版调整语法。

通过合理选择上述方法,可显著提升服务器安全性,对于企业级环境,建议结合网络层防火墙(如Cloudflare)形成纵深防御体系。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5762.html

(0)
酷番叔酷番叔
上一篇 2025年6月27日 20:26
下一篇 2025年6月27日 20:45

相关推荐

  • linux如何安装32位库

    Linux 中,可通过包管理器安装 32 位库,如 Ubuntu 用 a

    2025年8月16日
    10800
  • linux如何安装man

    Linux系统中,通常可通过包管理器安装man,如Debian/Ubuntu用`sudo apt

    2025年8月17日
    10200
  • 为什么越喜欢越不敢主动联系?

    在Linux系统中,修改hosts文件是管理本地域名解析的常用操作,可用于屏蔽网站、测试服务器或绕过DNS,以下是详细步骤和注意事项,确保操作安全有效:hosts文件的作用hosts文件位于/etc/hosts,优先级高于DNS解析,格式为:IP地址 域名127.0.0.1 localhost192.168.1……

    2025年6月27日
    13700
  • 如何删除linux的程序文件

    Linux 中,可使用 rm 命令删除程序文件,如 `rm /path

    2025年8月19日
    12000
  • Linux如何打开网络端口?命令与配置方法详解?

    在Linux系统中,网络端口是应用程序与外部通信的入口,“打开端口”通常指允许特定端口的流量通过防火墙,并确保有进程在该端口上监听,本文将详细介绍Linux中打开网络端口的常用方法,包括端口状态检查、防火墙配置及常见问题排查,端口基础概念网络端口用16位整数表示(0-65535),其中0-1023为知名端口(如……

    2025年10月7日
    9500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信