Chinaunix首页 | 论坛 | 博客
  • 博客访问: 586259
  • 博文数量: 151
  • 博客积分: 3330
  • 博客等级: 中校
  • 技术积分: 1686
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-08 02:41
文章存档

2011年(151)

分类: LINUX

2011-05-17 23:12:09

SSH是一个运行在传输控制层上的应用程序。
SSH协议内容涉及认证AUTHENTICATION,加密ENCRYPTION,和网络上传输数据的完整性INTEGRITY。

openssh 在传送过程中使用密文。
支持scp,sftp 远程文件复制。

openssh认证方式:

系统用户和口令
密钥(公钥+私钥)




采用rpm安装的openssh有如下文件:

服务名:sshd

服务端主程序:/usr/sbin/sshd

客户端主程序:/usr/bin/ssh

服务端配置文件:/etc/ssh/sshd_config

客户端配置文件:/etc/ssh/ssh_config

客户端应用:
使用ssh命令远程登录
方式1ssh 用户名@服务器地址
方式2ssh -l 用户名  服务器地址
方式3ssh  服务器地址

使用scp命令远程复制文件/目录
方式1scp 用户名@服务器地址:源文件 目标路径
方式2scp 本地文件 用户名@服务器地址:目标路径
若复制的是目录,则需添加“-r”选项

使用sftp命令从服务器下载文件

构建ssh密钥对认证体系
1,通过ssh-keygen 生成密钥对
2.将公钥id_rsa.pub 上传到ssh服务器相应的用户目录中~/.ssh/authorized_keys
3. 禁用密码验证,启动密钥对验证

密钥认证分:
对称加密 :公钥和私钥 相同,加密解密速度快,用于数据加密
非对称加密:公钥和私钥不同,加密解密速度慢,用于身份认证

安装配置openssh-5.8p2.tar.gz
RHEL6.0系统

所谓特权分离(Privilege Separation)是一种OpenSSH的安全机制,类似于chroot能够
提供的安全性。这个特性是默认开启的,配置文件中的 UsePrivilegeSeparation 指令可以开
启或关闭这个特性。
使用此特性的关键之处在于设置一个空目录,并将此目录的权限设置为"000",宿主设置
为"root"。然后还需要设置一个用于特权分离的非特权用户,比如nosshadmin,并将此用户的家目录
设置为这个空目录。
[root@rhel6 openssh-5.8p2]# mkdir /var/nosshadmin
[root@rhel6 openssh-5.8p2]# chown root.root /var/nosshadmin/
[root@rhel6 openssh-5.8p2]# chmod 000 /var/nosshadmin/
[root@rhel6 openssh-5.8p2]# groupadd nosshadmin
[root@rhel6 openssh-5.8p2]# useradd -g nosshadmin -c 'sshd privsep' -d /var/nosshadmin -s                            /sbin/nologin nosshadmin

配置:
[root@rhel6 openssh-5.8p2]# ./configure --prefix=/usr/local/openssh 
     --sysconfdir=/usr/local/openssh/etc
     --with-zlib --with-tcp-wrappers 
     --with-ssl-dir --with-pam --with-privsep-user=nosshadmin 
     --with-privsep-path=/var/nosshadmin --with-mantype=man --with-md5-passwords 
     --with-lastlog=/var/log --with-selinux
     --with-pid-dir=/usr/local/openssh/run

编译:
[root@rhel6 openssh-5.8p2]#make

安装:
[root@rhel6 openssh-5.8p2]#make install 
完成后,查看
[root@rhel6 openssh]# ls
bin  etc  libexec  sbin  share

修改sshd_config 服务器配置文件:

启动:
/usr/local/openssh/sbin/sshd & 

以上配置采用的是密码认证方式登录。

测试登录:

openssh 相关配置选项:

SyslogFacility : 指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发
                 送。有效值是:DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
LogLevel INFO :在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志                       设备(SyslogFacility)。建议日志级别改为VERBOSE。有如下级别:
                 QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3 DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细

LoginGraceTime 120 :默认设置下,通过sshd登录ssh主机,必须在出现操作提示符的120秒                  (2分钟)内登录系统,不然sshd将会自动切断与主机的连接。
X11Forwarding yes/no :如果你不希望有人能够通过ssh使用图形用户界面的程序,将其关                     闭。
#Banner /etc/issue.net : 显示一个不欢迎的警示条,警示未授权登录用户。
AllowUsers :指定允许登录ssh主机的用户
DenyUsers :指定禁止登录ssh主机的用户
AllowGroups : 指定允许登录ssh主机的组
DenyGroups : 指定进制登录ssh主机的组
Port 22 : 指定sshd 监听的端口
ChallengeResponseAuthentication :是否允许质疑-应答(challenge-response)认证。
                                  默认值是"yes"。 
Ciphers :指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。
           "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr", "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"
ClientAliveCountMax : 在未收到任何客户端回应前最多允许发送多少个"alive"消息。
                        默认值是 3 。
ClientAliveInterval :设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,将通过安全通道向客户端发送一个"alive"消息,并等候应答。默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。
GSSAPIAuthentication : 是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。
GSSAPICleanupCredentials : 是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。
HostKey :主机私钥文件的位置。
          SSH-1默认是 /etc/ssh/ssh_host_key 。
          SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。
MaxAuthTries :  指定每个连接最大允许的认证次数。默认值是 6 。如果失败认证的次数超             过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。
MaxStartups :最大允许保持多少个未认证的连接。默认值是 10 。到达限制后,将不再接受           新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
PermitOpen :指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所         有转发请求。
             PermitOpen host:port
             PermitOpen IPv4_addr:port
PermitUserEnvironment :指定是否允许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/                     authorized_keys 中的 environment= 选项。
                        默认值是"no"。如果设为"yes"可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。 
PrintMotd :用户登录后显示 /etc/motd 文件的内容。默认值是"yes"。
PubkeyAuthentication :是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。
StrictModes :指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配置文件进           行宿主和权限检查。强烈建议使用默认值"yes"来预防可能出现的低级错误。
UseDNS : 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。
         默认值为"yes"。
UsePrivilegeSeparation : 是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来
                          进行权限分离。默认值是"yes"。认证成功后,将以该认证用户的身份创建另一个子进程。这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
TCPKeepAlive :指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。
               这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。
 MACs :指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。默认值(包含所有可以使
        用的算法)是 hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
        ,hmac-sha1-96,hmac-md5-96
GatewayPorts :是否允许远程主机连接本地的转发端口。默认值是"no"。
               默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。
    "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address), 
    "clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。
Compression : 可用值:"yes", "delayed"(默认), "no"。
AuthorizedKeysFile :存放该用户可以用来登录的 RSA/DSA 公钥。
                     %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。


注:配置选项来自互联网络。

ssh-keygen - 生成、管理和转换认证密钥
-b bits

指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。

-C comment
提供一个新注释

-f
filename
指定密钥文件名。

-l
显示公钥文件的指纹数据。
对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。

-i
读取未加密的SSH-2兼容的私钥/公钥文件,然后在 stdout 显示OpenSSH兼容的私钥/公钥。
该选项主要用于从多种商业版本的SSH中导入密钥。

-e

读取OpenSSH的私钥或公钥文件,并以 RFC 4716 SSH 公钥文件格式在 stdout 上显示出来。
该选项能够为多种商业版本的 SSH 输出密钥。

-N new_passphrase
提供一个新的密语。

-P passphrase
提供(旧)密语。

-t type
指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)

-v
详细模式。ssh-keygen 将会输出处理过程的详细调试信息。


相关密钥文件:
~/.ssh/identity 该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。 将在登录的时候读取这个文件。

 ~/.ssh/identity.pub 该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。 此文件的内容应该添加到所有 RSA1 目标主机的 ~/.ssh/authorized_keys 文件中。

~/.ssh/id_dsa 该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。 将在登录的时候读取这个文件。

 ~/.ssh/id_dsa.pub 该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。 此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。

~/.ssh/id_rsa 该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。 将在登录的时候读取这个文件。

~/.ssh/id_rsa.pub 该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。 此文件的内容应该添加到所有 RSA 目标主机的 ~/.ssh/authorized_keys 文件中。


公钥认证范例:
1.通过F-secure ssh client 工具生成一对RSA认证的密钥对,并将公钥上传到aa家目录下的.ssh目录中,
2.通过ssh-keygen 转换公钥,以便openssh能识别
ssh-keygen -i -f /home/aa/.ssh/loginkey.pub > /home/aa/.ssh/authorized_kes
3.修改sshd_config配置文件,关闭密码认证



Banner /etc/issue.net


显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。

*************************************************************************** NOTICE TO USERS This computer system is the private property of its owner, whether individual, corporate or government. It is for authorized use only. Users (authorized or unauthorized) have no explicit or implicit expectation of privacy. Any or all uses of this system and all files on this system may be intercepted, monitored, recorded, copied, audited, inspected, and disclosed to your employer, to authorized site, government, and law enforcement personnel, as well as authorized officials of government agencies, both domestic and foreign. By using this system, the user consents to such interception, monitoring, recording, copying, auditing, inspection, and disclosure at the discretion of such personnel or officials. Unauthorized or improper use of this system may result in civil and criminal penalties and administrative or disciplinary action, as appropriate. By continuing to use this system you indicate your awareness of and consent to these terms and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the conditions stated in this warning. ****************************************************************************

Banner /etc/motd 欢迎语句


注:
Allow 和 Deny 可以组合使用,它们的处理顺序是:DenyUsers, AllowUsers,DenyGroups, AllowGroups







































阅读(4548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~