注:本文中的命令全部是基于CentOS 7的,其他发行版本其实也大同小异


更改hostname

更改hostname

上图来自: CentOS 7 : Set Hostname

设置/etc/hosts

这个其实跟Windows的hosts一样,它默认有两行示例,照着写就好。

设置时区

例如:

cp /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime

把“Asia/Hong_Kong”换成自己想要的即可

更新:yum update

(这个随时都可以,新配置的机器建议更新下)

添加用户并分配权限

[root@server ~]# adduser demo
[root@server ~]# passwd demo
[root@server ~]# visudo

##Allow root to run any commands anywhere
root    ALL=(ALL)      ALL
exampleuser        ALL=(ALL)      ALL

设置ssh

用PuTTYgen生成密钥并配合PuTTY来实现SSH远程登录

此处主要参考Linode的 官方文档,因为我用的是Windows系统,所以这里使用PuTTYgen和PuTTY这两个软件来生成密钥和登录

生成公钥

点击Generate生成公钥,把生成的公钥复制一下,待会儿要用到(也可以把公钥保存到电脑上自己认为足够安全的地方)

生成公钥

设置私钥的密码并保存私钥到本地

务必给私钥设置个口令,并确保私钥的安全,这个非常重要

保存私钥

上传公钥到Linode

/home/yourusername(yourusername改成自己的用户名)目录下创建一个.ssh文件夹,然后在这个文件夹下面新建一个名为authorized_keys的空白文件(注:普通用户登录,且不要用sudo命令)

mkdir ~/.ssh; touch ~/.ssh/authorized_keys; chmod 700 ~/.ssh

然后 nano ~/.ssh/authorized_keys 把刚才保存的那一串公钥复制进来然后保存退出,更改下权限 chmod 600 .ssh/authorized_keys。感觉在这里也可以直接把前面保存的公钥重命名为 authorized_keys 上传到 .ssh 目录下,然后更改权限,不过我没这么试。

:公钥复制粘贴保存这块很容易出问题,导致下面PuTTY登录时提示"server refused our key",一定要看好了,不要少复制了,也不要有多余的换行,公钥只有一行)

配置PuTTY远程登录

在Connection -> SSH -> Auth下点击Browse选择刚才所保存的私钥,然后在Session部分填下VPS的地址或者主机名,为了方便以后登录,可以点击Save保存一下,然后点击Open即可打开SSH登录界面,然后输入用户名以及私钥的口令就可以登录了

配置PuTTY远程登录

禁用SSH密码登录,禁用root登录

sudo nano /etc/ssh/sshd_config

找到下面两行,都改成no,如果被#注释掉了,记得把#去掉

PasswordAuthentication no
PermitRootLogin no

然后重启下ssh服务 sudo systemctl restart sshd.service
Ok.到这里应该都设置好了,退出PuTTY,再次登录验证下,现在应该是只能通过ssh密钥的方式登录,而使用密码登录,以及root用户登录都会被限制掉

设置firewalld

(之前是iptables,与firewalld不太一样)【此处稍后更新代码】

配置Fail2Ban

安装:yum install fail2ban

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

把最基本的几条按照自己的需求修改一下,比如ignoreip, bantime, findtime, maxretry这几项,然后重启服务,让配置生效

systemctl restart fail2ban.service

更多Fail2ban的设置可参考:
How to Install Fail2Ban on CentOS
How Fail2ban Works to Protect Services on a Linux Server