安装完CentOS 7 后必做的七件事

CentOS是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7。当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后,首要的工作肯定是加强它的安全性,以下列出的七件事,是你进一步配置系统和安装其他软件前必须做的。

1. 更改 root 密码

若果你是自行安装 CentOS 7 的话,安装程序会让你自行设定 root 的密码。不过很多 VPS 服务商只会提供预先安装好的 CentOS 7 映像档,这种情况下他们会透过主控界面告诉你 root 的密码,这个密码的安全性谁也不知道,它是如何产生的呢?随机性可靠吗?复杂性足够吗?服务商的服务器是否记录了密码的副本?我们实在有必要第一时间重设这个密码。

首先使用 ssh 登入服务器,在 Windows 可以使用 Putty、Tera Term、或者在 Cygwin 环境下执行 OpenSSH。在 Mac 和 Linux 上只需在终端机 (terminal) 中执行以下指令便可以了,比 Windows 简单得多:

首次 ssh 到服务器

由于你从来没有使用过 ssh 联系到这台服务器,你的电脑会把服务器的加密公钥下载,然后询问你是否信任它,这台新鲜安装好的 CentOS 7 应该还未引起黑客的兴趣,也不大可能在这么短的时间内被攻陷,所以可以放心接受这个加密公钥。跟着输入 root 的密码登入服务器:

输入 root 密码两次

登入后立即更改 root 的密码,你需要输入新密码两次:

更改 root 密码

好的密码应该同时包含数字、小写英文字母、大写英文字母、和标点符号,最少 15 个字符,这样的密码强度大概有 90 bit,勉强可以应付密码被“暴力破解”,当然我假设了你的密码是真正随机产生,有些人喜欢把个人资料例如名字、出生日期、车牌号码、地址、配偶和子女的名字等等崁入密码中,或者使用字典里的字词拼凑密码,这样密码的强度将会大幅下降,甚至不堪一击,这些问题我曾经在《如何管理密码?》讨论过。

网上有很多随机密码产生器,例如 RANDOM.ORG,大都可用,但记紧必须使用 HTTPS 造访这些网站。如果你有使用“密码夹万”一类的软件,不妨使用它们内建的密码产生器。

完成后不要登出系统,使用另一个视窗用新密码尝试登入,即使失败也可以在原来的视窗重复以上步骤。

2. 新增一个普通帐号

这一步连同下一步,相当于为一个城市筑起两道城墙,既可加强防卫,也建立了一道警报机制,当敌人(黑客)卒然来袭,第一道城墙被袭击和破坏,我们还有第二道城墙阻延一下,有时间部署防卫甚至反击。所以这是一个很多人忽略,但其实非常重要的步骤。

首先我们新增一个帐号:

新增一个帐号

这个新帐号 ahhang 没有默认密码,即是说登入 ahhang 时系统不用输入密码!所以我们立即要设定密码:

设定 ahhang 的密码

有些人认为不应该把建立帐号和设定密码两件事分开来做,一来可能会不慎遗忘,二来也给黑客一道时间缝隙登入这个新帐号,所以他们会在 adduser 指令中一并提供加密后的默认密码,方法是加入 -p 参数,不过这样做也有风险,因为黑客可以透过列出系统的进程,得知加密了的新密码,然后把密码破解。

3. 禁止 root 使用 ssh 登入

CentOS 7 默认容许任何帐号透过 ssh 登入,包括 root 和一般帐号,为了不让 root 帐号被黑客暴力入侵,我们必须禁止 root 帐号的 ssh 功能,事实上 root 也没有必要 ssh 登入服务器,因为只要使用 su 或 sudo (当然需要输入 root 的密码) 普通帐号便可以拥有 root 的权限。使用 vim (或任何文本编辑器) 开启 /etc/ssh/sshd_config,寻找:

修改为:

最后输入以下指令重新启动 sshd

这样黑客要取得 root 的权限,必须破解 root 和一个普通用户的密码,难度增加了。

完成后不要登出系统,使用另一个视窗尝试登入 root 和普通帐号,测试无误便可进行下一步。

4. 使用非常规的 ssh 端口

Ssh 默认使用端口 22,这是在 IANA 注册的官方端口,但没有人说 ssh 不能使用其他端口,很多黑客专门向服务器的 22 端口发动攻击,即使你的服务器固若金汤、牢不可破,但是要系统日以继夜接受攻击,消耗的系统资源(网络、处理器、内存等等)也不会少,何况它是否真的牢不可破还说不定呢!所以有必要让 ssh 使用其他端口,只让有权使用 ssh 的用户知道。

使用 vim  (或任何文本编辑器) 开启 /etc/ssh/sshd_config,寻找:

修改为:

你可以把 10837 改为任何 1024 – 65535 之间的任何数字,若果怕与某些系统服务发生冲突,可以参考一下这里。

跟着重新启动 sshd

然后是设定防火墙,CentOS 7 的内核已经有防火墙 netfilter,但你的系统未必安装了用户界面,较前版本的 CentOS 默认使用 iptables,但 CentOS 7 开始使用效能更高、稳定性更好的 firewalld,若果服务器尚未安装firewalld,可以使用以下指令安装,不确定是否已经安装的话也可以输入这个指令,它会告诉你已经安装然后退出。

跟着启动:

设定 firewalld 的方法有两个,第一个是修改 firewalld 有关 sshd 的设定,把端口 22 改为 10837,这是正统的做法,但步骤比较多;第二个是要求 firewalld 开启端口 10837,不指定它属于哪一个服务,这个做法通常处理临时的端口开启/封锁,步骤简单,但是日后你要是忘记了这个端口为什么开启了呢?什么时候开启的呢?为了哪一项服务开启呢?可能有点麻烦。我两种方法都会介绍一下,但作为专业的系统管理员(即使不是真正的专业,也应该具备这样的心态),我推荐使用第一种方法。

设定防火墙方法一:

复制 firewalld 有关 sshd 的设定档案:

使用 vim  (或任何文本编辑器) 开启 /etc/firewalld/services/ssh.xml,寻找:

修改为:

储存后重新加载 firewalld

设定防火墙方法二:

输入以下指令:

就是这样简单!

不论使用哪种方法,完成后不要登出系统,使用另一个视窗尝试登入,例如:

5. 启用公钥验证登入 ssh

现在只有普通帐号才能透过 ssh 登入服务器,但是 ssh 提供一个更先进更安全的验证方法:公钥验证法。

首先每一名用户建立一对加密钥匙(密钥和公钥),密钥储存在日常使用的电脑,公钥则储存在服务器,使用 ssh联系到服务器的时候,电脑会把一些建立连线请求的资料,其中包括帐号名称和公钥,并且把部分资料用密钥制作数码签署,一股脑儿送到服务器,服务器检查自己的“公钥库”是否包含送来的公钥,有的话再验证数码签署,成功的话便直接登入服务器,无需输入帐号密码。

第一步在日常使用的电脑上使用 ssh-keygen 指令建立一对加密钥匙,它会询问储存加密钥匙的档案名称,和把钥匙加密的密码,档案名称使用默认的路径和名称便可以,密码则无需输入:

建立帐号的 RSA 加密钥匙

这个指令会创造两个档案,一个名为 id_rsa,是你的 RSA 密钥,另一个是 id_rsa.pub,是你的 RSA 公钥。公钥必需上传到服务器并且附加于用户帐号里面的 .ssh/authorized_keys 档案中,这个档案储存所有可透过 ssh 登入到这一个帐号的公钥,一行一条公钥:

上传 RSA 公钥到服务器

顺便一提,这个档案的存取权限必须是 0700,否则 sshd 不会读取:

存放公钥的档案的权限必须是 0700

使用公钥验证法登入 ssh 又省力又安全,因为我们不用输入密码,自然也没有密码被盗取的忧虑,简简单单地输入连线指令便可以了。

但是存放在日常电脑中的密钥却带来新的安全隐患,万一密钥被盗取了,其他人岂不是可以随便登入服务器?现在是“双重验证”(two-factor authentication) 隆重登场的时候,双重验证的理念是我们必须向服务器证明两种不同性质的东西,才能成功验证身分,第一样是我们知道什么,第二样是我们拥有什么。首先服务器会要求我们输入密码,我们知道密码,过了第一关。跟着服务器要求我们证明拥有公钥验证法中的密钥,透过上面的设定程序我们也通过了验证,过了第二关。现在服务器才会让我们进入系统。

设定 ssh 的双重验证法很简单,使用 vim  (或任何文本编辑器) 开启 /etc/ssh/sshd_config,在档案的末端假如这一行:

它告诉服务器用户必须拥有合法的公钥,和输入正确的密码才能成功登入。修改完成后重新启动 sshd

完成后不要登出系统,使用另一个视窗尝试登入,测试无误便可进行下一步。

6. 更新、更新、每天更新、每天自动更新

每一天都有成千上万的黑客在世界各地寻找 Linux 系统和常见软件的安全漏洞,一有发现便会发动规模庞大而迅速的网络攻击,务求在我们来得及反应前把系统攻陷。不要以为黑客都只是十来岁的年轻小毛头,大部分黑客背后都有势力庞大、资源几乎无限的国家机构支持,有些甚至属于这些机构的雇员,美国的 NSA,英国的 GQHC,中国的无名黑客队伍,都是比较明目张胆由国家支持的网络黑帮,可见我们的系统时时刻刻都被凶狠之徒盯着,保持软件在最新的状态是其中一项我们必须做,也很容易做到的工作。

首先我们立即手动更新所有预先安装的软件:

跟着设定系统定时自动更新,第一步确定服务器是否安装了自动执行指令的工具,跟着使用 yum 一个名叫 yum-cron插件。

CentOS 7 使用数个软件来自动执行指令:cronanacronat 和 batch,其中 cron 和 anacron 用来定期重复执行指令,At 和 batch 则用来在特定时间执行一次性的指令。我们将会使用 cron 和 anacron,两者的分别这里不细表了,将来有机会再讨论,现在使用以下指令安装 cron 和 anacron

下一步就是安装 yum-cron

其实你可以使用一个指令同时安装 cronie 和 yum-cron,甚至单独安装 yum-cron 也可以,因为 yum 会自动检测到yum-cron 需要 cronie 然后自动替你安装,上面分开两个指令纯粹令大家容易明白。

完成后系统多了数个档案,比较重要的包括:

  • /etc/cron.daily/0yum.cron
    Anacron 每天执行这个档案一次,它根据配置档案 /etc/yum/yum-cron.conf 来更新软件
  • /etc/yum/yum-cron.conf
    这是每天执行 yum-cron 的配置档案,默认只会下载更新的软件,并不安装,用意是让管理员检视 yum-cron的输出,选取需要更新的软件进行手动安装。

跟着我们修改配置档案,让 yum-cron 自动更新软件,使用 vim  (或任何文本编辑器) 开启 /etc/yum/yum-cron.conf,寻找:

修改为:

确认一下 update_messages = yesdownload_updates = yesapply_updates = yes,正如下图:

yum-cron 配置档案

最后,启动 crond 和 yum-cron

7. 防火墙

防火墙的作用好比网络警察,它监察所有进出系统的 IP 封包,哪些端口容许封包进入,哪些端口容许封包外出等等,都由防火墙控制,保护使用这些端口的应用程式,所以设定防火墙是极重要的工作。

过滤封包功能的 netfilter 已经内建在 CentOS 7 的内核,但是配置 netfilter 的界面程式 firewalld 却未必有安装,不论是否已经安装,都可以执行下面的安装指令:

跟着查看一下防火墙现在开启了哪些服务和端口:

检查防火墙

上图可见防火墙只开启了 DHCP 客户端和 ssh 两个服务的通讯端口,倘若日后安装了其他网络软件,例如网站服务器、域名服务器等等,必须要检查安装程式有否开启他们的通讯端口,没有的话便要手动开启。如果好像前面第四点那样使用了非常规的通讯端口,也可能要手动配置防火墙,防火墙详细的配置方法超出了本文的讨论范围,将来有机会再谈。

转载于:https://www.cnblogs.com/lxg0/articles/5335348.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python显示小数点后几位数_python窗口编程-3:数位处理(整数)

我们在上一次课程中(python窗口编程-2:风格与布局 ),制作了完整的计算器窗口界面,只是那个窗口没有真正的功能,是点击任何按钮都会关闭。这一次,我们加入一些事件处理的功能,让它成为一个正常工作的窗口程序…

Linux文件目录基础笔记

1、进入目录名称:cdcd命令主要是方便用户切换到不同目录的指令。比如:cd #只执行cd命令默认进入root的根目录cd /home #进入home目录,如果home目录有testdir目录的话,可以执行 cd testdir 进入testdir目录。2、创建目录命令&#…

eclipse安卓工程的构建、配置连接模拟器、安卓工程结构介绍

安卓工程构建及第一个安卓程序运行: 首先新建安卓工程: 然后填写APP信息,下面的包名一般都是公司域名的倒写,包名中不能有中文,否则会报错。 然后配置一些安卓app的选项 有关app启动的图标(就像QQ的企鹅一…

Linux中su和sudo的用法整理

一、为什么会有su和sudo命令?主要是因为在实际工作当中需要在Linux不同用户之间进行切换。root用户权限最高很多时候需要root用户才能执行一些关键命令。所以需要临时切换为root用户。工作完成后,考虑到系统的安全性避免误操作需要切换为普通用户。su和s…

codeforces 650B - Image Preview

题意:给你n个照片,从第一个照片开始看,如果一张照片是w,那么要花费b时间去反转他,否则不用反转,看一张从来没看过的照片要1时间, 从一张滑动到另一张要a时间。如果一张照片看过,则不…

asp js单步调试_如何使用Chrome的控制台高效的调试Javascript代码?

引言在我们的日常开发中我们常常会遇到JavaScript的调试问题,而我们解决问题的传统解决方案就是使用大量的console.log或者console对象的其他方法,这会给我们带来很多不便,特别是遇到复杂问题的时候,可能会出现大量的console.log&…

安卓App的启动过程、安卓布局分类及布局和页面的关系

Android App 启动流程: 当你想要启动一个app时,首先得点击该app桌面图标。那点击图标时到底发生了什么呢?先看个理论知识 .Launcher: launcher其实就是一个app,从功能上说,是对手机上其他app的一个管理和启动,从代码…

Linux文件默认权限和umask笔记

关于Linux文件默认权限的问题,可以实际先尝试一下如下命令:root用户登录[rootlocalhost test]# touch file1[rootlocalhost test]# ls-l file1-rw-r--r-- 1 root root 0 May 5 08:28 file1 #输出结果 对应的数字权限 644[rootlocalhost test]# touch fi…

Android相对布局(RelativeLayout)常用属性、练习使用按键、文本框等控件、线性布局(LinearLayout)属性

RelativeLayout中子控件常用属性: 子控件默认是从父控件的左上角开始排列的 相对于父控件 android:layout_alignParentTop"true" 和父控件的顶部对齐android:layout_alignParentBottom"true" 和父控件的底部对齐android:layout_alignPar…

Seata AT模式

基本思路 先决条件 支持本地ACID事务的关系数据库。通过JDBC访问数据库的Java应用程序。 整体机制 从两个阶段提交协议的演变: 阶段1:在同一本地事务中提交业务数据和回滚日志,然后释放本地锁和连接资源。阶段2: 对于提交情况…

自媒体各大平台收益对比_哪些自媒体平台没有新手期,适合小白撸收益?

2-26把我设置为星标,不错过每一次的干货~各大自媒体平台的新手期总是让小白们望而却步,特别是百家号审核非常严格,如果没思路、没人指导,过新手有难度。不过,还是有很多平台对新手宝宝很友好,没…

Linux关于文件的权限笔记

1、调整文件的权限命令:chmodLinux的每个文件都定义了文件的拥有者:u(user)、拥有组:g(group)、其他人:o(others)权限,对应的权限用rwx的组合来定义。使用chmod命令&…

启动rrt什么意思_python学习第144课--创建虚拟机、设置虚拟机参数以及启动虚拟机...

【每天几分钟,从零入门python编程的世界!】上节我们介绍了下载虚拟机以及centOS的相关事项,现在我们创建虚拟机。●创建虚拟机安装好virtualbox之后,我们点击Oracle VM VirtualBox打开管理器,界面如下图:你…

Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期

按键响应的第一种方式: 在XML文件里面设置按键的onClick绑定函数。就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这个函数,因为现已将它和这个按钮进行了绑定。利用…

pycharm体验

查看python版本 退出 exit()

Linux文本检索命令grep笔记

grep是在linux系统中基于行文本非常实用检索工具,通过该命令可以将匹配到的结果信息输出到终端控制台。语法格式:grep [-ivnc] 需要匹配的内容 文件名常用参数说明:-i 检索的时候不区分大小写-c 检索到的匹配行数-n 检索到的匹配行显式具体的…

成立出版社的条件_创始人亲述:法国鸿飞文化出版社的诞生故事和做书心得

鸿飞文化出版社2007年在法国创立,专门出版由中国作家和法国插画师共同创作的图画书。创始人叶俊良引用苏东坡的诗句“人生到处知何似,应似飞鸿踏雪泥。泥上偶然留指爪,鸿飞那复计东西。”为出版社取名,希望通过这些“印迹”为读者…

python单行注释和多行注释

# 后面加一个空格,下面就不会有波浪线了 点击小灯泡下的第一行,可以调整注释格式 多行注释