之前买过某云的云服务器,一般都是控制台直接操作,然后使用。讲真很少关注服务器的安全问题,想着厂商不都处理了么。今天看到一篇写的不错的文章,补充了一些关于服务器安全的知识。
现在很多服务器都正遭受着攻击,以后也会有。所以我决定写一篇简短的教程来演示如何更轻松的保护你的Linux服务器
这并不意味着这是一篇很全面的安全教程。
但是它可以帮你预防将近90%的常见后端攻击,比如尝试 暴力登录 和 DDoS。
最棒的部分就是你可以在1~2小时内轻松实现这些安全操作。
开始之前
1.你需要一台Linux服务器
2.你需要对 命令行 有基本的理解。这里有一份常用的Linux命令行操作命令列表(包含了常用的参数,很不错),点我
如果你已经拥有上面这些必须条件,让我们开始第一步吧!
配置 SSH Keys
开启服务器的远程访问,可以使用密码登录或者SSH登录,你都需要记录下它们的日志。
使用密码登录的问题就是很容易使用暴力登录(下面你将会学习如何防止暴力登录)。此外,在任何你需要访问你服务器的时候都需要记录下这些。
为了避免上面这些缺点,你需要设置 SSH 认证。这比密码更安全,因为黑客不能暴力攻击它。
而且可以更容易更快速的连接到服务器,同时你不需要输入密码。
下面是如何在你的服务器上设置 SSH 认证
- 在你本地的电脑上,使用下面的命令
|
|
在你的控制面板上将会需要你进行几步简单的设置来生成你的 SSH Keys。记录下你的Key文件将要保存的路径信息。
- 使用下面的命令给你的服务器添加公钥
|
|
确保使用你真实的 username
和 remote_host
(这个是你真是的服务器IP地址) 来替换上面命令中的对应值。然后系统将提示你输入密码。
- 尝试使用以下命令登录服务器
|
|
不要忘记使用你真实的信息来替换其中的 username
和 remote_host
。你会注意到这次你将不需要输入密码。
保证你的系统时间是最新的
需要安全的协议依赖于你的系统时间来运行如 corn 定时计划、时间日志、其他关键任务等。
如果你的系统时间不正确的,对你的服务器来说可能会导致负面的影响。为了预防这种事情发生,你可以按照一个 NTP 客户端。这个客户端可以保证你的系统时间持续同步 NTP 的全球服务器。
使用下面的命令来安装 NTP 客户端:(根据具体系统使用安装命令)
|
|
从此你不必在担心你设置你的系统时间
查看活动端口
在服务器上的一些应用会暴露某些端口,所有在网络上的其他应用可以访问他们。
黑客们也可以在你的服务器上安装后门 并且 暴露出一个可以控制你服务器的端口。
基于这个原因,我们不想让你的服务器监听所不知道的请求端口。
查看活动端口可以使用下面的命令
|
|
让我们看下输出内容,特别要注意下任何那些对你而言不是很熟的端口和进程。
尝试跟踪那些不良的服务和进程
为了帮助你入门,可以查看这个列表 恶意 TCP/UDP 端口
启用防火墙
防火墙允许你 停止/启用 那些 进入/发出 自你服务器上的某些特殊端口的流量。
对于防火墙,我经常使用的是 UFW (uncomplicated firewall)
UFW 依照你设置的规则工作:
允许 / 禁用
进入 / 传出 流量
进入 / 传出
具体的 / 全部的 端口
在这个模块,你要阻断所有的网络流量除了那些你明确允许了的端口。在安装其他程序时,记得要启用对程序而言必须启用的端口。
设置UFW
- 安装ufw
|
|
- 你也可以禁用所有传出的流量
|
|
- 或者允许所有传出的流量
|
|
- 下一步,我们想禁止所有进入的流量
|
|
- 除了SSH连接,如此我们可以这样设置系统
|
|
- 如果你配置了 UFW 禁用了所有传出流量,别忘记允许你需要的具体的流量。下面是一些事例:
|
|
- 禁用 端口号99上的所有流量,使用下面的流量
|
|
- 最后 启用 UFW 使用下面的命令
|
|
- 你还可以使用下面的命令来查看UFW的状态
|
|
防止自动化攻击
这里有两种通用的方法你可以用来防止大多数的自动化攻击
PSAD 和 Fail2Ban 的不同之处
我们了解到端口可以访问到你服务器上的应用程序。一个攻击者通常会扫描你服务器上的开放端口,然后用来访问你的服务器。
PSAD 通过监控网络活动 来检测和选择性的阻止此类扫描和其他可疑类的流量,比如 DDoS 或者 系统指纹攻击。
Fail2Ban 从另一方面来说,扫描各个应用(如 FTP )的日志文件,并自动禁止恶意(如尝试自动登录)的IP。
下面两篇教程将会教你如何安装配置 PSAD 和 Fail2Ban,这样他们就可以和 UFW 组合起来一起工作。
安装 Logwatch
服务器上的应用经常会在日志文件中保存一些日期信息。你需要安装一个 logwatch 除非你想手动去监控你的日志文件。Logwatch 可以扫码系统日志文件并总结概述他们。
你可以直接在命令行运行它,或者加入一个周期性的计划任务中。比如,你可以配置 Logwatch 来给你发送关于日志文件的日常概要邮件。注意,要实现这个你的服务器需要启用发送邮件服务。
logwatch 使用服务文件来确定如何去读并且概述一个日志文件。你可以在 /usr/share/logwatch/scripts/services
看到所有的模版服务文件。
logwatch 的配置文件 /usr/share/logwatch/default.conf/logwatch.conf
指定了默认选项,你可以覆盖其中的参数。
在 Ubuntu 或者 Debian 下安装 logwatch 可以使用下面的命令
|
|
对于其他Linux发行版的用户,可以查看 Linode 的 这篇教程
你可以直接运行logwatch,得到一个示例 以便看下它是如何运行的。
|
|
最后,告诉logwatch 给我们发送一封关于我们日志文件的日常概要邮件。 之后,打开文件 /etc/cron.daily/00logwatch
,然后找到 execute
的行,然后用下面的替换他
|
|
安全审计
在此之后,你还需要进行安全审计,以便发现任何你可能错过的漏洞。
你可以使用 Lynis 来做这个。这是一款开源的软件,他提供了如下功能:
安全审计
常规测试(e.g. PCI, HIPAA, SOx)
渗透测试
漏洞检测
系统强化
如何使用 Lynis
在所有开始之前,可以克隆他们的 Github 仓库来安装 Lynis. 使用下面的命令来安装最新版。
|
|
如何进入到我们克隆下的项目目录中
|
|
最后 使用下面的命令来运行你的第一次审计
|
|
你还可以在他们的 官方网站 学到更多关于Lynis的用法
参考链接
https://medium.com/servers-101/how-to-secure-your-linux-server-6026cfcdefd8