首页 > 技术文档 > Linux > CentOS7安全基线
2016
06-29

CentOS7安全基线

CentOS7是Linux众多版本之一,当你成功在一台主机上安装CentOS7后,首要工作应该是加强操作系统的安全性,那么如何进行安全配置呢?以下我列出的七件事,帮助你进一步完善CentOS7的安全基线。

一、设置复杂root密码
首先,使用ssh登入服务器后立即更改 root 的密码
其次,一个好的密码应该同时包含数字、小写英文字母、大写英文字母、和标点符号,最少 15 个字符,这样的密码强度大概有 90 bit,勉强可以应付密码被“暴力破解”
当然,我们也可以利用互联网的免密生成器,设置随机密码
最后,完成后不要登出系统,打开另一个console用新密码尝试登入,以防设置密码失败,还可以在原来的窗口重复以上步骤。

二、禁止root使用ssh登入
CentOS7默认允许任何帐号ssh登入,为了不让root用户被黑客暴力入侵,我们必须禁止root帐号的ssh功能
事实上root也没有必要ssh登入服务器,因为只要使用su或sudo普通帐号便可以获取root权限
打开 /etc/ssh/sshd_config
PermitRootLogin yes –> no

最后重启ssh服务
# systemctl restart sshd.service

三、使用非常规的ssh端口
ssh 默认端口22,很多黑客专门向服务器的22端口发动攻击,即使你的服务器固若金汤、牢不可破,但是要系统日以继夜接受攻击,消耗的系统资源(网络、处理器、内存等等)也不会少,何况它是否真的牢不可破还说不定呢!所以有必要让 ssh 使用其他端口,只让有权使用 ssh 的用户知道。
打开 /etc/ssh/sshd_config
Port 22 –> 10022

最后重启ssh服务
# systemctl restart sshd.service

四、启用公钥验证登入ssh
虽然现在只能通过普通帐号才能ssh登入服务器,但是ssh提供一个更先进更安全的验证方法(请参考:SSH免密登录的原理)。

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

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

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

使用公钥验证法登入 ssh 又省力又安全,因为我们不用输入密码,自然也没有密码被盗取的忧虑,简简单单地输入连线指令便可以了。
但是存放在日常电脑中的密钥却带来新的安全隐患,万一密钥被盗取了,其他人岂不是可以随便登入服务器?现在是“双重验证”(two-factor authentication) 隆重登场的时候,双重验证的理念是我们必须向服务器证明两种不同性质的东西,才能成功验证身分,第一样是我们知道什么,第二样是我们拥有什么。首先服务器会要求我们输入密码,我们知道密码,过了第一关。跟着服务器要求我们证明拥有公钥验证法中的密钥,透过上面的设定程序我们也通过了验证,过了第二关。现在服务器才会让我们进入系统。
设定 ssh 的双重验证法很简单,使用 vim  (或任何文本编辑器) 开启 /etc/ssh/sshd_config,在档案的末端假如这一行:

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

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

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

yum -y update
跟着设定系统定时自动更新,第一步确定服务器是否安装了自动执行指令的工具,跟着使用 yum 一个名叫 yum-cron 插件。
CentOS 7 使用数个软件来自动执行指令:cron、anacron、at 和 batch,其中 cron 和 anacron用来定期重复执行指令,At 和 batch 则用来在特定时间执行一次性的指令。我们将会使用 cron 和anacron,两者的分别这里不细表了,将来有机会再讨论,现在使用以下指令安装 cron 和anacron:

yum -y install cronie
下一步就是安装 yum-cron:

yum -y install 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,寻找:

apply_updates = no
修改为:

apply_updates = yes
确认一下 update_messages = yes, download_updates = yes, apply_updates = yes,正如下图:

最后,启动 crond 和 yum-cron:

systemctl start crond
systemctl start yum-cron

最后编辑:
作者:北街
身高八尺,腰围也是八尺!
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

留下一个回复

你的email不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.