目录
一、OpenSSH服务器
1.1 SSH(Secure Shell)协议
1.2 OpenSSH
2.1 SSH原理
2.1 1 公钥传输原理
2.1.2 加密原理
2.1.3 SSHD服务的两种验证方式
二、SSH命令中的基本操作
2.1 构建密钥对验证的SSH
2.1.1 公钥和密钥的关系
2.1.2 构建密钥对验证的SSH原理
2.1.3 操作
2.2 scp复制
2.3 安全性传输sftp
2.4 tcp wrappers访问控制
扩展
远程管理协议
Telnet :明文传输协议
SSH :密文传输,具有加密、压缩功能
SSH相较于Telnet的优点:
- 数据传输是加密的,可以防止信息泄露
- 数据传输是压缩的,可以提高传输速度
一、OpenSSH服务器
1.1 SSH(Secure Shell)协议
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理
- 对数据进行压缩
1.2 OpenSSH
- 服务名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
2.1 SSH原理
2.1 1 公钥传输原理
- 客户端发起链接请求
- 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
- 客户端生成密钥对
- 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 客户端发送加密值到服务端,服务端用私钥解密,得到Res
- 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
首次连接时的公钥交换
- ①客户端发起连接请求,服务端会生成一个会话id,以及将会话id和自己的公钥交给客户端
- ②客户端拿到公钥和会话id以后,会用自己的公钥和对面给的会话id做运算得到一个结果,然后用服务器的公钥加密,传给服务端
- ③服务端收到这个结果,用自己的私钥去解密结果;结果=会话id+客户端的公钥;结果-会话id=客户端的公钥。最终服务端会得到客户端的公钥
2.1.2 加密原理
(1)对称加密
- 1、概念:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
- 2、常用算法:在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
- 3、特点:①加密方和解密方使用同一个密钥;②加密解密的速度比较快,适合数据比较长时的使用;③密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
- 4、优缺点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
(2)非对称加密
概念:
①非对称加密算法需要两个密钥:
公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
②常用算法:
- RSA(RSA algorithm):目前使用最广泛的算法
- DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
- ECC(Elliptic curve cryptography,椭圆曲线加密算法)
- ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
③原理:
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
④优缺点:
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢
2.1.3 SSHD服务的两种验证方式
密码验证:
对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来 看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱
18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高位端口1922) 做好安全
密钥对验证:
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell中被广泛使用
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用
二、SSH命令中的基本操作
2.1 构建密钥对验证的SSH
2.1.1 公钥和密钥的关系
- 在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
- 公钥用来给数据加密,用公钥加密的数据只能使用私钥解
2.1.2 构建密钥对验证的SSH原理
- 首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥
- 如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。
- SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密"质询"(challenge)并把它发送给SSH客户端。
2.1.3 操作
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证
改一下
2.2 scp复制
scp:scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。
2.3 安全性传输sftp
- sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法
- sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作
- 所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP
查看可用命令
help #查看sftp可使用的命令和用途打印服务器当前位置
pwd #打印当前服务器所在位置
lpwd #打印当前本地位置切换目录、查看文件
cd #切换服务器上的目录
ls #查看当前目录下文件列表下载文件、退出sftp
get #下载文件
get -r #下载目录
quit #退出sftp
put #上传文件
退出命令:quit、exit、bye都可以
2.4 tcp wrappers访问控制
TCP Wrappers访问控制
TCP Wrappers ( TCP封套)
- 在 Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如 Samba、BIND、 HTTPD、OpenSSH 等
- TCP Wrappers 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了 一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序
TCP Wrappers保护机制的两种实现方式
- 1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
- 2.由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd 程序。此方式的应用更加广泛,也更有效率。使用ldd命令可以查看程序的libwrap.so. *链接库ldd $ (which ssh)
语法格式:<服务程序列表>: <客户端地址列表>
(1)服务程序列表 服务程序列表可分为以下几类
ALL:代表所有的服务。单个服务程序:如“vsftpd”。多个服务程序组成的列表:如“vsftpd,sshd”。*
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd".
多个服务程序组成的列表:如“vsftpd, sshd"。.
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符“*”和"?”,前者代表任意长度字符,后者仅代表一个字符
网段地址,如"192.168.80.” 或者192.168.80.0/255.255.255.0
区域地址,如“. benet.com"匹配benet.com域中的所有主机。
访问控制的基本原则
- 首先检查 /etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;
- 否则继续检查/etc/hosts.deny 文件,如果找到相匹配的策略,则拒绝访问;
- 如果检查上述两个文件都找不到相匹配的策略, 则允许访问
- “允许所有,拒绝个别”
- 只需在/etc/hosts.deny文件中添加相应的拒绝策略
- “允许个别,拒绝所有"
- 除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts
- deny文件中设置"ALL:ALL"的拒绝策略。
这里用IP地址为192.17.20.68的客户机来测试连接
发现192.17.20.68可以成功连接而没有被允许的客户机则不能连接
扩展
Linux用户方面的安全加固:
设定密码策略
对用户密码强度的设定
对用户的登录次数进行限制
禁止ROOT用户远程登录
设置历史命令保存条数和账户超时时间
设置只有指定用户组才能使用su命令切
换到root用户
对Linux账户进行管理
对重要的文件进行锁定,即使ROOT用户也无法删除
建立日志服务器