linux常用加固方式
目录
一.系统加固
二.ssh加固
三.换个隐蔽的端口
四.防火墙配置
五.用户权限管理
六.暴力破解防护
七.病毒防护
八.磁盘加密
九.双因素认证2FA
十.日志监控
十一.精简服务
一.系统加固
第一步:打好系统补丁
sudo apt update && sudo apt upgrade -y
可以设置自动更新:
sudo apt install unattended-upgradessudo dpkg-reconfigure --priority=low unattended-upgrades
二.ssh加固
1.禁止root直接登录:
sudo vim /etc/ssh/sshd_config
将其改为 PermitRootLogin no
2.用秘钥代替密码登录:
先在电脑上生成密钥:
/usr/bin/ssh-keygen -t rsa -b 4096
然后把公钥放到服务器上:
手动复制:先查看自己生成的公钥内容:
cat ~/.ssh/id_rsa.pub
然后将其复制到服务器的相应文件
远程复制:
ssh-copy-id username@server_ip
关闭密码登录:
vim /etc/ssh/sshd_config~
将root登录的替换公钥:
vim /root/.ssh/authorized_keys
检测配置公钥是否有效,登录验证:
ssh -i ~/.ssh/id_rsa root@your_server_ip
三.换个隐蔽的端口
修改配置文件:
sudo vim /etc/ssh/sshd_config~
将端口22改为2222
修改防火墙允许通过2222端口
UFW防火墙:
sudo ufw allow 2222/tcpsudo ufw reload
如果启用了22端口,直接禁用它:
sudo ufw deny 22/tcp
使用 firewalld:
sudo firewall-cmd --add-port=2222/tcp --permanentsudo firewall-cmd --reload
禁用22端口
sudo firewall-cmd --remove-port=22/tcp --permanentsudo firewall-cmd --reload
重启ssh服务:
sudo systemctl restart sshd/ssh
更改验证:
ssh -p 2222 username@hostname
四.防火墙配置
UFW是Ubuntu自带的防火墙
安装UFW:
sudo apt install ufw
只开放需要的端口:
sudo ufw allow 2222/tcp # SSH端口sudo ufw allow httpsudo ufw allow https
启动防火墙:
sudo ufw enable
查看防火墙状态
sudo ufw status
五.用户权限管理
1.创建一个新的用户:
sudo adduser newuser
2.给sudo分配权限:
sudo usermod -aG sudo newuser
3.设置sudo超时:
sudo visudo
所有用户的sudo超时时间30分钟:
添加一行:Defaults timestamp_timeout=30
特定用户的超时时间:5分钟
username ALL=(ALL) ALL, timestamp_timeout=5
六.暴力破解防护
更新软件包:
sudo apt upgrade
下载:
sudo apt install fail2ban
默认位置:
/etc/fail2ban/目录
启动Fail2ban服务:
sudo systemctl start fail2ban
设置开机自启动:
sudo systemctl enable fail2ban
查看SSH的保护状态:
sudo fail2ban-client status sshd
七.病毒防护
ClamAV是Linux下的免费杀毒软件,下载
先更新系统:
sudo apt upgrade
安装ClamAV:
sudo apt install clamav clamav-daemon
更新病毒库:
sudo freshclam
扫描文件:
sudo clamscan -r --bell /path/to/scan 递归扫描目录并发出声音提醒
八.磁盘加密
一般使用LUKS
步骤一:
先下载工具:
sudo apt-get install cryptsetup
创建一个文件作为加密目录:
dd if=/dev/zero of=/path/to/encrypted_container bs=1M count=100
初始化LUKS容器:
sudo cryptsetup luksFormat /path/to/encrypted_container
打开LUKS容器:
sudo cryptsetup luksOpen /path/to/encrypted_container encrypted_volume
会创建一个名为encrypted_volume的设备(通常在/dev/mapper/目录下)
步骤二:创建文件系统挂载
在加密设备上创建
sudo mkfs.ext4 /dev/mapper/encrypted_volume
你可以根据需要选择文件系统类型(如ext4、xfs等)
创建一个挂载点并挂载加密设备
sudo mkdir /mnt/encrypted_directorysudo mount /dev/mapper/encrypted_volume /mnt/encrypted_directory
步骤三:配置自动挂载加密设备:
sudo nano/vim /etc/crypttab
添加一行:encrypted_volume /path/to/encrypted_container none luks
sudo nano/vim /etc/fstab
添加一行:/dev/mapper/encrypted_volume /mnt/encrypted_directory ext4 defaults 0 2
3.可以选择性更新initramfs
sudo update-initramfs -u
步骤四:存储和访问数据
你可以将重要数据复制到 /mnt/encrypted_directory 目录中。完成操作后,可以卸载和关闭加密设备:
卸载加密目录:
sudo umount /mnt/encrypted_directory
关闭加密设备:
sudo cryptsetup luksClose encrypted_volume
九.双因素认证2FA
安装Google认证器:
sudo apt install libpam-google-authenticator
配置PAM模块:
修改/etc/pam.d/sshd 在文件末尾加:auth required pam_google_authenticator.so
配置ssh服务:
修改/etc/ssh/sshd_config 确保ChallengeResponseAuthentication和UsePAM设置为yes
重启ssh服务:
sudo systemctl restart sshd
初始化Google Authenticator
生成二维码和秘钥:
google-authenticator,按照提示进行操作
使用手机上的Google Authenticator应用扫描二维码进行配置
十.日志监控
更新软件包:
sudo apt updatesudo apt install logwatchsudo logwatch --detail high --mailto your-email@example.com
安装完成,主配置文件通常在:
/usr/share/logwatch/default.conf/logwatch.conf
/etc/logwatch/conf/logwatch.conf
写上自己电子邮箱
sudo logwatch --detail high --mailto your-email@example.com
手动运行:
sudo logwatch --output file --filename /var/log/logwatch.log
可以配置计划任务运行:
* * * * * /usr/sbin/logwatch --detail High --mailto your-email@example.com --service all --range today
十一.精简服务
没用的服务关掉
# 查看运行的服务
systemctl list-units --type=service --state=running
# 关闭不需要的服务
sudo systemctl stop service_namesudo systemctl disable service_name
相关文章:

linux常用加固方式
目录 一.系统加固 二.ssh加固 三.换个隐蔽的端口 四.防火墙配置 五.用户权限管理 六.暴力破解防护 七.病毒防护 八.磁盘加密 九.双因素认证2FA 十.日志监控 十一.精简服务 一.系统加固 第一步:打好系统补丁 sudo apt update && sudo apt upgra…...
笔灵ai写作技术浅析(二):自然语言处理
一、词法分析(Lexical Analysis) 1.1 概述 词法分析是NLP的第一步,主要任务是将连续的文本分割成有意义的单元(词或词组),并对这些单元进行标注,如词性标注(POS tagging)。词法分析的质量直接影响后续的句法分析和语义理解。 1.2 技术细节 1.分词(Tokenization)…...
PyCharm介绍
PyCharm的官网是https://www.jetbrains.com/pycharm/。 以下是在PyCharm官网下载和安装软件的步骤: 下载步骤 打开浏览器,访问PyCharm的官网https://www.jetbrains.com/pycharm/。在官网首页,点击“Download”按钮进入下载页面。选择适合自…...

深度解析:基于Vue 3与Element Plus的学校管理系统技术实现
一、项目架构分析 1.1 技术栈全景 核心框架:Vue 3 TypeScript UI组件库:Element Plus(含图标动态注册) 状态管理:Pinia(用户状态持久化) 路由方案:Vue Router(动态路…...

Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类
前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…...
苍穹外卖 项目记录 day09 历史订单
文章目录 查询历史订单查询订单详情取消订单再来一单 查询历史订单 分页查询历史订单可以根据订单状态查询展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片) #OrderController/*** 历…...

记录 | 基于Docker Desktop的MaxKB安装
目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! MaxKB的Github下载地址 参考视频:【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…...
WordPress web-directory-free插件存在本地文件包含导致任意文件读取漏洞(CVE-2024-3673)
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

LLM:BERT or BART 之BERT
文章目录 前言一、BERT1. Decoder-only2. Encoder-only3. Use of Bidirectional Context4. Masked Language Model (MLM)5. Next Sentence Prediction (NSP)6. Fine-tune1、情感分析2、句对分析3、命名实体识别(NER) 7. BERT总结 总结 前言 NLP选手对这…...
EtherCAT主站IGH-- 18 -- IGH之fsm_mbox_gateway.h/c文件解析
EtherCAT主站IGH-- 18 -- IGH之fsm_mbox_gateway.h/c文件解析 0 预览一 该文件功能`fsm_mbox_gateway.c` 文件功能函数预览二 函数功能介绍`fsm_mbox_gateway.c` 中主要函数的作用1. `ec_fsm_mbg_init`2. `ec_fsm_mbg_clear`3. `ec_fsm_mbg_transfer`4. `ec_fsm_mbg_exec`5. `e…...

深入探讨防抖函数中的 this 上下文
深入剖析防抖函数中的 this 上下文 最近我在研究防抖函数实现的时候,发现一个耗费脑子的问题,出现了令我困惑的问题。接下来,我将通过代码示例,深入探究这些现象背后的原理。 示例代码 function debounce(fn, delay) {let time…...

【AI论文】魔鬼在细节:关于在训练专用混合专家模型时实现负载均衡损失
摘要:本文重新审视了在训练混合专家(Mixture-of-Experts, MoEs)模型时负载均衡损失(Load-Balancing Loss, LBL)的实现。具体来说,MoEs的LBL定义为N_E乘以从1到N_E的所有专家i的频率f_i与门控得分平均值p_i的…...
Gurobi基础语法之addVar 和 addVars
addVar 和 addVars作为 Gurobi模型对象中的方法,常常用来生成变量,本文介绍了Python中的这两个接口的使用 addVar addVar(lb0.0, ubfloat(inf), obj0.0, vtypeGRB.CONTINUOUS, name, columnNone) lb 和 ub让变量在生成的时候就有下界和上届,…...
C语言学习阶段性总结(五)---函数
函数构成五要素: 1、返回值类型 2、函数名 3、参数列表(输入) 4、函数体 (算法) 5、返回值 (输出) 返回值类型 函数名 (参数列表) { 函数体; return 返回值; } void 类型…...

K8S 快速实战
K8S 核心架构原理: 我们已经知道了 K8S 的核心功能:自动化运维管理多个容器化程序。那么 K8S 怎么做到的呢?这里,我们从宏观架构上来学习 K8S 的设计思想。首先看下图: K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave…...

java后端之事务管理
Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…...

【Redis】缓存+分布式锁
目录 缓存 Redis最主要的使用场景就是作为缓存 缓存的更新策略: 1.定期生成 2.实时生成 面试重点: 缓存预热(Cache preheating): 缓存穿透(Cache penetration) 缓存雪崩 (Cache avalan…...
二分查找题目:寻找两个正序数组的中位数
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:寻找两个正序数组的中位数 出处:4. 寻找两个正序数组的中位数 难度 8 级 题目描述 要求 给定两个大…...

网络安全 | F5-Attack Signatures详解
关注:CodingTechWork 关于攻击签名 攻击签名是用于识别 Web 应用程序及其组件上攻击或攻击类型的规则或模式。安全策略将攻击签名中的模式与请求和响应的内容进行比较,以查找潜在的攻击。有些签名旨在保护特定的操作系统、Web 服务器、数据库、框架或应…...

Redis --- 分布式锁的使用
我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法,但是这样不能让锁跨JVM也就是跨进程去使用,只能适用在单体项目中如下图: 为了解决这种场景,我们就需要用一个锁监视器对全部集群进行监视…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...