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

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

http://www.lryc.cn/news/527437.html

相关文章:

  • 笔灵ai写作技术浅析(二):自然语言处理
  • PyCharm介绍
  • 深度解析:基于Vue 3与Element Plus的学校管理系统技术实现
  • Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类
  • 苍穹外卖 项目记录 day09 历史订单
  • 记录 | 基于Docker Desktop的MaxKB安装
  • WordPress web-directory-free插件存在本地文件包含导致任意文件读取漏洞(CVE-2024-3673)
  • LLM:BERT or BART 之BERT
  • EtherCAT主站IGH-- 18 -- IGH之fsm_mbox_gateway.h/c文件解析
  • 深入探讨防抖函数中的 this 上下文
  • 【AI论文】魔鬼在细节:关于在训练专用混合专家模型时实现负载均衡损失
  • Gurobi基础语法之addVar 和 addVars
  • C语言学习阶段性总结(五)---函数
  • K8S 快速实战
  • java后端之事务管理
  • 【Redis】缓存+分布式锁
  • 二分查找题目:寻找两个正序数组的中位数
  • 网络安全 | F5-Attack Signatures详解
  • Redis --- 分布式锁的使用
  • LeetCode100之全排列(46)--Java
  • goframe 博客分类文章模型文档 主要解决关联
  • 【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南
  • 安卓日常问题杂谈(一)
  • Kitchen Racks 2
  • 嵌入式学习笔记-杂七杂八
  • 14-7C++STL的stack容器
  • Vue 3 中的响应式系统:ref 与 reactive 的对比与应用
  • 物业巡更系统助推社区管理智能化与服务模式创新的研究与应用
  • windows蓝牙驱动开发-生成和发送蓝牙请求块 (BRB)
  • Linux网络之序列化和反序列化