Linux远程访问控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux远程访问控制相关的知识,希望对你有一定的参考价值。
一、ssh远程管理
SSH(source shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制的功能。SSH协议对通信的双方都进行了加密处理,其中包括用户登录时的口令。
openssh可以在 http://www.openssh.com下载
1、配置openssh服务端
其实软件包安装好了只后默认就会注册系统服务,并生成配置文件,里面的配置不需要修改也可以远程登录,但是不是特别安全。 rpm -q openssh openssh-server //查看这两个软件包是否安装
service sshd status //sshd是openssh的默认系统服务 查看是否运行
我们通过修改配置文件掌握其安全性 配置项大多都是注释,只要将注释去掉就会生效,下面我写几个常用的配置项,这里只有一项是需要手动写入的 就是 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系统中(centos6)openssh客户端有openssh-client软件包提供(默认已经安装),其中包括ssh远程登录命令,以及scp、sftp远程复制文件和传输的命令。实际上任何支持SSH协议的客户端都可以与openssh服务进行通信,如windows 平台的xsheel secureCRT等图形工具。
1)命令程序ssh、scp、sftp
1.1)ssh远程登录
通过命令可以远程登录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是一款强大的终端模拟软件支持telnet、ssh、sftp等协议,可方便的管理远程主机
在www.xsheel.com可以进行下载
下载安装完成之后可以进行管理任务
图2
以上就是xshell的管理界面,部分支持中文
3、构建秘钥对验证的ssh体系
图3
以上是构建秘钥对验证体系的流程图
1)在客户端创建秘钥对
在linux客户机中,通过ssh-keygen -t rsa 工具创建秘钥对文件,可用的加密算法为RSA或DSA在客户端以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系统中,许多网络服务针对客户机提供了某种访问控制机制,如Smaba、Bind、httpd、openssh等。今天我们学习另一种防护机制—TCP Wrappers(TCP 封套),以作为应用服务与网络之间的一条特殊防线,提供二外的安全保障
1、TCP 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是一个特殊的服务管理程序,通常被称为超级服务器。
2、TCP Wrappers的访问策略
TCP wrappers提供了两个策略文件/etc/hosts.allow和/etc/hosts.deny分别用来设置允许和拒绝策略。
1)两个策略文件的作用相反,但配置格式相同,
<服务程序列表>:<客户端地址列表>
服务程序列表、客户机地址列表之间以“:”进行分割,在每个列表内的多个项之间以逗号进行分割。
1.1)服务程序列表
务程序列表可分为以下几类
ALL:代表所有服务
单个服务程序如sshd
多个服务程序组成的列表如vsftpd,sshd
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访问控制的基本原则
先匹配允许的规则在匹配拒绝的规则
如果匹配了允许的规则,则允许访问,否则继续匹配拒绝的规则,如果匹配则拒绝,如果允许和拒绝都不匹配则允许访问。
3、TCP 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远程访问控制的主要内容,如果未能解决你的问题,请参考以下文章