【Linux】Linux安全与密钥登录指南

在使用Linux服务器时,确保服务器的安全至关重要。本文将为你介绍一些关键的Linux安全措施,包括开启密钥登录、查看登录日志、限制登录IP以及查看系统中能够登录的账号。以下内容适合小白用户,通过简单的操作就能有效提升服务器的安全性。


目录
  1. Linux安全概述
  2. 密钥登录的配置
    • 生成密钥对
    • 配置SSH密钥登录
  3. 查看登录日志
  4. 限制IP访问
    • 设置IP封禁
    • 允许特定IP访问
  5. 查看系统可登录的账号

1. Linux安全概述

Linux系统安全主要依赖于控制访问权限、监控异常行为以及进行安全配置。通过适当的登录方式和访问限制,可以有效避免未经授权的访问。密钥登录是一种更安全的认证方式,避免了明文密码的风险。而登录日志和IP限制则可以帮助我们识别和防御潜在的入侵。


2. 密钥登录的配置

密钥登录是一种比密码登录更安全的方式,通过生成一对公钥和私钥来验证用户身份。以下是配置步骤。

2.1 生成密钥对

在客户端(例如你的电脑)上生成密钥对:

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

执行后,会提示你设置密钥存放的路径(默认是~/.ssh/id_rsa),可以直接按Enter使用默认路径。接下来,如果你愿意,可以设置密钥的密码保护。

2.2 配置SSH密钥登录
  1. 将生成的公钥复制到Linux服务器上:

    ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
    
  2. 确认公钥文件已被正确添加到服务器上的~/.ssh/authorized_keys文件中。

  3. 在服务器上修改SSH配置,确保允许密钥登录并禁用密码登录:

    编辑/etc/ssh/sshd_config文件:

    sudo nano /etc/ssh/sshd_config
    

    确保以下设置:

    PasswordAuthentication no
    PubkeyAuthentication yes
    
  4. 保存文件并重启SSH服务:

    sudo systemctl restart ssh
    

3. 查看登录日志

Linux系统会记录所有登录活动。可以使用以下命令查看登录日志:

sudo cat /var/log/auth.log | grep 'sshd'

在CentOS和Red Hat系统上,身份验证日志通常存储在/var/log/secure文件中。你可以尝试使用以下命令查看SSH登录记录:

sudo cat /var/log/secure | grep 'sshd'

在日志中,你可以查看每次登录的时间、IP地址以及登录结果(成功或失败)。这对监控异常登录行为非常有帮助。


4. 限制IP访问

有时我们希望限制某些IP的访问,或者仅允许特定IP访问,以增强安全性。

4.1 设置IP封禁

可以使用fail2ban工具来自动封禁多次尝试登录失败的IP。

  1. 安装fail2ban

    sudo apt-get install fail2ban
    
  2. 启动并启用fail2ban

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    
  3. 配置fail2ban的SSH规则,编辑配置文件:

    sudo nano /etc/fail2ban/jail.local
    

    添加如下内容:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    

    这将封禁连续3次尝试登录失败的IP,并且封禁时间为3600秒(即1小时)。

  4. 重启fail2ban服务:

    sudo systemctl restart fail2ban
    
4.2 允许特定IP访问

要仅允许特定IP访问SSH,可以修改sshd_config文件。

  1. 编辑SSH配置文件:

    sudo nano /etc/ssh/sshd_config
    
  2. 添加以下内容来限制IP:

    AllowUsers username@your_ip
    

    例如,若只允许IP 192.168.1.100的用户访问,添加如下内容:

    AllowUsers username@192.168.1.100
    
  3. 保存并重启SSH服务:

    sudo systemctl restart ssh
    

这将仅允许指定IP的用户进行访问,有效防止其他IP的登录请求。


5. 查看系统可登录的账号

要查看当前系统中可以登录的账号,可以检查/etc/passwd文件。此文件列出了所有用户及其基本信息。

使用以下命令过滤出具有登录权限的账号:

cat /etc/passwd | grep -E '/bin/bash|/bin/sh'

该命令会列出具有有效shell的用户,表示这些用户具备登录权限,如果发现有不该登陆的账号却能够登陆,通过锁定用户账户,彻底阻止账户的登录操作。此方法适用于需要暂时禁用用户而无需更改Shell的情况,以下使用admin账户举例。

执行步骤
  1. 使用usermod命令锁定用户:
    sudo usermod -L admin
    
  2. 验证是否已成功锁定:
    sudo passwd -S admin
    
    输出类似于admin L的结果表示用户已被锁定。

注意:锁定账户后,系统会在密码字段前添加!符号,表明该账户已被禁用。如果要解锁账户,可使用usermod -U admin命令。


总结

通过以上方法,可以有效增强Linux服务器的安全性,包括启用密钥登录、监控登录日志、设置IP限制及检查登录账号。这些措施对于新手用户来说操作简单,并且能够显著提高系统的安全防护能力。


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

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

相关文章

前缀和(四)除自身以外数组的乘积

238. 除自身以外数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&…

C# 13 中的新增功能

C# 12 中的新增功能C# 11 中的新增功能C# 10 中的新增功能C# 9.0 中的新增功能C# 8.0 中的新增功能C#7.0中有哪些新特性?C#6.0中10大新特性的应用和总结C# 5.0五大新特性 将C#语言版本升级为预览版 C# 13 包括一些新增功能。 可以使用最新的 Visual Stu…

图解RabbitMQ七种工作模式生产者消费者模型的补充

文章目录 1.消费者模型2.生产者-消费者模型注意事项2.1资源释放顺序问题2.2消费者的声明问题2.3虚拟机和用户的权限问题 3.七种工作模式3.1简单模式3.2工作模式3.3发布/订阅模式3.4路由模式3.5通配符模式3.6RPC通信3.7发布确认 1.消费者模型 之前学习的这个消息队列的快速上手…

如果模块把http改成了https请求,测试方案应该怎么制定

首先确定要测试的模块、接口、功能等,以及测试的目标,确保HTTPS请求能够正常进行、数据传输安全等。 1.功能测试 回归相应的功能模块以及业务逻辑,是否正常 2.兼容测试 测试不同浏览器和操作系统是否能够正常支持HTTPS连接。 验证模块在各种设…

编写按层次顺序(同一层自左至右)遍历二叉树的算法。或:按层次输出二叉树中所有结点;

解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。 这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。 技巧之处:当根结点入队后,会…

头歌 Linux之线程管理

第1关:创建线程 任务描述 通常我们编写的程序都是单进程,如果在一个进程中没有创建新的线程,则这个单进程程序也就是单线程程序。本关我们将介绍如何在一个进程中创建多个线程。 本关任务:学会使用C语言在Linux系统中使用pthrea…

Leetcode101. 对称二叉树(HOT100)

链接 我的错误代码: class Solution { public:bool isSymmetric(TreeNode* root) {if(!root)return true;if(!root->left&&!root->right)return true;if(!(root->left&&root->right))return false;if(root->left->val!root->…

Java 集合:强大的数据管理工具

在 Java 编程中,集合是一种非常重要的工具,它提供了一种方便的方式来存储和操作一组对象。本文将深入探讨 Java 集合框架,包括其主要类型、特点、用法以及一些最佳实践。 一、引言 在软件开发过程中,我们经常需要处理一组数据。…

qtcanpool 知 09:测试框架

文章目录 前言不满改进优化后语 前言 很久以前,作者写的代码都没有测试用例,最多就是写个 demo 验证一下,毕竟不是专业出身,也没经过大公司的洗礼。 后来,参与到一些项目才知道有专门的测试,而且开发也要测…

网络安全系列 之 SQL注入学习总结

目录 1. sql注入概述2. sql注入测试工具3. sql注入防御方法 3.1 问题来源3.2 防御方法4. SQL注入防御举例 4.1 使用JDBC时,SQL语句进行了拼接 1. 使用statement的executeQuery、execute、executeUpdate等函数时,传入的SQL语句拼接了来自外部的不可信参数…

《平衡之策:C++应对人工智能不平衡训练数据的数据增强方法》

在人工智能的广袤领域中,数据是驱动模型学习与成长的核心燃料。然而,不平衡的训练数据却如同一颗隐藏的暗礁,常常使模型的训练之船偏离正确航道,导致性能不佳与偏差增大。当我们聚焦于 C这一强大的编程语言时,又有哪些…

完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK

完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK 要在Ubuntu 20.04系统中使用ROS 1环境配置和使用Orbbec SDK,可以遵循以下详细且系统化的步骤。这些步骤将引导您从下载必要的工具和SDK到学习如何使用这些资源,确保您能有效地利用…

使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践

使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践 在这篇博客中,我们将介绍如何利用 Selenium 和 Python 爬取腾讯新闻的内容,并将结果保存到 CSV 文件中。本教程包含以下内容: 项目简介依赖安装实现功能的代码实现中的关键技…

element ui 自定义文件上传二进字流传值问题

1.封装的post请求 import axios from ./axios.js //引入axios文件 export function post (url, data) {return axios({method: post,url,data: {...data}}) }//修改后 正常了 export function post (url, data) {return axios({method: post,url,data: data}) } 2.api文件里面…

【设计模式系列】单例模式(二十)

一、什么是单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,属于创建型模式。它的目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。 单例模式的主要特点包括: 唯一性&#xff1a…

在 SpringBoot 集成了 Mybatis 的基础上添加 Mybatis-Plus

SpringBoot 集成了 Mybatis 可以参考前一篇文章 《SpringBoot 项目快速集成 Mybatis》 在 SpringBoot 集成了 Mybatis 的基础上添加 Mybatis-Plus 步骤&#xff1a; 引入 mybatis-plus 依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><…

BioDeepAV:一个多模态基准数据集,包含超过1600个深度伪造视频,用于评估深度伪造检测器在面对未知生成器时的性能。

2024-11-29, 由罗马尼亚布加勒斯特大学创建BioDeepAV数据集&#xff0c;它专门设计来评估最先进的深度伪造检测器在面对未见过的深度伪造生成器时的泛化能力&#xff0c;这对于提高检测器的鲁棒性和适应性具有重要意义。 数据集地址&#xff1a;biodeep 一、研究背景&#xff1…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

Flink四大基石之State(状态) 的使用详解

目录 一、有状态计算与无状态计算 &#xff08;一&#xff09;概念差异 &#xff08;二&#xff09;应用场景 二、有状态计算中的状态分类 &#xff08;一&#xff09;托管状态&#xff08;Managed State&#xff09;与原生状态&#xff08;Raw State&#xff09; 两者的…

opencv-android编译遇到的相关问题处理

1、opencv-android sdk下载 下载地址&#xff1a;https://opencv.org/releases/ 下载安卓SDK即可 2、解压下载好的SDK 3、导入opencv的SDK到安卓项目中 导入步骤在/OpenCV-android-sdk/sdk/build.gradle文件的注释中写的非常详细&#xff0c;大家可安装官方给出的步骤导入。…