SSH和TCP wrappers
作者:互联网
目录
一. SSH 远程管理
- SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能;
- 对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令;
- 与早期的Telnet(远程登录)、rsh(远程执行命令)、rcp(远程文件控制)等相比,SSH协议提供了更好的安全性。
①配置Open SSH 服务端
- SSH服务端的配置文件:/etc/ssh/sshd_config
- 服务监听选项:端口(默认Tcp的22号端口)、地址、协议版本和DNS反向解析等
vim /etc/ssh/sshd_config #服务端配置文件
#Port 22 #监听端口为 22
#AddressFamily any #监听地址为任意网卡,也可以指定 Openssh 服务器的具体 ip
#LoginGraceTime 2m #登录验证时间为2分钟
#PermitRootLogin yes #禁止 root 用户登录
#MaxAuthTries 6 #最大重试次数为 6
#PermitEmptyPasswords no #禁止空密码用户登录
#UseDNS no #禁用 DNS 反向解析,以提高服务器的响应速度
----------------------------------------------------------------------------------
配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
AllowUsers zhangsan #允许 zhangsan 登录
AllowUsers zhangsan@192.168.80.80 #只允许 zhangsan 通过 192.168.80.80 登录
DenyUsers lisi #禁止 lisi 登录
例:只允许zhangsang、lisi、wangwu用户登录,且其中lisi用户仅能够从IP地址为192.168.80.80的主机远程登录。
1 vim /etc/ssh/sshd_config #修改服务端配置文件
2 -------------------------------------------------------
3 AllowUsers zhangsan lisi@192.168.80.80 wangwu #这里为添加的配置
4 -------------------------------------------------------
5 systemctl reload sshd #修改完记得重新加载
②sshd 支持的登陆验证方式
sshd服务支持登录验证方式有:密码验证和密钥对验证,可以设置只使用其中一种,也可以都启用。
- 密码验证:
以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。
- 密钥对验证:
要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
- 不能根据一个密码来推算出另一个密钥;
- 公钥对外公开,私钥只有私钥的持有人才知道。
- 公钥和私钥要配对使用,如果用公钥对数据进行加密,只有用相对应的私钥才能解密;如果用私钥对数据进行加密,那么只有对应的公钥才能解密。
- 当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密码对验证方式;若没有特殊要求,则两种方式都可以。
③使用 SSH 客户端程序
- SSH客户端的配置文件:/etc/ssh/ssh_config
- 通过 ssh 命令可以远程登录 sshd 服务,为用户提供一个安全的 Shell 环境,以便于对服务器进行管理和维护。
- 命令行格式:
1 ssh [选项] zhangsan@192.168.80.77 #指定登录用户、目标主机地址作为参数
2 ssh -p 20 zhangsan@192.168.80.77 #-p为指定端口
- 当用户第一次登录 SSH 服务器时,必须接受服务器发来的 RSA 密钥(需要根据提示输入:yes)后才能继续验证,接受的密钥信息将保存到 ~/.ssh/known_hosts 文件中,密码验证成功以后,就登录到目标服务器的命令行环境中了。如下:
1 The authenticity of host '192.168.80.77 (192.168.80.77)' can't be established.
2 ECDSA key fingerprint is SHA256:sRKz60ZIwaIjOXejXaNdZp69M/aygMdkunCMR7a3u+4.
3 ECDSA key fingerprint is MD5:be:42:dd:a7:be:d9:96:f3:9d:8a:0c:20:b6:65:c9:2e.
4 Are you sure you want to continue connecting (yes/no)? yes #接受密钥
5 root@192.168.80.77's password: #输入密码
- 如果 sshd 服务器使用了非默认的端口号(如:1234),则在登录时必须通过 -p 选项指定端口号:
1 ssh -p 1234 root@192.168.80.77 #指定端口
2 root@192.168.80.77's password: #输入密码
二.密钥对验证的 SSH 体系
①配置密钥对验证的步骤
(1)在客户端创建密钥对:
(2) 将公钥文件上传至服务器:
(3) 在服务器中导入公钥文本:
(4) 在服务端验证并设置ssh 代理功能,实现免交互登录:
三.TCP Wrapper 访问控制
①TCP Wrapper 概述
- TCP Wrappers (TCP封套)
- 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
- 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_ wrappers 查看是否安装程序。
- TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 对应的两个策略文件为 /etc/hosts.allow 和 /etc/hosts.deny,分别用来设置允许和拒绝的策略。
②TCP Wrapper 保护机制
(1)TCP Wrappers保护机制的两种实现方式:
- 直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
- 由其他网络服务程序调用libwrap.so. 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
- 使用ldd命令可以查看程序的libwrap.so. 链接库;
- 命令:ldd $ (which ssh)
③TCP Wrapper 配置格式
(1)命令行格式:<服务程序列表> : <客户端地址列表>
(2)服务程序列表:
- ALL:代表所有的服务。
- 单个服务程序:如“vsftpd"。
- 多个服务程序组成的列表:如“vsftpd, sshd”。
(3)客户端地址列表:
- ALL:代表任何客户端地址。
- LOCAL:代表本机地址。
- 多个地址以逗号分隔。
- 允许使用通配符 “*” 和 "?” ,前者代表任意长度字符,后者仅代表一个字符。
- 网段地址,如"192. 168.80.”或者192. 168.80.0/255.255.255.0。
- 区域地址,如". benet . com"匹配benet.com 域中的所有主机。
④TCP Wrapper 访问机制
(1)查看策略:
- 首先检查 /etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;
- 否则继续检查 /etc/hosts.deny 文件, 如果找到相匹配的策略,则拒绝访问;
- 如果检查上述两个文件都找不到相匹配的策略,则允许访问。
(2)“允许所有,拒绝个别”
- 只需在 /etc/hosts.deny 文件中添加相应的拒绝策略。
(3)“允许个别,拒绝所有”
- 除了在 /etc/hosts.allow 中添加允许策略之外,还需要在 /etc/hosts.deny 文件中设置 "ALL : ALL" 的拒绝策略。
⑤TCP Wrapper 配置步骤
例:只希望从IP地址为192.168.80.80的主机访问sshd服务,其他地址被拒绝。
(1) 主机1(192.168.80.77)的/etc/ hosts.allow配置文件内增加192.168.80.80主机2的ip;
(2) 主机1(192.168.80.77)的/etc/ hosts.deny配置文件内增加拒绝所有的配置;
(3) 主机2(192.168.80.80)可以正常远程登录到主机1上;
(4) 主机2(192.168.80.78)被拒绝登录到主机1上。
四. YUM
①YUM 概述
- 基于 RPM 包构建的软件更新机制
- 可以自动解决依赖关系
- 所有软件包由集中的 YUM 软件仓库提供
② 准备安装源
(1)软件仓库的提供方式:
- FTP 服务:ftp://......
- HTTP 服务:http://......
- 本地目录:file://......
(2)RPM 软件包的来源
- CentOS 发布的 RPM 包集合
- 第三方组织发布的 RPM 包集合
- 用户自定义的 RPM 包集合
(3)构建CentOS 7 软件仓库
- RPM 包来自 CentOS 7 DVD 光盘
- 通过 FTP 方式提供给客户机
1 [root@localhost~]# mkdir -p /var/ftp/centos7
2 [root@localhost~]# cp -rf /media/cdrom/* /var/ftp/centos7
3 [root@localhost~]# rpm -ivh /madia/cdrom/Packages/vsftpd-3.0.2.21.el7.x86_64.rpm
4 [root@localhost~]# systemctl start vsftpd
5 [root@localhost~]# systemctl enable vsftpd
(4)在软件仓库中加入非官方 RPM 包组
- 包括存在以来关系的所有 RPM 包
- 使用 createrepo 工具建立仓库数据文件
1 [root@localhost~]# mkdir /var/ftp/other
2 [root@localhost~]# cd /var/ftp/other # 非官方的 RPM 文件要先放入此目录中
3 [root@localhost other]# createrepo -g /media/cdrom/repodata/repomd.xml ./
五.YUM工具概述
①关于YUM命令
- 由软件包yum-3.4.3-150.el7.centos.noarch提供
- 用来访问YUM仓库,查询,下载及安装,卸载软件包
yum的配置文件
- 基本设置: /etc/yum.conf
- 仓库设置:/etc/yum.repos.d/*.repo
- 日志文件:/var/log/yum.log
YUM缓存目录
- 存放下载的软件包,仓库信息等数据
yum clean all && yum makecache
六.YUM常用命令大全
yum -y install 软件名 # ——安装、升级软件包,“-y”选项表示自动确认
yum -y remove 软件名 # ——卸载软件包,可自动解决其依赖关系
yum groupremove # ——卸载软件
yum -y update 软件名 # ——升级软件包
yum list # ——查询软件包列表
yum list installed # ——查询系统中已安装的软件包
yum list available # ——查询仓库中尚未安装的软件包
yum list updates # ——查询可以升级版本的软件包
yum info 软件名 # ——查询软件包的描述信息
yum info httpd
yum search [all] 关键词 # ——根据某个关键词来查找相关的软件包
yum search all httpd
yum whatprovides 命令 # ——查询命令属于哪个软件包
yum whatprovides netstat
yum grouplist 【包组名】 #查询软件包组
yum groupinfo <包组名>
标签:wrappers,登录,验证,192.168,TCP,etc,yum,SSH 来源: https://blog.csdn.net/Csl981107/article/details/121805411