Linux远程访问控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux远程访问控制相关的知识,希望对你有一定的参考价值。

一、ssh远程管理

       SSHsource shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制的功能。SSH协议对通信的双方都进行了加密处理,其中包括用户登录时的口令。

       openssh可以在 http://www.openssh.com下载

1、配置openssh服务端

       其实软件包安装好了只后默认就会注册系统服务,并生成配置文件,里面的配置不需要修改也可以远程登录,但是不是特别安全。             rpm -q openssh openssh-server  //查看这两个软件包是否安装

       service sshd status  //sshdopenssh的默认系统服务 查看是否运行

       我们通过修改配置文件掌握其安全性  配置项大多都是注释,只要将注释去掉就会生效,下面我写几个常用的配置项,这里只有一项是需要手动写入的 就是 AllowUsers 配置项需要写入,其他都存在,

只需要去掉注释。

vim  /etc/ssh/sshd_conf ig    //默认的配置文件   

1)服务监听选项

       port      22                                                   //监听的端口

       ListenAddress 192.168.100.2               //监听的地址为192.168.100.2

       ..........//省略部分内容

       service sshd reload                                  //重新加载服务

2)用户登录控制

       LoginGraceTime 2m                                //登录验证时间为2分钟

       PermitRootLogin no                                //禁止root用户登录

       maxAuthTries  6                                        //最大尝试次数为6

       PermitEmptyPasswords no                    //禁止空密码登录

       ......//省略部分内容  

       service sshd reload

       AllowUsers  zhangsan  [email protected] //允许那些用户登录,多个用户需要使用空格隔开

       DenyUsers wangwu  [email protected] //拒绝那些用户不能登录

       注意允许和拒绝不能同时使用

上述是指允许zhangsan从任何地点登录,admin只能从192.168.100.2进行登录

上述是指拒绝wangwu从任何地方进行登录,zhaoliu仅拒绝从192.168.100.125登录其他地方可以登录

service ssh reload

3)登录验证方式

       对于服务器的远程管理,除了用户账户的安全控制以外,登录的方式也非常重要。sshd支持两种验证方式——密码验证、秘钥对验证,可以设置只使用其中一种方式,也可以两种同时使用

1.1)密码验证

       以服武器中本地系统用户的登录名称、密码进行验证。这种方式最为简单,但从客观的角度来讲,正在连接的服务器有肯能被假冒,从服务器的角度来看当遭遇到密码窃取攻击时防御能力较弱。

1.2)秘钥对验证

       要求提供相匹配的秘钥信息才能通过验证,通常在客户机中创建一对秘钥文件(公钥 私钥)然后将公钥放到指定服务器中,远程登录时系统将使用公钥、私钥进行加密/解密关联验证,大大曾强了远程管理的安全性。

       当密码验证、秘钥对验证同时启用时,对于安全性要求较高的服务器需要将密码验证禁用,反之两者可同时开启。

vim /etc/ssh/sshd_config

       PasswordAuthentication  yes                                  //启用密码验证

       PubkeyAuthentication    yes                                  //启用秘钥对验证

       AuthorizedKeysFile  .ssh/authorized_keys           //指定公钥库数据文件位置以及默认的名字

......//省略部分内容

service sshd reload

       其中,公钥文件用来保存个客户机上传的公钥文本,以便与客户机本地的私钥文件进行匹配验证。之后我们再来讲解如何创建公钥私钥。

2、使用ssh客户端程序

       rhel6系统中(centos6openssh客户端有openssh-client软件包提供(默认已经安装),其中包括ssh远程登录命令,以及scpsftp远程复制文件和传输的命令。实际上任何支持SSH协议的客户端都可以与openssh服务进行通信,如windows 平台的xsheel secureCRT等图形工具。

1)命令程序sshscpsftp

1.1ssh远程登录

       通过命令可以远程登录sshd服务,为用户提供一个安全的sheel环境,以便对服务器进行管理和维护,使用时应指定登录用户,目标主机地址作为参数地址。我们来通过linux客户端以admin用户进行登录到192.168.100.2这台web服务器上进行操作

rpm -q openssh-client

技术分享图片

1     

       第一次登录的时候会提示是否接受秘钥输入yes,之后在输入登录用户的密码,接收的秘钥信息将保存到~/.ssh/known_hosts文件中(客户端本地)

       之后使用whoami 查看一下当前的登录用户是不是远程服务器的系统用户。

       如果监听的端口不是默认的22号端口(如2345)则登录的时候需要指定端口号

       ssh -p 2345 [email protected]

       [email protected]'s password                        //输入密码

       [[email protected] ~]$ 

1.2)远程复制

       将远程主机的/etc/passwd文件复制到本地

       scp [email protected]:/etc/passwd  /root

       输入远程主机root的密码

       将本地/boot/grub/grub.conf复制到远程主机

       scp -r /boot/grub/grub.conf  [email protected]/opt

2)图形工具XSHEEL

       xsheel是一款强大的终端模拟软件支持telnetsshsftp等协议,可方便的管理远程主机

       www.xsheel.com可以进行下载

       下载安装完成之后可以进行管理任务

       技术分享图片

2

以上就是xshell的管理界面,部分支持中文

3、构建秘钥对验证的ssh体系

技术分享图片

3

       以上是构建秘钥对验证体系的流程图

1)在客户端创建秘钥对

       linux客户机中,通过ssh-keygen -t rsa 工具创建秘钥对文件,可用的加密算法为RSADSA在客户端以root的身份登录客户机并      生成RSA算法的ssh秘钥对(公钥 私钥)文件

技术分享图片

4

       上诉过程中一般回车即可,如果需要设置秘钥短语可以根据提示输入,私钥短语使用来保护私钥文件,当使用该私钥进行验证的时候需要使用短语进行验证。

技术分享图片

5

       私钥文件的默认权限为600公钥文件为644

       私钥文件的权限不要进行修改,不要将私钥泄露给任何人。

       2)将公钥复制到服务器

技术分享图片

6

       进入到宿主目录下的.ssh目录下

       使用scp 命令将公钥文件上传到远程服务器的opt目录下(目录的位置随便)

3)在服务器中导入公钥

技术分享图片

7     

       这里以admin用户为例,让他使用秘钥对的方式进行验证

       在公钥数据库文件中最关键的内容是"ssh-rsa"加密字串部分,当导入非ssh-keygen工具创建的公钥文本时应确保此部分信息完整,最后的[email protected]是注释信息(可有可无)

技术分享图片

8     

       这个文件同组或者是其他人不用该有写入的权限。还应该确保服务器支持秘钥对验证的方式,我们在之前已经所过了,可以参考1

4)在客户端使用秘钥对验证

       使用[email protected]进行登录

技术分享图片

9

       无需输入用户的密码即可登录

二、TCP Wrappers访问控制

       linux系统中,许多网络服务针对客户机提供了某种访问控制机制,如SmabaBindhttpdopenssh等。今天我们学习另一种防护机制—TCP WrappersTCP 封套),以作为应用服务与网络之间的一条特殊防线,提供二外的安全保障

1TCP Wrappers概述

       TCP Wrappeers将其他的TCP应用程序“包裹”起来,增加了一个安全监测的过程,外来的连接请求必须西安通过这层安全监测,获得许可后才能访问真正的服务程序。TCP Wrappers还可以记录所有企图访问被保护的行为,为管理员提供丰富的安全分析资料。

技术分享图片

10

       对于大多数linux发行版 TCP Wrappers是默认提供的功能。RHEL6.5所提供的软件包是tcp_wrappers-7.6.87.el6.x86_64该软件包提供了执行程序tcpd和共享连接库文件libwrap.so.*,运行tcpd.由于其网络服务程序调用libwrap.so.*链接库。

技术分享图片

11

       查看程序的共享库

       xinetd是一个特殊的服务管理程序,通常被称为超级服务器。

2TCP Wrappers的访问策略

       TCP wrappers提供了两个策略文件/etc/hosts.allow/etc/hosts.deny分别用来设置允许和拒绝策略。

1)两个策略文件的作用相反,但配置格式相同,

       <服务程序列表>:<客户端地址列表>

       服务程序列表、客户机地址列表之间以“:”进行分割,在每个列表内的多个项之间以逗号进行分割。

1.1)服务程序列表

       务程序列表可分为以下几类

              ALL:代表所有服务

              单个服务程序如sshd

              多个服务程序组成的列表如vsftpdsshd

1.2)客户机地址列表

              ALL:代表任何客户端地址

              LOCAL:代表本机地址

              单个IP地址如192.168.100.204

              网络段地址如:192.168.100.0/255.255.255.0

              以“.”开始的域名 .benet.com 匹配benet.com域中所有主机

              以“.”结束的网络地址 192.168.100.匹配整个192.168.100网段内所有地址

              嵌入*和?通配符前者表示任意长度后者仅代表一个字符

              多个客户机地址组成的列表如 192.168.100. , 172.16.100.1 , .benet.com

2访问控制的基本原则

       先匹配允许的规则在匹配拒绝的规则

       如果匹配了允许的规则,则允许访问,否则继续匹配拒绝的规则,如果匹配则拒绝,如果允许和拒绝都不匹配则允许访问。

3TCP Wrappers配置实例

              仅允许192.168.100.205 访问sshd服务,拒绝其他地址访问

vim /etc/hosts.allow

技术分享图片

12

       仅允许192.168.100.205

       这是还没有拒绝其他地址访问

技术分享图片

13

       在拒绝所有客户端地址

技术分享图片

14

       admin用户在192.168.100.100的客户端进行登录访问被拒绝了

技术分享图片

15

       配置了一个临时的192.168.100.205的地址就可以登录访问了。

       这就是TCP Wrappers 访问控制


以上是关于Linux远程访问控制的主要内容,如果未能解决你的问题,请参考以下文章

LINUX 6——安装SSH远程访问控制

Linux网络服务——远程访问及控制(ssh远程访问实验)

Linux网络服务10——远程访问及控制

Linux远程访问控制

Linux的远程访问及控制

Linux——远程访问及控制(SSH远程管理与配置)