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

配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。
一、为什么需要配置防火墙
防火墙的主要作用是:
- 限制未经授权的访问:只允许可信任的流量通过。
- 防止恶意攻击:如 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 22bash
复制
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文件,开始进入安装进程 三、点…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
