TakWolf 's Blog

Anima Game Code Repeat

TakWolf's avatar TakWolf

Ubuntu 初始化配置笔记

换了个阿里云香港的服务器试试,DigitalOcean 跟 Linode 国内访问太慢。当然不愿意备案,否则也不会这么折腾。
之前在 Linode 服务器有被入侵过的经历,搞得我的账单都爆了。吃一堑长一智。稍微也研究了一些安全方面的配置,做个笔记。

服务器为阿里云香港节点,配置当然是最低的(1CUP、1G内存、1M宽带),单买费用一个月大概120软妹币。
系统安装的是 Ubuntu 14.04 64位。

1.升级

Ubuntu 安装成功,第一件事就是升级。

1
2
$ apt-get update
$ apt-get upgrade

某些具有依赖关系的包可能不会升级,可以用下面的命令升级

1
$ apt-get dist-upgrade

完成后,用下面的命令清理

1
2
3
$ apt-get clean
$ apt-get autoclean
$ apt-get autoremove

系统提示我有新的发行版16.04.1 LTS可以升级,命令是

1
$ do-release-upgrade

但是这个我没升级。

2.修改 ssh 默认端口号

目的是防止入侵者直接扫描默认端口。
ssh 的配置文件在 /etc/ssh/sshd_config
用 vim 打开,找到如下位置,并添加一个新端口,例如:5000

1
2
Port 22
Port 5000 # 添加的端口

重启 ssh 才能生效,命令是

1
$ /etc/init.d/ssh restart

注意,添加新的端口之后,先不要删除22端口。万一抽风了配置没好使,搞得你登录不上去就麻烦了。
修改成功之后,你再次登录就需要手动指定端口了

1
$ ssh -p 5000 root@hostname

3.禁止 root 用户登录 ssh

原理跟改端口一样,防止入侵者用 root 用户进行测试,平时使用我们也需要对操作进行降权。
当然你首先要新创建一个用户,使用命令

1
$ adduser myname

根据提示填写信息,一般直接回车默认就行。
切换到这个用户,你会发现无法使用 sudo 命令,提示

1
xxx is not in the sudoers file. This incident will be reported.

这是因为用户没有配置权限,配置文件在/etc/sudoers
切换到 root 用户做如下操作。

sudoers文件默认是没有写权限的,首先添加写权限

1
$ chmod u+w /etc/sudoers

然后 vim 打开这个文件

1
$ vi /etc/sudoers

找到这行,并在下面添加

1
2
root ALL=(ALL:ALL) ALL
xxx ALL=(ALL:ALL) ALL # xxx是你的用户名

规则是这样的:

1
2
3
4
xxx ALL=(ALL:ALL) ALL # 允许用户xxx执行sudo命令,需要密码
%xxx ALL=(ALL:ALL) ALL # 允许用户组xxx里面的用户执行sudo命令,需要密码
xxx ALL=(ALL:ALL) NOPASSWD:ALL # 允许用户xxx执行sudo命令,不需要密码
%xxx ALL=(ALL:ALL) NOPASSWD:ALL # 允许用户组xxx里面的用户执行sudo命令,不需要密码

保存修改并退出,之后取消sudoers的写权限

1
$ chmod u-w /etc/sudoers

如此一来,用户就可以使用 sudo 命令了。

接下来我们禁止 root 用户登录 ssh,还是打开 ssh 配置文件

1
$ vi /etc/ssh/sshd_config

修改配置项

1
PermitRootLogin no

不要忘记重启 ssh ,否则不会生效

1
$ /etc/init.d/ssh restart

这样 root 用户就无法登录 ssh 了。
平时我们使用普通用户,需要的时候用 sudo 命令,或者用 su 命令切换到 root 用户。

这里有一个需要注意的地方就是,一定要确保你的普通用户给了 root 权限之后,再禁用 ssh 的 root 登录。
因为修改权限的操作是需要 root 权限的,如果没给权限就禁用,那么 root 权限就永远丢失了。除非你肉身去阿里云机房登录。

4.配置 ssh 使用密钥登录

密码终归是有被暴力破解的风险的,使用密钥对就可以避免这个问题。
当然另外一个好处就是可以免密码登录,当然前提是你的私钥没有设置密码。

第一步在本地电脑上生成密钥

1
$ ssh-keygen -t rsa -C your@email.com

提示输入保存路径和密码。
路径默认通常是~/.ssh/id_rsa
密码不输入的话就是没密码,有密码的话使用私钥的时候会用到

成功之后,会在~/.ssh目录下面生成两个文件,id_rsa为私钥,id_rsa.pub为公钥

注意,密钥对要妥善保管!!!

然后我们把公钥上传到服务器,执行命令:

1
scp -P 5000 ~/.ssh/id_rsa.pub myname@hostname:~/

这句的意思是,我们把~/.ssh/id_rsa.pub文件复制到服务器的~/目录下面,其中-P 5000用来指定端口号,因为上面我们已经关闭了默认的22端口

这个过程,会要求你输入密码。成功后你在服务器就能看到id_rsa.pub文件了

然后我们为服务器安装这个公钥,登录你的服务器账户

1
$ cat id_rsa.pub >> .ssh/authorized_keys # 追加你的公钥到authorized_keys文件内容后面

为了能够使用密钥,你要确保配置文件/etc/ssh/sshd_config中,以下配置是开启的(默认应该是开启的)

1
2
RSAAuthentication yes
PubkeyAuthentication yes

这样,之后你再次输入ssh -p 5000 myname@hostname就会直接走密钥了

优化,在你的本机电脑上,打开

1
$ vi ~/.ssh/config

按照以下格式配置

1
2
3
4
Host myserver
HostName hostname
Port 5000
User myname

这样相当于你给你的服务器创建了一个别名,你可以直接用下面的命令登录

1
ssh myserver

更进一步,你还可以将服务器的 ssh 密码登录关闭掉

1
PasswordAuthentication no

这里我没关闭,因为怕哪天电脑重装,密钥丢失,还有个补救的机会。这个看个人情况吧。

后记

说说阿里云香港的使用体验吧。
我的是最低配置,平时也就是放一些个人网站的,跑的程序主要是 Java、Node 跟 Ruby ,感觉都没啥问题。
性能主要还是在网络带宽上,1M略小,考虑个人站也足够。
国内连接速度不算快,上传速度平均 50kbit/s 左右吧,但是还算稳定,至少 ssh 不会掉线。

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接: http://blog.takwolf.com/2016/10/15/begin-with-ubuntu-sever/

没有能用的评论系统我也很无奈啊!

有问题请去这里讨论吧:

https://github.com/TakWolf/blog.takwolf.com/issues