本文导航

  • -经常升级系统00%

  • -自动安全更新02%

  • -添加一个受限用户账户07%

    • -CentOS / Fedora11%

    • -Ubuntu13%

    • -Debian15%

  • -加固 SSH 访问21%

    • -创建验证密钥对23%

    • -SSH 守护进程选项43%

    • -使用 Fail2Ban 保护 SSH 登录54%

  • -删除未使用的面向网络的服务58%

    • -查明运行的服务59%

    • -查明该移除哪个服务80%

    • -卸载监听的服务87%

  • -配置防火墙90%

  • -接下来95%

现在让我们强化你的服务器以防止未授权访问。

经常升级系统

将软件更新到最新版本通常是任何操作系统所必需的安全预防措施。软件在更新时通常会在大到关键漏洞补丁、小到bug修复的范围内进行,很多漏洞实际上在被公布时就已经被修复了。

自动安全更新

你可以调节服务器关于自动更新的的参数。Fedora 的 Wiki页面上有一篇文章对自动更新进行了深入解读,文章里提到我们可以通过调整参数为安全更新会把自动更新的风险降低至最少。

当然,是否选择自动更新必须由你自己决定,因为这取决于你将要在你的服务器上进行何种工作。自动更新只能通过仓库里的包才能进行,你自己编译的程序可不能用。你会需要一个与生产环境一致的测试环境,在进行最终部署之前,一定要在测试环境确认无误才行。

  • CentOS 使用 yum-cron 进行自动更新。

  • Debian 和 Ubuntu 使用 无人值守更新。

  • Fedora 使用 dnf-automatic 。

添加一个受限用户账户

我们假定你已经使用 root 权限进入了服务器中,你此时拥有服务器的至高权限,一个不小心就会把服务器搞瘫痪。所以,你应该有一个受限制账户而不是一直使用 root 账户。这不会给你的操作带来多大麻烦,因为你可以通过 sudo来进行任何你想要的操作。

有的发行版可能并不把 sudo设为默认选项,不过你还是可以在软件包仓库中找到。如果你获得的提示是 sudo:command not found,请在继续之前安装 sudo。

记住,添加新用户你要通过 SSH 登录服务器才行。

CentOS / Fedora

1、 创建用户,用你想要的名字替换 example_user,并分配一个密码:

2、 将用户添加到具有 sudo 权限的 wheel 组:

Ubuntu

1、 创建用户,用你想要的名字替换 example_user。你将被要求输入用户密码:

2、 添加用户到 sudo 组,这样你就有管理员权限了:

Debian

1、 Debian 默认的包中没有 sudo, 使用 apt-get 来安装:

2、 创建用户,用你想要的名字替换 example_user。你将被要求输入用户密码:

3、 添加用户到 sudo 组,这样你就有管理员权限了:

创建完有限权限的用户后,断开你的服务器连接:

重新用你的新用户登录。用你的用户名代替 example_user,用你的服务器 IP 地址代替例子中的 IP 地址:

现在你可以用你的新用户帐户管理你的服务器,而不是 root。 几乎所有超级用户命令都可以用 sudo(例如:sudo iptables -L -nv)来执行,这些命令将被记录到 /var/log/auth.log中。

加固 SSH 访问

你可以使用密码认证登录服务器。但是更安全的方法是通过加密的密钥对。你将彻底放弃密码,用私钥可以防止暴力破解。我们将告诉你如何创建密钥对。

创建验证密钥对

1、创建密钥对可以在你自己的电脑上完成,现在我们开始创建一个 4096 位的 RSA 密钥对。即使有了密钥,你仍然可以通过密码方式加密你的私钥,这样除非你把密码存在密钥管理器里,不然就必须通过输入正确的密码使用你的私钥。用了密码能有一个双重保险,不想用的话你直接把密码字段留空就可以了。

Linux / OS X

现在我们开始第一步,请注意:如果你之前已经创建过 RSA 密钥对,则这个命令将会覆盖它,带来的结果很可能是你不能访问其它的操作系统。如果你已创建过密钥对,请跳过此步骤。要检查现有的密钥,请运行 ls〜/ .ssh / id_rsa *。

在输入密码之前,按下 回车使用 /home/your_username/.ssh 中的默认名称 id_rsa 和 id_rsa.pub。

Windows

这可以使用 PuTTY 完成,在我们指南中已有描述:使用 SSH 公钥验证。

2、将公钥上传到您的服务器上。 将 example_user 替换为你用来管理服务器的用户名称,将 203.0.113.10 替换为你的服务器的 IP 地址。


Linux

在本机上:


OS X

在你的服务器上(用你的权限受限用户登录):

在本机上:

如果相对于 scp 你更喜欢 ssh-copy-id 的话,那么它也可以在 Hemebrew 中找到。使用 brew install ssh-copy-id 安装。


Windows

  • 选择 1:使用 WinSCP 来完成。 在登录窗口中,输入你的服务器的 IP 地址作为主机名,以及非 root 的用户名和密码。单击“登录”连接。

  • 一旦 WinSCP 连接后,你会看到两个主要部分。 左边显示本机上的文件,右边显示服务区上的文件。 使用左侧的文件浏览器,导航到你已保存公钥的文件,选择公钥文件,然后点击上面工具栏中的“上传”。

    系统会提示你输入要将文件放在服务器上的路径。 将文件上传到 /home/example_user/.ssh /authorized_keys,用你的用户名替换 example_user。

  • 选择 2:将公钥直接从 PuTTY 键生成器复制到连接到你的服务器中(作为非 root 用户):

  • 上面命令将在文本编辑器中打开一个名为 authorized_keys 的空文件。 将公钥复制到文本文件中,确保复制为一行,与 PuTTY 所生成的完全一样。 按下 CTRL + X,然后按下 Y,然后回车保存文件。

最后,你需要为公钥目录和密钥文件本身设置权限:

这些命令通过阻止其他用户访问公钥目录以及文件本身来提供额外的安全性。有关它如何工作的更多信息,请参阅我们的指南如何修改文件权限。

3、 现在退出并重新登录你的服务器。如果你为私钥指定了密码,则需要输入密码。

SSH 守护进程选项

1、 不允许 root 用户通过 SSH 登录。

这要求所有的 SSH 连接都是通过非 root 用户进行。当以受限用户帐户连接后,可以通过使用 sudo 或使用 su - 切换为 root shell 来使用管理员权限。


2、 禁用 SSH 密码认证。 

这要求所有通过 SSH 连接的用户使用密钥认证。根据 Linux 发行版的不同,它可能需要添加 PasswordAuthentication 这行,或者删除前面的 # 来取消注释。

如果你从许多不同的计算机连接到服务器,你可能想要继续启用密码验证。这将允许你使用密码进行身份验证,而不是为每个设备生成和上传密钥对。


3、 只监听一个互联网协议。

 在默认情况下,SSH 守护进程同时监听 IPv4 和 IPv6 上的传入连接。除非你需要使用这两种协议进入你的服务器,否则就禁用你不需要的。 这不会禁用系统范围的协议,它只用于 SSH 守护进程。

使用选项:

  • AddressFamily inet 只监听 IPv4。

  • AddressFamily inet6 只监听 IPv6。

默认情况下,AddressFamily 选项通常不在 sshd_config 文件中。将它添加到文件的末尾:


4、 重新启动 SSH 服务以加载新配置。

如果你使用的 Linux 发行版使用 systemd(CentOS 7、Debian 8、Fedora、Ubuntu 15.10+)

如果您的 init 系统是 SystemV 或 Upstart(CentOS 6、Debian 7、Ubuntu 14.04):

使用 Fail2Ban 保护 SSH 登录

Fail2Ban是一个应用程序,会把频繁出现登陆失败的IP地址进行自动封禁。一般情况下,人们都不会连续三次以上输错密码(如果使用 SSH 密钥,那不会超过一个),因此如果服务器充满了登录失败的请求那就表示有恶意访问。

这个软件的监听范围很广,包括我们熟知的 SSH、HHTP或者SMTP。不过在默认仅监视 SSH,并且因为 SSH 守护程序通常配置为持续运行并监听来自任何远程 IP 地址的连接,所以对于任何服务器都是一种安全威慑。

删除未使用的面向网络的服务

大部分 Linux 发行版都可以使用网络服务,你可以选择把不再需要的那部分删除掉,这样可以减少被攻击的概率。

查明运行的服务

要查看服务器中运行的服务:

如果默认情况下 netstat 没有包含在你的 Linux 发行版中,请安装软件包 net-tools 或使用 ss -tulpn命令。

以下是 netstat 的输出示例。 请注意,因为默认情况下不同发行版会运行不同的服务,你的输出将有所不同:

netstat 告诉我们服务正在运行 RPC(rpc.statd 和 rpcbind)、SSH(sshd)、NTPdate(ntpd)和Exim(exim4)。


TCP

请参阅 netstat 输出的 Local Address 那一列。进程 rpcbind 正在侦听 0.0.0.0:111 和 :::111,外部地址是 0.0.0.0:* 或者 :::* 。这意味着它从任何端口和任何网络接口接受来自任何外部地址(IPv4 和 IPv6)上的其它 RPC 客户端的传入 TCP 连接。 我们看到类似的 SSH,Exim 正在侦听来自回环接口的流量,如所示的 127.0.0.1 地址。


UDP

UDP 套接字是无状态的,这意味着它们只有打开或关闭,并且每个进程的连接是独立于前后发生的连接。这与 TCP 的连接状态(例如 LISTEN、ESTABLISHED和 CLOSE_WAIT)形成对比。

我们的 netstat输出说明 NTPdate :1)接受服务器的公网 IP 地址的传入连接;2)通过本地主机进行通信;3)接受来自外部的连接。这些连接是通过端口 123 进行的,同时支持 IPv4 和 IPv6。我们还看到了 RPC 打开的更多的套接字。

查明该移除哪个服务

如果你在没有启用防火墙的情况下对服务器进行基本的 TCP 和 UDP 的 nmap 扫描,那么在打开端口的结果中将出现 SSH、RPC 和 NTPdate 。通过配置防火墙,你可以过滤掉这些端口,但 SSH 除外,因为它必须允许你的传入连接。但是,理想情况下,应该禁用未使用的服务。

  • 你可能主要通过 SSH 连接管理你的服务器,所以让这个服务需要保留。如上所述,RSA 密钥和 Fail2Ban 可以帮助你保护 SSH。

  • NTP 是服务器计时所必需的,但有个替代 NTPdate 的方法。如果你喜欢不开放网络端口的时间同步方法,并且你不需要纳秒精度,那么你可能有兴趣用 OpenNTPD 来代替 NTPdate。

  • 然而,Exim 和 RPC 是不必要的,除非你有特定的用途,否则应该删除它们。

本节针对 Debian 8。默认情况下,不同的 Linux 发行版具有不同的服务。如果你不确定某项服务的功能,请尝试搜索互联网以了解该功能是什么,然后再尝试删除或禁用它。

卸载监听的服务

如何移除包取决于发行版的包管理器:


Arch


CentOS


Debian / Ubuntu


Fedora

再次运行 sudo netstat -tulpn,你看到监听的服务就只会有 SSH(sshd)和 NTP(ntpdate,网络时间协议)。

配置防火墙

使用防火墙阻止不需要的入站流量能为你的服务器提供一个高效的安全层。 通过指定入站流量,你可以阻止入侵和网络测绘。 最佳做法是只允许你需要的流量,并拒绝一切其他流量。请参阅我们的一些关于最常见的防火墙程序的文档:

  • iptables 是 netfilter 的控制器,它是 Linux 内核的包过滤框架。 默认情况下,iptables 包含在大多数 Linux 发行版中。

  • firewallD 是可用于 CentOS/Fedora 系列发行版的 iptables 控制器。

  • UFW 为 Debian 和 Ubuntu 提供了一个 iptables 前端。

接下来

这些是加固 Linux 服务器的最基本步骤,但是进一步的安全层将取决于其预期用途。 其他技术可以包括应用程序配置,使用入侵检测或者安装某个形式的访问控制。

现在你可以按你的需求开始设置你的服务器了。

编译自: https://www.linode.com/docs/security/securing-your-server/ 
作者: Phil Zona,译者: geekpi

云计算免费课程火热开讲中,5天运维经典课程免费学,会云计算的运维人才到底需要掌握哪些技术,未来前景发展怎么样?跟随行业大咖一起剖根究底,点击文末“阅读原文”或长按下方二维码即可报名免费课程!抓住免费学习的机会,逆袭2019~~

PS:记得查收小编送你的免费大礼包呦~

福利 | 一万多套PPT模板等你免费来拿!无条件领取!

免费送 | 1000多套简历模板免费拿,附赠简历制作教程!

免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~

▼▼点击【阅读原文】,5天运维免费课程,开讲在即!

运维快速入门必备的 Linux 服务器安全简明指南,速收!相关推荐

  1. python自动化运维快速入门pdf下载_我爱电子书-《Python自动化运维快速入门》| pdf + epub + mobi + awz3, 高清版, 带目录,Kindle版, 多看精排版下载...

    Python自动化运维快速入门 豆 0.0分 资源最后更新于 2020-03-29 01:00:08 作者:郑征 出版社:出版社清华大学出版社 出版日期:2019-04 ISBN:9787302525 ...

  2. linux服务器运维实战记录,linux运维好书推荐《高性能Linux服务器运维实战》

    本书整体分为4个篇幅,以Linux运维平台下的开源应用软件为中心,涉及Linux运维的各个方面,主要从系统基础运维(命令.shell编程).系统性能调优.智能运维监控平台构建.运维实战案例四个方面展开 ...

  3. 运维基础(11)Linux服务器性能优化

    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要 ...

  4. 【转载】运维职业向!我是怎么入得运维行业?运维工程师入门必备技能以及打怪升级篇...

    前言:转载 陈浩一个从事安全运维向的前辈文章.写的很好.人非常nice,遇到了问题,qq上很快就回复了我. 大道三千 入门最难,凡事入了行,也就什么都好说了,好的自然不断努力奋斗修行,不好的自然很快就 ...

  5. python自动化运维快速入门 pdf 郑征_GitHub - bei2love/Python-100-Days: Python - 100天从新手到大师...

    Python - 100天从新手到大师 作者:骆昊 说明:从项目上线到获得8w+星标以来,一直收到反馈说基础部分(前15天的内容)对新手来说是比较困难的,建议有配套视频进行讲解.最近把基础部分的内容重 ...

  6. Linux服务器安全简明指南

    现在让我们强化你的服务器以防止未授权访问. 经常升级系统 将软件更新到最新版本通常是任何操作系统所必需的安全预防措施.软件在更新时通常会在大到关键漏洞补丁.小到bug修复的范围内进行,很多漏洞实际上在 ...

  7. python自动化运维快速入门-Python自动化运维快速入门

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  8. python自动化运维快速入门pdf下载_Python自动化运维快速入门

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  9. 运维之道 | SCP:Linux服务器之间传输目录文件

    Linux端互传文件 scp是secure copy.一个在linux下用来进行远程拷贝文件的命令 1.把本地根目录下的villian.txt文件拷贝到192.168.206.148端的/home/w ...

最新文章

  1. Linux用户管理-服务管理
  2. 《HTML5移动应用开发入门经典》—— 1.1 了解HTML5的由来
  3. [moka同学笔记]PHP操作Redis收集
  4. 如何在大学和工作后让自己逐渐变强?
  5. PriorityQueue源码解析
  6. springcloud注册中心eureka
  7. 机器学习:分类_机器学习基础:K最近邻居分类
  8. TCP三次握手和四次挥手详解 --- 转载
  9. 安装 Unity Hub 发现 进不了 Unity3D 了
  10. lol大脚一直卡在读取服务器信息,英雄联盟大脚 - 英雄联盟 - LOL英雄联盟官网 - 英雄联盟攻略 - 英雄联盟专题站...
  11. c++14:std::quoted
  12. 2021年4月19日 深圳头条后台开发实习面试(一面)(含总结)
  13. Java对象 转 JSON 字符串
  14. 大写汉字转为阿拉伯数字
  15. 看山还是山,看水还是水
  16. el vue 手机号_Vue 正则表达式验证邮箱和手机号码
  17. su和sudo的区别与使用
  18. 马斯洛需求:互联网产品设计的理论支点
  19. python材料计算程序_把python当日常的”计算器”用
  20. 新高考不选物理可以学计算机吗,新高考选了物理,不选化学,会有什么影响?...

热门文章

  1. 2023 闲鱼扫码自动收货跳转支付宝HTML源码
  2. JavaScript replace 强行保留后三位小数点
  3. INV TXN MANAGER PUB PROCESS TRANSACTIONS
  4. python下的xml创建以及追加信息,删除信息方法
  5. oracle查询某个时间段是否在另外一个时间段之内
  6. 竟然可以在Windows下用Nvim写代码?1.基础配置环境与安装nvim
  7. RPG Maker mv框架代码解析之窗口文字显示
  8. “小镇青年”、“互联网老兵”、“币圈韭菜” 玉红的众多标签为哪般?
  9. 我敢打赌你一定不知道的软件测试基础知识整理
  10. 物理机与虚拟机互传文件