目录
三期总目录链接
目录
一、SSH远程管理
SSH 协议:一种安全通道协议,主要是用来实现字符界面的远程登录、远程复制等功能 (相对于Telnet、RSH、RCP等安全性更高)
OpenSSH 服务端: 由openssh 和openssh-server 等软件包提供;默认已将sshd添加为标准的系统服务
默认监听端口: TCP 22 号端口
主配置文件: /etc/ssh/sshd_config
(一)、OpenSSH 服务端相关配置
1、相关服务监听选项:
Port | 监听端口 (默认22) |
ListenAddress | 监听地址 |
Protocol | ssh协议版本 |
USEDNS no | (禁用DNS反向解析) |
2、相关的用户登录控制选项
LoginGraceTime 2m | 登录验证时间: 默认2 分钟 |
PermitRootLogin yes | 默认是“yes”,表示允许root 用户登录 |
PermitEmptyPasswords no | 默认禁止空密码账户登录 |
MaxAuthTries 6 | 最大的重试次数 |
DenyUsers 用户 | 拒绝这个用户在任何机器上使用ssh 远程登录;如果拒绝多个用户中间用空格隔开 |
DenyUsers 用户@IP地址 | 拒绝这个用户在对应的IP地址的机器上进行远程ssh 登录 |
AllowUsers 用户名 | 仅允许某个用户通过ssh 远程登录 |
AllowUsers 用户名@IP地址 | 仅允许某个用户通过对应地址的主机进行SSH远程登录 |
注意: DenyUsers 选项和AllowUsers 选项不要同时使用在其他的Linux 主机上登录Linux 服务器的方法: ssh 用户名@需要登录的地址 -p 端口号
3、登录验证方式
两种:
密码验证 :服务器对本地系统用户进行用户名和密码验证 (容易受到暴力破解)
密钥对验证:在客户端上创建密钥文件(公钥和私钥);公钥上传到服务器指定位置;私钥 自己保留;远程登录时进行加密、解密关联认证,增强远程管理安全性
注意: 两种验证方式都启用时,服务器优先使用密钥对验证;对于安全性较高的服务器,建议关闭密码验证
PasswordAuthentication yes (密码验证方式开启)
PubkeyAuthentication yes (密钥对验证开启)
AuthorizedKeysFile .ssh/authorized_keys (指定公钥库位置)
(二)、SSH客户端程序的使用
OpenSSH客户端: 由openssh-clients软件包提供 (默认已将安装);包括ssh远程登录命令;以及scp远程复制和sftp文件传输命令
1、ssh 远程登录
1)、通过第三方工具使用ssh 进行远程登录 (Xshell;CRT、Putty )等图形化工具
2)、命令登录: ssh 用户名@主机地址 -p 端口号 (端口号默认是22 ,可以不跟-p 选项;如果修改了服务器的ssh 端口,必须要指定ssh 的端口号)
2、scp 远程复制
语法结构: scp root@对方的地址:对方文件位置 本地位置 (回车后,按提示输入对方root 账户的密码)
[root@C7--05 .ssh]# scp root@192.168.1.2:/root/aaa /root/ #(将192.168.1.2 上的aaa 这个文件复制到本机的/root下)
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:Zps5AsjlPL9jiHXgcqYcc0tbLnDW4Q0VCB4TQJcGrzc.
ECDSA key fingerprint is MD5:8f:23:08:60:6b:a9:15:ea:3b:41:f3:19:b6:de:60:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
root@192.168.1.2's password:
aaa
[root@C7--05 ~]# ls
aaa anaconda-ks.cfg 安装包
[root@C7--05 ~]# scp -r /root/bbb root@192.168.1.2:/root/ # (将本地的/root/boss 目录复制给远程主机192.168.1.5 的/opt 下)
root@192.168.1.2's password:
[root@C7--02 ~]# ls
aaa anaconda-ks.cfg bbb
3、sftp (安全的ftp)
登录 | sftp 用户名@对方地址 (按回车输入密码) |
下载 | get 文件名 |
上传 | put 文件名 |
退出登录 | bye 或 exit |
(三)、构建密钥对验证的SSH体系
两台Linux主机:
CentOS-02:192.168.1.2
CentOS-05:192.168.1.5
要求是: CentOS-02 这个机器中的boss 账户可以通过密钥对验证体系登录CentOS-05
实现步骤:
1)、在CentOS-05 机器上创建boss 账户,并创建密钥对
[root@C7--05 ~]# useradd boss #创建用户
[root@C7--05 ~]# passwd boss #设置密码
更改用户 boss 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@C7--05 ~]# su boss #切换成boss 登录
[boss@C7--05 root]$ ssh-keygen -t ecdsa #(用ecdsa 的加密方式创建密钥对文件) (连续敲3次Enter 键生成密钥对文件)
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/boss/.ssh/id_ecdsa):
Created directory '/home/boss/.ssh'. #密钥对文件的默认位置: /home/boss/.ssh/
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/boss/.ssh/id_ecdsa.
Your public key has been saved in /home/boss/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:46JKFcDpdiMPRMim6cjOCruy/tTcmT/o4F2DgwDHsno boss@C7--05
The key's randomart image is:
+---[ECDSA 256]---+
|.+o. |
|.o=. |
|o* o. |
|o X o. |
|+o *.. S |
|oo .= o.+. |
|= E. =.*oo |
|o*. ..oo+.. |
|O+oo...o .. |
+----[SHA256]-----+
[boss@C7--05 root]$ cd /home/boss/.ssh
[boss@C7--05 .ssh]$ ls
id_ecdsa id_ecdsa.pub #id_ecdsa(私钥文件) id_ecdsa.pub (公钥文件)
2)、把公钥文件上传给192.168.1.2 ,并验证
[boss@C7--05 .ssh]$ scp /home/boss/.ssh/id_ecdsa.pub root@192.168.1.2:/tmp/ #(把公钥文件传给192.168.1.2 的/tmp 目录中)
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:Zps5AsjlPL9jiHXgcqYcc0tbLnDW4Q0VCB4TQJcGrzc.
ECDSA key fingerprint is MD5:8f:23:08:60:6b:a9:15:ea:3b:41:f3:19:b6:de:60:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
root@192.168.1.2's password: #输入02机器的root密码
id_ecdsa.pub 100% 173 97.6KB/s 00:00
[root@C7--02 ~]# ls /tmp #查看确认
id_ecdsa.pub
[root@C7--02 ~]# useradd boss #在机器02上创建用户
[root@C7--02 ~]# passwd boss #设置密码
更改用户 boss 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@C7--02 ~]# mkdir -p /home/boss/.ssh #在02 上创建一个公钥数据库的存放目录
[root@C7--02 ~]# cat /tmp/id_ecdsa.pub >> /home/boss/.ssh/authorized_keys #把发送过来的公钥文件的内容追加到目标用户的公钥数据库中
[boss@C7--05 .ssh]$ ssh 192.168.1.2 #在客户端上使用密钥对验证
[boss@C7--02 ~]$
三、TCP Wrappers 访问控制
定义: 一种防护机制,作为应用服务与网络之间的一道特殊防线,提供额外的安全保障
工作原理: 将TCP服务程序“包裹”起来,监听TCP服务程序端口,增加一个安全监测过程,外来的链接请求必须通过这层安全检测,获得许可后,才可以真正访问服务程序 CentOS7.3 上默认的软件包: tcp_wrappers-7.6-77.el7.x86_64提供:执行程序tcpd 和共享链接库文件libwrap.so.*
保护机制的两种实现方式:
(一)、直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd
(二)、其他的服务程序调用libwrap.so.*链接库,不需要运行tcpd (应用更广泛,更有效率)
查看程序的共享库: ldd /usr/sbin/sshd | grep "libwrap"
TCP Wrappers 对应的两个策略文件:
/etc/hosts.allow : 用来设置允许策略
/etc/hosts.deny : 用来设置拒绝策略
策略的配置格式: 服务程序列表:客户端地址列表
访问控制的基本原则:先检查/etc/hosts.allow 文件,找到相匹配的策略,就允许访问;然后继续检查/etc/hosts.deny ,如果找到相匹配的策略,则拒绝;如果检查两个文件都没有匹配的策略,则允许访问
1)、·
服务程序列表 | |
ALL | 表示所有服务 |
单个服务 | 直接写服务名 |
多个服务程序 | 服务名中间以"," 隔开 |
2)、
客户端地址列表 | |
ALL | 任何客户端 |
LOCAL | 本机地址 |
单个IP | 直接写一个IP |
网段地址 | 例: 192.168.100.0/255.255.255.0 (表示192.168.100.0 这个网段) |
以"."开始的域名 | 所有的以同一个域名后缀结尾的主机 |
以"." 结束的网络地址 | 表示一个网段 |