一、ssh简介
ssh是一种安全通道协议、主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据进行加密处理其中包括用户登陆时输入的用户口令与早期的TELNET(远程登录)、RSH远程执行命令、RCP远程复制等应用相比ssh协议提供了更好的安全性。
ssh默认监听端口 22
二、OpenSSH配置
BS和CS架构
BS 浏览器/服务器端
CS 客户端/服务器端
1、监听选项
[root@splitdns ~]# vim /etc/ssh/sshd_config
#Port 22 监听端口22
#ListenAddress 0.0.0.0 监听地址默认监听0.0.0.0
UseDNS no 禁用DNS反向解析加快连接速度
2、用户登录空控制
ssh服务默认允许root用户登录,这样的作法是非常不安全的,在生产环境中一般做法是禁用root用户登录以普通用户登录,等用户进入安全的shell环境在切换root用户进行操作。
[root@splitdns ~]# vim /etc/ssh/sshd_config
#LoginGraceTime 2m #登录验证时间
#PermitRootLogin yes #禁止root用户登录
#MaxAuthTries 6 #最大重试次数
#PermitEmptyPasswords no #禁止空密码用户登录
OPENSSH服务访问控制
AllowUsers 仅允许用户登录
DenyUsers 仅禁止用户登录
注意
1)AllowUsers和DenyUsers不要同时使用
2)当服务器在网络上,控制包含IP地址应是公司公网地址
AllowUsers linyu@192.168.9.66 #仅允许 linyu 等用户登录
服务器一般有四块网卡 em1-4
3、登录验证方式
1)、ssh验证方式
密码验证
密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #公钥存放位置、对方家目录下的位置
三、 ssh的使用客户端程序
1、ssh命令的使用
ssh root@192.168.9.66 touch /tmp/a.txt
不仅可以远程登录还可以远程执行命令
2、scp远程复制
scp 192.168.9.10:/etc/hosts /etc/hosts
scp -r 目录加r
3、sftp命令
格式 sftp ip地址
get 下载
put 上传
lcd 切换目录
4、windows
finalshell
putty
四、构建密钥对验证的SSH体系
1、验证过程包含四步
2、在客户端创建密钥对(创建的密钥对存放在对方家目录下的/home/.ssh)
在Linux客户端通过ssh-keygen命令工具为当前登录用户创建密钥对文件,可用的加密算法:
ECDSA、RSA、DSA,可通过 -t 选项指定,默认算法RSA
3、将公钥上传至服务器
4、服务器端导入公钥文本
非交互生成密钥对
[root@localhost ~]# ssh-keygen -t ecdsa -P "" -f .ssh/id_ecdsa
windows生成密钥对
点击Xshell工具选项卡–>新建用户密钥生成向导
五、TCP Wrappers
在Linux系统中,许多网络服务针对客户端提供了访问控制
1、tcp wrappers 保护原理
2、保护机制的实现方式
方式1、通过tcpd主程序对其他服务程序进行包装
方式2、由其他服务程序调用libwrap.so 连接库
3、保护条件
1)、必须是TCP协议的服务
2)、函数库必须含libwrap.so.0 (共享链接库)、大多数服务通过这种服务
ldd命令详解
ldd本身不是一个程序,而仅是一个shell脚本:ldd可以列出一个程序所需要得动态链接库(so)
`[root@www ~]# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3a9e0f7000)
[root@www ~]# ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f37a748a000)`
TCPWRAP原理
/etc/hosts.allow #允许
/etc/hosts.deny #拒绝
访问控制策略
由此可见/etc/host.allow文件的优先级更高,若同一IP地址存在hosts.allow中,也存在hosts.deny中
则该IP地址将被接受。
5、配置格式
1)格式
服务列表:客户端地址列表
注意网段不能写192.168.9.0/24
2)、配置实例
实验要求仅允许IP地址为192.168.200.100~192.168.200.199的主机访问sshd服务,禁止其他地址的访问。
[root@localhost ~]# vim /etc/hosts.allow
sshd,vfstpd:192.168.200.1??
[root@localhost ~]# vim /etc/hosts.deny
sshd:ALL
公网服务器配置案例: