互联网设备安装Linux系统后首先需要做事情是安全加固

一般而言位于互联网的Linux设备在刚安装后如果口令复杂度足够,那么在没有做任何额外的操作,开启额外的服务前也是比较安全的。但是操作系统安装后,不可能不使用,既然使用,那么就可能引发安全问题,为此在系统安装完后我们应该做一些基本的安全加固,确保正常的系统使用不容易引发安全问题。

在云计算的时代,阿里云腾讯云等云服务提供商提供了易于获取的计算资源,分别推出了各种低廉的活动优惠,每月甚至低于10RMB,这大大促进了Linux设备的入网,另外5G影响下带来的新一波IOT浪潮,也预计会大大加大入网的设备量,在这种背景下,每台新入网的主机都是潜在的问题点,因此安装系统后第一件是应该先考虑安全加固,尤其对于阿里云,腾讯云这类云主机,一台低配的云主机也可能被攻破后植入木马,变为僵尸攻击网络中的一员。

以下加固以CentOS 7为例,理论上RetHat系都适用,Debain系在使用的包管理器,防火墙软件等方面会有些许不同,不过加固的思路是一致的。

更新系统/包

第一步,就像日常给PC打补丁一样,及时升级更新系统。
执行

yum update

或者

yum upgrade

创建日常使用的用户

第二步,创建日常使用的用户,在日常使用中拒绝使用root用户。

创建用户

按需创建用户

adduser yourname

设置密码

为用户设置(修改)密码

passwd yourname

赋予sudo权限

为了让需要提权的操作也可以在普通用户下执行,把需要的用户赋予sudo权限。默认情况下,Centos 7中,如果用户属于wheel组,那么就有sudo权限。
把用户加入sudo组。

gpasswd -a yourname wheel

配置密钥

第三步,配置密钥登录。
对SSH使用密钥认证将会得到比密码认证更好的安全性,如果不是有明确的理由需要密码认证,应该配置密钥认证,禁用密码认证。
没有密钥的情况下需要先生成密钥,如果已有合适的密钥,则可直接在远程设备配置公钥。

本地设备生成密钥

*nix的环境

在*nix环境中,比如Linux,BSD,Mac这类系统,可以通过以下命令进行密钥生成。

ssh-keygen 
–t rsa

如果入网的设备不位于本地,需要远程登陆,那么不推荐直接在入网设备上生成密钥。

Windows环境

Windows环境下可以使用密钥生成工具生成密钥,一些支持SSH登陆的终端程序都附带有此类工具。比如Puttygen, MobaXterm。

远程设备上配置公钥

这里所说的密钥,分为公钥和私钥,公钥可以公开,私钥顾名思义是私有的,不公开的,是否知晓私钥决定是否能访问相应的设备。有了密钥后,需要把公钥内容配置到服务器上。

*nix的环境

在*nix环境中,比如Linux,BSD,Mac这类系统,可以通过以下命令进行直接完成公钥的配置。

ssh-copy-id yourname@yourserver

如果该程序未安装,可以通过相应系统的包管理器安装。

手工配置公钥

本地设备为Windows,或者决定不使用ssh-copy-id的情况下,可以手工配置公钥。
在远端设备上切换到需要配置密钥认证的用户

su - yourname

在该用户的用户目录下创建需要的目录与文件后,把公钥内容写入文件.ssh/authorized_keys中,最后调整权限最小化。

mkdir .ssh
# 写公钥内容到 .ssh/authorized_keys
# 如authorized_keys不存在,可自行创建
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

禁用密码登录以及禁止root账号登录

第四步,禁用密码登录以及禁止root账号登登录。
执行禁止root登录和禁用密码登录配置后,请确保之前配置的用户可以正常登录系统再退出已有的SSH会话。

编辑文件

/etc/ssh/sshd_config

修改配置项PermitRootLogin禁止root登录

PermitRootLogin no

修改配置项PasswordAuthentication禁用密码登录

PasswordAuthentication no

使配置生效

systemctl reload sshd

此外也可以根据需要考虑是否修改SSH的默认端口22为其他端口,避开批量的端口扫描。

Port yourport

防火墙配置

第五步,开启防火墙。
如果远端设备不对外启用任何的服务,那么防火墙有无似乎影响不大,但正如之前所述,系统在使用过程中可能会运行许多不同的服务,有些服务可能使用者本身都未意识到有这些服务的存在,如果这些服务本身对整个互联网开放连接,并且没有相应的安全认证机制,那么就可能被攻击者利用。对于这类网络方案的安全,防火墙提供了最基础但有效的保护。防火墙的功能,Linux中都可以通过iptables直接完成,在CentOS 中可以通过firewalld,以更简单友好的方式配置网络规则。

安装firewalld

根据安装镜像的不同,如已默认安装,则跳过这步。

yum install firewalld

启动防火墙

启动防火墙不会中断已有的连接

sytemctl start firewalld

开机启动

设置开机自启动

sytemctl enable firewalld

允许SSH通过防火墙

配置SSH规则,部分镜像安装的系统,该规则可能已经默认添加

firewall-cmd --permanent --add-service=ssh

类似ssh,还有其他许多的规则可以以服务的方式进行配置,比如http可以通过以下命令进行查看

firewall-cmd --get-services

通过端口和协议配置规则

除了通过服务名称的方式配置防火墙,也可以直接通过端口和协议配置规则。
比如如果SSH在之前的配置中修改过默认端口,则可以执行下面的命令配置相应的规则。

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --add-port=yourport/protocol

查看已有的配置规则

在使配置生效前,查看规则确认规则配置无误

firewall-cmd --permanent --list-all

使配置生效

配置生效后,在确认可以和远程设备建立新的SSH会话前不要退出当前的会话。

firewall-cmd --reload

最后,没有绝对的安全,系统安全的前提是合规,合理的使用,以上提及的安装Linux后进行的安全加固操作也只是一种技术手段,安全与否更多决定于日后系统被如何使用。

发布了106 篇原创文章 · 获赞 15 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/skyupward/article/details/103387067