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

经常升级系统

将软件更新到最新版本通常是任何操作系统所必需的安全预防措施。软件在更新时通常会在大到关键漏洞补丁、小到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 服务器的最基本步骤,但是进一步的安全层将取决于其预期用途。 其他技术可以包括应用程序配置,使用入侵检测或者安装某个形式的访问控制。

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

更多文章可以关注我的网站与博客,天游tianyounb.com、博悦平台pay1024.com里面都看得到我的文章,谢谢大家的支持~

Linux服务器安全简明指南相关推荐

  1. 运维快速入门必备的 Linux 服务器安全简明指南,速收!

    本文导航 -经常升级系统00% -自动安全更新02% -添加一个受限用户账户07% -CentOS / Fedora11% -Ubuntu13% -Debian15% -加固 SSH 访问21% -创 ...

  2. linux服务器网络不稳定,Linux服务器故障排查指南7:网络缓慢状况

    网络缓慢状况的故障排查 从某种角度来说,网络无法工作的问题更容易解决.当一台主机无法访问,我们可以执行前面讨论过的故障排查步骤直到一切恢复正常.但如果仅仅是网络缓慢,追查其根本原因往往变得更为棘手.本 ...

  3. linux服务器 openshift,Openshift 指南

    Openshift 是 RedHat 推出的 PaaS. 从 wr 那里听说的, 这几天一直在玩儿, 感觉很不错, 相比一直以来在压榨的 gae 来说, 更自由, 更像个 vps, 没有明确的配额限制 ...

  4. 如何保护Linux服务器

    如何保护Linux服务器 不断发展的如何保护Linux服务器的方法指南,希望也能教给您一些有关安全性及其重要性的知识. CC-BY-SA 目录 介绍 指导目标 为什么要保护服务器安全 为什么还有另一本 ...

  5. linux服务器无网络确认,Linux服务器故障排查实用指南

    [2013年3月25日 51CTO外电头条]由于造成网络问题的因素多种多样,因此网络故障排查技能就成了每位服务器或网络服务负责人必不可少的重要素质.Linux为我们提供了大量网络故障排查工具,在本文中 ...

  6. 护网行动(防守方)linux服务器通用安全加固指南(1)

    实验所属系列:Linux服务器搭建/Linux服务安全   Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入  ...

  7. linux服务器修改dns_更改DNS服务器的终极指南

    linux服务器修改dns There are many reasons you might want to use a third-party DNS server, from parental c ...

  8. git - 简明指南

    助你入门 git 的简明指南,木有高深内容 ;) Tweet 作者:罗杰·杜德勒  感谢:@tfnico, @fhd 和 Namics 其他语言 english, deutsch, español,  ...

  9. 云服务器dns配置文件,linux服务器dns配置文件

    linux服务器dns配置文件 内容精选 换一换 裸金属服务器硬件损坏,SDI卡损坏等原因,导致裸金属服务器无法正常使用时,您可以申请裸金属服务器重建功能.裸金属服务器重建过程不是自动化的,您需要联系 ...

最新文章

  1. 快速得到两个list中不同部分的list
  2. 静态html搜索,如何为网站增加相关性较强的静态搜索页?
  3. 解决高并发的问题python_python ---解决高并发超卖问题
  4. Spring AOP根据JdbcTemplate方法名动态设置数据源
  5. 让php4和php5共存的方法
  6. java开发课程表_展示Java开发人员课程包
  7. vCenter 升级错误 VCSServiceManager 1603
  8. 面向对象的类测试技术研究
  9. Java 虚拟机 最易理解的 全面解析
  10. nodejs安装失败
  11. 【BZOJ3956】Count,单调栈+ST表维护区间最大值
  12. 源代码管理分析工具 - Source Navigator
  13. [转]MySQL实现over partition by(分组后对组内数据排序)
  14. 富文本编辑器 CKeditor 配置使用 (带附件)
  15. 教你如何用迅雷下载百度云资源、如何解决百度云大文件下载、限速、下载时网络异常等问题。
  16. flex java blazeds_Flex同Java通信--BlazeDS入门图文详解(上)
  17. 2022CCPC网络预选赛题解
  18. php 微信支付跳不出来的,微信公众号 微信支付跳转空白
  19. 如何在Windows系统上实现共享文件夹
  20. Vim 文件浏览器(Netrw)

热门文章

  1. 什么是补码-网上找到的,非原创
  2. Windows 7 常用快捷键 命令
  3. P2P之UDP穿透NAT的原理与实现
  4. mysql c api简单连接池
  5. 大数据之-Hadoop之HDFS的API操作_查看文件的详情---大数据之hadoop工作笔记0061
  6. 使用vue的生命周期函数_异步_同步获取字典数据---基于Vue的uniapp手机端_前端UI_uview工作笔记003
  7. C#.NET验证码智能识别学习笔记---03#.Net中@符号的意思
  8. shell sed 替代1
  9. opencv 修改图像数值_【1】Introduction to OpenCV (2)使用VS生成OpenCV应用程序
  10. 随想录(zynq学习)