一、OpenSSH服务器
是一种安全通道合同,主要拿来实现字符界面的远程登陆、远程复制等功能。SSH合同对通讯双方的数据传输进行了加密处理,其中包括用户登入时输入的用户口令。因而SSH合同具有挺好的安全性。
SSH优点:
数据传输是加密的linux软件下载,可以避免信息泄露
数据传输是压缩的,可以提升传输速率
OpenSSH是实现SSH合同的开源软件项目,适用于各类UNIX、Linux操作系统,CentOS7系统默认安装并启动sshd服务
SSH顾客端:Putty、Xshell、CRT
SSH服务端:OpenSSH
服务名称:sshd
默认端标语:tcp的22端口
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
顾客端配置文件:/etc/ssh/ssh_config
二、sshd_config配置文件
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER ##在开启selinux的系统上,修改ssh端口的要修改selinux规则,用此命令修改
#Port 22 ##默认ssh端口,生产环境中建议改成五位数的端口
#AddressFamily any ##地址家族,any表示同时监听ipv4和ipv6地址
#ListenAddress 0.0.0.0 ##监听本机所有ipv4地址
#ListenAddress :: ##监听本机所有ipv6地址
HostKey /etc/ssh/ssh_host_rsa_key ##ssh所使用的RSA私钥路径
HostKey /etc/ssh/ssh_host_ecdsa_key ##ssh所使用的ECDSA私钥路径
HostKey /etc/ssh/ssh_host_ed25519_key ##ssh所使用的ED25519私钥路径
SyslogFacility AUTHPRIV ##设定在记录来自sshd的消息的时候,是否给出“facility code”
#LogLevel INFO ##日志记录级别,默认为info
#LoginGraceTime 2m ##限定用户认证时间为2min
#PermitRootLogin yes ##是否允许root账户ssh登录,生产环境中建议改成no,使用普通账户ssh登录
#StrictModes yes ##设置ssh在接收登录请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议开启
#MaxAuthTries 6 ##指定每个连接最大允许的认证次数。默认值是 6
#MaxSessions 10 ##最大允许保持多少个连接。默认值是 10
#PubkeyAuthentication yes ##是否开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys ##公钥验证文件路径
# HostbasedAuthentication ##指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询
#IgnoreUserKnownHosts no ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件
#IgnoreRhosts yes ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件
#PermitEmptyPasswords no ##是否允许空密码
PasswordAuthentication yes ##是否允许密码验证,生产环境中建议改成no,只用密钥登录
ChallengeResponseAuthentication no ##是否允许质疑-应答(challenge-response)认证
#KerberosAuthentication no ##是否使用Kerberos认证
#KerberosOrLocalPasswd yes ##如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
#KerberosTicketCleanup yes ##是否在用户退出登录后自动销毁用户的 ticket
#KerberosGetAFSToken no ##如果使用了AFS并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token
GSSAPIAuthentication yes ##是否允许基于GSSAPI的用户认证
GSSAPICleanupCredentials no ##是否在用户退出登录后自动销毁用户凭证缓存
UsePAM yes ##是否通过PAM验证
#GatewayPorts no ##是否允许远程主机连接本地的转发端口
X11Forwarding yes ##是否允许X11转发
#X11DisplayOffset 10 ##指定sshd(8)X11转发的第一个可用的显示区(display)数字。默认值是10
#X11UseLocalhost yes ##是否应当将X11转发服务器绑定到本地loopback地址
#PrintMotd yes ##指定sshd(8)是否在每一次交互式登录时打印 /etc/motd 文件的内容
#PrintLastLog yes ##指定sshd(8)是否在每一次交互式登录时打印最后一位用户的登录时间
#TCPKeepAlive yes ##指定系统是否向客户端发送 TCP keepalive 消息
#UseLogin no ##是否在交互式会话的登录过程中使用 login(1)
#UsePrivilegeSeparation sandbox ##是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离
#PermitUserEnvironment no ##指定是否允许sshd(8)处理~/.ssh/environment以及 ~/.ssh/authorized_keys中的 environment= 选项
#Compression delayed ##是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密
#ClientAliveInterval 0 ##sshd(8)长时间没有收到客户端的任何数据,不发送"alive"消息
#ClientAliveCountMax 3 ##sshd(8)在未收到任何客户端回应前最多允许发送多个"alive"消息,默认值是 3
#UseDNS no ##是否使用dns反向解析
#PidFile /var/run/sshd.pid ##指定存放SSH守护进程的进程号的路径
#MaxStartups 10:30:100 ##最大允许保持多少个未认证的连接
#PermitTunnel no ##是否允许tun(4)设备转发
#Banner none ##将这个指令指定的文件中的内容在用户进行认证前显示给远程用户,默认什么内容也不显示,"none"表示禁用这个特性
Subsystem sftp /usr/libexec/openssh/sftp-server ##配置一个外部子系统sftp及其路径
#Match User anoncvs ##引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾
AllowUsers ##设置白名单,需手动添加
DenyUsers ##设置黑名单,需手动添加
三、SSH服务端
ssh服务端主要包括两个服务功能:ssh远程联接和sftp服务.
作用:SSHD服务使用SSH合同可以拿来远程控制,或在计算机之间传送文件
相比较之前用Telent形式传输文件要安全好多,由于Telent是明文件传输,SSH是加密传输
1.查询版本——ssh-V
2.SSH远程登陆
句型:ssh[远程主机用户名]@[远程服务器主机名或IP地址]-pport
句型:ssh-l[远程主机用户名][远程服务器主机名或IP地址]-pport
3.窃听端口更改
重启服务:systemctlrestartsshd
使用另一台顾客机进行远程登陆
4.设置黑白名单
5.远程复制——scp
6.安全性传输——sftp
四、SSH服务的验证1.SSH服务的两种验证方法
当密码验证和秘钥验证同时开启时,服务器会优先使用秘钥对验证
密码验证
对服务器中本地系统用户的登入名称、密码进行验证。这些方法使用最为简便,但从顾客端角度来看,正在联接的服务器有可能会被冒充;从服务器角度来看,当遭到密码暴力破解功击时防御能力较弱。
秘钥验证
秘钥对验证:要求提供相匹配的秘钥能够进行验证通过,一般先在顾客端中创建一对秘钥文件(私钥和公钥),之后将私钥文件放在服务器手指定位置linux文件加密linux文件加密,远程登陆时,系统会使用私钥和公钥进行加密/揭秘关联验证,降低安全性,且可以免密交互登入。
3.私钥与公钥的关系
私钥和公钥是成对生成的,这两个秘钥互不相同,可以相互加密和揭秘
不能按照一个秘钥来推测另一个秘钥
私钥对外公开linux vi命令,公钥只有公钥持有人才晓得
4.在顾客端创建秘钥对
通过ssh-keygen工具为当前用户创建秘钥对文件。可用的加密算法为:RSA、ECDSA、或DSA等(-t是指定算法类型)
5.免交互验证
五、TCPWrappers访问控制
在Linux系统中,许多网路服务针对顾客端提供了访问控制机制,如Samba、BIND、HTTPD、OpenSSH等TCPwrappers将TCP服务程序"包裹"上去,代为窃听TCP服务程序的端口,降低了一个安全检查过程,外来的联接恳求必须先通过这层安全检查,获得许可后能够访问真正的服务程序。
1.TCPwrappers(TCP封皮)
将tcp服务程序包裹上去,代为窃听tcp服务程序的端口,降低了一个安全检查过程,外来的联接恳求必须通过这层安全检查,获得许可后才会进访问真正的服务程序,TCPWrappers是大部份Linux发行版默认提供的功能
2.TCPWrappers保护机制的实现方法
1.直接使用tcpd程序对其他服务程序进行保护,须要运行tcpd程序。
2.由其他网路服务程序调用libwrap.so.*链接库,不须要运行tcpd程序。此方法的应用愈加广泛,也更有效率。
3.TCPWrappers访问策略