如何配置防火墙提高服务器安全性
配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。
一、为什么需要配置防火墙
防火墙的主要作用是:
- 限制未经授权的访问:只允许可信任的流量通过。
- 防止恶意攻击:如 DDoS 攻击、端口扫描和入侵尝试。
- 保护敏感服务:确保只有特定 IP 地址或网络能够访问关键服务(如 SSH、数据库等)。
二、常见防火墙工具
-
Linux 系统:
- UFW(Uncomplicated Firewall):Ubuntu 和 Debian 系推荐,易于配置。
- firewalld:CentOS 和 RHEL 系推荐,动态管理规则。
- iptables:强大但复杂,可直接管理内核的防火墙功能。
- nftables:现代化替代 iptables,性能更高。
-
Windows 系统:
- Windows 防火墙(Windows Defender Firewall):内置于 Windows 系统。
- 第三方防火墙:如 Sophos、Comodo。
-
云防火墙:
- 公有云提供的防火墙(如 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
复制
如果修改了 SSH 端口(如改为 2222):sudo ufw allow 22
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. 配置入站规则
- 点击“高级设置”。
- 在“入站规则”中,点击“新建规则”。
- 选择“端口”,点击“下一步”。
- 选择协议(如 TCP),输入端口号(如 22)。
- 选择“允许连接”,点击“下一步”。
- 按需求选择应用的网络类型(如“公用”或“专用”)。
- 为规则命名并保存。
3. 配置出站规则
类似入站规则的配置,但用于限制服务器发出的流量。
4. 限制特定 IP
在规则设置中,选择“作用域”,为允许或禁止的 IP 设置范围。
五、云防火墙配置
如果服务器运行在云环境中(如 AWS、阿里云、Azure),需要配置云防火墙(安全组):
- 登录云平台。
- 定位安全组:
- AWS:Security Groups。
- 阿里云:安全组规则。
- Azure:网络安全组(NSG)。
- 配置入站规则:
- 开放必要的端口(如 SSH、HTTP)。
- 限制特定 IP 的访问。
- 配置出站规则(可选)。
六、防火墙配置建议
-
最小化开放端口:
- 仅开放必要的端口,例如:
- SSH:22(或修改为其他端口)。
- HTTP:80、HTTPS:443。
- 数据库:仅对内部网络开放(如 3306)。
- 禁止未使用的服务端口。
- 仅开放必要的端口,例如:
-
限制访问范围:
- SSH 和数据库服务仅允许可信任的 IP 地址访问。
- 使用 VPN 或跳板机访问敏感服务。
-
启用日志记录:
- 开启防火墙日志记录,以便监控异常流量。
-
防止恶意扫描:
- 配合防火墙使用工具(如 Fail2Ban),自动封禁多次失败尝试的 IP。
-
定期审查规则:
- 每隔一段时间检查防火墙规则,移除不必要的规则。
通过合理配置防火墙,可以显著提高服务器的安全性,减少恶意流量、入侵和攻击的风险。将防火墙与其他安全措施(如 SSH 密钥、定期更新系统)结合使用,才能构建一个全面的安全防护体系。
相关文章:

如何配置防火墙提高服务器安全性
配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。 一、为什么需要配置防火墙 防火墙的主要作用是: 限制未经授权的访问:…...
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文件,开始进入安装进程 三、点…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...

新版NANO下载烧录过程
一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...
慢慢欣赏linux 之 last = switch_to(prev, next)分析
last switch_to(prev, next); 为什么需要定义last作为调用switch_to之前的prev的引用 原因如下: struct task_struct * switch_to(struct task_struct *prev,struct task_struct *next) {... ...return cpu_switch_to(prev, next);> .global cpu_switch_tocpu_…...
【异常】极端事件的概率衰减方式(指数幂律衰减)
在日常事件中,极端事件的概率衰减方式并非单一模式,而是取决于具体情境和数据生成机制。以下是科学依据和不同衰减形式的分析: 1. 指数衰减(Exponential Decay) 典型场景:当事件服从高斯分布(正态分布)或指数分布时,极端事件的概率呈指数衰减。 数学形式:概率密度函数…...
上位机知识篇---Flask框架实现Web服务
本文将简单介绍Web 服务与前端显示部分,它们基于Flask 框架和HTML/CSS/JavaScript实现,主要负责将实时视频流和检测结果通过网页展示,并提供交互式状态监控。以下是详细技术解析: 一、Flask Web 服务架构 1. 核心路由设计 app.…...
【Unity】R3 CSharp 响应式编程 - 使用篇(二)
一、通用的事件监听用法 using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{// 默认会调用1次public SerializableReactiveProperty<int> serializableReactiveProperty;…...
人工智能--大型语言模型的存储
好的,我现在需要回答用户关于GGUF文件和safetensors文件后缀的差别的问题。首先,我得先确认这两个文件格式的具体应用场景和它们各自的优缺点。用户可能是在处理大模型时遇到了这两种文件格式,想了解它们的区别以便正确使用。 首先ÿ…...