赞
踩
SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。
SSH客户端与服务端是通过网络来进行数据文件传输的,数据传输是加密的,可以防止信息泄露,数据传输是压缩的,可以提高传输速度。
SSH客户端: Putty、Xshell、CRT、MobaXterm、 FinalShell
SSH服务端: OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd" 命令即可启动sshd服务
sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/sshd_ config
ssh_ config和sshd_ config(服务端比较多) 都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet使用明文传输,SSH 是加密传输。
ssh 命令 #远程安全登录
scp 命令 #远程安全复制
sftp 命令 #安全FTP上下载
OpenSSH常用配置文件有两个/etc/ssh/ssh_ config和/etc/sshd_ config
ssh_ config: 为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现
ssh [远程主机用户名] @[远程服务器主机名或IP地址] -p port
当在Linux主机上远程连接另一台Linux 主机时,如当前所登录的用户是root 的话,当连接另一a台主机时也是用
root用户登录时,可以直接使用ssh
IP端口默认即可,如果端口不是默认的情况下,需要使用-p指定端口
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分
解却极其困难,因此可以将乘积公开作为加密密钥
ssh -l [远程主机用户名] [远程服务器主机名或IP地址] -p port
-l:-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)
在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示:
ssh会把你每个你访问过计算机的公钥(publickey)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpensSH会核对公钥。如果公钥不同,openSSH会发出警告,避免你受到DNS Hijack之类的攻击。
一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容
rpm -qa | grep openssh #过滤查询openssh的软件包信息
vim /etc/ssh/sshd_config #配置服务端的配置文件
scp(secure copy)使用于Linux环境系统下的远程拷贝文件的命令,且是scp加密传输的
scp passwd root@192.168.223.33:/home/ #将passwd文件复制到192.168.223.33的home目录下
scp root@192.168.223.17:/home/test.txt ./ #远程复制服务器上的指定文件到当前目录
scp -r root@192.168.223.17:/home/bak ./ #复制目录的话需要带上参数-r
sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法
sftp与ftp有着几乎一样的语法和功能。SFTP为SsH的其中一部分,其实在ssH软件包中,已经包含了一个叫作SFTP (Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本 身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全
性要求更高时,可以使用SFTP代替FTP
sftp root@192.168.223.33 #登陆到服务器
get #下载
get -r #下载目录
put #默认会上传到/root
help #查看sftp可使用的命令和用途
pwd #显示当前服务器所在位置
lpwd #显示当前主机位置
Port 22 #监听端口,默认22,为了安全可以更改为高位端口
ListenAddress 0.0.0.0 #监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
UseDNS yes #DNS反向解析(禁止会加快响应速度)
SyslogFacility AUTHPRIV #用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/1og/secure
AllowUsers zhangbin #只允许xiayan用户通过ssh登入,注:root用户不在名单中,也无法登入
DenyUsers csdn #拒绝csdn用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用
LoginGraceTime 2m #登录时间限制2分钟,超时拒绝登录
PermitRootLogin yes #是否允许root用户登入
PasswordAuthentication yes #密码验证登录
PermitEmptyPasswords no #是否允许空密码用户登入
PrintLastLog yes #显示上次登入信息
MaxAuthTries 6 #每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开
对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高危端口)
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用。当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。
在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSSH等TCP Wrappers 将TCP服务程序”包裹"起来,代为监听TCP服务程序的端口,增加了一“个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
访问控制的基本原则:
首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有
除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
tcp_wrappers 保护机制的两种实现方式:
使用ldd命令可以查看程序的链接库
[root@localhost ~]# rpm -q tcp_wrappers
tcp_wrappers-7.6-77.el7.x86_64 #系统默认安装
###语法格式: <服务程序列表>: <客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd" .
多个服务程序组成的列表:如“vsftpd,sshd"。 .
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。多个地址以逗号分隔
允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符
网段地址:如"192.168.223." 或者192.168.223.0/255.255.255.0
区域地址:如”test.com"匹配test.com域中的所有主机。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。