Linux服务器安全加固

0    493    8

👉 本文共约4224个字,系统预计阅读时间或需16分钟。

修改默认端口

  1. 通过SSH密码方式远程登录云服务器。

  2. 执行以下命令,修改SSH登录的默认端口,比如修改为“5000”。

    按“i”进入编辑模式,在第17行,将注释符“#”删掉,修改为“Port 5000”。

    图1 修改前
    Linux服务器安全加固

    图2 修改后
    Linux服务器安全加固

  3. 按“Esc”,输入:wq保存并退出。

增加防火墙规则:开放指定端口

CentOS 7系列操作系统的默认防火墙是fireware,而不是iptables。因此,如果系统是默认防火墙,则不需要执行本节操作;如果安装过iptables,则要参考本节指导开放SSH登录的5000端口。

  1. 执行以下命令,检查是否安装了iptables。

    service iptables status

    • 如果提示如下类似信息,表示未安装iptables,跳过本节,继续添加安全组规则操作。

      Linux服务器安全加固

    • 如果提示如下类似信息,表示安装了iptables,并且为“active”状态。继续执行步骤。

      Linux服务器安全加固

  2. 执行以下命令增加iptables规则,开放5000端口。

  3. 执行以下命令查看iptables现有规则是否已包含5000端口。

    Linux服务器安全加固

添加安全组规则

安全组中的入方向规则默认开启了22端口,当云服务器的SSH登录端口修改为5000时,需要为安全组新加一条规则。

  1. 登录管理控制台。

  2. 选择“计算 > 弹性云服务器”,进入云服务器控制台。

  3. 单击云服务器名称“ecs-f5a2”进入详情页面。

  4. 选择“安全组”页签,单击展开安全组规则详情,单击列表右上角的“更改安全组规则”。

  5. 添加一条入方向规则,如图3所示。

    图3 安全组规则
    Linux服务器安全加固

关闭密码登录,采用密钥登录

在管理控制台创建一个密钥对,绑定至云服务器,使云服务器登录方式切换为密钥。

  1. 登录管理控制台。

  2. 选择“计算 > 弹性云服务器”,进入云服务器控制台。

  3. 参考创建密钥对创建一个密钥对,妥善保管好私钥文件。

  4. 选择“服务列表 > 安全 > 数据加密服务”,单击左侧导航中的“密钥对管理”。

  5. 选择“云服务器列表”页签,在“ecs-f5a2”所在行,单击操作列的“绑定”。按照图5进行配置,单击“确定”。

    关闭密码登录,请在绑定密钥对页面勾选“关闭密码登录方式。”或编辑“sshd_config”配置文件,禁止密码登录。

    图4 绑定密钥对
    Linux服务器安全加固

  6. 登录云服务器操作系统,编辑“sshd_config”配置文件,禁止密码登录。

    按“i”进入编辑模式,在最后几行按下图进行配置。

    Linux服务器安全加固

    参数说明:

    • PermitRootLogin:是否允许root帐户登录,配置为“yes”。
    • UseDNS:是否允许DNS解析,配置为“no”。
    • PasswordAuthentication:是否允许使用密码登录,配置为“no”。

    img说明:

    在步骤5中为云服务器绑定密钥对时,已勾选了“关闭密码登录方式”,此处的“PasswordAuthentication”必为“no”,只需验证即可。

    按“Esc”,输入:wq保存并退出。

  7. 完成后,重启sshd服务。

  8. 通过Xshell或其他SSH客户端连接云服务器,密码登录会被限制(如图5所示,密码输入项置灰),则证明配置成功。

    图5 Xshell登录云服务器
    Linux服务器安全加固

编辑hosts.allow和hosts.deny将恶意IP地址加入黑名单

“/etc/hosts.allow”和“/etc/hosts.deny”是控制远程访问的文件,通过配置该文件可以允许或者拒绝某个IP或者IP段的客户访问Linux云服务器的某项服务。

比如SSH服务,通常只对管理员开放,那我们就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。

因为云服务器需要在不同地点登录,建议编辑“/etc/hosts.allow”允许所有IP地址登录,这样不会影响正常使用。

在最后一行增加“sshd:ALL”。

Linux服务器安全加固

我们可以通过一些方法识别云服务器的安全风险,比如检查SSH状态,查看疑似恶意登录的IP,然后在“/etc/hosts.deny”中将这些地址禁止。

使用如下代码,可以将登陆失败次数大于20的IP地址加入到黑名单中:

优化后的代码:

设定密码策略

修改 /etc/login.defs 配置文件

Linux服务器安全加固

脚本实现设定密码策略

bash test.sh即可。

对用户密码强度的设定

打开 /etc/pam.d/sysetm-auth 文件 ,修改如下。我们设置新密码不能和旧密码相同,同时新密码至少8位,还要同时包含大字母、小写字母和数字

difok= :此选项用来定义新密码中必须要有几个字符和旧密码不同
minlen=:此选项用来设置新密码的最小长度
ucredit= :此选项用来设定新密码中可以包含的大写字母的最大数目。-1 至少一个
lcredit=:此选项用来设定新密码中可以包含的小写字母的最大数目
dcredit=:此选项用来设定新密码中可以包含的数字的最大数目

:这个密码强度的设定只对普通用户有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功

脚本实现对用户密码强度的设定:

对用户的登录次数进行限制

有一些攻击性的软件是专门采用暴力破解密码的形式反复进行登录尝试,对于这种情况,我们可以调整用户登录次数限制,使其密码输入3次后自动锁定,并且设置锁定时间,在锁定时间内即使密码输入正确也无法登录

打开 /etc/pam.d/sshd 文件,在 #%PAM-1.0 的下面,加入下面的内容,表示当密码输入错误达到3次,就锁定用户150秒,如果root用户输入密码错误达到3次,锁定300秒。锁定的意思是即使密码正确了也登录不了

image-20210708124919115

脚本设置对用户的登录次数做限制

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

禁止ROOT用户远程登录

禁止ROOT用户远程登录 。打开 /etc/ssh/sshd_config ,修改PermitRootLogin为no

脚本设置禁止ROOT用户远程登录

设置历史命令保存条数和账户超时时间

设置账户保存历史命令条数,超时时间 。打开 /etc/profile ,修改如下

使用脚本修改配置文件

设置只有指定用户组才能使用su命令切换到root用户

在linux中,有一个默认的管理组 wheel。在实际生产环境中,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root的密码,就都可以通过su命令来登录为root用户,这无疑为系统带来了安全隐患。所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户。然后设置只有wheel组内的成员可以使用su命令切换到root用户。

比如,我们将普通用户lhr加入wheel组。

然后,我们修改配置文件 /etc/pam.d/su ,将这行的注释给去掉

image-20210708125338393

然后去 /etc/login.defs 末尾加入 SU_WHEEL_ONLY yes 即可。

image-20210708125409615

使用脚本设置配置文件

对Linux账户进行管理

使用脚本对账户进行管理

对重要的文件进行锁定,即使ROOT用户也无法删除

Linux服务器安全加固

使用脚本对重要文件进行锁定

总脚本

参考

https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0165501097.html

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    19 + 9 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部