【DevOps】Ubuntu防火墙配置:如何封禁黑客攻击源IP

2024-05-10 09:28

本文主要是介绍【DevOps】Ubuntu防火墙配置:如何封禁黑客攻击源IP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在网络安全防护的实践中,及时识别并封锁恶意攻击的IP地址是至关重要的。本文将指导您如何使用Ubuntu系统的防火墙工具有效地封禁那些试图侵入网络的黑客IP。通过详细的步骤和实用的命令,即使是初学者也能轻松掌握如何配置防火墙,增强您的网络安全防护墙。接下来,让我们一起学习如何在Ubuntu上实施这些关键的安全措施。

目录

一、UFW防火墙

1、安装 UFW

2、启用 UFW

3、禁用 UFW

4、检查 UFW 状态

5、设置默认策略

6、添加规则

允许传入服务或端口

拒绝传入连接

7、删除规则

8、启用日志

9、其他命令

二、怎么封攻击的IP地址

1、查找Web日志,发现攻击的IP

日志字段解释

综合解释

2、使用防火墙禁止访问

添加规则

使用编号规则

完整示例

3、规则没起作用怎么办?

移动规则的方法


一、UFW防火墙

在 Ubuntu 20.04 中,默认的防火墙工具是 UFW(Uncomplicated Firewall,简单防火墙)。它提供了一个易于使用的命令行界面来管理防火墙规则。

1、安装 UFW

通常情况下,UFW 已经预装在 Ubuntu 上。如果没有,可以手动安装:

sudo apt update
sudo apt install ufw

2、启用 UFW

启用防火墙:

sudo ufw enable

3、禁用 UFW

如果需要临时关闭防火墙:

sudo ufw disable

4、检查 UFW 状态

查看防火墙规则以及当前的活动状态:

sudo ufw status

显示活动状态和详细信息:

sudo ufw status verbose

5、设置默认策略

默认情况下,防火墙默认策略是拒绝所有传入的连接并允许所有传出的连接:

sudo ufw default deny incoming
sudo ufw default allow outgoing

6、添加规则

通过以下命令可以添加允许或拒绝的规则。

允许传入服务或端口
  • 允许所有来自特定端口的传入连接,例如 HTTP(端口 80)和 HTTPS(端口 443):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  • 允许通过服务名称(如果 /etc/services 中有定义):
sudo ufw allow http
sudo ufw allow https
  • 允许特定 IP 地址访问特定端口:
sudo ufw allow from 192.168.1.100 to any port 22
  • 允许特定子网访问特定端口:
sudo ufw allow from 192.168.1.0/24 to any port 22
拒绝传入连接
  • 拒绝所有来自特定端口的传入连接:
sudo ufw deny 80/tcp
  • 拒绝特定 IP 地址访问特定端口:
sudo ufw deny from 192.168.1.100 to any port 22

7、删除规则

使用与添加规则相同的语法来删除规则,但使用 delete 关键字。例如:

sudo ufw delete allow 80/tcp
sudo ufw delete deny from 192.168.1.100 to any port 22

8、启用日志

启用 UFW 日志记录:

sudo ufw logging on

9、其他命令

  • 重载防火墙规则
sudo ufw reload
  • 重置防火墙(清除所有规则)
sudo ufw reset

二、怎么封攻击的IP地址

昨天一台在公网的测试Web服务器的CPU突然彪到95%,查了一下发现是有人在做CC攻击,短期内大量的访问我们的正常的URL,然后导致这台测试服务器的资源被占用,CPU达到95%。我们需要找出攻击的IP地址,然后开启防火墙阻止这个黑客的攻击。

1、查找Web日志,发现攻击的IP

使用nginx作为Web服务器的日志一般都放在/var/log/nginx目录下面。

找到这些日志,其中的有很多条相似的日志,短时间内访问量很大,IP是相同的,就可以怀疑不是正实用户的访问,让我们拿其中的一条日志来举例说明:

104.243.40.15 - - [07/May/2024:19:22:11 +0000] "GET /catalogsearch/result/ HTTP/1.1" 302 5 "https://www.google.com/search?hl=en&q=testing" "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
日志字段解释

104.243.40.15:

  • 访问者的 IP 地址。

-:

  • 通常用于表示用户的身份验证信息,如果没有身份验证信息就会显示 -

-:

  • 通常用于表示用户的身份验证用户名,如果没有身份验证用户名就会显示 -

[07/May/2024:19:22:11 +0000]:

  • 请求的日期和时间,格式为 [日/月/年:时:分:秒 时区]
  • 在这个例子中是 [07/May/2024:19:22:11 +0000]

"GET /catalogsearch/result/ HTTP/1.1":

  • 请求行,包含请求方法(GET)、请求的路径(/catalogsearch/result/)和 HTTP 版本(HTTP/1.1)。

302:

  • HTTP 状态码,表示请求的响应状态。
  • 302 是重定向状态码,表示资源已被临时移动到新的位置。

5:

  • 响应的字节数(响应体大小)。在这个例子中,只有 5 个字节。

"https://www.google.com/search?hl=en&q=testing":

  • 请求的引用来源(Referer),表示用户从哪个页面点击链接访问的当前页面。
  • 在这个例子中,用户从 Google 搜索页面访问。

"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)":

  • 用户代理字符串(User-Agent),表示请求客户端的详细信息。
  • 在这个例子中,用户代理字符串表明客户端是:
    • Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)
    • 这通常表示使用 Internet Explorer 7.0 模拟的浏览器(360 安全浏览器)。
综合解释

日志记录显示,在 2024 年 5 月 7 日 19:22:11(UTC 时间),来自 IP 地址 104.243.40.15 的用户使用客户端 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)" 访问了路径 /catalogsearch/result/。该请求是从 Google 搜索页面 "https://www.google.com/search?hl=en&q=testing" 中点击链接跳转过来的。

服务器返回了 HTTP 状态码 302,表示重定向,并返回了 5 个字节的响应体。由于状态码 302 表示重定向,请求被重定向到另一个页面。

因此我们发现这个IP104.243.40.15是攻击者的IP地址。

2、使用防火墙禁止访问

要使用 UFW 禁止特定 IP 地址的所有访问,可以添加一条 deny 规则。以下是添加规则并验证的步骤:

添加规则
  • 禁止 IP 地址 104.243.40.15 的所有访问

    sudo ufw deny from 104.243.40.15
    
  • 查看规则状态

    添加规则后,查看防火墙状态以确保规则已生效:

    sudo ufw status verbose
    

    输出应包含类似以下内容:

    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), disabled (routed)
    New profiles: skipTo                         Action      From
    --                         ------      ----
    Anywhere                   DENY        104.243.40.15
    
使用编号规则

如果你愿意,可以使用 numbered 规则查看并删除特定规则。

  • 查看规则编号

    sudo ufw status numbered
    
  • 删除特定规则

    例如,要删除编号为 [5] 的规则:

    sudo ufw delete 5
    
完整示例

以下是完整的防火墙规则配置示例,禁止特定 IP 地址的所有访问,并允许其他常用服务:

# 启用 UFW
sudo ufw enable# 禁止特定 IP 地址的所有访问
sudo ufw deny from 104.243.40.15# 允许 SSH
sudo ufw allow 22/tcp# 允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp# 查看 UFW 状态
sudo ufw status verbose

3、规则没起作用怎么办?

设完了以后,发现访问居然没有停止,难道是我们的规则没有起作用吗?这个时候我们需要来排查规则没有起作用的原因。在 UFW 中,规则的顺序很重要,规则是按照它们的添加顺序进行匹配的。为了确保特定的 IP 地址被禁止访问,你需要将 Deny 规则放在其他允许规则之前。

移动规则的方法
  • 列出带编号的规则

    使用 numbered 参数查看当前的所有规则并为每个规则分配一个编号。

    sudo ufw status numbered
    

    例如,将看到类似以下输出:

    Status: activeTo                         Action      From--                         ------      ----
    [ 1] 22                         ALLOW IN    Anywhere                  
    [ 2] 80                         ALLOW IN    Anywhere                  
    [ 3] 443                        ALLOW IN    Anywhere                  
    [ 4] 56678                      ALLOW IN    Anywhere                  
    [ 5] 80/tcp                     ALLOW IN    Anywhere                  
    [ 6] 22/tcp                     ALLOW IN    Anywhere                  
    [ 7] 2222/tcp                   ALLOW IN    Anywhere                  
    [ 8] 443/tcp                    ALLOW IN    Anywhere                  
    [ 9] Anywhere                   DENY IN     104.243.40.15             
    [10] 22 (v6)                    ALLOW IN    Anywhere (v6)             
    [11] 80 (v6)                    ALLOW IN    Anywhere (v6)             
    [12] 443 (v6)                   ALLOW IN    Anywhere (v6)             
    [13] 56678 (v6)                 ALLOW IN    Anywhere (v6)             
    [14] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
    [15] 22/tcp (v6)                ALLOW IN    Anywhere (v6)             
    [16] 2222/tcp (v6)              ALLOW IN    Anywhere (v6)             
    [17] 443/tcp (v6)               ALLOW IN    Anywhere (v6)             
    
  • 删除旧的 Deny 规则

    删除当前的 Deny 规则(根据编号,例如 [9]):

    sudo ufw delete 9
    
  • 重新添加 Deny 规则

    重新添加禁止特定 IP 地址的规则,以确保它在所有允许规则之前:

    sudo ufw insert 1 deny from 104.243.40.15
    

    insert 命令将规则插入到指定的位置。在这里,将 Deny 规则插入第一位,使其优先级最高。

  • 查看最终状态

    确认规则已正确生效并位于首位:

    sudo ufw status numbered
    

    例如:

    Status: activeTo                         Action      From--                         ------      ----
    [ 1] Anywhere                   DENY IN     104.243.40.15             
    [ 2] 22                         ALLOW IN    Anywhere                  
    [ 3] 80                         ALLOW IN    Anywhere                  
    [ 4] 443                        ALLOW IN    Anywhere                  
    [ 5] 56678                      ALLOW IN    Anywhere                  
    [ 6] 80/tcp                     ALLOW IN    Anywhere                  
    [ 7] 22/tcp                     ALLOW IN    Anywhere                  
    [ 8] 2222/tcp                   ALLOW IN    Anywhere                  
    [ 9] 443/tcp                    ALLOW IN    Anywhere                  
    [10] 22 (v6)                    ALLOW IN    Anywhere (v6)             
    [11] 80 (v6)                    ALLOW IN    Anywhere (v6)             
    [12] 443 (v6)                   ALLOW IN    Anywhere (v6)             
    [13] 56678 (v6)                 ALLOW IN    Anywhere (v6)             
    [14] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
    [15] 22/tcp (v6)                ALLOW IN    Anywhere (v6)             
    [16] 2222/tcp (v6)              ALLOW IN    Anywhere (v6)             
    [17] 443/tcp (v6)               ALLOW IN    Anywhere (v6)             
    

这样,禁止特定 IP 地址的规则将优先于其他规则,使其生效。

4、查看分析UFW日志

修改完了规则以后,可以去防火墙日志观看生效情况,UFW日志一般在/var/log/ufw.log文件当中。

查看日志可以看到类似于这种拦截日志。我们取其中的一条日志进行分析:

May 8 12:33:23 ip-172-38-3-214 kernel: [56099670.916763] [UFW BLOCK] IN=ens5 OUT= MAC=06:49:e1:69:e5:f3:06:76:1b:bb:15:0f:08:00 SRC=172.39.7.133 DST=172.38.3.214 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=3306 DPT=58636 WINDOW=0 RES=0x00 RST URGP=0

这个日志条目来自一个运行在Linux系统上的服务器,它记录了防火墙(UFW,Uncomplicated Firewall)阻止了一个网络连接尝试。下面是该日志的详细解析:

  • 时间戳May 8 12:33:23 表示事件发生的具体时间。

  • 主机名/IP地址ip-172-38-3-214 是产生日志的服务器的IP地址或主机名。

  • 日志来源kernel: 指出这条信息是由内核记录的。

  • 事件微秒时间[56099670.916763] 是事件发生时相对于某个参考点的精确时间(微秒级)。

  • UFW操作[UFW BLOCK] 显示这是一个UFW防火墙阻止的操作。

  • 网络接口

    • IN=ens5 表示数据包是从网络接口ens5进入的。
    • OUT= 空表示没有数据包尝试从该服务器外出(即响应包未生成)。
  • MAC地址:源MAC地址06:49:e1:69:e5:f3和目的MAC地址06:76:1b:bb:15:0f,分别标识了发起连接的设备和目标设备的物理地址。

  • 网络层信息

    • SRC=172.39.7.133 指发起连接的源IP地址。
    • DST=172.38.3.214 是目的IP地址,即这台服务器的IP地址。
    • LEN=40 表示数据包的总长度为40字节。
    • TOS=0x00PREC=0x00 分别是服务类型和优先级,这里都是默认值。
    • TTL=64 是生存时间(Time to Live),表示数据包在网络中的最大跳数,这里是64。
    • ID=0 数据包的标识符。
    • DF 表示"不要分片"标志被设置,意味着数据包不能被路由器分片。
  • 传输层信息

    • PROTO=TCP 表明使用的是TCP协议。
    • SPT=3306 源端口是3306,通常与MySQL数据库服务相关。
    • DPT=58636 目的端口是58636,这是一个比较随机的高端口,可能是客户端为了建立连接而使用的临时端口。
    • WINDOW=0RES=0x00 是TCP头部的窗口大小和保留字段,这里窗口大小为0可能是因为RST标志(下文解释)。
    • RST 表示这是一个复位(Reset)标志,意在告诉对方连接请求不被接受或连接已异常终止。
    • URGP=0 无操作,因为这是TCP包,非ICMP包中的相关内容。

综上所述,这条日志说明在2023年5月8日12:33:23,一台IP地址为172.39.7.133的设备尝试通过TCP协议从端口3306(通常为MySQL服务端口)连接到IP地址为172.38.3.214的这台服务器的58636端口。由于防火墙规则,这个连接请求被UFW阻止,并发送了一个RST标志来拒绝该连接。

总结

通过 UFW 防火墙,我们可以轻松地封锁恶意 IP,保护服务器免受攻击。主要步骤包括:

  1. 确保 UFW 已启用并设置默认策略。
  2. 开放必要的端口并封锁恶意 IP。
  3. 启用日志记录,实时监控防火墙活动。

合理使用 UFW 防火墙规则和日志监控,有助于提升服务器的安全性并阻止未经授权的访问。

这篇关于【DevOps】Ubuntu防火墙配置:如何封禁黑客攻击源IP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976045

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

DM8数据库安装后配置

1 前言 在上篇文章中,我们已经成功将库装好。在安装完成后,为了能够更好地满足应用需求和保障系统的安全稳定运行,通常需要进行一些基本的配置。下面是一些常见的配置项: 数据库服务注册:默认包含14个功能模块,将这些模块注册成服务后,可以更好的启动和管理这些功能;基本的实例参数配置:契合应用场景和发挥系统的最大性能;备份:有备无患;… 2 注册实例服务 注册了实例服务后,可以使用系统服务管理,