Linux云计算之网络服务基础(三)

一、ssh 安全远程管理

  1. 什么是 ssh

ssh 是 Secure Shell 的缩写,是一个建立在应用层上的安全远程管理协议。ssh 是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性。利用 ssh 协议可以有效防止远程管理过程中的信息泄露问题
ssh可用于大多数 UNIX 和类UNIX 操作系统中,能够实现字符界面的远程登录管理,它默认使用 22 端口,采用密文的形式在网络中传输数据,相对于通过明文传输的 Telnet 协议,具有更高的安全性

  1. ssh 的登录验证模式

ssh 提供了基于账号密码(口令)和密钥对两种登录验证方式,这两者都是通过密文传输数据的。

账户密码验证:

在这里插入图片描述
账户密码登录认证过程中传输的是用户的账户名和密码,密码具有足够的复杂度才能具有更高的安全性。Linux 主机之间的远程管理工具是 ssh 命令,所以我们直接使用 ssh 进行远程登录

格式:
	ssh 用户名@IP地址
	ssh root@192.168.88.150

windows 远程登录 Linux 主机一般使用第三方工具,比如 Xshell 等工具

密钥对验证:

在这里插入图片描述

  • 首先需要在 Client 上创建一对密钥,并且需要把公钥放在需要访问的 Server 上
  • 当 Client 需要连接 Server 时,Client 端的软件就会向 Server 端发出登录请求,请求使用密钥对中的公钥进行安全验证
  • Server 收到请求之后,会在该用户的家目录下查询公钥文件,拿 Client 发送过来的公钥和自己家目录下的公钥进行比较
  • 如果两个公钥一致,Server 就用公钥加密“challenge(质疑)”,并把它发送给 Client 软件。Client 收到加密内容之后,使用本地的私钥进行解密,再把解密结果发送到 Server 端,Server 端验证成功后,允许登录

注意:若第3个步骤对比结果失败,则 Server 端会通知 Client 端此公钥未在本机注册,无法验证登录

在这里插入图片描述

  1. 配置 ssh 服务

1)环境准备

准备好两台 Linux 操作系统的主机,配置好相关网络参数,实现可以正常通信,并将主机名修改为不同的名字

临时关闭防护功能:

iptables -F		#清空防火墙规则
setenforce 0	#临时关闭SELinux 

永久关闭防护功能:

chkconfig iptables off		#设置防火墙开机不自启动
sed -i '7s/enforcing/disabled/' /etc/selinux/config		#永久关闭SELinux
#注意:以上两条命令执行后,需要重启服务器才能生效,切记

2)用户密码验证

Linux 主机之间的远程管理工具是 ssh 命令,所以我们直接使用 ssh 进行远程登录

格式:
	ssh 用户名@IP地址
	ssh root@192.168.88.150

windows 远程登录Linux 主机一般使用第三方工具,比如 Xshell 等工具

格式:
	ssh root@192.168.88.150

3)密钥对验证

Linux 主机之间的密钥对登录验证

  • 客户端生成密钥对文件
ssh-keygen -t rsa -b 2048
	-t 指定加密类型(rsa/dsa等)
	-b 指定密钥对加密长度
	询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的 .ssh/ 目录下
	询问2:是否对密钥文件进行加密
		加密:若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件
		不加密:若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录
  • 将公钥文件上传至服务器端
ssh-copy-id 用户名@服务器IP地址
#该用户名和要用来登录服务器的用户名一致
  • 客户端尝试登录服务器
ssh 用户名@服务器IP地址
#密钥对验证优先级大于账户密码验证

Windows 使用密钥对登录 Linux

  • 使用 Xshell 自带的密钥对生成向导生成密钥对

在这里插入图片描述

  • 将公钥导入Linux 主机的指定用户下的指定公钥配置文件内

后面用哪个用户登录就放在谁家里,这里我们先用 root 用户做实验
在root 家目录下,找到 .ssh 目录,然后在里面创建 authorized_keys 文件,并且将公钥写入进去

  • 使用windows 尝试登录指定用户

4) 禁止使用密码登录

当我们学会了使用密钥对进行验证后,建议生产环境下将账户密码登录功能关掉

配置文件:/etc/ssh/sshd_config
选项:
	PsswordAuthentication no
#注意:ssh 的配置文件中,并不是注释掉的就是不生效的,有些是默认生效,需要修改时一定要取消注释再修改

5.)禁止使用 root 远程登录

root 在系统中是一个可以为所欲为的角色,我们可以在平时的操作中用普通用户操作,在有需要修改一些系统设置的时候再从普通用户切换到 root 用户,这样可以最大限度的避免因为误操作而对系统造成破坏,同时也可以避免黑客在暴力破解后直接使用 root 用户登录系统,一般在远程登录管理上我们会禁止直接使用 root 用户登录

配置文件:/etc/ssh/sshd_config
选项:
	PermitRootLogin no

6)修改默认端口、限制 ssh 监听 IP

修改默认端口: ssh 作为一个用来远程管理服务器的工具,需要特别的安全,默认情况下使用 TCP 的22 端,若不进行修改,很容易被利用遭到攻击,所以我们一般都会修改端口,尽量修改一个高位端口(范围1-65535)

配置文件:/etc/ssh/sshd_config
选项:
	Port 59527
	ssh -p 端口 用户名@服务器IP

限制ssh监听IP: 有些服务器则安全级别更高一些,不允许使用外网直接登录,只有通过局域网才能登录,我们可以在机房里设置其中一台能够被外网远程连接,其他的主机都通过这个机器进行远程连接即可

配置文件:/etc/ssh/sshd_config
选项:
	ListenAddress 192.168.88.150
  1. ssh 服务相关命令

scp:安全的远程文件复制命令

scp是 Secure copy 的简写,用于在 Linux 下进行远程拷贝文件的命令,类似于命令有 cp,scp 传输时加密的,所以可能会稍微影响一点速度。另外,scp 还非常不占资源,不会提高多少系统负荷

格式:scp 本地文件 用户名@服务器IP:目录
	 scp /root/liuyong.txt root@192.168.88.150:/tmp
	 -P 端口		#若端口不是默认的 22,则需要使用此格式指定端口

sftp:安全的文件传输协议

sftp 是 Secure FileTransferProtocol 的缩写,安全文件传送协议。sftp 与 ftp 有着几乎一样的语法和功能。由于这种传输方式使用了加密/解密技术,所以 sftp比ftp更安全一些,但传输效率比普通的FTP要低得多

格式:sftp 用户名@服务器IP
	 sftp
	 -oPort=端口		#若端口不是默认 22 ,则需要使用此格式指定端口
交互命令:
		help:查看在交互模式下支持哪些命令
		pwd/lpwd:pwd是查看服务器所在路径,lpwd是查看客户端所在路径
		ls/lls:ls是查看服务器当前目录下的文件列表;lls是查看客户机当前所在路径的所有文件列表
		put:将客户机中的指定文件上传到服务器端
		get:将服务器端的指定文件下载到客户机的当前所在目录
		rm:删除掉服务器端的指定文件
		quit:退出 sftp 的交互模式,断开和服务器之间的连接

二、TCP Wrappers(简单防火墙)

  1. TCP Wrappers 简介

TCP_Wrappers 是一个工作在第四层(传输层)的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用 libwrap.so 库文件的程序局可以受 TCP_Wrappers 的安全控制。它的主要功能就是控制谁可以访问,常见的程序有 rpcbind、vsftp、sshd、telnet

判断方式:
		1. 查看对应服务命令所在位置
		which sshd
		2. 查看指定命令执行时是否调用 libwrap.so 文件
		ldd /usr/sbin/sshd | grep libwrap.so
  1. TCP Wrappers 工作原理

以 ssh 为例,每当有 ssh 的连接请求时,限度去系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给 ssh 进程,由 ssh 完成后续工作;如果这次连接发起的 ip 不符合访问控制文件中的设置,则会判断连接请求拒绝提供 ssh 服务

在这里插入图片描述

  • 优先查看 hosts.allow,匹配即停止
  • 允许个别,拒绝所有:hosts.allow 文件添加允许的策略,hosts.deny 文件添加 all
  • 拒绝个别,允许所有:hosts.allow 文件为空,hosts.deny 文件添加单个拒绝的策略
  1. TCP Wrappers 的使用

TCP_Wrappers的使用主要是依靠两个配置文件 /etc/hosts.allow,/etc/hosts.deny ,以此实现访问控制,默认情况下,/etc/hosts.allow,/etc/hosts.deny 什么都没有添加,此时没有限制

配置文件编写规则:

service_list@hosts:client_list

service_list: 是程序(服务)的列表,可以是多个,多个时使用 , 隔开
@host: 设置允许或禁止他人从自己的哪个网口进入。这一项不写,就代表全部
client_list: 是访问者的地址,如果需要控制的用户较多,可以使用空格或 , 隔开

格式如下:
		基于IP地址:192.168.88.1 192.168.88.
		基于主机名:www.liuyong.com .liuyong.com 较少用
		基于网络/掩码:192.168.0.0/255.255.255.0
		内置ACL:ALL(所有主机)、LOCAL(本地主机)

实验案例

拒绝单个 IP 使用 ssh 远程连接:

配置文件:
hosts.allow :空着
hosts.deny:sshd:192.168.88.150

拒绝某一网段使用 ssh 远程连接:
hosts.allow:空着
hosts.deny:sshd:192.168.88.

仅允许某一 IP 使用 ssh 远程连接:
hosts.allow:sshd:192.168.88.150
hosts.deny:sshd:ALL

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值