网络服务-SSH
什么是ssh
ssh是secure shell的缩写,建立在应用层上的安全远程管理协议。Ssh是目前较为可靠的传输协议,主要用于远程登录会话和为其他网络服务提供安全性。默认使用22端口,采用密文的形式,对比telnet协议的明文传输吗,具有更高的安全性。
ssh的登录验证模式
ssh提供基于账户口令和密钥对两种登录方式:
1 账户口令:
Linux之间使用shh命令:ssh 用户名@ip地址
Windows和linux之间使用xshell等第三方工具登录
2 密钥对:
配置ssh服务
Linux之间
环境的准备:
两台linux操作系统的主机,配置好网络相关的参数,注意主机名要不同来便于区分
(如果是虚拟机克隆出来的记得更换网卡设置哦~)
关闭防火墙:
临时关闭:
Iptables -F #清空防火墙的规则
Setenforce 0 #临时关闭selinux
永久关闭(配置完需要reboot):
Chkconfig iptables off #关闭自启动
Vim /etc/selinux/config 将SELINUX=disabled
1.账号口令登录:
:shh ip地址
:登录密码
2.密钥对:
生产密钥对:
Ssh-keygen -t rsa -b 1024
-t 指定加密的类型
-b 指定密钥加密长度
再传送文件给服务器: ssh-copy-id 用户名@ip地址
两个文档的内容一样,表示密钥传输成功
有了密钥对登录则下次ssh无需密码
(密钥对的优先级>账号口令登录)
Xshell登录linux
1.账户密码登录:
登录成功
密钥对登录
加密长度是越长越安全,但是也对应着资源占用多
公钥一定要存放到~/.shh/authorized_keys文件中
将复杂的公钥替换到~/.shh/authorized_keys
就可以使用密钥对登录了~~
就可以使用密钥对登录了~~
禁止使用密码登录
一般在生产环境中会禁用密码口令登录,是如何禁用呢?
需要配置/etc/ssh/sshd_config
将PasswordAuthentication 改为no后重启即可
密码口令已经不适用了~
禁止root用户远程登录
配置文件:/etc/ssh/sshd_config
将PermitRootLogin 改为no即可
Root用户不可登录了~ 一定要记得用备用用户哈~
修改默认端口和限制监听ip
ssh默认为22tcp端口,但ssh作为远程管理系统对安全十分需求,所以我们最好修改一个高位端口,1000以内的是系统服务常用端口,所以尽量不使用。
配置文件:/etc/ssh/sshd_config
修改 #Port 22
监听ip:
是指通过类似nat的形式,不使用外网直接登录,在局域网中,只有一台可以被外网远程,其他主机可以通过该主机进行远程连接,这样安全性更高。
配置文件:/etc/ssh/sshd_config
ListenAddress ip地址
测试添加一个子接口,将监听设为子接口ip
原来的ip不能连接了 设置的ip可以
ssh服务相关命令
scp:安全的远程文件复制命令
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令。类似cp命令,scp传输是加密的,速度稍微会慢一些,但是不占资源,不会提高多少系统负荷。
scp 本地文件 用户名@服务器ip:目录
scp /root/abd.txt root@192.168.194.228:/tmp -P 1234
-P 端口 #若端口不是默认的,需要指定端口。
#路径建议使用绝对路径
也可以从服务器上下载文件:
scp 用户名@服务器ip:目录 文件
scp root@192.169.194.228:/tmp /root/
sftp:安全的文件传输协议
sftp是Secure FileTransferProtocol的简写,安全文件传送协议。几乎与ftp相似,由于传输的方式使用了加解密的技术,所以比ftp安全,但传输效率要低得多。
sftp 用户名@ip地址
#-oPort=端口 如果不是默认端口的话
sftp root@192.168.194.228
sftp -oPorto=2222 root@192.168.194.228 #改端口
[外链图片转存失败(img-byXrZuy6-1565017753864)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1564664573434.png)]
sftp命令 | 功能 |
---|---|
help | 查看交互状态下支持那些命令 |
pwd/lpwd | pwd是查看服务器所在路径,lpwd是客户端所在路径 |
ls/lls | ls是查看服务器当前目录下文件列表,lls是客户端当前目录下文件列表 |
put | 将客户机中的文件上传到服务器 |
get | 将服务器的指定文件下载到客户机的当前目录 |
rm | 删除服务器的指定文件 |
quit | 退出sftp交互模式 |
TCPWrappers简介和工作原理及使用
TCPWrappers简介
TCPWrappers是一个工作在传输层的安全工具,对有状态连接(TCP)的一部分特定服务进行安全检测和实现访问控制,通过libwrap.so库文件调用的程序就可以受TCPWrappers安全控制。它主要功能是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd、telnet。
判断方式:
1.查看对应服务命令的所在位置:which sshd
-
查看指定命令执行时是否调用libwrap.so文件:ldd /usr/sbin/sshd | grep libwrap.so
ldd命令:静态查看服务在执行时调用的库文件列表
TCPWrappers工作原理
以ssh为例,当有ssh的连接请求时,会先读取系统管理员所设置的访问控制文件/etc/hosts.allow(优先)与/etc/hosts.deny,符合要求的放行,由ssh完成后续的工作;如果不符合访问控制文件的要求,则会中断请求,拒绝提供ssh服务。
- 优先查看hosts.allow,匹配即停止
- 允许个别,拒绝所有:hosts.allow文件添加允许的策略,hosts.deny文件添加all
- 允许所有,拒绝个别:hosts.allow文件为空,hosts.deny文件添加单个拒绝的策略
TCPWrappers的使用
TCPWrappers的使用主要依靠两个配置文件/etc/hosts.allow,/etc/host.deny,以此实现访问控制,在默认情况下,这两个配置文件都是没有策略的,没有限制。
配置文件编写规则:
service_list@list: client_list
项 | 功能 |
---|---|
service_lsit | 程序(服务)列表,可以写多个,用,隔开 |
@host | 设置允许或禁止他人从自己的哪个网口进入。本项不写则代表全部 |
client_list | 访问者的地址,可以写多个,用,或者空格隔开 |
格式如下:
- 基于IP地址:192.168.88.1,192.168.88. (88.:代表88网段)
- 基于主机名:www.xxxxxx.com
- 基于网络/掩码:192.168.0.0/255.255.255.0 (centos6只能写出这样,centos7中可以写成192.168.0.0/24)
下面举个栗子:
-
拒绝单个IP使用ssh远程连接:
配置文件:
hosts.allow :空着
hosts.deny:ssh:192.168.88.88
-
拒绝某一网段使用ssh远程连接:
配置文件:
hosts.allow :空着
hosts.deny : sshd:192.8.8.
-
仅允许某一IP使用ssh远程连接:
配置文件:
hosts.allow :sshd:192.168.88.8
hosts.deny : sshd:ALL