目录
前言
一.SSH概述
二. SSHD服务
2.1 远程登录
2.2 文件传输
三.SSH服务配置
3.1 SSH服务安全调优
3.2 SSH服务验证
四.密钥对构建
4.1 密钥对原理
4.2 远程拷贝–scp
4.2.1 本地文件复制到服务器
4.2.2 复制服务器的文件到本地
4.2.3本地目录复制到服务器
4.3 密钥对配置
4.3.1 在客户端创建密钥对
4.3.2 将公钥文件上传至服务器
五.访问控制–TCP Wrappers
六.总结
前言
传统的网络服务程序如 FTP、POP 和 TELNET 在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的, 很容易受到 “中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人” 的攻击方式, 就是 “中间人” 冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被 “中间人” 一转手做了手脚之后,就会出现很严重的问题。通过使用 SSH,你可以把所有传输的数据进行加密,这样 “中间人” 这种攻击方式就不可能实现了,而且 SSH 也能够防止 DNS 欺骗和 IP 欺骗。使用 SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 TELNET,又可以为 FTP、POP、甚至 PPP 提供一个安全的 “通道” 。
一.SSH概述
SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。
SSH服务的安全性:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH服务采用C/S架构,我们常见的SSH客户端有:Putty、 Xshell、 CRT、 MobaXterm、 FinalShell
SSH服务端为:OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。Centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动。
Openssh服务包
OpenSSH软件包,提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务Telnet 或Ftp。
OpenSSH服务需要4个软件包:
openssh-5.3p1- 114.e16_ _7.x86_ 64 //包含openSSH服务器及客户端需要的核心文件。
openssh-clients-5.3p1-114.el6_ 7.x86_ 64 //OpenSSH客户 端软件包。
openssh-server-5.3p1-114.e16_ 7.x86_ 64 //OpenSSH服 务器软件包。
openssh-askpass-5.3p1-114.e16_ _7.x86_ 64 //支持对话框窗口的显示,是一个基于x系统的
sshd服务默认使用的是TCP的22端口
sshd服务的默认配置文件在: /etc/ssh/下
ssh_ config:客户端的配置文件
sshd_ config :服务器配置文件
二. SSHD服务
ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
作用: SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet 使用明文传输,SSH 是加密传输。
2.1 远程登录
-l:指定登录名称。
-P:指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)
登录方法一:
ssh 远程服务器用户名@远程服务器主机名或IP地址 -p 端口 //默认端口为22,可以不加-p
登录方法二:
ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口
2.2 文件传输
sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法。
sftp与ftp有着几乎一样的语法和功能。SFTP 为SSH的其中一部分,其实在SSH软件包中,已经包含了一个叫作SFTP全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
sftp root@192.168.10.13 //登录到服务器
get //下载文件
get -r //下载目录
put //默认会上传到/root
help //查看sftp可使用的命令和用途
pwd //显示当前服务器所在位置
lpwd //显示当前主机位置
三.SSH服务配置
sshd服务器配置文件为:/etc/ssh/sshd_config
3.1 SSH服务安全调优
Port 22 # 监听端口,默认为22,为了安全可以更改为高位端口
ListenAddress 0.0.0.0 #监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
UseDNS yes #DNS反向解析
SyslogFacility AUTHPRIV #用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/log/secure
AllowUsers zhangao #只允许zhangao用户通过ssh登入,注:root用户不在名单中,也无法登入
DenyUsers zhangsan #拒绝zhangsan用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用
LoginGraceTime 2m #登录时间限制2分钟,超时拒绝登录
PermitRootLogin yes #是否允许root用户登入
MaxAuthTries 6 #每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开
PasswordAuthentication yes #密码验证登录
PermitEmptyPasswords no #是否允许空密码用户登入
PrintLastLog yes #显示上次登入信息
3.2 SSH服务验证
sshd服务支持两种验证方式
1.密码验证:
对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便。
但从客户端角度来看,正在连接的服务器有可能被假冒;
从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。
同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高位端口)
2.密钥对验证:
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。
四.密钥对构建
在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解。
vim/etc/ssh/sshd_config
PubkeyAuthentication yes #启用密钥对验证
Authori zedKeysFile .ssh/authorized_ keys #指定公钥库文件,默认存在“~/,ssh/”
4.1 密钥对原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SsH服务器上连接
的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密"质询" ( challenge)并把它发送给SSH客户端。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
通俗点讲,就是客户端生成一对密钥,私钥自己保存,公钥发给服务器,当进行连接时,系统验证公钥私钥是否匹配,匹配则验证通过,否则拒绝登入。
4.2 远程拷贝–scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。
步骤:
4.2.1 本地文件复制到服务器
scp passwd root@192.168.10.19:/opt/
4.2.2 复制服务器的文件到本地
scp root@192.168.10.19:/home/zhangao/ ./
4.2.3本地目录复制到服务器
scp -r kgc13/ root@192.168.10.19:/opt/
4.3 密钥对配置
4.3.1 在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等( ssh- keygen命令的“-t”选项用于指定算法类型)。
密钥对默认存储位置位:“~/.ssh/”下
id_rsa是私钥文件,权限默认为600;
id_ rsa.pub是 公钥文件,用来提供给ssH服务器
4.3.2 将公钥文件上传至服务器
方法一:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.13
此方法可直接在“~/.ssh/”目录下生成authorized_ keys文件
方法二:使用scp命令
scp ~/ .ssh/id_rsa.pub root@192.168.10.13:/opt #远程复制到服务器
cp /opt/id_rsa.pub ~/.ssh/authorized_keys #更改公钥文件
或
scp ~/.ssh/id_rsa.pub root@192.168.10.13:~/.ssh/authorized_keys #一条命令
五.访问控制–TCP Wrappers
在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSsh 等TCP Wrappers 将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
[root@kgc .ssh]# rpm -q tcp_wrappers
tcp_wrappers-7.6-77.el7.x86_64 #系统默认安装
tcp_wrappers 保护机制的两种实现方式:
1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
2.由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
使用ldd命令可以查看程序的链接库
语法格式: <服务程序列表>: <客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd" .
多个服务程序组成的列表:如“vsftpd,sshd"。 .
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。多个地址以逗号分隔
允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符
网段地址,如"192.168.10." 或者192.168.10.0/255.255.255.0
区域地址,如”. zhangao.com"匹配zhangao.com域中的所有主机。
访问控制的基本原则:
首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有
除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
比如:只允许 IP 地址为 10.0.0.1 的主机或者位于 192.168.10.0/24 网段的主机访问 sshd 服务,其它地址全部拒绝,需要同时改两个文件
vim /etc/hosts.allow
vim /etc/host.deny
六.总结
1.sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
2.ssh服务有远程链接和sftp服务
3.ssh服务中的sftp传输数据比ftp更加安全可靠
4.密钥对为客户机生成并发送给服务器
5.tcp_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
6.scp可以在两天linux主机间远程传输文件
7.密钥对比密码验证更加安全可靠
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)