温故Linux 操作系统08:用户登录审计,ssh服务与一些系统控制命令
1.用户登录审计
登录审计:在服务端里面查看使用服务端的客户端的相关信息
一般我们在想查看自己电脑有没有被远程或者被攻击的时候使用
w ##查看在使用当前系统的用户
w -f ##查看使用来源(主机名)
w -i ##显示ip
last ##查看用户登陆成功历史
lastb ##查看用户登陆未成功历史
w
,w -f
,w -i
操作如下:
本机(server)的ip为17.25.1.150,我们可以看到上图中查看使用当前系统的用户中有一个ip为172.25.1.151的用户,这种操作就是下面我们将提到的远程连接。
last
与lastb
操作如下:
2.ssh服务
ssh是Secure Shell的缩写,由客户端和服务端的软件组成的建立在应用层基础上的安全协议,ssh是目前比较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用ssh协议可以有效防止远程管理过程中的信息泄露问题。
以下操作我们需要两台主机进行,为了方便,我们更改两个虚拟机主机名分别为server和desktop,server虚拟机ip为17.25.1.150,另一个为desktop,desktop虚拟机的ip为17.25.1.151
2.1远程口令连接
2.1.1客户端连接
ssh username@ip ##文本模式的连接
ssh username@ip -X ##可以在连接成功后开启图形
上图我们可以看到desktop主机通过ssh连接到server主机时需要键入server主机的密码,密码正确时会连接成功,然后在server主机上进行查看当前系统使用者的时候能查看到desktop的访问
图形链接之后进行打开图形应用操作会再图形上显示on server的字样,代表图形打开,如果在键入远程链接命令的时候没有输入 -x
,则打开图形化页面时会提示error:no display specified
2.1.2远程拷贝
scp file root@ip:dir ##上传,指把本地文件远程拷贝给目标机
scp root@ip:file dir ##下载,指把目标机的文件远程拷贝到本地
2.2sshkey加密连接
在2.1节提到的连接方式为口令连接,即只要知道目标机(服务端)的登陆密码,任何人都可以进行登录,本节我们介绍一种新的连接方式,不需要服务端的登陆密码,直接进行免密登录,即sshkey加密连接。
sshkey加密连接方式为非对称rsa加密方式,通俗一点讲,就是生成一个公钥和私钥,我们可以理解为公钥就是一把锁,而私钥为一个能打开这把锁的钥匙,私钥为客户端(本机)所有,公钥为服务端所有,这样我们就对连接进行了加密,只有有了公钥对应的私钥,才能够成功连接服务端。
生成与分发公钥和私钥的方式有两种:
- 在客户端生成公钥和私钥,把公钥分发给服务端
- 在服务端生成公钥和私钥,把私钥分发给客户端
我们最常用的是第二种
2.2.1生成公钥私钥
ssh-keygen ##创建密钥,会在/root/.ssh里生成公钥和私钥
图中:
Enter file in which to save the key (/root/.ssh/id_rsa):[enter] ##加密字符保存文件(建议用默认)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [enter] ##密钥密码,必须>4个字符
Enter same passphrase again: [enter] ##确认密码
进入/root/.ssh看下是否生成了公钥和私钥:
id_rsa为私钥,id_rsa.pub为公钥
这样就在服务端生成了公钥和私钥
2.2.2添加key认证方式
通俗讲,就是挂锁
ssh-copy-id ##添加key认证方式的工具
-i ##指定加密key文件
/root/.ssh/id_rsa.pub ##加密key
root ##加密用户为root
172.25.1.150 ##被加密(挂锁)主机ip
这里,我们给服务段端进行挂锁操作:
我们看到,执行完ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
命令的最后会出现the key(s) you wanted were added,就表示挂锁成功了,为了确认我们看下/root/.ssh目录下,出现了authorized_keys,代表确实挂锁成功
2.2.3分发钥匙给client主机
scp /root/.ssh/id_rsa [email protected]:/root/.ssh/
##将钥匙发送给客户端,并且放在客户端的/root/.ssh/目录下
上图中,由于输错了两次客户端密码,所以显示权限限制,密码输入正确后返回私钥id_rsa
为了验证,我们去客户端看下/root/.ssh目录下
确实添加私钥成功
2.2.4测试
我们通过客户端进行ssh连接服务端,我们可以看到没有提示我们输入密码,并且成功连接到服务端,即sshkey认证方式成功
2.3提升openssh的安全级别
2.3.1openssh-server配置文件
/etc/ssh/sshd_config
78 PasswordAuthentication yes|no ##是否开启用户密码认证,yes为支持no为关闭
48 PermitRootLogin yes|no ##是否允许超级用户登陆
49 AllowUsers xiaoming xiaohong ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
50 DenyUsers xiaoli ##用户黑名单
vim /etc/ssh/sshd_config
后查看:
修改后,需要systemctl restart sshd.service
重启sshd服务才能生效
2.3.2控制ssh客户端访问
vim /etc/hosts.deny
sshd:ALL ##拒绝所有人链接sshd服务
vim /etc/hosts.allow
sshd:172.25.1.151 ##允许250主机链接sshd
sshd:172.25.1.151, 172.25.1.250 ##允许250和180链接
sshd:ALL EXCEPT 172.25.1.151 ##只不允许200链接sshd
2.3.3ssh登陆提示修改
vim /etc/motd ##显示登陆后字符
hello world ##在登陆后就会显示这个字符
在服务端vim /etc/motd
然后输入以下字符
在客户端连接服务端的时候会出现以下提示:
3.一些系统控制命令
systemd
系统初始化程序,系统开始的第一个进程,pid为1
以下以sshd服务举例,可以换为其他服务
systemctl 命令 服务名称
systemctl list-units ##列出当前系统服务的状态
systemctl list-unit-files ##列出服务的开机状态
systemctl status sshd ##查看指定服务的状态
systemctl stop sshd ##关闭指定sshd服务
systemctl start sshd ##开启指定sshd服务
systemctl restart sshd ##从新启动sshd服务
systemctl enable sshd ##设定指定服务sshd开机开启
systemctl disable sshd ##设定指定服务sshd开机关闭
systemctl reload sshd ##使指定服务sshd重新加载配置
systemctl list-dependencies sshd ##查看指定服务sshd的倚赖关系
systemctl mask sshd ##冻结指定服务sshd
systemctl unmask sshd ##启用服务sshd
systemctl set-default multi-user.target ##开机不开启图形
systemctl set-default graphical.target ##开机启动图形
setterm ##文本界面设定color
其中,查看服务状态,服务状态的参数如下:
loaded ##系统服务已经初始化完成,加载过配置
active(running) ##正有一个或多个程序正在系统中执行,
##vsftpd 就是这种模式
atcive(exited) ##仅执行一次就正常结束的服务,
##目前并没有任何程序在系统中执行
atcive(waiting) ##正在执行当中,
##不过还再等待其他的事件才能继续处理
inactive ##服务关闭
enbaled ##服务开机启动
disabled ##服务开机不自启
static ##服务开机启动项不可被管理
failed ##系统配置错误