远程访问及控制

目录

前言

一:SSH是什么?

1.SSH

2.优点

3.SSH配置文件

4.SSH客户端与与服务端

二.ssh远程登录方式

三.配置OpenSSH服务端

1.服务配置

2.安全调优

3.scp复制

4.sftp安全FTP

四.sshd服务支持验证方式

1.密码验证

2.密钥对验证

3配置密钥对验证

五.TCP Wrappers访问控制 

TCP Wrappers访问控制

语法格式:<服务程序列表>:<客户端地址列表>

访问控制的基本原则

实例:

总结


前言

今天我们来了解一些ssh远程访问及控制的知识,满屏干货,建议收藏

SSH 为Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。

一:SSH是什么?

1.SSH

(Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令, SSH为建立在应用层和传输层基础上的安全协议。

2.优点

SSH客户端<-------------------------->SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度

3.SSH配置文件

OpenSSH常用配置文件有两个/etc/ssh/ssh_config和/etc/sshd_config.
ssh_confiq: 为客户端配置文件, 设置与客户端相关的应用可通过此文件实现
sshd_config: 为服务器端配置文件, 设置与服务端相关的应用可通过此文件实现。 

4.SSH客户端与与服务端

SSH客户端: Putty, Xshell, CRT、MobaXterm
SSH服务端: OpenSSH
OpenssH 是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动
执行"systemctI start sshd"命令即可启动sshd服务
sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/sshd-config
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

作用: SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输, SSH 是加密传输。

服务名称: sshd
服务端主程序: /usr/sbin/sshd
服务端配置文件: /etc/ssh/sshd_config 

二.ssh远程登录方式

登录 方法一:
ssh [远程主机用户名] @[远程服务器主机名或IP地址] -p port
当在 Linux 主机上远程连接另一台 Linux 主机时, 如当前所登录的用户是 root 的话, 当连接另一台主机时也是用 root 用户登录时, 可以直接使用 ssh IP, 端口默认即可, 如果端口不是默认的情况下, 需要使用-p 指定端口。
RSA算法基于一个十分简单的数论事实: 将两个大素数相乘十分容易, 但是想要对其乘积进行因式分解却极其困难, 因此可以将乘积公开作为加密密钥。

登录 方法二:
ssh -1 [远程主机用户名] [远程服务器主机名或IP地址] -p port
-l:-l 选项, 指定登录名称。
-p:-p 选项, 指定登录端口 (当服务端的端口非默认时, 需要使用-p 指定端口进行登录)

注:第一次登录服务器时系统没有保存远程主机的信息, 为了确认该主机身份会提示用户是否继续连接, 输入yes 后登录, 这时系统会将远程服务器信息写入用户主目录下的$HOME/.ssh/known hosts文件中, 下次再进行登录时因为保存有该主机信息就不会再提示了

三.配置OpenSSH服务端

OpenSSH服务需要4个软件包
openssh-5.3p1-114.e16_7.x86 64     #包含OpenSSH服务器及客户端需要的核心文件。
openssh-clients-5.3p1-114.e16_7.x86_64 #OpenssH客户端软件包
openssh-server-5.3p1-114.e167.x86_64  #openssH服务器软件包
openssh-askpass-5.3p1-114.e16-7.x86_64   #支持对话框窗口的显示, 是一个基于x系统的

1.服务配置

# 监听端口修改  实验
设置SSHD监听端口号。
# SSH 预设使用 22 这个port, 也可以使用多个port, 即重复使用 port 这个设定项!
# 例如想要开放SSHD端口为 22和222, 则多加一行内容为: Port 222 即可。
# 然后重新启动sSHD这样就好了。 建议大家修改 port number 为其它端口, 防止别人暴力破解。

#ListenAddress  监听地址
ListenAddress 0.0.0.0
设置SSHD服务器绑定的IP 地址, 0.0.0.0 表示侦听所有地址
安全建议: 如果主机不需要从公网ssh访问, 可以把监听地址改为内网地址 这个值可以写成本地IP地址, 也可以写成所有地址, 即0.0.0.0表示所有IP

# Protocol 2
表示所有IP

# Protocol 2
设置协议版本为SSH1或SSH2, SSH1存在漏洞与缺陷, 选择SSH2

#UseDNS yes
一般来说, 为了要判断客户端来源是正常合法的, 因此会使用 DNS 去反查客户端的主机名, 但通常在内网互连时, 该基设置为no, 因此使联机速度会快此
注: 禁用DNS反向解析, 以提高服务器的响应速度

#SyslogFacility AUTHPRIV
当有人使用 SSH 登入系统的时候, SSH 会记录信息, 这个信息要记录的类型为AUTHPRIV, sshd 服务日志存放在: /var/log/secure。

2.安全调优

####LoginGraceTime 2m
 grace意思是系统给与多少秒来进行登录。 (默认2分钟, 0 表示无限制)
 当使用者连上 SSH server 之后 , 会出现输入密码的画面, 在该画面中。
 在多久时间内没有成功连上SSHserver 就强迫断线! 若无单位则默认时间为秒。 可以根据实际情况来修改实际

### PermitRootLogin yes  实验
是否允许 root 登入, 默认是允许的, 但是建议设定成 no, 真实的生产环境服务器, 是不允许root账号直接登陆的, 仅允许普通用户登录, 需要用到 root 用户再切换到root 用户。
案列
创建用户zhangsan、 lisi
查询组
grep "wheel" /etc/group
gpasswd -a zhangsan wheel   #zhangsan 用户已加入 wheel 组
开启pam模块

####passwordAuthentication yes
密码验证当然是需要的!所以这里写yes, 也可以设置为no, 在真实的生产服务器上, 根据不同安全级别要求, 有的是设置不需要密码登陆的, 通过认证的秘钥来登陆。

#### permitEmptyPasswords no
是否允许空密码的用户登录,默认为no, 不允许空密码登录

####PrintLastLog yes
显示上次登入的信息! 默认为 yes

###MaxAuthTries 6
指定每个连接最大允许的认证次数。 默认值是 6 。
如果失败认证的次数超过这个数值的一半, 连接将被强制断开, 且会生成额外的失败日志消息 
默认3次

验证ssh -o NumberofPasswordPrompts=8 lisi@192.168.10.9

######AllowUsers
当希望只允许或禁止某些用户登录时, 可以使用 AllowUsers 或 DenyUsers 配置, 两者用法类似 (注意不要同时使用)
配置A1lowUsers
例如, 若只允许 zhangsan、 wangwu 用户登录,其他 (lisi) 用户
AllowUsers zhangsan@192.168.10.10 wangwu

3.scp复制

安全性复制
scp: scp是secure copy的简写, 用于在Linux下进行远程拷贝文件的命令, 而且scp传输是加密的。

1.###本地文件复制到服务器
scp sheng root0192.168.100.141:/opt2
2.###复制服务器的文件到本地
scp root@192.168.100.141:/opt/test/ ./
3.####本地目录复制到服务器
scp -r 1234/ root@192.168.100.141:/opt

4.sftp安全FTP

sftp是secure File Transfer Protocol的缩写, 安全文件传送协议。 可以为传输文件提供一种安全的网络的加密方法。
sftp 与 ftp 有着几乎一样的语法和功能。 SFTP 为 ssH 的其中一部分,其实在ssH软件包中,已经包含了一个叫作SFTP (Secure File TransferProtocol)的安全文件信息传输子系统, SFTP本身没有单独的守护进程,它必须使用sshd守护进程 (端口号默认是22)来完成相应的连接和答复操作
所以, 使用SFTP是非常安全的。 但是, 由于这种传输方式使用了加密/解密技术, 所以传输效率比普通的FTP要低得多, 如果您对网络安全性要求更时, 可以使用SFTP代替ETP

sftp root@192.168.10.10   #登陆到服务器

get下载
get anaconda-ks.cfg /home/

上传
put abc.txt  #默认时会上传的/root 
put abc.txt /home/

查看可用命令
help  #查看sftp可使用的命令和用途

打印服务器当前位置
pwd     #打印当前服务器所在位置
lpwd    #打印当前本地位置

切换目录、 查看文件
cd     #切换服务器上的目录
ls     #查看当前目录下文件列表

下载文件、 退出sftp
get         #下载文件
get -r      #下载目录
quit        #退出sftp
put         #上传文件
退出命令:quit、 exit、 bye都可以

四.sshd服务支持验证方式

sshd 服务支持两种验证方式:

1.密码验证

对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解,暴力破解可看之前博客有详细描述系统弱口令检测

2.密钥对验证

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。

vim /etc/ssh/sshd_config                        #编辑服务端主配置文件
PasswordAuthentication yes 						#启用密码验证
PubkeyAuthentication yes 						#启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 		#指定公钥库文件

3配置密钥对验证

在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)。 

useradd admin
echo "123123" | passwd --stdin admin 
su - 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 服务器

将公钥文件.上传至服务器 
scp ~/.ssh/id_ecdsa.pub root@192.168.80.10:/opt
或
#此方法可直接在服务器的/home/zhangsan/.ssh/目录中导入公钥文本
cd ~/.ssh/
ssh-coby-id -i id_ecdsa.pub zhangsan@192.168.80.10

在服务器中导入公钥文本
mkdir /home/zhangsan/.ssh
cat /opt/id ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys
 
cat /home/ zhangsan/.ssh/authorized_keys

在客户端使用密钥对验证
ssh zhangsane192.168.80.10
Enter passphrase for key '/home/admin/.ssh/id_ecdsa' :    #输入私钥的密码

在客户机设置ssh代理功能, 实现免交互登录

ssh-agent bash
ssh-add
Enter passphrass for /home/admin/ .ssh/id_ecdsa:
#输入私钥的密码
ssh zhangsan@192.168.80.10

五.TCP Wrappers访问控制 

TCP Wrappers (TCP封套)

在Linux系统中,许多网络服务针对客户端提供了访问控制机制,如Samba, BIND, HTTPD, OpenssH等
TCP wrappers将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序

[root@localhost opt]# rpm-g tcp wrappers #一般系统会默认安装
tcp wrappers-7.6-77.e17.x86 64 #该软件包提供了执行程序tcpd和共享链接库文件1ibwrap.so.*

TCP wrapper保护机制:通常由其他网络服务程序调用1ibwrap.so.*链接库比如sshd

[root@localhost opt]# 1dd /usr/sbin/sshd I grep "libwrap" #使用1dd命令可以查看程序的共享库
    libwrap.so.0 => /1ib64/libwrap.so.0 (0x00007fc35d8f8000)

TCP Wrappers访问控制

TCP Wrappers (TCP封套)
将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安 
全检测,获得许可后才能访问真正的服务程序。
大多数Linux 发行版,TCP Wrappers 是默认提供的功能。 rpm -q tcp_wrappers
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地址为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: ALI

sshd, htpd: ALL 

总结

本文详细列举的ssh远程访问的相关知识,内容满满,期待收藏呐

佛渡众生,何人渡我?佛若不渡,我自渡

愿我们都开心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值