当前位置: 首页 > news >正文

如何配置防火墙提高服务器安全性

配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。


一、为什么需要配置防火墙

防火墙的主要作用是:

  1. 限制未经授权的访问:只允许可信任的流量通过。
  2. 防止恶意攻击:如 DDoS 攻击、端口扫描和入侵尝试。
  3. 保护敏感服务:确保只有特定 IP 地址或网络能够访问关键服务(如 SSH、数据库等)。

二、常见防火墙工具

  1. Linux 系统

    • UFW(Uncomplicated Firewall):Ubuntu 和 Debian 系推荐,易于配置。
    • firewalld:CentOS 和 RHEL 系推荐,动态管理规则。
    • iptables:强大但复杂,可直接管理内核的防火墙功能。
    • nftables:现代化替代 iptables,性能更高。
  2. Windows 系统

    • Windows 防火墙(Windows Defender Firewall):内置于 Windows 系统。
    • 第三方防火墙:如 Sophos、Comodo。
  3. 云防火墙

    • 公有云提供的防火墙(如 AWS Security Groups、阿里云安全组、Azure NSG)。

三、防火墙配置基础(以 Linux 为例)

1. 使用 UFW 配置防火墙(适用于 Ubuntu/Debian)

(1)安装和启用 UFW

bash

复制

sudo apt update
sudo apt install ufw -y
sudo ufw enable
(2)查看当前防火墙状态

bash

复制

sudo ufw status
(3)设置默认规则

默认规则应禁止所有入站流量,允许所有出站流量:

bash

复制

sudo ufw default deny incoming
sudo ufw default allow outgoing
(4)允许必要的端口

根据服务器需求,允许需要的端口:

  • SSH(默认端口 22)

    bash

    复制

    sudo ufw allow 22
    
    如果修改了 SSH 端口(如改为 2222):

    bash

    复制

    sudo ufw allow 2222
    
  • HTTP(端口 80)和 HTTPS(端口 443)

    bash

    复制

    sudo ufw allow 80
    sudo ufw allow 443
    
  • 其他服务
    例如允许 MySQL 数据库(端口 3306):

    bash

    复制

    sudo ufw allow 3306
    
(5)限制特定 IP 的访问
  • 允许特定 IP 访问 SSH:

    bash

    复制

    sudo ufw allow from 192.168.1.100 to any port 22
    
  • 禁止特定 IP:

    bash

    复制

    sudo ufw deny from 192.168.1.200
    
(6)启用防火墙并重新加载

确保规则生效:

bash

复制

sudo ufw reload

2. 使用 firewalld 配置防火墙(适用于 CentOS/RHEL)

(1)安装和启用 firewalld

bash

复制

sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
(2)查看当前防火墙状态

bash

复制

sudo firewall-cmd --state
sudo firewall-cmd --list-all
(3)设置默认规则
  • 默认拒绝所有入站流量:

    bash

    复制

    sudo firewall-cmd --set-default-zone=drop
    
  • 查看默认区域:

    bash

    复制

    sudo firewall-cmd --get-default-zone
    
(4)允许必要的端口
  • 允许 SSH

    bash

    复制

    sudo firewall-cmd --permanent --add-service=ssh
    
  • 允许 HTTP 和 HTTPS

    bash

    复制

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    
  • 允许自定义端口
    例如允许端口 8080:

    bash

    复制

    sudo firewall-cmd --permanent --add-port=8080/tcp
    
(5)限制特定 IP 的访问
  • 允许特定 IP 访问 SSH:

    bash

    复制

    sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
    
  • 禁止特定 IP:

    bash

    复制

    sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.200' drop"
    
(6)重新加载规则

bash

复制

sudo firewall-cmd --reload

3. 使用 iptables 配置防火墙(适用于所有 Linux 系统)

(1)查看当前规则

bash

复制

sudo iptables -L -v
(2)设置默认规则
  • 默认拒绝所有入站流量:

    bash

    复制

    sudo iptables -P INPUT DROP
    
  • 默认允许所有出站流量:

    bash

    复制

    sudo iptables -P OUTPUT ACCEPT
    
(3)允许必要的端口
  • 允许 SSH

    bash

    复制

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
  • 允许 HTTP 和 HTTPS

    bash

    复制

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
(4)限制特定 IP 的访问
  • 允许特定 IP 访问:

    bash

    复制

    sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    
  • 禁止特定 IP:

    bash

    复制

    sudo iptables -A INPUT -s 192.168.1.200 -j DROP
    
(5)保存规则

根据系统选择保存命令:

  • Ubuntu:

    bash

    复制

    sudo iptables-save > /etc/iptables/rules.v4
    
  • CentOS:

    bash

    复制

    sudo service iptables save
    

四、Windows 防火墙配置

1. 打开 Windows 防火墙

  • Win + R,输入 firewall.cpl,回车。

2. 配置入站规则

  1. 点击“高级设置”。
  2. 在“入站规则”中,点击“新建规则”。
  3. 选择“端口”,点击“下一步”。
  4. 选择协议(如 TCP),输入端口号(如 22)。
  5. 选择“允许连接”,点击“下一步”。
  6. 按需求选择应用的网络类型(如“公用”或“专用”)。
  7. 为规则命名并保存。

3. 配置出站规则

类似入站规则的配置,但用于限制服务器发出的流量。

4. 限制特定 IP

在规则设置中,选择“作用域”,为允许或禁止的 IP 设置范围。


五、云防火墙配置

如果服务器运行在云环境中(如 AWS、阿里云、Azure),需要配置云防火墙(安全组):

  1. 登录云平台
  2. 定位安全组
    • AWS:Security Groups。
    • 阿里云:安全组规则。
    • Azure:网络安全组(NSG)。
  3. 配置入站规则:
    • 开放必要的端口(如 SSH、HTTP)。
    • 限制特定 IP 的访问。
  4. 配置出站规则(可选)。

六、防火墙配置建议

  1. 最小化开放端口

    • 仅开放必要的端口,例如:
      • SSH:22(或修改为其他端口)。
      • HTTP:80、HTTPS:443。
      • 数据库:仅对内部网络开放(如 3306)。
    • 禁止未使用的服务端口。
  2. 限制访问范围

    • SSH 和数据库服务仅允许可信任的 IP 地址访问。
    • 使用 VPN 或跳板机访问敏感服务。
  3. 启用日志记录

    • 开启防火墙日志记录,以便监控异常流量。
  4. 防止恶意扫描

    • 配合防火墙使用工具(如 Fail2Ban),自动封禁多次失败尝试的 IP。
  5. 定期审查规则

    • 每隔一段时间检查防火墙规则,移除不必要的规则。

通过合理配置防火墙,可以显著提高服务器的安全性,减少恶意流量、入侵和攻击的风险。将防火墙与其他安全措施(如 SSH 密钥、定期更新系统)结合使用,才能构建一个全面的安全防护体系。

相关文章:

如何配置防火墙提高服务器安全性

配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。 一、为什么需要配置防火墙 防火墙的主要作用是: 限制未经授权的访问&#xff1a…...

java集合-Map HashMap 源码解析

hashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,无序,不可重复。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap 实现了Ser…...

案例分享|企查查的数据降本增效之路

分享嘉宾 任何强 企查查科技股份有限公司 大数据架构负责人 关于企查查 “企查查”是企查查科技股份有限公司旗下的一款企业信用查询工具。2023年5月20日,企查查正式发布全球首款商查大模型——“知彼阿尔法”,该模型基于企查查覆盖的全球企业信用数据进…...

图书馆管理系统(四)基于jquery、ajax--完结篇

任务3.6 后端代码编写 任务描述 这个部分主要想实现图书馆管理系统的后端,使用 Express 框架来处理 HTTP 请求,并将书籍数据存储在一个文本文件 books.txt 中。 任务实施 3.6.1 引入模块及创建 Express 应用 const express require(express); cons…...

什么是Modbus协议网关?

在工业自动化领域,设备间的通信与数据交换是实现高效、智能控制的关键。Modbus协议作为一种广泛应用的通信协议,自1971年由Modicon公司首次推出以来,便以其标准、开放、支持多种电气接口等特点,在工业控制系统中占据了重要地位。然…...

Docker 容器中启用 SSH 服务

在 Docker 容器中运行 SSH 服务需要一些调整,因为 Docker 容器通常使用 init 系统而不是完整的 systemd。以下是配置 SSH 服务在 Docker Ubuntu 容器中运行的步骤: 1. 安装 SSH 服务 如果还未安装 OpenSSH,请先安装: apt update…...

Linux系统—利用systemd管控系统以及服务详解(十四)

本文为Ubuntu Linux操作系统- 第十四弹~~ 新的一周开始了,时间过得真快,这星期就要冬至啦!! 今天继续Linux系统高级管理板块,主要讲述使用systemd管控系统和服务~ 上期回顾:“Linux系统—进程管理详解” 更…...

人工智能 AI 大模型研究设计与实践应用技术毕业论文

标题:人工智能 AI 大模型研究设计与实践应用技术 内容:1.摘要 人工智能 AI 大模型是当前人工智能领域的研究热点之一,它具有高度的通用性、灵活性和智能性,可以应用于多种领域,如自然语言处理、计算机视觉、语音识别等。本文旨在探讨人工智能…...

已有 containerd 的情况下部署二进制 docker 共存

文章目录 [toc]学习目的开始学习dockerd启动 containerd准备配置文件启动 containerd 启动 docker准备配置文件启动 docker 环境验证停止 docker 和 containerd 学习目的 使用容器的方式做一些部署的交付,相对方便很多,不需要担心别人的环境缺少需要的依…...

VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Python环境安装二、VScode下载及安装三、VSCode配置Python环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…...

vue+springboot+cas配置及cookie传递问题

cookie的注意事项 前边的文章已经介绍过cookie的基本信息,这里再次说明一点:cookie是无法进行跨域传递的,很多时候cookie无法设置和传递都是因为跨域问题,ip/端口不一致。 主要就是:被设置cookie和要传递cookie的地址…...

0009.基于springboot+layui的ERP企业进销存管理系统

一、系统说明 基于springbootlayui的ERP企业进销存管理系统,系统功能齐全, 代码简洁易懂,适合小白学编程,课程设计,毕业设计。 二、系统架构 前端:html| layui 后端:springboot | mybatis| thymeleaf 环境:jdk1.8 |…...

ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟

由于需要进行一些FPGA的简单开发,但板载PL端没有焊接晶振,所以需要从PS端借用时钟到PL端使用。 首先新建项目,根据自己的板载选择芯片,我的板载芯片是zynq_7010。 一路next,在自己的vivado的工作文档新建文件夹并给自…...

Android详解——ConstraintLayout约束布局

目录 一、ConstraintLayout概述 二、ConstraintLayout属性介绍 1. 相对位置 2. 边距 3. 中心和偏移位置 中心位置 偏移位置 4. 圆形位置 5. 可见性 6. 尺寸约束 最小尺寸 WRAP_CONTENT :强制约束 MATCH_CONSTRAINT Min和Max 百分比尺寸 比率 7. 链式布局 创建…...

docker简单命令

docker images 查看镜像文件 docker ps -a 查看容器文件 docker rm 0b2 删除容器文件,id取前三位即可 docker rmi e64 删除镜像文件(先删容器才能删镜像),id取前三位即可 在包含Dockerfile文件的目录…...

【linux】shell(36)-文件操作

1. 文件创建 1.1 使用 touch 命令创建空文件 touch filename创建一个名为 filename 的空文件。如果文件已存在,touch 会更新该文件的时间戳。 示例: touch file1.txt1.2 使用重定向符创建文件 > filename使用 > 符号创建一个空文件。如果文件…...

c语言——数据结构【链表:单向链表】

上篇→快速掌握C语言——数据结构【创建顺序表】多文件编译-CSDN博客 一、链表 二、单向链表 2.1 概念 2.2 单向链表的组成 2.3 单向链表节点的结构体原型 //类型重定义,表示存放的数据类型 typedef int DataType;//定义节点的结构体类型 typedef struct node {union{int l…...

​Python 标识符是啥?​

Python 的标识符就是我们写代码时用来给变量、函数、类等取名字的东西。 你写的 my_variable 是个标识符, 定义的 add_numbers 函数名也是个标识符, 甚至你写的 Cat 类名,也是标识符。 一句话总结:标识符就是代码里给“东西”起…...

视频及JSON数据的导出并压缩

npm下载安装 jszip 和 file-saver 这两个库来实现文件的压缩和保存功能: npm install jszip npm install file-saver 导入依赖库: import JSZip from jszip; import { saveAs } from file-saver; 方法实现: batchDownload() {const zip…...

VScode使用教程(菜鸟版)

目录 1.VScode是什么? 2.VScode的下载和安装? 2.1下载和安装 下载路径: 安装流程: 一、点击【Download for Windows】 二、等一小会儿的下载,找到并双击你下载好的.exe文件,开始进入安装进程 三、点…...

【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:Grafana 安全漏洞 (CVE-2024-9264)漏洞编号:CVE-2024-9264 | CNNVD-202410-1891漏洞类型:命令注入、本地文件包含漏洞威胁等级:…...

Android AOSP 源码中批量替换“phone“为“tablet“的命令详解

我来帮你写一篇关于这条命令的分析博客。 Android 项目中批量替换"phone"为"tablet"的命令详解 前言 在 Android 开发中,有时我们需要批量修改资源文件中的某些文本内容。今天我们来分析一条结合了 grep 和 sed 的强大命令,该命令用于将项目中的 “ph…...

基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文

标题:基于 JavaWeb(SSMMySQL)问卷调查管理系统设计与实现 内容:1.摘要 摘要:本文介绍了一个基于 JavaWeb(SSMMySQL)的问卷调查管理系统的设计与实现。该系统旨在为用户提供一个高效、便捷的问卷调查工具,帮…...

域内用户枚举与密码喷洒与密码爆破

域控:192.168.72.163 攻击者:192.168.72.162 域:hacker.com 用户枚举 as-rep 回复状态判断域用户 用户存在且启用:KDC_ERR_PREAUTH_REQUIRED (需要额外的预认证) 用户存在但禁用:KDC_ERR_CLIENT_REVOKED NT Stat…...

DIY 集合求并集(union)运算的代码 ← Python

【算法分析】 已知 Python 提供了求并集运算的函数 union。代码示例如下; >>> s1{1,2,3} >>> s2{2,3,7,1,9} >>> s1.union(s2) {1, 2, 3, 7, 9} >>> 不过,知其然也要知其所以然。 本例自己 DIY 集合求并集(union…...

Redis bitmaps 使用

应用场景: 记录id为 1 的用户,2024年12月签到情况,并统计; 记录 1号签到 zxys-redis:0>setbit 1:202412 1 1 记录 2号签到 zxys-redis:0>setbit 1:202412 2 1 记录 3号未签到 zxys-redis:0>setbit 1:202412 3 0 …...

vue深层数据响应的问题

vue版本为v2.16 数据是数组数据,且初始数据为空; 当接口返回的数据直接赋值到字段之后导致深层的子项数据无法被监听到; 数据结构如下: //数据结构//初始化数据 data:[] 接口返回数据 resData:[{id:"",name:"&quo…...

解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南

问题描述 在使用Vue.js构建的单页应用(SPA)中,特别是像ruoyi-vue这样的框架,如果启用了HTML5历史记录模式进行路由管理,那么用户直接访问子路径或刷新页面时可能会遇到404错误。这是因为当用户尝试访问一个非根路径时…...

项目计划表如何制作?使用甘特图制作项目计划表的步骤

在项目管理中,项目计划是项目的核心要素,它详细记录了项目任务详情、责任人、时间规划以及所需资源。 这份计划不仅为项目推进提供指引,更是控制范围蔓延、争取更多支持的有力工具。 然而,如同项目管理的其他环节一样&#xff0…...

Flutter-底部分享弹窗(showModalBottomSheet)

showModalBottomSheet 构造函数的样式 Future<T?> showModalBottomSheet<T>({required BuildContext context, // 上下文对象&#xff0c;通常是当前页面的上下文bool isScrollControlled false, // 控制底部弹窗的大小&#xff0c;如果为…...