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

一、关闭 SSH 密码登陆
首先,你需要有自己的 SSH Key,如果你使用 Windows 系统,可以用 Putty 下的
PUTTYGEN.EXE
生成私匙和公匙。
第一步,运行
PUTTYGEN.EXE
一般,我们选择默认的 RSA 加密即可,默认的 1024 位加密足够用,如果要保险点,可以选择 2048 或 4096 位加密,如图红圈处:

第二步,点击 Generate ,然后鼠标随意在空白处移动
等进度条满了,就生成好你的 SSH Key 了:

如果要更安全一点,可以设置
Key Passphrase
,也就是密码,这个密码和 root 密码不同,一旦别人获取了你的 Key ,没有这个密码他也加载不了你的 Key。
第三步,点击
Save Public Key
保存你的公匙,整个文件如下

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "showfom-rsa-key-20130701"
AAAAB3NzaC1yc2EAAAABJQAAAQEAna/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdw
HEmT64Zqtxrz65KRxesHFRVND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n+Mz58irzU
XDbE34Y/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8j/8sjS7cMFarn3Iy+0bSQNON3
+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2h
ciK+Y+IptLdoMj5kQkSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUj
Lj95mUW/P/ebWGsMVbnxz/Xmq3OL/TOuo85umbSN44DmSB3NEQ==
---- END SSH2 PUBLIC KEY ----

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

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAna
/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdwHEmT64Zqtxrz65KRxesHFRVND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n
+Mz58irzUXDbE34Y
/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8j/8sjS7cMFarn3Iy
+0bSQNON3681+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2hciK+Y+IptLdoMj5kQkSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUjLj95mUW
/P/ebWGsMVbnxz/Xmq3OL/TOuo85umbSN44DmSB3NEQ
== showfom-rsa-key-

其中 ssh-rsa 为加密类型, showfom-rsa-key-20130701 为说明,可以是任意文本,如 showfom-notebook
第四步,点击
Save Private Key
生成用于 Putty 的私匙,这里我们保存为
showfom.ppk
,整个文件如下

PuTTY-User-Key-File-: ssh-rsa
Encryption: none
Comment: Showfom
Public-Lines:
AAAAB3NzaC1yc2EAAAABJQAAAIBTILl54rOaEEkv95VKR6IEZ9Y0d1IpNNQeyk+e
yHPtc7jVTmfL0oiho9s2UqquaNGmLmzLjhXRj3cPZ1VZInPFqVtgWYKWPEpGckGI
/iTpNUuz6tKguEi5RYaEtfgKWF13qC5S8dWlk2FGv7dY5GbSoZMHZtc+zTL9Jpn
NCa5nw==
Private-Lines:
AAAAgEWly9TSsiciZtUpYWe/eegD+Kh/pbPSUNuG6MNOAEN8ocd5Ctsz2kI9LUkw
gSpX0j8f+kmuZU62eIKHAlGZZ+nVyklcHE7qFO2AyMCuniUYm0mgdN5gjXUBFduV
VTjIaYwd282Yo0xtjPWN0DJF3jmmsrw6pwMwaa6r6pAlKANtAAAAQQClYrYCu3eu
0GcGw9G2MVLIZoHoKYPL2e6HjfPQhvsze6AKUzpTF/DGMkBFY6dH//0zSoHue2jn
gNsaLQygBvT/AAAAQQCArGNL76eXHtR28TRY2PONg8ij3YN9mCzYG3sDsV8feGAk
RyZ8T5b6xZuf9UyvZ1lIA10i7ULZ63s2hvCZUxthAAAAQD+auXN8fUAylROh8zTM
14FyY7GRwdN7y7+EtZ8NuVDLvZP9Svpd4V5Ti9LpqjtiUcp0eELCd5i7zxyV2oHe
U78=
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
/D52fTZ1YNjxnwAJAUhxRdPCwar8ZfWLdwHEmT64Zqtxrz65KRxesHFRVND8Xn1GKtuQIQMu/d5fFhEajFbjoSw/n
+Mz58irzUXDbE34Y
/nxy1/iWc6aJz6lX6wT7nnDcVoqX8Be8j/8sjS7cMFarn3Iy
+0bSQNON3681+hEFM7mpoYyqrCVBpARfiiEZb8tNkfzrKJFrciZ87yaKkncPeDCIbYKjuJY2hciK+Y+IptLdoMj5kQkSXStJFQUfFg+s3FQJ9Istu4C7BF3ZafD4mEupA7P90RRUjLj95mUW
/P/ebWGsMVbnxz/Xmq3OL/TOuo85umbSN44DmSB3NEQ
== showfom-rsa-key-
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 下:

service 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  -j ACCEPT
iptables -A OUTPUT -p tcp --sport -m state --state ESTABLISHED -j ACCEPT

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

iptables -A OUTPUT -p udp --dport  -j ACCEPT
iptables -A INPUT -p udp --sport -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 / --dport  -j ACCEPT
iptables -A OUTPUT -p tcp --sport -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s / --dport -j ACCEPT
iptables -A OUTPUT -p tcp --sport -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 .x  位:
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#CentOS .x 位:
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 了。

后记
因为近期不少客户的 VPS 或服务器被黑客入侵,原因都是用了很简单的 root 密码,所以考虑以后卖无管理型的 VPS 时,直接做个屏蔽密码的系统,用户购买的时候提交自己的 SSH Key ,或者系统分配你一个 SSH Key ,这样就会安全多。国外的 Amazon EC2、 DigitalOcean 和 HPCloud 均有导入自己 SSH Key 并默认屏蔽密码的方式,大大增加了安全性。

转载请注明:通天塔 » 购买 Linux VPS 服务器后简单的安全设置

购买 Linux VPS 服务器后简单的安全设置的更多相关文章

  1. linux VPS服务器的一些配置

    SSH密钥登录让Linux VPS/服务器更安全 2011年01月10日 上午 | 作者:VPSer 随着PHP越来越流行,Linux VPS/服务器的使用也越来越多,Linux的安全问题也需要日渐加 ...

  2. Windows上管理远程Linux VPS/服务器文件工具 - winscp

    Linux上经常会经常需要编辑文件,特别是Linux VPS/服务器安装好系统之后配置环境会需要修改很多的配置文件等,对于常用Linux的基本上都能够熟练使用vi或者nano等SSH下面的文件编辑工具 ...

  3. SSH密钥登录让Linux VPS/服务器更安全

    查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...

  4. 常用Linux VPS/服务器SSH连接工具 - Xshell下载与使用

    我们很多网友可能初次接触Linux VPS.服务器,所以在购买完毕VPS主机不知道如何登录.有些网友甚至直接类似WIN系统一样直接在桌面远程连接工具连接,可想而知肯定是无法连接的.因为如果我们购买的是 ...

  5. Linux vps服务器国产面板wdcp的安装和使用方法

    对于大多数站长来说,稳定的服务器不可或缺,这是我做网站以来的深刻体会,因为之前我在网站运营方面因这个原因吃了很多亏.在这里说出,只希望朋友们不要像我一样.在网站优化过程中,服务器因素导致排名下滑,甚至 ...

  6. 24个节点测试Linux VPS/服务器速度一键脚本使用 附服务器配置

    对于大部分网友而言,我们是希望购买的VPS.服务器既便宜也稳定,甚至还能提供更好的优质服务.这样的商家有没有呢?回答是基本没有.但是,只要我们购买的VPS在稳定性 和速度上对比同类的商家差不多,或者自 ...

  7. linux中cd后自动 ls的设置

    根据不同的shell设置不太一样.常见的有bash csh两种.可以用echo $SHELL来查询当前是哪一种. bash设置是在用户的home下打开.bashrc在里面加上如下: cd() { bu ...

  8. 购买DigtalOcean VPS 以及 连接Linux

    1.DigtalOcean简介 digitalocean是一家成立于2012年的总部设置在纽约的云主机商家,眼下在荷兰的阿姆斯特丹(AMS1.AMS2).美国的纽约(NYC1.NYC2)和旧金山(SF ...

  9. 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器

    阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...

随机推荐

  1. lombda 使用记录

    ,,,}; String str1 = Arrays.stream(arr).boxed().map(i -> i.toString()) //必须将普通数组 boxed才能 在 map 里面 ...

  2. linux中yum install 命令无效

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...

  3. LeetCode 最短无序连续子数组

    题目链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/ 题目大意: 略. 分析: 如果排序区间为 [L ...

  4. js中的经典案例--简易万年历

    js中的经典案例--简易万年历 html代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...

  5. md5加密 和拉钩网的登录

    #使用requests模块 #1.登录lagou #2.登录人人,保存个人首页 import requests from urllib import parse #hashlib是MD5加密的一个py ...

  6. Android(一)Android Eclipse环境搭建

    SDK Manager下载实在是太慢了,不知道什么时候能下完,所以我是通过手工下载的. Android SDK 手工下载各个包然后解压到Android对应的目录 API对应的是platforms目录 ...

  7. 在Emacs中使用plantuml画UML图

    在Emacs中使用plantuml画UML图 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #83 ...

  8. ReactOS 无法显示中文的问题

    其实非常简单, 实际上是因为包里面没有中文字体,所以输出文字都是乱码, 去 https://svn.reactos.org/optional/ 这里,下载ttf字体文件, 把字体文件放到源码中 mod ...

  9. Python的基础类型(int,bool,str):

    Python的基础类型(int,bool,str): 1.int -------> 整形:主要用力进行数字计算 2.string ------>字符串:可以保存少量数据并进行相关的操作 3 ...

  10. 支持跨域的html元素

    image javascript iframe link