在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 第一作者及单位:尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位:王会军(院士|南京信息工程大学大气科学学院) 文章发…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
