CentOS是最多人用来运行服务器的Linux版本,当在一台主机或VPS上安装CentOS 7后,首要的工作肯定是加强它的安全性,以下列出的七件事,是进一步配置系统和安装其他软件前必须做的。
1. 更改root密码
首先使用ssh登入服务器,在Windows可以使用Putty、Xshell,或者在Cygwin环境下执行OpenSSH。在Mac和Linux上只需在终端机(terminal)中执行以下指令便可以了,比Windows简单得多:
第一次使用ssh登陆服务器,你的电脑会把服务器的加密公钥下载,然后询问你是否信任它,选择是就可以了。
用passwd命令更改密码,需要输入两次新密码。
好的密码应该同时包含数字、小写英文字母、大写英文字母、和标点符号,最少15个字符,这样的密码强度大概有90 bit,一般可以对付暴力破解。
2. 新增一个普通帐号
这一步连同下一步,相当于为一个城市筑起两道城墙,既可加强防卫,也建立了一道警报机制,当敌人(黑客)卒然来袭,第一道城墙被袭击和破坏,我们还有第二道城墙阻延一下,有时间部署防卫甚至反击。所以这是一个很多人忽略,但其实非常重要的步骤。
首先我们新增一个帐号:useradd abcd
设定abcd的密码: passwd abcd
平时我们用abcd账号登录,需要特权命令时候再su到root账号下进行操作,这样安全的多。
3. 禁止root使用ssh登入
CentOS 7预设容许任何帐号透过ssh登入,包括root和一般帐号,为了不让root帐号被黑客暴力入侵,我们必须禁止root帐号的ssh功能,事实上root也没有必要ssh登入服务器,因为只要使用su或sudo (当然需要输入root的密码)普通帐号便可以拥有root的权限。使用vim编辑/etc/ssh/sshd_config,寻找:#PermitRootLogin yes 修改为PermitRootLogin no
然后重起sshd服务:systemctl restart sshd
这样黑客要取得root的权限,必须破解root和一个普通用户的密码,难度增加了。
完成后不要登出系统,使用另一个视窗尝试登入root和普通帐号,测试无误便可进行下一步。
4. 使用非常规的ssh端口
SSH默认使用端口22,这是在IANA注册的官方端口,但没有人说ssh不能使用其他端口,很多黑客专门向服务器的22端口发动攻击,即使你的服务器固若金汤、牢不可破,但是要系统日以继夜接受攻击,消耗的系统资源非常大的,何况它是否真的牢不可破还说不定呢!所以有必要让ssh使用其他端口,只让有权使用ssh的用户知道。
使用vim编辑/etc/ssh/sshd_config,寻找:#Port 22 修改为 Port 12345
你可以把12345改为任何1024 – 65535之间的任何数字,若果怕与某些系统服务发生冲突,可以参考一下这里。
重新启动sshd服务:systemctl restart sshd
最后是设定防火墙放行新端口:
firewall-cmd –zone=public –add-port=12345/tcp –permanent
不论使用哪种方法,完成后不要登出系统,使用另一个视窗尝试登入,例如:ssh -p 12345 [email protected] 登录正常即可放心登出。
5.启用公钥验证登入ssh
现在只有普通帐号才能透过ssh登入服务器,但是ssh提供一个更先进更安全的验证方法:公钥验证法。
首先每一名用户建立一对加密钥匙(密钥和公钥),密钥储存在日常使用的电脑,公钥则储存在服务器,使用ssh联系到服务器的时候,电脑会把一些建立连接请求的资料,其中包括帐号名称和公钥,并且把部分资料用密钥制作数码签署,一股脑儿送到服务器,服务器检查自己的公钥库是否包含送来的公钥,有的话再验证数码签署,成功的话便直接登入服务器,无需输入帐号密码。
第一步在日常使用的电脑上使用ssh-keygen指令建立一对加密钥匙,它会询问储存加密钥匙的文件名称,和把钥匙加密的密码,文件名称使用预设的路径和名称便可以,密码则无需输入:ssh-keygen -t rsa
这个指令会创造两个文件,一个名为id_rsa,是你的RSA密钥,另一个是id_rsa.pub,是你的RSA公钥。公钥必需上传到服务器并且附加于用户帐号里面的.ssh/authorized_keys文件中,这个文件储存所有可透过ssh登入到这一个帐号的公钥,一行一条公钥。
把公钥使用ssh-copy-id或scp命令上传到服务器家目录.ssh目录下面。ssh-copy-id -i .ssh/id_rsa.pub [email protected]
这样登录时候可以使用公钥认证了,使用公钥验证法登入ssh又省力又安全,因为我们不用输入密码,自然也没有密码被盗取的忧虑,简简单单地输入连接指令便可以了。
但是存放在日常电脑中的密钥却带来新的安全隐患,万一密钥被盗取了,其他人岂不是可以随便登入服务器?现在是双重验证(two-factor authentication) 隆重登场的时候,双重验证的理念是我们必须向服务器证明两种不同性质的东西,才能成功验证身分,第一样是我们知道什么,第二样是我们拥有什么。首先服务器会要求我们输入密码,我们知道密码,过了第一关。跟着服务器要求我们证明拥有公钥验证法中的密钥,透过上面的设定程序我们也通过了验证,过了第二关。现在服务器才会让我们进入系统。
设定ssh的双重验证法很简单,使用vim打开/etc/ssh/sshd_config,在文件的末端假如这一行:AuthenticationMethods publickey,password
它告诉服务器用户必须拥有合法的公钥,和输入正确的密码才能成功登入。修改完成后重新启动sshd:systemctl restart sshd
完成后不要登出系统,使用另一个视窗尝试登入,测试无误便可进行下一步。
6. 更新、更新、每天更新、每天自动更新
每一天都有成千上万的黑客在世界各地寻找Linux系统和常见软件的安全漏洞,一有发现便会发动规模庞大而迅速的网络攻击,务求在我们来得及反应前把系统攻陷。不要以为黑客都只是十来岁的年轻小毛头,大部分黑客背后都有势力庞大、资源几乎无限的国家机构支持,有些甚至属于这些机构的雇员,美国的NSA,英国的GQHC,都是比较明目张胆由国家支持的网络黑帮,可见我们的系统时时刻刻都被凶狠之徒盯着,保持软件在最新的状态是其中一项我们必须做,也很容易做到的工作。
首先我们立即手动更新所有预先安装的软件:yum -y update
跟着设定系统定时自动更新,第一步确定服务器是否安装了自动执行指令的工具,跟着使用yum一个名叫yum-cron插件。
CentOS 7有几个类似软件来自动执行指令:cron、anacron、at和batch,其中cron和anacron用来定期重复执行指令,At和batch则用来在特定时间执行一次性的指令。安装cron:
yum -y install yum-cron
接着我们修改配置文件,让yum-cron自动更新软件,使用vim 编辑/etc/yum/yum-cron.conf,寻找:apply_updates = no修改为:apply_updates = yes
启动服务:systemctl start crond systemctl start yum-cron
7.开启防火墙
防火墙的作用好比网络警察,它监察所有进出系统的IP 封包,哪些端口容许封包进入,哪些端口容许封包外出等等,都由防火墙控制,保护使用这些端口的应用程式,所以设定防火墙是极重要的工作。
过滤封包功能的netfilter 已经内建在CentOS 7 的内核。
查看一下防火墙现在编辑了哪些服务和端口:firewall-cmd –list-all
一般防火墙只开启了DHCP 客户端和ssh 两个服务的通讯端口,倘若日后安装了其他网络软件,如web服务器,必须要检查安装程式有否编辑他们的通讯端口,没有的话便要手动编辑。如果好像前面第四点那样使用了非常规的通讯端口,也可能要手动配置防火墙。firewall几个常用命令:
systemctl start firewalld
systemctl enable firewalld
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd –help
firewall-cmd –add-service=ftp –permanent
firewall-cmd –remove-service=ftp –permanent
firewall-cmd –add-port=3128/tcp
systemctl restart firewalld
firewall-cmd –state
老大你的网站模板可以免费送吗?