一、SSH远程管理
1.1OpenSSH服务器概述
1.1.1SSH协议
① SSH(secure shell)是一种安全性协议,端口tcp22端口,是应用层协议
②对通信数据进行了加密处理,用于远程管理
③telnet是明文传送;ssh是加密传送,并且支持压缩。
④telnet的默认端口号为23;ssh的默认端口号为22.
⑤ssh使用公钥对访问的服务器的用户验证身份,进一步提高的安全性;telnet没有使用公钥
1.1.2OpenSSH
Openssh是linux系统的服务,随系统安装就安装,默认加入开机自启。
查看远程管理服务的openssh软件是否安装
[root@localhost ~]# rpm -qa | grep openssh
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
服务名称:sshd
/usr/sbin/sshd //服务端主程序
/etc/ssh/sshd_config //服务端配置文件
/etc/ssh/ssh_config //客户端配置文件
rpm -ql openssh-server //查询客户端安装的软件
rpm -ql openssh-clients //查询服务端安装的软件
tail /var/log/secure //sshd的日志,可以在里面排错
1.1.3服务监听选项
vim /etc/ssh/sshd_config
1.1.4 实验:
前提关闭防火墙
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0 //临时关闭
[root@localhost ~]# vim /etc/selinux/config //永久关闭
关闭之后,重启
reboot
两台装有linux系统的虚拟机,一台作为服务机,一台作为客户机,均处于VMnet8模式。
1.将一台的主机名更改为server
[root@localhost ~]# hostname server
[root@localhost ~]# bash
[root@server ~]#
2.更改任何配置文件时,提前备份文件
[root@server ~]# cp -p /etc/ssh/sshd_config{,.bak}
3.查询自己备份的文件
[root@server ~]# ls
[root@server ~]# ls /etc/ssh
4.配置服务端程序
vim /etc/ssh/sshd_config
4.1更改端口号
Port 121
4.2把UseDNS设置成no,关闭用dns做域名解析;否则客户端登录连接会很慢
UseDNS no
4.3重启
[root@server ~]# systemctl start sshd
ssh -t //检查ssh文件的语法错误
客户端和服务端互相登录使用ssh命令
```bash
ssh root@服务端的IP //客户端远程登录服务端
4.4设置端口号(客户端远程登录)
-p :端口号
[root@server ~]# ssh -p 121 root@192.168.27.130
在客户端配置文件更改端口号,更改与服务端一样的端口号即可直接登录;登录客户端更改配置文件无须重启服务
vim /etc/ssh/ssh_config
Port 121
4.5禁止root用户登录
编辑服务端主配置文件
vim /etc/ssh/sshd_config
PermitRootLogin no
重启服务
systemctl restart sshd
5.MaxAuthTries 6
①MaxAuthTries 6:默认次数是6次,但实际输入错误三次就退出了,因为客户端MaxAuthTries 6的默认值是3,但是可以通过输入以下命令增加连接次数。
②-o:此linux是客户端,带选项表示可以尝试登录8次,但是服务器限制客户端只有6次认证的机会,所以只有六次,最大值就是6次
6.白名单、黑名单
AllowUsers //白名单;仅允许
DenyUsers //黑名单;不允许
二、SSH密钥验证
2.1SSH概述
SSH协议是采用了基于密钥的安全验证方式用于远程管理的,需要依靠密钥,也就是必须事先建立一对密钥对,然后把密钥放在需要访问的目标服务器上,另外,还需要把私有的密钥放到SSH的客户端或对应的客户端服务器上。
2.2加密算法
2.2.1对称加密
2.2.1.1概念 :
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
2.2.1.2常用算法
在对称加密算法中常用的算法有: DES、3DES、 TDEA、 Blowfish、 RC2、RC4、 RC5、 IDEA、 SKIPJACK等
2.2.1.3特点:
①加密方和解密方使用同一个密钥;
② 加密解密的速度比较快,适合数据比较长时的使用;
③密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
2.2.1.4优缺点:
① 对称加密算法的优点是算法简单,速度快;
②对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露, 那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一 秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
2.2.2非对称加密
2.2.2.1概念:
发生方和接收方在本地都会产生一对私钥和公钥;非对称加密算法需要两个密钥:公钥和私钥。公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,因此加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2.2.2.2常用算法:
RSA (RSA algorithm) :目前使用最广泛的算法
DSA (Digital Signature Algorithm) :数字签名算法,和RSA不同的是DSA
仅能用于数字签名, 不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
ECC (lliptic curve cryptography, 椭圆曲线加密算法)
ECDSA: Eliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和DSA
的结合,相比于RSA算法,ECC可以使用更小的秘钥,更高的效率,提供更高的安全保障
2.2.2.3原理:
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致, SSH服务器就用公钥加密"质询" (challenge)并把它发送给SSH客户端
2.2.2.4特点:
①私钥不能在网络中传输,私钥可以解密公钥
②公钥可以在网络中传输,公钥不能解密私钥
2.3实验:在服务端实现无密码的远程交互和加密远程交互
设置公钥和私钥、把公钥发给服务端
2.3.1.免密交互:(在客户端制作公钥和私钥)
ssh-keygen //创建公钥和私钥
-t //选择密码算法,默认RSA;可以不写
[root@localhost .ssh]# cat id_rsa//查看私钥内容
ssh-copy-id-i 指定文件的路径 root@192.168.245.100 //把公钥id安装指定文件路径给服务端root用户,一般不需要指定
[root@localhost .ssh]# ssh-copy-id root@192.168.27.130 //把公钥id传到服务端root用户
authorized_keys //记录公钥文件,在服务端
known_hosts //记录建立连接的用户记录,多个客户端连接时追加的形式写入
三、SSH的通信模式
3.1非交互式-SCP安全复制
1.本机传到服务器
scp anaconda-ks.cfg root@192.168.27.130: /opt
ls //查询服务端已有的文件
2.服务器传本机
scp root@192.168.27.131: /opt/anaconda-ks.cfg /tmp
scp -p //带属性递归复制,用法和cp一样
若更改了端口号时复制,需要使用大写的P指定端口
scp -P 147 -rp ll root@192.168.27.130: /opt
3.2交互式-stfp安全传输
put //上传
get //下载
四、TCP Wrappers
4.1保护原理
4.2TCP Wrappers 概述
1.保护机制的实现方式
方式一:通过tcpd程序对其他服务程序进行包装
方式二:由其他服务程序调用libwrap.so.*链接库
2.访问控制策略的配置文件
/etc/hosts.allow
/etc/hosts.deny
4.3TCP Wrappers 策略
1.设置访问控制策略:
①策略格式:服务程序列表:客户端地址列表
②服务程序列表
多个服务以逗号分隔,ALL表示所有服务
③客户端地址列表
多个地址以逗号分隔,ALL表示所有地址
允许使用通配符?和*
网段地址,如192.168.4.或者192.168.4.0/255.255.255.0
区域地址:.benet.com
vim /etc/hosts.deny //拒绝
2.策略的应用顺序
①检查hosts.allow,找到匹配则允许访问
②再检查hosts.deny,找到则拒绝访问
③若两个文件中均无匹配策略,则默认允许访问
转载:https://blog.csdn.net/jiaoshu__/article/details/117266896