目录:
1、SSH服务
1.1 SSH基础
1.2 SSH原理
2、ssh加密通讯原理
3、白名单和黑名单
4、TCP Wrappers
4.1 策略的配置格式
5、轻量级自动化运维工具pssh
6、selinux
6.1什么是selinux
6.2 selinux作用
SSH是远程连接协议,还有xshell,finalshell(能插入图片),是一种安全通道协议,对通信数据进行了加密处理,用于远程管理, 是SSH客户端<------网络----->SSH服务端。它的优点是:数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度。
它的服务端 配置文件是sshd_config ,客户端 配置文件 是ssh_config。ssh:可以远程连接 scp sftp rsync:远程传输文件。
公钥传输原理:客户端和服务端连接的时候都要有一个密钥对
一、客户端发送连接请求,服务端会生成一个会话id,以及将会话id和自己的公钥交给客户端
二、客户端拿到公钥和会话id后,会用自己的公钥和对面给的会话id做运算
三、服务收到这个结果,用自己的私钥去解密结果
结果=会话id+客户端的公钥,最后双方都得到对面的公钥
centos7先连上192.168.186.100 ,然后在选yes,查看
切换到ssh目录下查看known_hosts,能把对面的公钥显示出来
然后把对面centos7-1上也进行相关操作之后(连centos7),最后在centos7上输入centos7-1 的密码就可以远程连接了。
此时在xshell中也可以连
伪终端只需退一次
格式 ssh 用户名@ip地址
(1) 对称加密 两边用的算法一样
(2)非对称加密 两边用的算法不一样,非对称的安全性高。常用算法: RSA
OpenSSH
服务名称:sshd
服务端程序: /usr/sbin/sshd
服务端配置文件: /etc/ssh/sshd_config
轻量级自动化运维工具pssh是加强版的ssh
-l:登录使用的用户名
免密登录:
白名单:加进来允许,其余全都不允许
黑名单:加进来不允许,其余都可以
白名单的安全性更高建议使用
进入vim编辑器中输入zhangsan用户:
vim /etc/ssh/sshd_config
重启ssh服务生效:service sshd restart
systemctl restart sshd.service
在 Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如 Samba、BIND、 HTTPD、OpenSSH 等。本节将介绍另一种防护机制——TCP Wrappers(TCP 封套),以作 为应用服务与网络之间的一道特殊防线,提供额外的安全保障。
TCP Wrappers 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了
一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正
的服务程序,如图 4.3 所示。TCP Wrappers 还可以记录所有企图访问被保护服务的行为,
为管理员提供丰富的安全分析资料。
两个策略文件的作用相反,但配置记录的格式相同,如下所示。
服务程序列表:客户端地址列表
服务程序列表、客户端地址列表之间以冒号分隔,在每个列表内的多个项之间以逗号分 隔
(1)服务程序列表
服务程序列表可分为以下几类。
ALL:代表所有的服务
单个服务程序:如“vsftpd“
多个服务程序组成的列表:如“vsftpd,sshd”
2)客户端地址列表
客户端地址列表可分为以下几类。
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
单个 IP 地址:如“192.168.4.4”
网络段地址:如“192.168.4.0/255.255.255.0”
以“.”开始的域名:如“.bdqn.com”匹配 bdqn.com 域中的所有主机。
以“.”结束的网络地址:如“192.168.4.”匹配整个 192.168.4.0/24 网段
嵌入通配符“”“?”:前者代表任意长度字符,后者仅代表一个字符,如“10.0.8.2”
匹配以 10.0.8.2 开头的所有 IP 地址。不可与以“.”开始或结束的模式混用
多个客户端地址组成的列表:如“192.168.1.,172.16.16.,.bdqn.com”
EPEL源中提供了多个自动化运维工具
pssh:基于python编写,可在多台服务器上执行命令的工具,也可实现文件复制,提供了基于ssh
和scp的多个并行工具,项目:http://code.google.com/p/parallel-ssh/
pdsh:Parallel remote shell program,是一个多线程远程shell客户端,可以并行执行多个远程
主机上的命令。 可使用几种不同的远程shell服务,包括rsh,Kerberos IV和ssh,项目:
https://pdsh.googlecode.com/
mussh:Multihost SSH wrapper,是一个shell脚本,允许使用命令在多个主机上通过ssh执行命
令。 可使用ssh-agent和RSA/DSA密钥,以减少输入密码,项目:
SELinux,Security Enhanced Linux 的缩写,也就是安全强化的 Linux,是由美国国家安全局(NSA)联合其他安全机构(比如 SCC 公司)共同开发的,旨在增强传统 Linux 操作系统的安全性,解决传统 Linux 系统中自主访问控制(DAC)系统中的各种权限问题(如 root 权限过高等)。
SELinux 项目在 2000 年以 GPL 协议的形式开源,当 Red Hat 在其 Linux 发行版本中包括了 SELinux 之后,SELinux 才逐步变得流行起来。现在,SELinux 已经被许多组织广泛使用,几乎所有的 Linux 内核 2.6 以上版本,都集成了 SELinux 功能。
对于 SELinux,初学者可以这么理解,它是部署在 Linux 上用于增强系统安全的功能模块。
说到这里,读者有必要详细地了解一下这两个访问控制系统的特点:
- 自主访问控制系统(Discretionary Access Control,DAC)
是 Linux 的默认访问控制方式,也就是依据用户的身份和该身份对文件及目录的 rwx 权限来判断是否可以访问。不过,在 DAC 访问控制的实际使用中我们也发现了一些问题:
1. root 权限过高,rwx 权限对 root 用户并不生效,一旦 root 用户被窃取或者 root 用户本身的误操作,都是对 Linux 系统的致命威胁。
2. Linux 默认权限过于简单,只有所有者、所属组和其他人的身份,权限也只有读、写和执行权限,并不利于权限细分与设定。
3. 不合理权限的分配会导致严重后果,比如给系统敏感文件或目录设定 777 权限,或给敏感文件设定特殊权限——SetUID 权限等。
- 强制访问控制(Mandatory Access Control,MAC)是通过 SELinux 的默认策略规则来控制特定的进程对系统的文件资源的访问。也就是说,即使你是 root 用户,但是当你访问文件资源时,如果使用了不正确的进程,那么也是不能访问这个文件资源的。
这样一来,SELinux 控制的就不单单只是用户及权限,还有进程。每个进程能够访问哪个文件资源,以及每个文件资源可以被哪些进程访问,都靠 SELinux 的规则策略来确定。
不过,系统中有这么多的进程,也有这么多的文件,如果手工来进行分配和指定,那么工作量过大。所以 SELinux 提供了很多的默认策略规则,这些策略规则已经设定得比较完善,我们稍后再来学习如何查看和管理这些策略规则。
这里举一个例子,假设 apache 上发现了一个漏洞,使得某个远程用户可以访问系统的敏感文件(如 /etc/shadow)。如果我们的 Linux 中启用了 SELinux,那么,因为 apache 服务的进程并不具备访问 /etc/shadow 的权限,所以这个远程用户通过 apache 访问 /etc/shadow文件就会被 SELinux 所阻挡,起到保护 Linux 系统的作用。
传统的 Linux 系统安全,采用的是 DAC(自主访问控制方式),而 SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。
需要注意的是,SELinux 的 MAC 并不会完全取代 DAC,恰恰相反,对于 Linux 系统安全来说,它是一个额外的安全层,换句话说,当使用 SELinux 时,DAC 仍然被使用,且会首先被使用,如果允许访问,再使用 SELinux 策略;反之,如果 DAC 规则拒绝访问,则根本无需使用 SELinux 策略。
例如,若用户尝试对没有执行权限(rw-)的文件进行执行操作,那么传统的 DAC 规则就会拒绝用户访问,因此,也就无需再使用 SELinux 策略。
相比传统的 Linux DAC 安全控制方式,SELinux 具有诸多好处,比如说:
- 它使用的是 MAC 控制方式,这被认为是最强的访问控制方式;
- 它赋予了主体(用户或进程)最小的访问特权,这也就意味着,每个主体仅被赋予了完成相关任务所必须的一组有限的权限。通过赋予最小访问特权,可以防止主体对其他用户或进程产生不利的影响;
- SELinux 管理过程中,每个进程都有自己的运行区域(称为域),各进程仅运行在自己的域内,无法访问其他进程和文件,除非被授予了特殊权限。
- SELinux 可以调整到 Permissive 模式,此模式允许查看在系统上执行 SELinux 后所产生的印象。在 Permissive 模式中,SELinux 仍然会记录它所认为的安全漏洞,但并不会阻止它们。
有关 SELinux 模式设置等内容,后续章节会详细介绍。
其实,想要了解 SELinux 的优点,最直接的办法就是查看当 Linux 系统上没有运行 SELinux 时会发生什么事情。
例如,Web 服务器守护进程(httd)正在监听某一端口上所发生的事情,而后进来了一个请求查看主页的来自 Web 浏览器的简单请求。由于不会受到 SELinux 的约束,httpd 守护进程听到请求后,可以完成以下事情:
1. 根据相关的所有者和所属组的rwx权限,可以访问任何文件或目录;
2. 完成存在安全隐患的活动,比如允许上传文件或更改系统显示;
3. 可以监听任何端口的传入请求。
但在一个受 SELinux 约束的系统上,httpd 守护进程受到了更加严格的控制。仍然使用上面的示例,httped仅能监听 SELinux 允许其监听的端口。SELinux 还可以防止 httpd 访问任何没有正确设置安全上下文的文件,并拒绝没有再 SELinux 中显式启用的不安全活动。
因此,从本质上讲,SELinux 最大程序上限制了 Linux 系统中的恶意代码活动。