C02S11-Linux系统的安全与控制

一、Linux系统启动过程

1. 开机自检

计算机加电后,BIOS会检查计算机的硬件状态,包括CPU、内存、硬盘等,确保所有的硬件可以正常工作。

2. MBR引导或GPT引导

开机自检完成后,BIOS会根据设置的启动顺序来查找启动设备(硬盘、U盘、光驱等)。MBR分区方案中,BIOS会从启动设备的MBR读取记录引导信息的扇区。这步的主要作用是,告诉计算机到启动设备的哪个位置去寻找操作系统。

3. GRUB菜单

完成MBR引导或GPT引导后,会启动引导加载程序,Linux系统上常见的引导加载程序是GRUB。GRUB是一个多操作系统引导管理器,允许用户在启动时选择不同的操作系统,或根据默认配置加载系统。GRUB会显示一个菜单,列出所有可启动的内核和操作系统选项。

4. 加载Linux内核

选择好操作系统后,GRUB会加载选定的操作系统内核以及初始内存映像(initramfs)。Linux内核是一个预先编译好的二进制可执行文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。初始内存映像是一个临时的文件系统,包含了启动Linux系统所需的基本工具和驱动程序。

5. init进程初始化

内核加载完成后,会启动init进程。这是Linux系统中的第一个进程,是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。init进程负责启动系统运行级别,根据配置文件(如/etc/inittab)或使用systemd的配置文件来启动系统服务和应用程序。

二、Linux服务控制

1. init和Systemd的比较

init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢。而Systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度 。

2. Systemd单元类型

2.1 Systemd单元概述

在Systemd中,不同类型的Systemd对象被称为单元,Systemd单元类型是用于定义系统启动和服务管理的不同种类的配置文件。每种单元类型对应不同的系统资源或服务,并定义了如何启动和管理这些资源或服务。

单元类型 扩展名 说明
Service .service 描述一个系统服务
Socket .socket 描述一个进程间通信的套接字
Device .device 描述一个内核识别的设备文件
Mount .mount 描述一个文件系统的挂载点
Automount .automount 描述一个文件系统的自动挂载点
Swap .swap 描述一个内存交换设备或交换文件
Path .path 描述一个文件系统中文件或目录
Timer .timer 描述一个定时器
Snapshot .snapshot 用于保存一个systemd的状态
Scope .scope 使用systemd的总线接口以编程的方式创建外部进程
Slice .slice 描述居于Cgroup的一组通过层次组织的管理系统进程
Target .target 描述一组systemd的单元

2.2 systemctl命令 -- 管理系统服务

systemctl命令来自英文词组system control的缩写,功能是管理系统服务。Systemd服务的管理就是通过systemctl命令来实现的。

bash 复制代码
systemctl [选项] 控制命令 服务

常见的控制命令:

控制命令 功能
start 启动
stop 停止
reload 重新加载服务配置
restart 重启
enable 设置开机自启动
disable 取消开机自启动
reenable 重新设置开机自启动

2.3 运行级别

运行级别 Systemd单元类型 说明
0 target 关机
1 rescue.target 单用户模式
2 multi-user.target 字符串界面多用户模式
3 multi-user.target 字符串界面多用户模式
4 multi-user.target 字符串界面多用户模式
5 graphical.target 图形化界面多用户模式
6 reboot.target 重启
  • 可用使用runlevel查看系统当前的运行级别。

  • 可用使用init命令设置系统的运行级别。

    bash 复制代码
    init 运行级别

三、Linux系统安全应用

1. 账号安全设置

1.1 系统账号清理

  1. 修改不需要登录的用户的Shell。

    bash 复制代码
    usermod -s /sbin/nologin 用户
  2. 锁定长期不使用的用户账号。

    bash 复制代码
    # usermod
    usermod -L 用户 # 锁定用户
    usermod -U 用户 # 解锁用户
    
    # passwd
    passwd -l 用户 # 锁定用户
    passwd -u 用户 # 解锁用户
  3. 删除长期不用的用户账号。

    bash 复制代码
    userdel 用户 # 删除用户
    userdel -r 用户 # 删除用户的同时删除用户家目录

1.2 锁定重要文件

  1. 锁定与用户相关,比如psswd、shadow等重要文件。

    bash 复制代码
    chattr +i 文件 # 锁定文件
    chattr -i 文件 # 解锁文件

2. 密码安全设置

2.1 密码有效期设置

  1. 适用于新建用户:修改/etc/login.defs文件,设置新建用户的密码有效期。

    shell 复制代码
    PASS_MAX_DAYS # 密码的最长有效时间
  2. 适用于已建用户:使用change命令设置用户密码的有效期限。

    bash 复制代码
    change -M 有效天数 用户

3. 历史命令限制

3.1 设置历史命令条数

  1. 编辑/etc/profile文件,在里面设置历史命令的保存条数。

    shell 复制代码
    HISTSIZE=保存条数

    保存文件后,执行下面命令,刷新系统环境。

    bash 复制代码
    source /etc/profile

4. 终端自动注销

4.1 设置终端最大空闲时间

  1. 编辑/etc/profile文件,在里面设置终端的最大空闲时间。当终端空闲时间超过设置的时间,终端就会断开连接。

    shell 复制代码
    TMOUT=空闲时间 # 单位为秒
  2. 保存文件后,执行下面命令,刷新系统环境。

    bash 复制代码
    source /etc/profile

四、用户提权设置

1. sudo命令-- 授权普通用户执行管理员命令

sudo命令来自英文词组super user do的缩写,功能是授权普通用户执行管理员命令。

bash 复制代码
sudo 命令

在Ubuntu系统中,默认sudo可用让普通用户使用所有超级用户可以使用的命令。而在CentOS系统中,还需要通过设置授权普通用户执行某些指定的命令。

相关推荐
写代码的学渣26 分钟前
Linux云计算个人学习总结(一)
linux·运维·云计算
别NULL33 分钟前
《现代网络技术》读书笔记:SDN数据平面和OpenFlow
linux·网络·平面·sdn
没有名字的小羊1 小时前
二.Linux文件与目录管理
linux·运维·服务器
头真的要秃啦1 小时前
Linux 无名管道
linux·运维·算法
Diamond技术流1 小时前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp
陌上花开缓缓归以1 小时前
linux strace 查看程序异常问题总结
linux·运维·服务器
wowocpp1 小时前
ubuntu 22.04 防火墙 ufw
linux·运维·ubuntu
zybox运维2 小时前
Linux服务管理-DHCP
linux·运维·服务器
橘色的喵2 小时前
Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟
linux·udp·dma·网络驱动·低延迟·吞吐量·nic
23zhgjx-zgx2 小时前
以太网交换安全:DHCP Snooping
linux·服务器·网络·安全·华为