提高Ubuntu服务器系统安全

原文出处

Ubuntu服务器全新安装后的基本安全设置

当你创建一个新的 Ubuntu server 时,有若干个基本配置需要做,这可以提高系统安全性和可用性,为你后续工作打造坚实的基础。

任何暴露主机都是黑客潜在的攻击对象,下面的几个简单的技巧就可以提高系统安装。

  • 保持系统最新,封堵已知漏洞
  • 设置复杂密码
  • 使用最严格的访问控制,不要图方便
  • 使用防火墙

第一步-root登录

ssh root@SERVER_IP_ADDRESS

root用户是linux系统中的管理员账户,有非常高的权限。由于它的权限过高,所以不建议是使用root用户操作linux系统。一不小就悲剧了。

第二步-创建新用户

用root登录之后我们创建一个新用户,下面命令创建一个demo用户:

# adduser demo

设置一个复杂的密码

第三步-Root 权限

现在我们有了一个普通权限的新用户,但是我们有时需要执行管理员权限的任务。为了避免在普通用户和root用户之间来回切换,我们可以赋予普通用户执行root权限任务的权限,也就是在命令前加 sudo。

为了赋予新用户权限,我们需要把新用户加入到 “sudo” 组。在ubuntu14.04默认设置下,在‘sudo’组的可以执行sudo命令。

用root执行下面命令,把新用户加入打sudo组

# gpasswd -a demo sudo

现在 demo 用户可以执行root权限命令了。

第四步-公开密钥认证(Public Key Authentication)
首先,不需要通过网络传输ssh key其次,ssh key是经过加密后保存的,即使让人偷了还需要有加密串才能解密。相反,如果密码被偷了,可以直接用来登陆的。这样还可以避免别人对我们的ssh服务器进行暴力破解。

我们这边提到的ssh key实际上是一对key,分别保存在两个文件中。其中私钥也就是我们所谓的密钥保存在客户端的机器上,并使用密窜加密。而公钥则存储在服务器上。在创建ssh链接时,客户端和服务端之间使用公钥和私钥进行协商,如果它们之间匹配(当然是在加密状态下),则成功创建链接。

生成一对key,在本地计算机终端执行:

$ ssh-keygen

回车使用默认文件(或输入名称),下一要你输入密码

生成两个文件:其中id_rsa是私钥,id_rsa.pub是公钥。注意私钥不要分享给别人。

拷贝公钥到服务器

我们介绍两种方法:

方法一:ssh-copy-id:

$ ssh-copy-id demo@SERVER_IP_ADDRESS

执行完这条命令之后,公钥被拷贝到服务器的 .ssh/authorized_keys 文件,现在你可以用对应的私钥登录服务器。

方法二:手动安装:

你现在可以通过ftp或scp将公钥传到远程的ssh服务器上。

$ scp id_rsa.pub demo@SERVER_IP_ADDRESS

(当然,现在你们还是使用密码认证,而不是公钥认证,还没完成呢)

远程登陆到ssh服务器

$ ssh -l demo@SERVER_IP_ADDRESS

在远程服务器上的用户当前目录,看看有没有.ssh目录,通常都会有的,如果没有,则创建。

mkdir -p ~/.ssh
chmod 700 ~/.ssh

把公钥文件id_rsa.pub的内容附加到 ~/.ssh/authorized_keys

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

第五步:配置后台SSH驻留进程
现在有了一个新用户,我们可以通过修改ssh配置稍微提要以下服务器安全:禁用ssh登录root用户。

$ vi /etc/ssh/sshd_config

PermitRootLogin yes
改为
PermitRootLogin on

强烈建议关闭root登录。

重启SSH:

$ service ssh restart