序
撰写本文是在2022年8月13日决定的。本人Q群内群友经常有极其不规范的运维操作,令本人很是无语,为此写本文以避免诸位站长踩坑。
服务器选择
在如今的市场上,存在各式各样的云服务商。大有阿里云、腾讯云、AWS、Azure、GCP等上市公司运营的云服务商,小有一个人对接机房或其它云服务商就可以运营的IDC服务(俗称 One Man IDC)。
多样的云服务商也造就了当前业界服务质量的参差不齐。作为数个服务的提供者和维护者,我个人趋向于寻求性价比与SLA的平衡点,即在保证不具有过高的成本、过低的性价比和过低的性能的同时保证具有较高的可靠性。
大型公有云
在这部分,我们将“大型公有云”定义为“上市公司运营的公有云服务”。
排名依照市占率,市占率数据为2021年下半年数据
我们常见的公有云服务有很多,包括境内和境外:
- 中国大陆(所有均需身份信息)
- 阿里云 aliyun.com 中国第一大公有云
- 腾讯云 cloud.tencent.com 中国第二大公有云
- 华为云 huaweicloud.com 中国第三大公有云,无需接入备案[1]
- 天翼云(中国电信)ctyun.cn 中国第四大公有云
- 百度云 cloud.baidu.com
- UCloud ucloud.cn
- 青云 qingcloud.com
- 火山引擎(字节跳动)volcengine.com
- Azure CN azure.cn 世纪互联运营,仅限企业用户
- AWS CN amazonaws.cn 西云数据、光环新网运营,仅限企业用户
- 国际(所有均需信用卡)
- Amazon Web Service aws.amazon.com 世界第一大公有云,支持银联卡片
- Azure (Microsoft) azure.com 世界第二大公有云
- Alibaba Cloud alibabacloud.com 世界第三大公有云[2]
- Google Cloud cloud.google.com 世界第四大公有云
- Digital Ocean digitalocean.com [3]
- IBM Cloud cloud.ibm.com
- Oracle Cloud oracle.com
我个人较为推荐使用大型公有云运行生产环境服务,因为大型公有云通常具有较好的稳定性、较高的技术能力、较快的客户服务效率和较多的福利。
大多数国内的大型公有云都有新用户优惠,可以以较低的价格购买较高配置的云服务器。大多数国外的大型公有云都提供免费额度,例如AWS的12个月试用期、Azure的200美元额度和DigitalOcean的100美元额度。
公有云通常提供多样的服务,除去基本的弹性计算,还包括但不限于对象存储、CDN、SaaS[4]、Kubernetes、容器镜像、容器仓库等,因此对于后续架构升级、架构扩展具有较高的优势。
需要注意的是,由于公有云通常选用较高质量的硬件,还对SLA有较高的要求,因此其售价也会较高。
私有云
部分集团企业和政府企业会使用私有云[5]服务,即专为最终用户而创建且通常位于用户的防火墙内的云环境。
通常,大型公有云会提供多种私有云解决方案。
小型 IDC 服务商
由于云计算资源日益丰富,近些年的市场逐渐扩张,出现了不少小微企业、工作室或个人运营的IDC服务。
此类服务通常具有较少的维护人数和云资源,部分IDC服务商通过对接大型公有云或地方机房获取云计算资源,并进行销售。
小型IDC服务商的云计算资源通常不如大型公有云广泛,很多只提供虚拟专用服务器(VPS)服务,不具备较高的技术实力[6]。
相对大型公有云,小型IDC具有更高的可能放弃服务(俗称跑路),通常我使用以下两种方式甄别中国大陆云服务商的可信度。
- 中国大陆注册公司要求登记注册资金,部分公司登记资金破百万但实缴为0,即公司本身没有价值,公司开设无成本。
- 中国大陆对于增值电信服务商要求增值电信业务许可证,对于销售虚拟专用服务器则需要“互联网接入服务业务”和“互联网数据中心业务”的业务种类。可前往 电信业务市场综合管理信息系统 通过公司名查询其持有的许可证。
- 中国大陆对于开设在中国境内的网站要求进行ICP备案,可前往 ICP/IP地址/域名信息备案管理系统 通过域名查询备案信息。
若一小型IDC服务商销售中国大陆地区的云服务器,但不持有任何中国大陆企业主体或许可证,建议自行斟酌其可信度。
个人不建议使用小型IDC服务商的云计算资源作为生产环境的承载。
服务器安全
服务器的安全和权限是站点安全的基础,而Shell安全则是服务器安全的基石。
通常我们通过SSH协议连接Linux Terminal,并执行命令。其中,SSH的安全是极其必要的。
登录方式
我建议不要在任何公网服务器的SSH服务端使用密码登录,请尽可能使用SSH密钥对而不是密码。
生成密钥对
我们在 Linux 服务器上通过 ssh-keygen
命令生成秘钥。
由于 ECDSA 加密具有更高的可靠性和更小的性能损耗,在本次教程中我们以此为演示。部分服务商不支持导入 ECDSA 秘钥,可依据思路替换为 RSA。
ssh-keygen --help
ssh-keygen -t ecdsa
其中,我们可以通过 -t
参数指定加密方法,通过 -b
参数指定加密位数。
个人习惯在 RSA 秘钥使用4096 bits,在 ECDSA 秘钥使用 521 bits。
ssh-keygen -t ecdsa -b 521 # 生成SSH,路径使用默认即可
此时,~/.ssh/id_ecdsa
为私钥, ~/.ssh/id_ecdsa.pub
为公钥
配置密钥
请先将 ~/.ssh/id_ecdsa
路径的私钥复制到本地。
cp ~/.ssh/id_ecdsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
配置 SSH 服务
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup # 备份
vi /etc/ssh/sshd_config
按 i 进入编辑模式并替换内容:
# 去除注释
LogLevel INFO
MaxAuthTries 3
MaxSessions 5
PubkeyAuthentication yes
PasswordAuthentication no
ClientAliveInterval 600
ClientAliveCountMax 3
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
# 添加新行
Protocol 2
按 esc 退出编辑模式,并输入 :wq
保存内容。
而后我们需要重启 SSH 服务:
# RHEL / CentOS
systemctl restart sshd
# Debian / Ubuntu
service sshd restart
配置连接
此处使用 XShell 举例:
在 工具-用户密钥管理者 中导入上文要求复制到本地的私钥
针对服务器的Session进行修改即可。
随后,不要关闭保留的连接,重新双击 Session 文件进行连接,如果能够成功连接则为无误。
关于端口
更改 SSH 端口并无必要,能够成功破解 ECDSA 和 RSA 算法几乎没有可能性。
使用习惯
私钥安全
请不要将私钥上传到任何公开的网络平台,例如GitHub、QQ群文件、云盘等,这都是极其不安全的!
私钥是唯一的,丢失私钥意味着你无法打开服务器(可VNC重置),泄露私钥意味着你的服务器将承受极大的安全风险。
用户
请尽可能不要使用Root登录SSH。
你可以在 /etc/ssh/sshd_config
中设置 PermitRootLogin no
以避免直接通过Root登录。
为非 Root 用户设置私钥的方法与上述大致相同。
网络环境
对于较大的企业,更好的选择应当是在内网设立鉴权服务器和 SSH 跳板机[7]。
Zero Trust 思想同样适用于系统层。
端口
建议关闭所有不需要使用的端口。
可参考文章:
关于面板程序
选择面板程序请遵循以下原则
- 如果你能够熟练地使用Linux系统,精通服务器运维,请不要使用面板程序。
- 如果你了解Nginx的基本配置文件写法,且单服务器对应单个站点,请不要使用面板程序。
- 如果你不需要运行Web程序,请不要使用面板程序。
- 如果你的业务主要为互联网相关,请不要使用面板程序。
- 如果你实在要用面板,请一定选择宝塔面板或CPanel。
面板程序具有优点,同时也具有缺点。
- 优点:
- 简单快捷(开发环境可以使用,但我更推荐JetBrains IDE的内置部署流程)。
- 多站点维护方便。
- 图形化操作(适合新手)。
- 缺点:
- 具有一定的资源占用,小机器不推荐。
- 宝塔面板等国内的面板程序会向其服务器上传你的服务器相关信息,且强制实名。
- 具有出现重大0day漏洞的可能性(参考宝塔pma删库事件)。
- 多少有点Bug。
最主要的问题在于,一旦一个面板程序出现Bug,那几乎所有使用者都会受到极大的影响。
且国内面板必定会上传你的服务器相关信息和站点信息,公安找上门不是不可能的事。
鸣谢
没有以下两位人才,本文必将不会被创作。
- @Bruce 宝塔的忠诚追随者,看了我站全部文章但啥都没学到
- @HenryJiu 密码登录SSH的坚定拥护者
纯属整活,以上两位都是群友兼博主的好朋友~
感谢群友的提议,让我更好地完善本文内容。
- 来自群聊 GenKit Chat 的 @ξ
想购买一台美国IP以及一台东南亚IP的服务器。主要用于电商中固定IP登录,对性能要求不高,大致同阿里云轻量服务器配置即可。AHDark有了解这块,可以推荐的型号吗?Thanks~
这个比较推荐挂梯子。服务器的话,美国的可以参考我司 https://cloud.ungine.cn 。东南亚推荐还是阿里腾讯的新加坡轻量,或者digital ocean的新加坡区域
腾讯云❌,阿里云❌,只要不加国际都要被审查,进出口流量完全一致直接封号。
DigitalOcean✅
您可能错误地理解了我的意思,我的意思是:建议挂梯子,如果不挂梯子就用阿里腾讯东南亚的服务器。通过 RDP 是可以正常使用的。
明白👌
我还停留在密码登录,这边的经验是只要把22端口号调高,就能阻挡大部分的扫端口,然后配合fail2ban没遇到啥问题😂。
群晖也是这样,默认扫5000的特多,调高之后一次也没有被扫过了
就我目前的架构方案来说,改端口比用密钥费劲的多,所以没怎么考虑这个方法。
华为云第三,天翼云第四这是有什么依据吗~ 没想到它们俩这么牛啊……(ノ°ο°)ノ
主要参考 IDC 和 Gartner 的公开数据