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

在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实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂&#xff…...

Fragment与ViewModel(MVVM架构)

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

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…...

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 是一个功能强大的游戏开发引擎&#xff0c;广泛用于创建2D和3D游戏。要开始开发游戏&#xff0c;了解游戏对象和组件的基本概念是必不可少的。 游戏对象与组件 什么是游戏对象&#xff08;GameObject&#xff09; 在 Unity 中&#xff0c;游戏对象…...

前端新手小白的第一个AI全栈项目---AI聊天室

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

金升阳电源被制裁,广州顶源电源模块可以完美替换

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

《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…...

JDK 24:Leyden

Project Leyden 发布了其首个早期版本(24-leyden2-8 2024/6/20)。初始版本专注于缩短 Java 应用程序的启动时间。 1.特点 提前编译 Java 方法&#xff0c;以便在应用程序在生产运行中启动时立即本地执行它们&#xff1b;提前解析常量池条目可以让 AOT 编译器生成更好的代码&a…...

对于图片转3d人脸方面的研究

1.一个开源的可以运行的项目&#xff08;face3d/README.md at master yfeng95/face3d GitHub&#xff09; 在配置好环境后&#xff0c;让我们一个一个py文件运行它&#xff08;我将给出中文注释&#xff09; 1&#xff09;1_pipeline.py 将一个3d头像的mat文件转换为jpg…...

.NET C# 八股文 代码阅读(一)

.NET C# 八股文 代码阅读&#xff08;一&#xff09; 目录 .NET C# 八股文 代码阅读&#xff08;一&#xff09;1 两种获10000个数的方式&#xff0c;哪种效率更高&#xff1f;为什么&#xff1f;2 请说出以下代码AB谁先打印&#xff0c;AB打印的值分别为多少&#xff1f;3 关于…...

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示

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

南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?

文章简介 论文名称&#xff1a;Traditional Meiyu–Baiu has been suspended by global warming 第一作者及单位&#xff1a;尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位&#xff1a;王会军&#xff08;院士|南京信息工程大学大气科学学院&#xff09; 文章发…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...