转载自庆亮的博客-webgame架构
本文链接地址: Linux之路 — SSH篇
需要的windows软件:SecureCRT,WinSCP
一、前言
即使Linux本身的安全性已经相当好,我们仍然需要在实际操作中关注某些安全要点。目前大部分的Linux管理都采用远程控制来进行,如果保证远程控制中数据的安全是一个合格的linux管理员必须熟悉的技能。
各种黑客行为、尝试给我们的网络带来了大量的破坏,但不可否认这些行为和尝试也给计算机安全带来了极大的促进。从理论上来说,网络传输中任何对称加密算法都是不安全的,所以我们在日常的linux管理中应该采用非对称加密算法来进行权限验证。SSH是一种加密传输数据的方式(不同于telnet等的明文数据传输),是目前最通用的linux远程安全控制方案,它提供两种认证方式:密码认证和密匙认证。关于非对称加密的相关知识请看 http://baike.baidu.com/view/554866.htm
本文以Centos 5.3 为例并假设你已经有一个安装好的Linux主机或者虚拟机,我这里采用的是虚拟机。
二、用户配置
平时我们为了安全一般不采用root直接登录到服务器,实际上多数的维护操作并不需要root权限,过多的权限可能只会带来更多的麻烦,通常我们只在需要时才su。那么如何进行日常的维护操作呢?
1. 添加一个用于维护的账号, # useradd centosadmin, 为centosadmin设置密码, # passwd centosadmin,请记好你的密码
2.将该用户添加到wheel组。为什么? 为了操作安全,我们需要只有某个特殊的用户组中用户输入了su -,并且有正确的root密码时才能获得root shell,而其他组的用户即使输入了正确的root密码,也无法获得su shell,而这个特殊的组通常为wheel,这仅仅是一个惯例,你可以自己添加一个组来实现这个功能。
3.配置只有wheel组的用户能够通过su 获得root shell。 # vim /etc/pam.d/su
取消这一行的注释 auth required pam_wheel.so use_uid,然后保存退出
这时可以测试发现,非wheel已经无法通过su获得root shell了。
三、密匙
1. # su centosadmin,输入你的密码。 # cd ~ 进入centosadmin的主目录, 建立 .ssh目录(为什么?)
2. # ssh-keygen -t rsa ,表示使用SSH2协议生成RSA公匙和私匙。
你将看到这行提示
Enter file in which to save the key (/home/centosadmin/.ssh/id_rsa):
如无特殊需要直接回车即可,然后是设置你的密匙口令
Enter passphrase (empty for no passphrase):
这个是在之后的密匙登录SSH时会用到,一定要记住。
3. 这时你的/home/centosadmin/.ssh/下应该有如下的两个文件
id_rsa id_rsa.pub
分别是私匙和公匙文件。
4. 下载密匙到本地。 windows下打开winscp(没有这个工具?去下载吧),操作很简单,和FTP工具类似,登录后会自动进入对应用户的主目录
把
id_rsa id_rsa.pub
都下载到你的本地。
5.重命名公匙文件 #mv id_rsa.pub authorized_keys
四、SSH配置
1.打开SecureCRT, 登录到linux,现在还没有配置SSH,而SSH默认是密码认证的方式验证的,所以直接输入用户名密码即可。
2.如果你是非root用户登录,请在连接终端下输入 su – 获得root权限,因为SSH的配置需要有管理员权限。
3. 开始编辑ssh的配置文件
[root@localhostCentos ~]# vim /etc/ssh/sshd_config
4.一次修改配置如下
PermitEmptyPasswords no代表不允许空密码登录
PasswordAuthentication no 代表不采用密码认证方式
PubkeyAuthentication yes 表示采用key文件方式认证
AuthorizedKeysFile .ssh/authorized_keys 表示对用用户的公匙文件放置的位置,文件默认相对的是对应用户的主目录。(看到这里我们就明白了为什么我们上面的操作中要建立.ssh目录,要重命名公匙文件了)
PermitRootLogin no 表示不允许root直接远程登录(这一部分之后会说明)
重启SSHD服务,你可以通过下面的命令完成。 # /etc/rc.d/init.d/sshd restart 或者 # service sshd restart
五、登录
1. 退出当前的所有连接,重新登录Linux主机,记住前面我们已经设置不允许root直接远程,而是用centosadmin这个管理账号来登录。
2.SecureCRT提示你需要公匙文件,选择你的公匙文家,如果一切正常,此时会提示你输入你的密匙口令(还记得在哪里设置的吗?),OK!已经进入了。此时你的权限是centosadmin的用户权限,可以试试通过su看看能不能获得root shell。
六、文件传输
为了安全我们通常关闭所有不必要的服务,如果不需要频繁的传输大文件,利用SSH来传输文件是个非常安全的选择。需要工具 winscp和putty 的key-gen,为什么又多了一个工具?因为winscp是无法直接使用我们在服务器生成的密匙文件的, 需要使用putty的key-gen将我们现有的密匙文件转化成ppk格式。
打开PuTTYGen,选择load,文件类型选择all files,选择你从服务器上下载的私匙文件,这时会要求你输入密匙口令:
确认密码后弹出
点击确定,点击 save private key,保存ppk文件到你本地(U盘最佳)。
打开WINScp,密匙选择你刚刚保存的ppk文件
登录,再次要求输入密匙口令,输入口令,OK!