代码旅行

我的开发机

之前的博文有说过,我很多时候都是在一台部署在 Google Cloud 上的 VM 进行开发的,那么这台机器具体是个什么情况呢?今天分享一下

名字

没错,我是那种无聊到会给自己每一台设备都起一个名字的人,开发机也不例外,它的名字是 spurs。

系统及基础配置

系统使用的是 Debian 9,基础配置如下

以 root 用户登录后,执行命令

apt update -y
apt upgrade -y

更新下系统,先开启 ssh 开机启动 update-rc.d ssh enable

adduser hb
usermod -aG sudo hb

增加一个用户,并将其拉入到 sudo 组,需要注意的是 Google Cloud 的 VM 需要开启密码登录验证,执行下面的命令

vi /etc/ssh/sshd_config

将文件里的 PasswordAuthentication no 中的 no 改成 yes,然后重启 service sshd restart

需要注意的是,我图省事,使用了密码登录的方式,其实应该是通过密钥登录方式才更安全。设置密钥的方式如下,在用户的根目录下执行命令

ssh-keygen

会要求输入保存地址,默认即可,同时建议输入一个密码

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hb/.ssh/id_rsa):
Created directory '/home/hb/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hb/.ssh/id_rsa.
Your public key has been saved in /home/hb/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Q9Uu6OacubPJAf689mxPtvhAqgwDmSBwzLg7ePNEtzQ hb@spurs
The key's randomart image is:
+---[RSA 2048]----+
|.+.       ..     |
|o.o      .  .    |
|o.      .. .     |
|o. o. E.. . .    |
|..+. o.+S ..     |
|+ o.....o+       |
| o +o .+oo. o    |
|    .+ =B+.= .   |
|      o.OB+o+    |
+----[SHA256]-----+

此时会在 ~/.ssh/ 下有一个生成两个文件 id_rsaid_rsa.pub,将公钥 id_rsa.pub 安装

cat id_rsa.pub >> authorized_keys

更改权限

chmod 600 authorized_keys
chmod 700 ~/.ssh

如上所说,将 /etc/ssh/sshd_config 中的 PasswordAuthentication 改成 yes,有时候可能需要设置

RSAAuthentication yes
PubkeyAuthentication yes

但也有的系统不需要,最后重启下即可 sudo service sshd restart。将 id_rsa 下载到本地计算机,执行 ssh -i id_rsa hb@server_ip 即可登录,如果之前生成密钥时输入了密码,这里会要求输入密码 Enter passphrase for key 'id_rsa':,输入密码即可。

安全和防火墙

在防火墙方面,除了 Google Cloud 的一套之外,在里面我安装了 ufw,主要是它更简单好用

apt install ufw

一些常用的命令

ufw enable //开启 ufw
ufw status //查看状态
ufw allow applicationname //允许某个应用通过
ufw app list //查看允许的应用

我的开发机只允许了三个端口 httphttpsssh,即

ufw allow 80
ufw allow 443
ufw allow ssh

如上面所说,我使用的是密码方式通过 SSH 登录,就会存在一个 SSH 被暴力破解的问题存在,Google Cloud 本身有一套运行机制防止被暴力破解,但我还是使用了 fail2ban 这个工具,其官网是 https://www.fail2ban.org/ ,它会监控多个系统的日志文件并根据检测到的任何可疑的行为自动触发不同的防御动作,先安装

sudo apt install fail2ban -y

配置监狱文件,一般参考 jail.conf 文件新建自己的文件

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

修改其中的

bantime = 86400 // 禁止 24 小时
banaction = ufw // 使用 ufw 允许的

重启 fail2ban,使其生效

sudo service fail2ban restart

查看是否生效

sudo fail2ban-client ping

会得到返回 Server replied: pong,其中 fail2ban-client 也可以进行一些操作,比如上面的刷新配置可以用 sudo fail2ban-client reload,具体的自行执行命令 sudo fail2ban-client --help 查看。

注意,在 Debian 中 fail2ban 是自动开机启动的,在其他系统中可能会需要手动开启开机启动,执行命令 sudo systemctl enable fail2ban

定期检查

我会定期检查开发机的成功登录情况

cat /var/log/auth.log |  grep Accepted

如果发现不是自己的 IP,说明被黑了。

软件

  • 编辑器

    我使用的是 vim,一款比较传统的编辑器,刚开始的时候并不适应,现在习惯了,效率也就上来了。

  • Docker

    因为配置一个服务器有时候真的很烦,而 Docker 让我不那么烦了。

  • Git

基本就这些内容,没那么复杂。但有一些开发还是在本地电脑进行的,比如 iOS 应用,对这些工具我的看法是简单直接点,不搞事。

--- EOF ---

请注意:这里的内容都是原创,你可以免费阅读,但拒绝所有其他任何形式的转载,谢谢配合。如果你发现文章中有错误,请在下面评论。考虑到网络环境,评论插件很多时候打不开,那可以考虑发邮件给我,邮箱地址在我的博客中很容易找到,非常感谢。

The Copyright of all posts & photos posted in tourcoder.com is belong to tourcoder.com. You can read them for free, but you may not reuse anything therein without my permission.

更多内容