Linux入门第五天

文章介绍了systemd在Linux中的角色,如服务管理、启动优化和资源跟踪,并详细阐述了如何使用systemctl命令操作服务。此外,文章还探讨了OpenSSH的安全通信,包括SSH协议、主机密钥验证以及基于公钥的身份验证机制,强调了禁用root远程登录和密码验证以增强安全性的重要性。
摘要由CSDN通过智能技术生成

一.控制服务和守护进程

systemd 介绍

systemd daemon管理linux的启动,包括服务的启动和管理。

守护进程 daemon 是在后台运行或等待的进程,以执行不同的任务。通常 daemon 在系统启动时运行,直到关机时才结束运行。 deamon 程序名称一般会有 d 字符。

systemd 中的 service 通常指一个或多个 daemon。

RHEL 中,PID 1 是 systemd,提供以下几项功能:

- 并行化功能(同时启动多个服务),可提高系统的启动速度

- 按需启动守护进程,而不需要单独的服务

- 自动服务依赖关系管理,可以防止 timeouts。例如,只有在网络可用时, 依赖网络的服务才会尝试启动

- 利用 Linux cgoups 追踪相关进程资源占用

列出 service units

# systemctl list-units --type=service 列出所有 active 状态的 service unit

# systemctl list-units --type=service --all 列出所有 service unit

 

其中:UNIT 是 service unit 名称;LOAD 是 unit 的配置已加载到内存中; ACTIVE 表示 unit 高级激活状态,已经启动;SUB 表示 unit 低级别激活 状态,有更多关于 unit 的状态信息; DESCRIPTION 是 unit 的简短描述

# systemctl 列出所有已经 load 和 active 的 unit

# systemctl list-unit- files 显示所有已经安装的 units 状态

查看 service 状态

systemctl is-active sshd.service 服务是否正在运行

systemctl is-enabled sshd.service 服务是否开机启动 

systemctl is-failed sshd.service 服务是否启动失败

systemctl --failed --type=service 列出所有失败的 units

启动和停止服务

# systemctl start name.service 启动服务

# systemctl start name 如果不指明 unit 类型,默认使用 .service

# systemctl stop name.service 停止服务

重新启动和加载服务

# systemctl restart name.service 重启服务

# systemctl reload name.service 重新加载服务,而无需重启

# systemctl reload-or-restart name.service 优先重新加载,不行则重启

屏蔽未屏蔽的服务

系统中的不同服务可能会彼此冲突,比如 postfix 和 sendmail

systemctl mask 命令屏蔽服务,可防止管理员意外启动与其他服务冲突的 服务。屏蔽操作会创建指向 /dev/null 文件的链接,这可阻止服务的启动

systemctl unmask 命令可取消屏蔽

注:disable 的服务可以手动启动,或通过其他单元文件启动,但不会在 系统引导时自动启动。mask 的服务无法手动启动,也不会自动启动

开机启动或不启动服务

systemctl enable 命令设置服务开机启动

systemctl disable 命令设置服务开机不启动

systemctl is-enabled 验证服务开机是否启动

二.配置和保护SSH

什么是 OpenSSH

OpenSSH 为 Linux 提供了 Secure Shell 和 SSH 协议

SSH 协议为不安全的网络实现了通信加密

可以使用 ssh 命令连接远程系统,也可以在远程系统上直接运行命令

Secure Shell 实例

登录远程系统

ssh user01@remotehost hostname

在远程系统上运行命令

ssh user01@remotehost

识别远程用户

ssh user01@remotehost

w

SSH 主机秘钥

SSH 通过公钥加密的方式保持通信安全。在客戶端登录之前, 服务器会 向其发送公钥副本,用于设置通信渠道的安全加密,并验证客戶端服务器

用户连接服务器时,会检查客户机本地 /etc/ssh/ssh_known_hosts 或 ~/.ssh/known_hosts 中是否含有服务器公钥,并与从服务器获得公钥进行 匹配,以验证服务器的身份(防止服务器被假冒,或者需要编辑此文件替 换新的服务器秘钥)

服务器的公钥存放在:/etc/ssh/*key.pub 中

基于 SSH 秘钥的身份验证

基于私钥-公钥对,可以配置 SSH 服务器,不输入密码就能登录服务器

用户必须生成公私秘钥对,私钥用于身份验证,必须妥善保管,公钥复制到希望连接的系统,用于验证私钥,公钥不需要保密

生成 SSH 秘钥

ssh-keygen 命令创建用户的公钥和私钥,默认保存在~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub 文件中

私钥还可以以密码加以保护,登录时,需要输入私钥保护密码

使用 ssh-agent 配合 ssh-add 命令可将此私钥保护密码存入内存,协助登录时输入

ssh-copy-id 命令可以将用户的 SSH 公钥(/home/user/.ssh/id_rsa.pub) 复制到目标系统中

配置 OpenSSH 服务器

OpenSSH 的守护进程名为 sshd,主配置文件为 /etc/ssh/sshd_config

推荐禁用 root 用户远程登录和基于密码的身份验证(而使用公私钥验证 方式替代)

禁用 root 用户通过 ssh 登录

root 具有最高权限

建议普通用户进行登录,在有需要时提权成为 root

编辑 /etc/ssh/sshd_config,设置 PermitRootLogin yes

修改配置后,记得 systemctl reload sshd

黑客喜欢猜测 root 的密码

禁止对 SSH 进行基于密码的身份验证

黑客无法通过猜测用户密码攻击已知用户

密码相对于公私钥保密性差

编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no

修改配置后,记得 systemctl reload sshd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值