sshd及其安全应用
1.sshd简介
sshd=secure shell ##可以通过网络在主机中开机shell的服务
客户端软件:sshd
连接方式:
ssh username@ip ##文本模式的链接
ssh -X username@ip ##可以在链接成功后开启图形
注:第一次链接陌生主机要建立认证文件,会询问是否建立,输入yes。
第二次建立已经生成了~/.ssh/know_hosts文件所以不需要再次建立。
远程复制:
scp file root@ip:dir ##上传
scp root@ip:file dir ##下载
1.虚拟机与远程主机的连接
真机:]
打开shell,输入命令:ip addr show br0(在虚拟机里应为eth0) ##查看真机ip
可以通过命令:ping 虚拟机地址 观察是否连接成功。成功会出现数据在虚拟机真机之间往返所需时间。否则为连接失败。
虚拟机:
输入命令:`nm-connection-editor`,出现选框,删除后增加,选择创建,出现选框创建,出现Ethernet在Device MAC address:选择默认选项 .IPv4设置,先选择方法为Manual,输入虚拟机IP号(虚拟机前3个段,最后一位为0-254,由于255号为广播地址,被占用所以不能使用),NETmask 设置为24 保存。
连接:
在虚拟机查看虚拟机ip,然后在真机上输入命令:ssh 虚拟机用户名@虚拟机ip,询问是否连接,连接后输入虚拟机中该用户的登陆密码,确定登陆,可以直接通过真机使用虚拟机。
在此例中虚拟机为服务器端为sshd软件,远程主机为客户端使用ssh软件。
2. 连接其他主机(由于实现环境下,只是使用了一台电脑,就用两台虚拟机模拟两台主机的互联):
其实方式与虚拟机与主机的链接类似。
证明主机172.25.71.111与主机172.25.71.222已经链接起来。
3.连接其他主机,生成RSA加密
由于如果有人知道了一个主机的ip地址,又恰好知道了其用户密码,那就可以任意的登陆到主机上,这是十分的不安全的。
所以可以通过加入RSA密码认证,更安全一些。至于链接方式:是先在服务器端生成一个RSA秘钥。
将生成的id-rsa.pub复制到生成主机上,在将生成的id-rsa密钥发送到另一台主机上。
这是另一台主机会直接链接本机,并且第一次需要输入密码,第二次链接就可以免密通信。
主机命令:
ssh-keygen ##生成密钥流
ssh-copy-id -i /root/.ssh/id_rsa.pub 用户名@本机主机地址 ##给本机加锁
scp /root/.ssh/id_rsa 用户名@另一主机地址:/root/.ssh/ ##分配密钥
注:此时若为第一次链接,是需要输入密码的,但第二次就可以实现免密通信。
4.修改配置文件,锁定用户权限。
如果这样把密钥分配给另一个主机,但只要另一个主机想要访问本机那么就一定可以访问,这也不符合本机需求,所以我们 需 要将这个权限放到自己手中可以将放到本机里的锁删除,所以即使有密钥也不能登陆也同时也限制密钥登陆将/etc/ssh/sshd_config的第78行下,将密码登陆的权限由yes改成了no,限制密码登陆。如果有需要的话,在加入锁,使有密钥的人免密登陆,或者直接修改配置文件权限,密码登陆。
但加上锁之后,就可以用密钥免密登陆。
5.sshd的安全设定
可以通过修改配置文件,来控制登陆服务器的用户以及登陆方式。来使服务更加安全。
命令如下:
vim /etc/ssh/sshd_config ,修改以下行数:
78 PasswordAuthentication yes/no ##是否允许用户通过登陆系统密码做登陆
48 PermitRoolLogin yes/no ##是否允许超级用户通过sshd服务认证登陆
52 AllowUsers student westos ##设置用户白名单,不在白名单用户不可登陆
53 DenyUsers student westos ##设置用户黑名单,在黑名单用户不可登陆
注:登陆时所用的用户名时被连接主机的用户名,要分清楚使用的到底是哪一台主机的用户和密码。并且一旦设置了白名单/黑名单,超级用户若不在也不可登陆。
实现方法:vim修改配置文件,将配置文件进行修改。通过一台客户端机链接服务端(ssh 用户名@ip地址),但是需要注意链接语句中的用户时服务机上的用户。
修改是否允许用户登陆系统密码登陆将第78行中的no修改到yes:
设置用户白名单,westos在白名单student用户不可登陆:
6.添加sshd登陆信息
vim /etc/motd ##文件内容就是登陆后显示内容
7.用户登陆审计
w ##查看正在使用当前系统的用户
-f ##查看使用来源
-i ##显示ip
等同于查看 /var/run/utmp
last
等同于查看 /var/log/wtmp
##查看使用并退出的用户信息
lastb
等同于查看 /var/log/btmp
##查看试图登陆却没成功的用户信息
系统权限控制:
systemctl ##服务器控制命令
systemctl status sshd(服务器名) ##查看服务器状态
systemctl start sshd ##开启服务
systemctl stop sshd ##关闭服务
systemctl restart sshd ##重启服务器
systemctl reload sshd ##重载服务器(相当于信号1,在不关闭服务器情况下,对进程的文件进行重新加载)
systemctl enable sshd ##设定服务器在开机时自启
systemctl disable sshd ##设定服务器在开机时不自启
systemctl list-units ##列出已经开启服务当过前状态
systemctl list-unit-files ##列出所有服务开机启动的状态(disable enable static表示静态不会更改)
systemctl list-dependencies ##列出服务的依赖(在使用该服务前必须存在并开启的进程)
systemctl set-default multi-user.target ##设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target ##设定系统启动级别为图形模式
实验方法:前几条命令类似于虚拟机的启动,在设置重启时可以看
可以发现reload与restart的区别,经过reload,进程pid不变,所以证明并没有关闭进程而完成了系统配置文件的加载,但是restart则是将进程关闭,然后重启,进程pid自然发生变化。