在Ubuntu上安装和配置配置服务器防火墙(CSF)的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
Config Server Firewall(CSF)是大多数 Linux 发行版和基于 Linux 的 VPS 的免费高级防火墙。除了基本的防火墙功能(过滤数据包)外,CSF 还包括其他安全功能,如登录/入侵/洪水检测。CSF 包括 cPanel、DirectAdmin 和 Webmin 的 UI 集成,但本教程仅涵盖命令行用法。CSF 能够识别许多攻击,如端口扫描、SYN 洪水和对许多服务的登录暴力攻击。它被配置为暂时阻止检测到正在攻击云服务器的客户端。
支持的操作系统和功能的完整列表可以在 ConfigServer 的网站 上找到。
本教程适用于基于 Debian 的 VPS,如 Debian 和 Ubuntu。应以 root 权限执行命令,通过 root 登录,或者如果安装了 sudo,则通过以下命令启动 root shell:
sudo su
注意: 本教程涵盖 IPv4 安全性。在 Linux 中,IPv6 安全性与 IPv4 分开维护。例如,“iptables”仅维护 IPv4 地址的防火墙规则,但它有一个名为“ip6tables”的 IPv6 对应物,可用于维护 IPv6 网络地址的防火墙规则。
如果您的 VPS 配置为 IPv6,请记住使用适当的工具保护您的 IPv4 和 IPv6 网络接口。有关 IPv6 工具的更多信息,请参阅此指南:如何在 Linux VPS 上配置工具以使用 IPv6
特性
Config Server Firewall 为您的 VPS 提供了广泛的保护功能。
登录身份验证失败守护程序:
CSF 定期检查日志中的登录失败尝试,并能够识别大多数未经授权的尝试访问您的云服务器。您可以在配置文件中定义 CSF 执行的期望操作以及尝试次数。
此功能支持以下应用程序:
- Courier imap、Dovecot、uw-imap、Kerio
- openSSH
- cPanel、WHM、Webmail(仅适用于 cPanel 服务器)
- Pure-ftpd、vsftpd、Proftpd
- 受密码保护的网页(htpasswd)
- Mod_security 失败(v1 和 v2)
- Suhosin 失败
- Exim SMTP AUTH
除此之外,您还可以使用正则表达式匹配定义自己的登录文件。如果您有一个记录了失败登录但在特定尝试次数后不会阻止用户的应用程序,这可能会有所帮助。
进程跟踪
CSF 可以配置为跟踪进程,以便检测可疑进程或打开的网络端口,并在检测到任何问题时向系统管理员发送电子邮件。这可能有助于您识别并阻止 VPS 上可能存在的利用。
目录监视
目录监视监视 /temp 和其他相关文件夹中的恶意脚本,并在检测到时向系统管理员发送电子邮件。
信使服务
启用此功能允许 CSF 在应用封锁时向客户端发送更多信息的消息。此功能既有利也有弊。一方面,启用它为客户端提供了更多信息,因此在登录失败的情况下可能会减少挫败感。另一方面,这提供了更多信息,可能会使攻击者更容易攻击您的 VPS。
端口洪水保护
此设置可防止端口洪水攻击,如拒绝服务(DoS)攻击。您可以指定每个端口在您喜欢的时间段内允许的连接数量。建议启用此功能,因为它可能防止攻击者迫使您的服务停机。您应注意设置的限制,因为太严格的设置会中断正常客户端的连接。另一方面,过于宽松的设置可能允许攻击者成功进行洪水攻击。
端口敲门
端口敲门允许客户端在没有打开端口的情况下连接服务器。服务器仅在成功的端口敲门序列后才允许客户端连接到主要端口。如果您提供的服务仅供有限的受众使用,您可能会发现这很有用。
连接限制保护
此功能可用于限制来自 IP 地址对每个端口的并发活动连接数。正确配置后,这可能会防止服务器上的滥用,如 DoS 攻击。
端口/IP 地址重定向
CSF 可以配置为将连接重定向到另一个 IP/端口。注意:重定向后,客户端的源地址将是服务器的 IP 地址。这不等同于网络地址转换(NAT)。
UI 集成
除了命令行界面,CSF 还为 cPanel 和 Webmin 提供了 UI 集成。如果您不熟悉 Linux 命令行,您可能会发现此功能有所帮助。
IP 阻止列表
此功能允许 CSF 从您定义的来源自动下载被阻止的 IP 地址列表。
安装 ConfigServer 防火墙
步骤 1:下载
Config Server Firewall 目前不在 Debian 或 Ubuntu 软件仓库中,必须从 ConfigServer 的网站下载。
wget http://download.configserver.com/csf.tgz
这将在当前工作目录中下载 CSF。
步骤 2:解压缩
下载的文件是一个压缩的 tar 包,必须在使用之前解压缩和提取。
tar -xzf csf.tgz
步骤 3:安装
如果您使用其他防火墙配置脚本(如 UFW),应在继续之前禁用它。iptables 规则将自动删除。
可以通过运行以下命令禁用 UFW:
ufw disable
现在是时候执行 CSF 的安装脚本了。
cd csf
sh install.sh
防火墙现在已安装,但您应检查所需的 iptables 模块是否可用。
perl /usr/local/csf/bin/csftest.pl
如果没有报告致命错误,防火墙将正常工作。
注意: 如果可能,您的 IP 地址将被添加到白名单中。此外,即使使用自定义端口,SSH 端口也会自动打开。防火墙还配置为启用测试模式,这意味着启动 CSF 后五分钟后 iptables 规则将自动删除。一旦您知道您的配置有效,并且您不会被锁定,应禁用此功能。
基本配置
CSF 可以通过编辑 /etc/csf/csf.conf 文件进行配置:
nano /etc/csf/csf.conf
更改后,可以使用以下命令应用更改:
csf -r
步骤 1:配置端口
对您的 VPS 的访问权限越少,服务器就越安全。但是,并非所有端口都可以关闭,因为客户端必须能够使用您的服务。
默认打开的端口如下:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"TCP_OUT = "20,21,22,25,53,80,110,113,443"UDP_IN = "20,21,53"UDP_OUT = "20,21,53,113,123"
使用这些开放端口的服务:
- 端口 20:FTP 数据传输
- 端口 21:FTP 控制
- 端口 22:安全外壳(SSH)
- 端口 25:简单邮件传输协议(SMTP)
- 端口 53:域名系统(DNS)
- 端口 80:超文本传输协议(HTTP)
- 端口 110:邮局协议 v3(POP3)
- 端口 113:认证服务/标识协议
- 端口 123:网络时间协议(NTP)
- 端口 143:互联网消息访问协议(IMAP)
- 端口 443:超文本传输协议安全传输层(HTTPS)
- 端口 465:SSM 的 URL Rendesvous 目录(Cisco)
- 端口 587:电子邮件消息提交(SMTP)
- 端口 993:安全的互联网消息访问协议(IMAPS)
- 端口 995:TLS/SSL 的邮局协议 3(POP3S)
您可能并未使用所有这些服务,因此可以关闭未使用的端口。建议关闭所有端口(从列表中删除端口号),然后添加您需要的端口。
以下是应打开的端口集:
在任何服务器上:
TCP_IN: 22,53
TCP_OUT: 22,53,80,113,443
UPD_IN: 53
UPD_OUT: 53,113,123
Apache:
TCP_IN: 80,443
FTP 服务器:
TCP_IN: 20,21
TCP_OUT: 20,21
UPD_IN: 20,21
UPD_OUT:20,21
邮件服务器:
TCP_IN: 25,110,143,587,993,995
TCP_OUT: 25,110
MySQL 服务器(如果需要远程访问)
TCP_IN: 3306
TCP_OUT: 3306
注意: 如果您的服务使用 IPv6,您还应该类似于配置 IPv4 端口的方式配置 TCP6_IN、TCP6_OUT、UPD6_IN 和 UPD6_OUT。
您可以在 Wikipedia 上找到全面的 TCP 和 UDP 端口列表。您应打开您使用的所有服务的端口。
步骤 2:其他设置
CSF 在其配置文件中提供了大量不同的选项。以下是一些最常用的设置的解释。
ICMP_IN
将 ICMP_IN 设置为 1 允许对服务器进行 ping,设置为 0 则拒绝此类请求。如果您托管任何公共服务,建议允许 ICMP 请求,因为这些请求可用于确定您的服务是否可用。
ICMP_IN_LIMIT
设置在指定时间内允许来自一个 IP 地址的 ICMP(ping)请求的数量。通常不需要更改默认值(1/s)。
DENY_IP_LIMIT
设置 CSF 跟踪的被阻止 IP 地址的数量。建议限制被拒绝的 IP 地址的数量,因为太多的阻止可能会降低服务器性能。
DENY_TEMP_IP_LIMIT
与上述相同,但用于临时 IP 地址阻止。
PACKET_FILTER
过滤无效、不需要和非法数据包。
SYNFLOOD、SUNFLOOD_RATE 和 SYNFLOOD_BURST
这提供了对 SYN 洪水攻击的保护。这会减慢每个连接的初始化,因此只有在知道服务器正在受到攻击时才应启用此功能。
CONNLIMIT
限制端口上的并发活动连接数。
值:
22;5;443;20
将允许端口 22 上的 5 个并发连接,并允许端口 443 上的 20 个并发连接。
PORTFLOOD
限制在特定时间间隔内可以向特定端口建立新连接的连接数量。
值:
22;tcp;5;250
将在 250 秒内使用 TCP 协议在端口 22 上建立超过 5 个连接时阻止 IP 地址。一旦客户端发送到此端口的最后一个数据包后 250 秒已过,将删除阻止。您可以像下面描述的那样通过逗号分隔添加更多端口。
port1;protocol1;connection_count1;time1,port2;protocol2;connection_count2;time2
更多设置
CSF 提供了许多未在本教程中涵盖的设置。默认值通常很好,几乎可以在任何服务器上使用。默认设置已配置为防止大多数洪水攻击、端口扫描和未经授权的访问尝试。
但是,如果您希望更详细地调整配置,请阅读 /etc/csf/csf.conf 中的注释,并根据需要进行编辑。
步骤 3:应用更改
每当您更改 csf.conf 中的设置时,应保存文件并重新启动 CSF 以使更改生效。
完成配置后,通过按 Ctrl + X 关闭文件。当询问是否保存更改时,按 Y 保存更改。
然后,您应通过以下命令重新启动 CSF 以应用更改:
csf -r
如果一切顺利,并且您仍然能够访问服务器,请再次打开配置文件:
nano /etc/csf/csf.conf
并将配置文件开头的 TESTING 设置为 0,如下所示:
TESTING = "0"
保存文件,并使用以下命令应用更改:
csf -r
阻止和允许 IP 地址
防火墙最基本的功能之一是能够阻止某些 IP 地址。您可以通过编辑配置文件 csf.deny、csf.allow 和 csf.ignore 来拒绝(黑名单)、允许(白名单)或忽略 IP 地址。
阻止 IP 地址
如果要阻止 IP 地址或范围,请打开 csf.deny。
nano /etc/csf/csf.deny
被阻止的 IP 地址或范围在 csf.deny 文件中占用一行。如果要阻止 IP 地址 1.2.3.4 以及 IP 范围 2.3..,应向文件添加以下行:
1.2.3.4 2.3.0.0/16
IP 范围使用 CIDR 表示法。
允许 IP 地址
如果要排除某个 IP 地址或范围免受所有阻止和过滤,请将其添加到 csf.allow 文件。请注意,即使在 csf.deny 文件中明确阻止了这些 IP 地址,允许的 IP 地址也会被允许。
允许 IP 地址的操作方式与阻止 IP 地址类似。唯一的区别是您应编辑 /etc/csf/csf.allow 而不是 csf.deny。
nano /etc/csf/csf.allow
**忽略 IP 地址
相关文章:
在Ubuntu上安装和配置配置服务器防火墙(CSF)的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Config Server Firewall(CSF)是大多数 Linux 发行版和基于 Linux 的 VPS 的免费高级防火墙。除了基本的防…...

Python-井字棋
井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…...
39.客户端与服务端断开事件handler
客户端与服务端断开有两种情况: 1.正常断开,客户端调用了ctx.channel().close(); 2.异常断开,比如客户端挂掉了 服务端定义handler来处理连接断开情况下要进行的逻辑操作: package com.xkj.server.handler;import com.xkj.ser…...
SSL 之 http只用crt格式证书完成SSL单向认证通信
背景 远程调用第三方服务时,之前都是双向认证,服务器提供jks格式的keystore证书,客户端配置好即可。 今天遇到个奇葩需求,服务器只给根公钥证书(root.crt),还是第三方合法证书,要求单向认证,客户…...

实训作业-人事资源管理系统
er图 模型图 DDL与DML DROP TABLE IF EXISTS departments; CREATE TABLE departments (department_id int(11) NOT NULL AUTO_INCREMENT COMMENT 部门ID,department_name varchar(100) NOT NULL COMMENT 部门名称,PRIMARY KEY (department_id),UNIQUE KEY department_name (de…...

Flink 资源静态调度
本内容是根据 Flink 1.18.0-Scala_2.12 版本源码梳理而来。本文主要讲述任务提交时,为 Task 分配资源的过程。 以下是具体步骤讲解: TaskManager 资源注册 TaskManager 在启动时,会向 ResourceManager 注册资源。ResourceManager 会将 Tas…...

upload-labs第十三关教程
upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1)0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前:修改之后:进入hex模块: c.放包上传成功: d.使用中国蚁剑进行连接 2)%00绕…...

基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂ÿ…...

Fragment与ViewModel(MVVM架构)
简介 在Android应用开发中,Fragment和ViewModel是两个非常重要的概念,它们分别属于架构组件库的一部分,旨在帮助开发者构建更加模块化、健壮且易维护的应用。 Fragment Fragment是Android系统提供的一种可重用的UI组件,它能够作为…...

Linux开发讲课16--- 【内存管理】页表映射基础知识2
ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的,…...

uniapp地图点击获取位置
主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…...
Unity程序开发:1.基本概念及操作
1. 基本概念与操作 Unity 是一个功能强大的游戏开发引擎,广泛用于创建2D和3D游戏。要开始开发游戏,了解游戏对象和组件的基本概念是必不可少的。 游戏对象与组件 什么是游戏对象(GameObject) 在 Unity 中,游戏对象…...

前端新手小白的第一个AI全栈项目---AI聊天室
前言 ok,大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目,刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题,也是成功之后也是想要将实现过程分享一下&a…...

金升阳电源被制裁,广州顶源电源模块可以完美替换
广州顶源电子科技股份有限公司,座落于国家高新技术开发区---广州科学城,是一家集研发、生产、销售及服务于一体的DC-DC,AC-DC电源的生产厂家。 公司通过了IATF16949汽车认证及ISO9001:2015质量管理体系认证。拥有专家级研发团队,产品研发经过…...

《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始
基于数据打通的“全链路”营销是当下的“时髦”,应用它的前提是什么?深度营销和运营的关键数据如何获得?如何利用数据进行更精准的营销投放?如何利用数据优化投放的效果?如何促进消费者的转化,以及激活留存…...
JDK 24:Leyden
Project Leyden 发布了其首个早期版本(24-leyden2-8 2024/6/20)。初始版本专注于缩短 Java 应用程序的启动时间。 1.特点 提前编译 Java 方法,以便在应用程序在生产运行中启动时立即本地执行它们;提前解析常量池条目可以让 AOT 编译器生成更好的代码&a…...
对于图片转3d人脸方面的研究
1.一个开源的可以运行的项目(face3d/README.md at master yfeng95/face3d GitHub) 在配置好环境后,让我们一个一个py文件运行它(我将给出中文注释) 1)1_pipeline.py 将一个3d头像的mat文件转换为jpg…...
.NET C# 八股文 代码阅读(一)
.NET C# 八股文 代码阅读(一) 目录 .NET C# 八股文 代码阅读(一)1 两种获10000个数的方式,哪种效率更高?为什么?2 请说出以下代码AB谁先打印,AB打印的值分别为多少?3 关于…...

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示
Crow是一个轻量级、快速的C微框架,用于构建Web应用程序和RESTful API。 将处理前端页面的POST请求以添加数据的逻辑添加到 /submit 路由中,并添加了一个新的路由 / 用于返回包含输入框、按钮和表格的完整页面。当用户向表格添加数据时,JavaS…...

南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?
文章简介 论文名称:Traditional Meiyu–Baiu has been suspended by global warming 第一作者及单位:尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位:王会军(院士|南京信息工程大学大气科学学院) 文章发…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...