A-A+

购买Linux VPS服务器后简单的安全设置

2015年08月27日 Linux 暂无评论 阅读 274 次浏览 次

我们在购买了 Linux 系统的 VPS 或服务器后,一般的商家都会给你一个 root 权限的账号,并且默认的密码不会
太长,这是很不安全的。经常有客户因为弱口令而被黑客暴力破解密码导致 VPS 服务器被入侵,并用来干坏事。

所以,在开通了 Linux 系统的 VPS 或服务器后,我们有必要做一些基本的安全设置。

一、关闭 SSH 密码登陆

首先,你需要有自己的 SSH Key,如果你使用 Windows 系统,可以用 Putty 下的 PUTTYGEN.EXE 生成私匙和
公匙。

第一步,运行 PUTTYGEN.EXE

001.png

 

一般,我们选择默认的 RSA 加密即可,默认的 1024 位加密足够用,如果要保险点,可以选择 2048 或 4096 位加
密,如图红圈处:




002.png



第二步,点击 Generate ,然后鼠标随意在空白处移动

 

003.png

 

等进度条满了,就生成好你的 SSH Key 了:

004.png

 

如果要更安全一点,可以设置 Key Passphrase ,也就是密码,这个密码和 root 密码不同,一旦别人获取了你
的 Key ,没有这个密码他也加载不了你的 Key。

第三步,点击 Save Public Key 保存你的公匙,整个文件如下

---- BEGIN SSH2 PUBLIC KEY ----Comment: "showfom-rsa-key-20130701"AAAAB3NzaC1yc2EAAAABJQAAAQEAna/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdwHEmT64Zqtxrz6
5KRxesHFRVND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n+Mz58irzUXDbE34Y/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8
j/8sjS7cMFarn3Iy+0bSQNON3681+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2hciK+
Y+IptLdoMj5kQkSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUjLj95mUW/P/ebWGsMVbnxz/Xmq3OL
/TOuo85umbSN44DmSB3NEQ==---- END SSH2 PUBLIC KEY ----

其中中间那么长长的一串,就是你的公匙了,可以放在服务器的 ~/.ssh/authorized_keys ,我们应采取以下的格
式:



ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAna/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdwHEmT64Zqtxrz65KRx
esHFRV
ND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n+Mz58irzUXDbE34Y/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8j/8sjS7cMFarn
3Iy+0bSQNON3681+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2hciK+Y+IptLdoMj5kQ
kSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUjLj95mUW/P/ebWGsMVbnxz/Xmq3OL/TOuo85umbSN4
4DmSB3NEQ== showfom-rsa-key-20130701



其中 ssh-rsa 为加密类型, showfom-rsa-key-20130701 为说明,可以是任意文本,如 showfom-notebook

第四步,点击 Save Private Key 生成用于 Putty 的私匙,这里我们保存为 showfom.ppk ,整个文件如下

PuTTY-User-Key-File-2: ssh-rsaEncryption: noneComment: ShowfomPublic-Lines: 4AAAAB3NzaC1yc2EAAAABJQAAAIBTILl54rOaEEkv95VKR6IEZ9Y0d1IpNNQeyk+eyHPtc7jVTmfL0oiho9s2UqquaNG
mLmzLjhXRj3cPZ1VZInPFqVtgWYKWPEpGckGI7/iTpNUuz6tKguEi5RYaEtfgKWF13qC5S8dWlk2FGv7dY5GbSoZMH
Ztc+zTL9JpnNCa5nw==Private-Lines: 8AAAAgEWly9TSsiciZtUpYWe/eegD+Kh/pbPSUNuG6MNOAEN8ocd5Ctsz2kI9LUkwgSpX0j8f+kmuZU62eIKHAlGZZ+
nVyklcHE7qFO2AyMCuniUYm0mgdN5gjXUBFduVVTjIaYwd282Yo0xtjPWN0DJF3jmmsrw6pwMwaa6r6pAlKANtAAA
AQQClYrYCu3eu0GcGw9G2MVLIZoHoKYPL2e6HjfPQhvsze6AKUzpTF/DGMkBFY6dH//0zSoHue2jngNsaLQygBvT/AA
AAQQCArGNL76eXHtR28TRY2PONg8ij3YN9mCzYG3sDsV8feGAkRyZ8T5b6xZuf9UyvZ1lIA10i7ULZ63s2hvCZUxthA
AAAQD+auXN8fUAylROh8zTM14FyY7GRwdN7y7+EtZ8NuVDLvZP9Svpd4V5Ti9LpqjtiUcp0eELCd5i7zxyV2oHeU78=
Private-MAC: ce0968aff198e2c2550704625b23ba7575e6b260

这个 showfom.ppk 你需要通过 Putty 目录下的 PAGEANT.EXE 导入,这样你就可以不需要输入 root 密码即可登录
你的 VPS。

PS: WinSCP 和 Putty 的 SSH Key 是通用的,只需要导入一次即可。

但是 Putty 的 Private Key 是不标准的,只能用于 Putty 或 WinSCP ,如果你使用 Xshell 4 ,则需要转换成 rsa 文
件,可以在 PUTTYGEN.EXE 上方菜单里的 Conversions > Export OpenSSH Key 方式转换。

第五步,导入你的 Linux VPS 或服务器

如果你本地是 Linux 桌面环境,可以很简单的一条命令搞定:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@198.51.100.100

但是大多数用户还是 Windows 用户,所以我建议两种比较简单的方法

1、把自己的公匙放在 https://launchpad.net/ 网站,并得到类似 https://launchpad.net/~showfom/+sshkeys 这样
的地址,然后通过以下命令导入你的 Key

curl https://launchpad.net/~showfom/+sshkeys > ~/.ssh/authorized_keys

如果没有 .ssh 目录,可以新建立一个

mkdir .ssh

2、也可以直接写入 authorized_keys 文件



cat >>/root/.ssh/authorized_keys<<EOF



ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAna/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdwHEmT64Zqtxrz65KRxes
HFRVND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n+Mz58irzUXDbE34Y/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8j/8sjS7c
MFarn3Iy+0bSQNON3681+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2hciK+Y+IptLdo
Mj5kQkSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUjLj95mUW/P/ebWGsMVbnxz/Xmq3OL/TOuo85u
mbSN44DmSB3NEQ== showfom-rsa-key-20130701


EOF


在某些服务商的 CentOS 系统里,由于开启了 SELinux ,默认是禁止了 .ssh 目录的权限的,可以用下面的命令解
除限制:

restorecon -R -v /root/.ssh

如果遇到 authorized_keys 权限问题,可用如下命令解决:

chattr -i authorized_keys

然后你可以重启开启一个 SSH 窗口,测试是否不需要输入密码即可用 root 登陆。

第六步,关闭 SSH 密码登陆

编辑 SSH 配置文件:

vim /etc/ssh/sshd_config

找到

#PasswordAuthentication yes

并改为

PasswordAuthentication no

保存,退出,重启 SSH 服务

Ubuntu 下:

/etc/init.d/ssh restart

CentOS 下:

/etc/init.d/sshd restart

好了,这样禁止 SSH 密码登陆就大功告成,这一步就拒绝了 90% 的入侵危险,当然,你自己的私匙一定要保存
好,否则被别人偷走可是不需要密码就能进你的服务器哦。

二、安装 CSF 防火墙屏蔽尝试入侵服务器的 IP

CSF 防火墙安装略简单,几个命令即可搞定:

rm -fv csf.tgz

wget http://www.configserver.com/free/csf.tgz

tar -xzf csf.tgz

cd csf

sh install.sh

然后运行 perl /usr/local/csf/bin/csftest.pl 检测是否安装成功

为了防止系统误屏蔽本地 IP,可以修改 /etc/csf/csf.allow 和 /etc/csf/csf.ignore 文件加入你需要的白名单 IP ,然后
用 csf -r 命令重启读取配置文件即可。

三、用 iptables 只开启常规端口

一般我们只需要开启 22, 53, 80, 443 这三个常见的对外开放端口,可以使用如下命令

清空 iptables 默认规则

iptables -F

允许 22 端口进入和返回

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允许 53 端口,一般作为 DNS 服务使用

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --sport 53 -j ACCEPT

允许本机访问本机

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

允许所有 IP 访问 80 和 443 端口,一般作为 http 和 https 用途

iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -s 0/0 --dport 443 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

保存配置

iptables-save > /etc/sysconfig/iptables

重新加载 iptables

iptables -L四、安装 fail2ban 屏蔽并举报扫描 SSH 端口的 IP

有很多精力旺盛的家伙会整天扫描 SSH 密码,当然直接关闭 SSH 密码登陆即可防止,但是为了给他们一点教训,
可以安装 fail2ban ,屏蔽之余,还能自动写举报信给 IP 所在的 ISP。

CentOS 下安装:

导入 epel 源:

CentOS 6.x 32 位:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

CentOS 6.x 64 位:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装 fail2ban

yum -y install fail2ban

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

service fail2ban start

Ubuntu / Debian 下安装:

apt-get install fail2ban -y

通过查看 /var/log/fail2ban.log 文件即可知道有哪些精力过剩的家伙在整天扫描你的 SSH 了。

 

标签:

评论已关闭!

Copyright © 香港虚拟主机_美国虚拟主机_香港服务器_美国服务器租用托管 保留所有权利.   Theme  Ality 蜀ICP备14006632号-1

用户登录