ubuntu服务器 如何配置安全加固措施

下面提供一个更详细、一步步的服务器安全加固指南,适合新手操作。我们将从 Fail2Ban、SSH(密钥认证及端口更改)、Nginx 速率限制和日志轮转四个方面进行优化,同时补充一些额外的安全建议。


新的服务器,通常我们会创建一个新用户并将其加入 sudo 组,这样你就可以使用新用户登录,然后通过 sudo 命令来执行需要管理员权限的操作。下面是具体步骤:


1. 创建新用户

使用 adduser 命令创建新用户(例如用户名为 newuser):

sudo adduser newuser

系统会提示你设置密码并输入一些用户信息(可以直接回车跳过)。


2. 将新用户添加到 sudo 组

为了让新用户具有管理员权限,需要把他加入 sudo 组:

sudo usermod -aG sudo newuser

提示
在某些系统中,sudo 组可能被命名为 wheel,请根据你的发行版实际情况操作。


3. 测试新用户登录

  1. 打开一个新的终端或使用 SSH 重新连接服务器,使用新用户登录:
    ssh newuser@your_server_ip
    
  2. 登录后,尝试执行一个需要管理员权限的命令,例如:
    sudo apt update
    
    系统会提示输入新用户的密码。成功后说明配置无误。

通过这种方式,即使你禁用了 root 的直接远程登录,也能安全地以新用户身份登录,并在需要时通过 sudo 获取管理员权限。


下面是安全加固的配置措施


1. Fail2Ban 安全加固

Fail2Ban 能够自动封禁短时间内

出现多次失败登录的 IP,能有效防止暴力破解。

1.1 安装 Fail2Ban(如未安装)

sudo apt update
sudo apt install fail2ban

1.2 创建自定义配置文件

建议不要直接修改默认配置文件,而是在 /etc/fail2ban/jail.d/ 下创建自定义配置文件,比如 custom.conf

sudo nano /etc/fail2ban/jail.d/custom.conf

1.3 添加如下内容

[DEFAULT]
# 封禁时间:3600秒(1小时)
bantime = 3600
# 查找时间窗口:300秒(5分钟)
findtime = 300
# 最大失败尝试次数:5次
maxretry = 5[sshd]
enabled = true
port = ssh  # 这里使用名称(sshd)或具体数字(如22、2222)都可以
logpath = /var/log/auth.log  # 根据系统(Ubuntu 常用 /var/log/auth.log,CentOS 则可能是 /var/log/secure)

提示

  • 如果系统使用了不同的日志路径,请根据实际情况修改。
  • 如果需要保护其他服务,可以按相似方式添加更多 jail 配置。

1.4 重启 Fail2Ban 并检查状态

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

确保看到类似封禁规则已生效的信息。


2. SSH 安全加固

加强 SSH 安全性主要包括使用密钥认证替代密码认证,并视需要修改默认端口。

2.1 生成 SSH 密钥对(本地操作)

如果你还没有 SSH 密钥,可以在客户端生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

一路回车,生成的密钥通常存放在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub

2.2 将公钥复制到服务器

使用 ssh-copy-id 工具上传公钥到服务器(假设 SSH 仍在默认端口 22 上):

ssh-copy-id username@your_server_ip

注意
在执行下一步前,请确保你已经能通过 SSH 密钥成功登录服务器,以免因配置错误导致无法远程连接。

2.3 修改 SSH 配置文件

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

确保进行如下修改:

  • 禁用密码认证
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    
  • 启用公钥认证
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    
  • (可选)修改 SSH 监听端口:如果你想更改默认端口,取消注释并修改 Port 行。例如:
    Port 2222
    

提示:修改 SSH 端口后,记得更新防火墙规则(见下文防火墙部分),并先在新的终端测试连接。

2.4 重启 SSH 服务

sudo systemctl restart sshd

2.5 检查 SSH 配置

在测试 SSH 连接前,建议用以下命令检查配置文件语法是否正确:

sudo sshd -t

没有输出则表示配置正确。


3. 修改 SSH 端口与防火墙设置(可选)

改变 SSH 端口可以降低被自动化攻击的概率,但务必更新防火墙规则。

3.1 更新 SSH 配置文件

如上一步已在 /etc/ssh/sshd_config 中修改 Port 参数(例如设置为 2222)。

3.2 更新防火墙规则

如果使用 UFW(Ubuntu 常用),允许新的 SSH 端口并删除旧端口:

sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo ufw reload

若使用其他防火墙(如 iptables),请根据实际情况调整规则。


4. Nginx 速率限制配置

限制请求速率能有效防止恶意请求或 DDoS 攻击。

4.1 编辑 Nginx 主配置文件

打开 /etc/nginx/nginx.conf 文件:

sudo nano /etc/nginx/nginx.conf

http { ... } 块中添加或修改以下内容(确保放在合适的位置):

http {# 定义请求限制区域,基于客户端 IP 地址,每秒允许1个请求limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {listen 80;server_name your_domain_or_ip;location /search/ {# 对 /search/ 路径启用速率限制,允许突发5个请求limit_req zone=one burst=5 nodelay;try_files $uri $uri/ =404;}# 其他 location 配置…}
}

4.2 测试并重启 Nginx

测试配置文件语法:

sudo nginx -t

如果无误,重启 Nginx:

sudo systemctl restart nginx

5. 日志轮转(Logrotate)配置

定期清理和压缩日志文件能防止日志无限增长,影响系统性能。

5.1 安装 logrotate(如未安装)

sudo apt install logrotate

5.2 配置全局日志轮转

编辑 /etc/logrotate.conf,确保包含类似配置:

/var/log/*.log {weeklyrotate 4compressdelaycompressmissingoknotifempty
}

5.3 为特定服务(如 SSH)创建日志轮转配置

创建或编辑 /etc/logrotate.d/sshd 文件:

sudo nano /etc/logrotate.d/sshd

添加如下内容(确保路径正确,如 Ubuntu 下 SSH 日志通常为 /var/log/auth.log):

/var/log/auth.log {weeklyrotate 4compressdelaycompressmissingoknotifemptycreate 640 root admsharedscriptspostrotate# 重载 rsyslog 服务以确保日志文件句柄正确切换/usr/lib/rsyslog/rsyslog-rotateendscript
}

提示:文件权限和日志路径需要根据实际系统进行调整。


6. 额外安全建议

6.1 配置防火墙

安装并启用 UFW(简单易用):

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 允许你配置的 SSH 端口(例如2222)
sudo ufw allow 2222/tcp
sudo ufw enable
sudo ufw status verbose

6.2 定期更新系统

保持系统和软件包的更新是防止漏洞的重要手段:

sudo apt update && sudo apt upgrade -y

6.3 限制 root 远程登录

/etc/ssh/sshd_config 中设置:

PermitRootLogin no

6.4 安装 Fail2Ban 的邮件通知(可选)

可以设置 Fail2Ban 在封禁时发送邮件通知,便于及时响应攻击:

编辑 /etc/fail2ban/jail.local 或在 custom.conf 中增加:

[DEFAULT]
action = %(action_mwl)s

确保系统已安装邮件传输代理(如 Postfix)。


总结

  1. Fail2Ban:使用自定义配置文件,合理设置封禁参数,并验证是否生效。
  2. SSH 加固:生成密钥、上传公钥,禁用密码认证,必要时修改默认端口,并更新防火墙。
  3. Nginx 速率限制:通过 limit_req_zonelimit_req 限制恶意请求。
  4. 日志轮转:确保日志文件定期清理,防止硬盘占用过高。
  5. 额外建议:使用 UFW 配置防火墙、限制 root 远程登录、保持系统更新等。

按照以上步骤一步步实施后,您的服务器安全性将大大提高。建议每次修改配置后,都先用测试命令(如 nginx -tsshd -t)确认无误,并在另一个终端中测试连接,以避免误操作导致服务不可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17074.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis7.0八种数据结构底层原理

导读 本文介绍redis应用数据结构与物理存储结构,共八种应用数据结构和 一. 内部数据结构 1. sds sds是redis自己设计的字符串结构有以下特点: jemalloc内存管理预分配冗余空间二进制安全(c原生使用\0作为结尾标识,所以无法直接存储\0)动态计数类型(根据字符串长度动态选择…

本地Deepseek-r1:7b模型集成到Google网页中对话

本地Deepseek-r1:7b网页对话 基于上一篇本地部署的Deepseek-r1:7b,使用黑窗口对话不方便,现在将本地模型通过插件集成到Google浏览器中 安装Google插件 在Chrome应用商店中搜索page assis 直接添加至Chrome 修改一下语言 RAG设置本地运行的模型&#…

【设计模式】【行为型模式】观察者模式(Observer)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…

gitlab Webhook 配置jenkins时“触发远程构建 (例如,使用脚本)”报错

报错信息&#xff1a; <html> <head> <meta http-equiv"Content-Type" content"text/html;charsetISO-8859-1"/> <title>Error 403 No valid crumb was included in the request</title> </head> <body><h2…

AI赋能前端开发:薪资潜力无限的未来

在当今竞争激烈的就业市场&#xff0c;掌握AI写代码工具等AI技能已经成为许多专业人士提升竞争力的关键。尤其在快速发展的前端开发领域&#xff0c;AI的应用更是日新月异&#xff0c;为开发者带来了前所未有的机遇。高薪职位对熟练掌握AI技术的前端开发者的需求与日俱增&#…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;20年通过校招进入武汉某软件公司&#xff0c;干了差不多4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

平面与平面相交算法杂谈

1.前言 空间平面方程&#xff1a; 空间两平面如果不平行&#xff0c;那么一定相交于一条空间直线&#xff0c; 空间平面求交有多种方法&#xff0c;本文进行相关讨论。 2.讨论 可以联立方程组求解&#xff0c;共有3个变量&#xff0c;2个方程&#xff0c;而所求直线有1个变量…

【状态空间方程】对于状态空间方程矩阵D≠0时的状态反馈与滑模控制

又到新的一年啦&#xff0c;2025新年快乐~。前几个月都没更新&#xff0c;主要还是因为不能把项目上的私密工作写进去&#xff0c;所以暂时没啥可写的。最近在山里实习&#xff0c;突然想起年前遗留了个问题一直没解决&#xff0c;没想到这两天在deepseek的加持下很快解决了&am…

LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程

25年1月来自香港科技大学广州分校的论文“LearningFlow: Automated Policy Learning Workflow for Urban Driving with Large Language Models”。 强化学习 (RL) 的最新进展表明其在自动驾驶领域具有巨大潜力。尽管前景光明&#xff0c;但诸如手动设计奖励函数和复杂环境中的…

大语言模型多代理协作(MACNET)

大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…

【OpenCV】双目相机计算深度图和点云

双目相机计算深度图的基本原理是通过两台相机从不同角度拍摄同一场景&#xff0c;然后利用视差来计算物体的距离。本文的Python实现示例&#xff0c;使用OpenCV库来处理图像和计算深度图。 1、数据集介绍 Mobile stereo datasets由Pan Guanghan、Sun Tiansheng、Toby Weed和D…

PT8032 3 通道触摸 IC

1. 概述 PT8032 是一款电容式触摸控制 ASIC &#xff0c;支持 3 通道触摸输入 ,2 线 BCD 码输出。具有低功耗、 高抗干扰、宽工作电压范围、高穿透力的突出优势。 2. 主要特性 工作电压范围&#xff1a; 2.4~5.5V 待机电流约 9uAV DD5V&CMOD10nF 3 通道触…

像指针操作、像函数操作的类

像指针一样的类。把一个类设计成像一个指针。什么操作符运用到指针上&#xff1f; 使用标准库的时候&#xff0c;里面有个很重要的东西叫容器。容器本身一定带着迭代器。迭代器作为另外一种智能指针。迭代器指向容器里的一个元素。迭代器用来遍历容器。 _list_iterator是链表迭…

Pikachu–XXE漏洞

Pikachu–XXE漏洞 一、XML基础概念 XML文档结构由XML声明&#xff0c;DTD(文档类型定义)&#xff0c;文档元素三部分构成&#xff01; #XML是可扩展标记语言(Extensible Markup Language),是设计用来进行数据的传输与存储。 #eg: <!--XML声明--><!--指明XML文档的版…

matlab-simulink

1、信号到对象解析指示符 代表的意义是&#xff1a;信号名称必须解析为信号对象 2、input inport 双击空白区域输入模块名字&#xff0c;自动联想显示相关模块 没看出太大的差别 3、Stateflow 双击空白区域输入stateflow、或者chart或者常用库里面去查找 4、离散时间积分…

简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标

作为国产数据库的领军选手&#xff0c;金仓数据库&#xff08;KingbaseES&#xff09;凭借其成熟的技术架构和广泛的市场覆盖&#xff0c;在国内众多领域中扮演着至关重要的角色。无论是国家电网、金融行业&#xff0c;还是铁路、医疗等关键领域&#xff0c;金仓数据库都以其卓…

网络安全概论——网络安全基础

一、网络安全引言 信息安全的四个属性&#xff08;信息安全的基本目标 &#xff09; 保密性:信息不会被泄露给非授权用户完整性&#xff1a;保证数据的一致性可用性&#xff1a;合法用户不会被拒绝服务合法使用&#xff1a;不会被非授权用户或以非授权的方式使用 二、网络安全…

数据结构-链式二叉树

文章目录 一、链式二叉树1.1 链式二叉树的创建1.2 根、左子树、右子树1.3 二叉树的前中后序遍历1.3.1前(先)序遍历1.3.2中序遍历1.3.3后序遍历 1.4 二叉树的节点个数1.5 二叉树的叶子结点个数1.6 第K层节点个数1.7 二叉树的高度1.8 查找指定的值(val)1.9 二叉树的销毁 二、层序…

SpringCloud系列教程:微服务的未来(二十三)SpringAMQP快速入门、Work Queues、Fanout交换机

前言 Spring AMQP是Spring框架中用于与消息中间件&#xff08;如RabbitMQ&#xff09;进行交互的一个项目&#xff0c;它简化了消息发送、接收以及消息处理的过程。通过Spring AMQP&#xff0c;开发者可以快速实现基于RabbitMQ的消息传递系统。本文将介绍Spring AMQP的快速入门…

单片机简介

一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC