文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>OpenSSH服务配置日志

OpenSSH服务配置日志

时间:2010-09-27  来源:morimao

 

架设OpenSSH服务器完全日志   简介:         之前在架设telnet服务时提到,telnet服务使用明文来传输数据,存在着严重的安全的隐患,在实际应用中并不推荐使用,而是应该使用经过加密后的才传输数据的安全的终端。OpenSSH就是在不安全的网络环境中采用加密机制来保证传输数据安全的佼佼者之一。   OpenSSH的前身是SSH(Secure Shell),它是一种建立在TCP上的网络协议,允许通信双方通过一种安全的通道交换数据,保证数据的安全。OpenSSh的功能有:   1. 替代不安全的网络通讯工具(如:telnet); 2. 提高基于口令的安全安全验证和基于密钥的安全验证; 3. 通过端口转发方式传输telnet、VNC等不安全的网络通讯数据,也称为加密隧道传输。     配置流程:   配置环境:
  服务器 客户端
操作系统 CentOS 5.5 Ubuntu 10.04
Ip地址 192.168.136.128 192.168.136.130
iptables 开启
selinux 开启
  配置目标: 1. OpenSSH服务器的基本配置与运行; 2. 基于密钥的认证方式登录服务器; 3. 使用端口转发功能(加密隧道)传输telnet服务的数据   一.OpenSSH服务器的基本配置与运行:   首先,提供了OpenSSH服务的rpm包有:openssh, openssh-clients, openssh-server;确认这些软件包的安装: yum install openssh openssh-clients openssh-server –y  

  软件包安装成功后,有以下重要的文件被安装:   OpenSSH的启动进程:/usr/bin/sshd OpenSSh的启动脚本:/etc/init.d/sshd 配置目录: 全局配置目录:/etc/ssh/*        个人配置目录:$HOME/.ssh/* ps: sshd的主配置文件是/etc/ssh/sshd_config   配置OpenSSH客户端:   OpenSSH的核心配置文件时/etc/ssh/ssh_config,内容如下:  

逐行分析一下: Host * Host指令指出一个了主机的范围,随后所有的配置指令只对这个主机范围内的计算机生效,直到碰到下一个Host指令为止,*表示所有的主机;   ForwardAgent no 设置与认证服务器的连接是否转发给远程计算机   ForwardX11 no 使用Xwindows的用户是否想自动地将x11的会话通过安全通道和DISPLAY设置重定向到远程主机;对于不使用图形界面的计算机就应该设为no   RhostsRSAAuthentication no 设置是否使用经过RSA认证的rhosts   RSAAuthentication yes 设置是否允许使用RSA认证。为了会话更为安全,应该设置为yes   PasswordAuthentication yes 设置是否使用基于密码的认证   HostbaseAuthentication no 设置是否使用经过公钥认证的rhosts   BatchMode no 设置是否交互式输入用户名和密码,no表示使用交互式输入。在用脚本自动登录时,应该设置为no   CheckHostIP yes 设置是否对远程主机的ip地址进行额外的检查以防止DNS欺骗   AddressFamily any 设置使用ipv4还是ipv6,any指两个都可使用   ConnectTimeout 0 设置与服务器连接时的超时值,0代表永不超时   StrictHostKeyChecking ask 设置是否把新连接的主机加到./.ssh/known_hosts文件中,ask表示让用户选择   IdentityFile ~/.ssh/identity IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_dsa 设置从哪个文件读取用户的RSA安全验证标识,可以设置多个   Port 22 确定连接到远程主机的端口号   Protocol 2,1 以那一种方式支持协议版本。”2,1”表示先试用SSH2,如果失败,使用SSH1   Cipher 3des Cipers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,ase192-cbc,aes256-cbc 设置SSH2允许使用的加密算法。列出的各种算法按次序被选用   EscapeChar ~ 使用~字符作为ESC键   Tunnel no 设置是否使用隧道设备   TunnelDevice any:any 强制使用某一隧道设备。any:any表示任何可用设备   PermitLocalCommand no 是否允许在SSH中执行本地命令   GSSAPIAuthentication yes 确定是否允许使用GSSAPI的用户认证,只用于SSH2   ForwardX11Trusted yes 远程X11客户端是否对原来的X11显示有完全的控制权   SendEnv…. 确定把哪些本地变量发送给服务器,只用于SSH2     启动OpenSSH的服务:   查看sshd服务状态:service sshd status   如果还没有启动服务,使用以下命令启动服务:   启动sshd服务:service sshd start Ps:脚本方式启动:/etc/init.d/sshd start      传统Unix管理模式启动:/usr/bin/sshd   设置服务开机自启动:chkconfig sshd on    

 OpenSSh使用的默认端口是22,一般iptables防火墙都已经开放该端口:

    注意SERVER-RULES链表中的第7条规则:  

现在尝试在客户端使用ssh连接服务器,测试成功:  

在测试连接中发现需要注意的两个问题:

1. 用户第一次连接服务器时会提示主机不可信,这是因为在当前用户家目录下的.ssh/known_hosts文件没有记录该服务器的指纹,连接成功以后就会在该用户的known_hosts文件加入该服务器的指纹; 2. 我的登录用户名是maomao,这需要服务器上也有maomao的账户,如果没有要自行建立:       二. 基于密钥的认证方式登录服务器:   认证方式: openssh支持两种认证方式,一种是基于系统口令的安全验证;一种是基于密钥的安全验证,客户机必须创建一对密钥,把公钥上传到服务器,然后对接时使用自己的私钥解密,这样可以完全地防止假冒服务器的中间人攻击方式。当然,无论使用何种方式,连接建立的过程中传输的数据都是由ssh加密的。基于系统口令的验证方式上面已经介绍了,现在来学习一个基于密钥的安全验证方式:   首先,在客户端生成密钥对,可以是dsa加密,也可以是rsa加密:ssh-keygen -t dsa/rsa  

该过程会询问你存放密钥文件的路径,默认为$HOME/.ssh/id_rsa即可,然后输入密钥的密码,密钥就创建成功了。     生成的密钥对文件在用户目录下:.ssh/id_rsa(私钥)和.ssh/id_rsa.pub(公钥)  

 如何将自己的公钥(id_rsa.pub或者id_dsa.pub)上传到服务器呢?

 RH253中提供了一种非常好的方法: 上传公钥给要登录的服务器: ssh-copy-id -i ~/.ssh/id_dsa.pub XXX.XXX.XXX.XXX(SSH server's ipaddress)   上传时输入私钥密码即可。   这样以后登录时输入私钥密码登录即可,无需用户密码。  

这里有个问题,如果使用基于密钥验证的ssh加密信道(例如vnc等), 每次登录都要输入私钥密码有点麻烦,可以使用ssh代理,以后登录一次后的服务器都不用输入密码直接登录了:   开启ssh代理:eval $(ssh-agent)   为ssh代理提供你的私钥密码: ssh-add,也可以设置开机启动,在startup command中输入/usr/bin/ssh-add,这样每次开机都要输入一次私钥密码,然后关机之前的SSH基于密钥验证的登录都不用输入密码了。 PS:如果第一次连接就出现middle attack问题,很大可能是.ssh/known_hosts的文件问题。例如之前已经建立好的链接,由于服务器重装了系统,此时known_hosts中服务器ip地址一样,但指纹不同了,此时就登录失败,清空该文件即可,或者清空该ip段的指纹:   echo “” > $HOME/.ssh/known_hosts     三. 使用端口转发功能(加密隧道)传输telnet、vnc等不安全服务的数据   实际应用中很多网络服务都是不安全的,例如telnet、ftp、pop3等,可以利用ssh的端口转发功能,为这些网络程序在各种tcp端口上建立TCP/IP数据传输进行加密与解密。   端口转发有本地转发与远程主机转发两种,本地转发是指在客户机上实现ssh隧道加密,远程主机转发是指远程的服务器为客户端实现ssh隧道加密。实现时二者选一即可。   现在以加密telnet服务为例:  
  telnet服务器 telnet客户端
操作系统 CentOS 5.5 Ubuntu 10.04
Ip地址 192.168.136.128 192.168.136.130
iptables 开启
selinux 开启
转发端口 —— 2323
  Telnet客户机:192.168.136.130 使用转发端口2323;   Telnet服务器:192.168.136.128 使用telnet默认端口23。   本地转发:   在客户机192.168.136.130上开启转发功能:   ssh  -L 2323:192.168.136.128:23  [email protected]   解析: 参数-L代表本地转发Local Forward,2323:192.168.136.128:23表示将telnet的链接由本地端口2323转发到服务器的23端口,[email protected]表示用root的身份登录。   登录时输入:telnet 127.0.0.1 2323 即表示:telnet 192.168.136.128 23   上述配置也可以在/etc/ssh/ssh_config中加入 "LocalForward 2323:192.168.136.128:23" 实现,上述命令中还有一个-g选项,它表示允许除本机以外的其他计算机使用转发功能,出于安全考虑,应该禁止该功能。   远程转发:   在服务器1921.168.136.128上开启转发功能:  ssh -R 2323:192.168.136.128:23
排行榜 更多 +
飙车地下城市赛车

飙车地下城市赛车

赛车竞速 下载
爬坡摩托

爬坡摩托

赛车竞速 下载
宝宝虚拟宠物

宝宝虚拟宠物

角色扮演 下载