目录
前言
1.ssh远程控制管理是什么?TCP Wrappers概述?密钥对验证的ssh体系?
1.openssh服务器
SSH (Secure Shell)协议
是一种安全通道协议
对通信数据进行了加密处理,用于远程管理
OpenSSH
服务名称:sshd
服务端主程序: /usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
远程管理linux系统基本上都要使用到ssh,原因很简单: telnet、FTP等传输方式是?以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH (secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用ssn协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
OpenssH常用配置文件有两个/etc/ssh/ssh_config和/etc/sshd_config。ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现。
vim /etc/ssh/sshd_config
2.构建密钥对验证的SSH
1.公钥和私钥的关系:
在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解
构建密钥对验证的SSH原理
首先ssh通过加密算法在客户端产生密钥对〈公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的ss服务器,客户端ssH软件就会向SsH服务器发出请求,请求用联机的用户密钥进行安全验证。sSl服务器收到请求之后,会先在该ssH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的ss:客户端发送过来的公用密钥进行比较。如果两个密钥一致,Sst服务器就用公钥加密"质询"( challenge)并把它发送给ssH客户端。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。vim/etc/ssh/sshd_configPasswordAuthentication yes
#启用密码验证
PubkeyAuthentication yes#启用密钥对验证
AuthorizedKeysFile .ssh/ authorized_keys#指定公钥库文件
1.在客户端创建密钥对
通过ssh-keygen.工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或psA等( ssh- keygen命令的"-t"选项用于指定算法类型)。
useradd admin
echo "123123"l passwd --stdin adminsu - admin
ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/ admin/ .ssh/id_ecdsa):半指定私钥位置,直接回车使用默认位置Created directory ' /home/admin/ . ssh'.#生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase):#设置私钥的密码
Enter same passphrase again:#确认输入
ls -1 ~/.ssh/id ecdsa*
#id_ecdsa是私钥文件,权限默认为600; id_ecdsa.pub是公钥文件,用来提供给ssH服务器
2.将公钥文件.上传至服务器
scp ~/.ssh/id_ecdsa.pub root@192.168.80.10 : / opt
或
#此方法可直接在服务器的/home/zhangsan/.ssh/目录中导入公钥文本
cd ~ / .ssh/
ssh-copy-id -i id_ ecdsa.pub zhangsan@192.168.80.10
3.在服务器中导入公钥文本
mkdir /home/zhangsan/.ssh/
cat /opt/id_ecdsa.pub >>/home /zhangsan/.ssh/authorized_keys
cat / home/ zhangsan / .ssh/ authorized_ keys
4.在客户端使用密钥对验证
ssh zhangsan@192.168.80.10
Enter passphrase for key '/home/admin/.ssh/id_ecdsa' :#输入私钥的密码
5.在客户机设置ssh代理功能,实现免交互登录
ssh-agent bash
ssh-add
3.安全性传输sftp
安全性传输sftp
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。
sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 ssh的其中一部分,其实在ssh软件包中,已经包含了一个叫作SFTP (Secure File "ransfer
Protocol)的安全文件信息传输子系统,SFTe本身没有单独的守护进程,它必须使用isshd守护进程(端口号默认是22)来完成相应的连接和答复操作
所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP
sftp root@192.168.10.10#登陆到服务器
get下载
get anaconda-ks.cfg / home/上传
I
put abc.txt#状认时会上传的/root
put abc.txt / home/
查看可用命令
help#查看sftp可使用的命令和用途打印服务器当前位置
pwd#打印当前服务器所在位置lpwd#打印当前本地位置
切换目录、查看文件
cd
#切换服务器上的目录
ls
#查看当前目录下文件列表
下载文件、退出sftp
get #下教文件
get -r #下教目录
quit #退出sftp
put #上传文件
退出命令:quit、exit、bye都可以
4.TCP wrappers
TCP wrappers访问控制
TCP wrappers ( TCP封套)
在Linux系统中,许多网络服务针对客户端提供了访问控制机制,如 Samba、BIND、HTTPD、OpenSSH 等TCP wrappers 将TCP服务程序"包裹”起来,代为监听TCP服务程序的端口,增加了
一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序
[root@localhost opt]# rpm -q tcp_wrappers #一般系统会默认安装
tcp_wrappers-7.6-77.el7.x86_64#该软件包提供了执行程序tcpd和共享链接库文件 libwrap.so.*TCP wrapper保护机制:通常由其他网络服务程序调用libwrap.so.*链接库比如sshd
[root@localhost opt]# ldd /usr/sbin/sshd | grep "libwrap”#使用ldd命令可以查看程序的共享库
libwrap.so.0 =>/lib64/libwrap.so.0 (0x00007fc35d8f8000)
TCP wrappers访问控制
TCP wrappers ( TCP封套)
将TCP服务程序"包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
大多数Linux发行版,TCP wrappers是默认提供的功能。rpm -q tcp_ wrappersTCP wrappers保护机制的两种实现方式
1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
⒉.由其他网络服务程序调用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地址为12.0.0.1的主机或者位于192.168.80.0/24网段的主机访问sshd服务
其他地址被拒绝。
vi /etc/hosts.allow
sshd: 12.0.0.1,192.168.80.*
vi /etc/hosts.deny
sshd: ALL
sshd, htpd: ALL
总结
1)配置OpenSSH服务端
监听选项、用户登录控制、登录验证方式
2)使用SSH客户端程序
ssh、scp、sftp、Xshell
3)构建密钥对验证的SSH体系的步骤
4)TCP Wrappers访问控制