Linux服务器安全加固,如何禁止特定IP访问(保姆级教程)

admin

在运维工作中,我们经常会遇到服务器被恶意扫描、DDoS攻击或者是某个IP频繁尝试暴力破解密码的情况,为了保障服务器的安全,最直接有效的方法之一就是封禁(禁止)该IP的访问权限。

在Linux系统中,实现禁止一个IP访问的方法有很多,通常取决于你使用的防火墙工具(如iptables、firewalld)以及服务类型(如Web服务、SSH服务等),本文将详细介绍几种常用的方法,帮助你快速屏蔽恶意IP。


使用 iptables(传统且通用)

iptables 是Linux内核中著名的包过滤防火墙工具,几乎适用于所有Linux发行版,它是底层防御的第一道防线。

Linux服务器安全加固,如何禁止特定IP访问(保姆级教程)

添加禁止规则 假设我们要禁止的IP地址是 168.1.100,请在终端执行以下命令:

iptables -A INPUT -s 192.168.1.100 -j DROP

命令解析:

  • -A INPUT:表示在 INPUT 链(进入服务器的数据包)的末尾添加一条规则。
  • -s 192.168.1.100:指定源IP地址为 168.1.100
  • -j DROP:如果数据包匹配该规则,直接丢弃数据包,不发送任何回复。

查看规则是否生效 你可以使用 -L 参数查看当前的防火墙规则列表:

iptables -L -n

在输出结果中,你应该能看到类似 DROP 的动作出现在该IP对应的行。

持久化保存 如果服务器重启,上述规则可能会丢失,为了永久生效,你需要保存规则(具体命令取决于你的系统版本):

  • CentOS 6/旧版系统:

    service iptables save
  • CentOS 7/8/9 或 Ubuntu/Debian: 通常使用 iptables-persistentnetfilter-persistent

    # Ubuntu/Debian
    apt-get install iptables-persistent
    netfilter-persistent save
    # CentOS/RHEL
    yum install iptables-services
    service iptables save

删除规则 如果需要解封该IP,使用 -D 参数(删除):

iptables -D INPUT -s 192.168.1.100 -j DROP

使用 firewalld(现代RHEL/CentOS默认)

如果你使用的是CentOS 7、8或9,系统默认使用的是 firewalld,相比iptables,它更易于管理区域和端口。

添加直接规则 firewalld 禁止特定IP通常使用 --direct 参数来添加内核级的过滤规则:

firewall-cmd --permanent --direct --add-rule=ipv4 filter INPUT 0 -s 192.168.1.100 -j DROP

命令解析:

  • --permanent:表示永久生效,重启后依然有效。
  • --direct:直接向内核传递规则。
  • ipv4 filter INPUT 0:指定协议为IPv4,操作在 INPUT 链,优先级为0。

重新加载防火墙 添加规则后,必须执行重新加载命令才能立即生效:

firewall-cmd --reload

查看规则

firewall-cmd --direct --get-rules ipv4 filter INPUT

针对Web服务(Nginx/Apache)禁止IP

如果你的服务器主要运行Web服务(如Nginx或Apache),且恶意流量主要来自Web层,直接在Web服务器配置中禁止IP往往更精准,且不会影响SSH等底层连接。

Nginx 禁止IP访问 编辑Nginx配置文件(通常在 `/etc/nginx/nginx.conf

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码