VPS 编译 安装OpenSSH通用指南
前段时间,笔者在ramhost上购置的小型VPS惨遭黑客攻击,虽然数据没有被破坏,但黑客的攻击行为让客户网站受到了一定的影响一直无法正常运行,让笔者倍感头痛。笔者做了一点分析,VPS的ssh登录安全认证没有做好,是导致黑客的破坏行为得逞的主因。
今天把VPS重装了一遍,首要任务就是加强ssh的安全性。下面记录笔者下载、编译、安装、配置OpenSSH的全过程,以飨读者。
下载最新版本openssh的tarball
从openssh的官方网站下载最新版本的源代码,可以根据你所在的地理位置选择合适的镜像。
http://www.openssh.org/portable.html
cd wget http://ftp5.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-5.6p1.tar.gz tar zxf openssh-5.6p1.tar.gz cd openssh-5.6p1
编译前的准备工作
如果你使用的是centos或rh版的linux,需要安装如下的库文件
gcc和openssl 是必须的^_^ yum install gcc zlib-devel prce-devel openssl-devel
编译选项的选择
为了更好地加强openssh的安全性,我们需要使用特权分离(Privilege Separation)机制,这个特性默认是开启的,其关键之处在于设置一个空目录,将权限设置为000,宿主为root。可以用如下命令完成上面的工作
mkdir -p /var/empty chown 0:0 /var/empty chmod 000 /var/empty #一般不需要这行命令,大部分VPS都会又sshd用户组 groupadd sshd #如果用户sshd已经存在可以使用先userdel sshd 删除 useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd
接着开始编译openssh
./configure --prefix=/usr --sysconfdir=/etc/ssh --disable-etc-default-login \ --with-ssl-dir=/usr/lib/openssl --with-zlib=/usr/lib --with-tcp-wrappers=/usr/lib \ --with-privsep-path=/var/empty --with-privsep-user=sshd \ --with-pid-dir=/var/run make && make install
值得注意的是tcp-wrappers提供了对设定(/etc/hosts.allow|deny)的支持
配置openssh
至此,openssh已经安装到你的VPS上了,但是还不能运行,我们需要对它做一些简单的配置
vi /etc/ssh/sshd_config #将下面几行前的#删除 #Port 22 #ListenAddress 0.0.0.0 #Protocol 2 #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys #PasswordAuthenticAtion no #UsePrivilegeSeparation yes #设置开机自启动 cp contrib/redhat/sshd.init /etc/init.d/sshd ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S55sshd
生成 公钥/密钥对
通常情况下,使用用户名和密码就可以通过ssh登录linux了,这种方式显然存在缺陷,如果你弄丢了密码,那么vps也就拱手送人了^_^。所以我们采用更安全的登录方式“认证文件”。
把公钥存放在你的家目录下的.ssh/authorized_keys文件中。导出私钥并保存,以后就使用私钥登录了,如果您只有这一把钥匙,而不是一串口令如“天王盖地虎,宝塔镇何妖”之类,相信别人要弄到这把钥匙也很难吧^_^。
#生成 公钥/密钥对 ssh-keygen -t rsa mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys #执行这个命令公钥和密钥都会被保存在当前用户家目录的.ssh文件夹下。 #我们使用如sftp等软件下载id_rsa文件,下载使用客户端登录就可以不用输入密码了。
需要注意的是,如果您使用putty作为客户端,那么这个id_rsa需要经过PUTTYGEN.EXE转换一次以后才能使用呢。
开启安全之门
service sshd start #查看是否运行成功 ps -aux | grep sshd netstat -tunl chkconfig --list | grep sshd
加强ssh的安全性真的很重要,黑客真的太可恶了!!!