作为一个生信人,不管是日常的数据分析还是其他工具应用的开发,服务器的安全始终是一个无法避免的话题。尤其是当我们拿到一台新的服务器,我们需要怎样才能确保它是安全可靠,并最小限度降低它被攻击的可能性?

下面我们就来分享一份关于 CentOS Linux 7 安全的基线设置指南,希望对服务器管理的童鞋有所帮助。

  1. 设置用户权限配置文件的权限。

$ chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
$ chmod 0644 /etc/group
$ chmod 0644 /etc/passwd
$ chmod 0400 /etc/shadow
$ chmod 0400 /etc/gshadow
  1. 确保 SSH LogLevel 设置为 INFO,记录登录和注销活动。

# 编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数(取消注释):
LogLevel INFO
  1. 设置 SSH 空闲超时退出时间,可降低未授权用户访问其他用户 ssh 会话的风险。

# 编辑 /etc/ssh/sshd_config,将 ClientAliveInterval 设置为 300 到 900,即 5-15 分钟,将 ClientAliveCountMax 设置为 0。 
ClientAliveInterval 900 ClientAliveCountMax 0
  1. SSHD 强制使用 V2 安全协议。

# 编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数: 
Protocol 2
  1. 确保 SSH MaxAuthTries 设置为 3 到 6 之间。设置较低的 Max AuthTrimes 参数将降低 SSH 服务器被暴力攻击成功的风险。

# 在 /etc/ssh/sshd_config 中取消 MaxAuthTries 注释符号 #,设置最大密码尝试失败次数 3-6,建议为 4: 
MaxAuthTries 4
  1. 设置密码修改最小间隔时间,限制密码更改过于频繁。

# 在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7: 
PASS_MIN_DAYS 7 

# 需同时执行命令为 root 用户设置: 
chage --mindays 7 root
  1. 设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登陆方式(如密钥对)请忽略此项。

# 使用非密码登陆方式如密钥对,请忽略此项。

# 在 /etc/login.defs 中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
PASS_MAX_DAYS 90

# 需同时执行命令设置 root 密码失效时间: 
chage --maxdays 90 root
  1. 禁止 SSH 空密码用户登录。

# 编辑文件 /etc/ssh/sshd_config ,将 PermitEmptyPasswords 配置为 no: 
PermitEmptyPasswords no 
  1. 密码复杂度检查,检查密码长度和密码是否使用多种字符类型。

# 编辑 /etc/security/pwquality.conf,把 minlen(密码最小长度)设置为 9-32 位。
# 把 minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为 3 或 4。
minlen=10 minclass=3
  1. 确保密码到期警告天数为 7 或更多。

# 在 /etc/login.defs 中将 PASS_WARN_AGE 参数设置为7-14之间,建议为7: 
PASS_WARN_AGE 7 

# 同时执行命令使 root 用户设置生效: 
chage --warndays 7 root
  1. 确保 root 是唯一的 UID 为 0 的帐户,除 root 以外其他 UID 为 0 的用户都应该删除,或者为其分配新的 UID。

# 除 root 以外其他 UID 为 0 的用户(查看命令如下)都应该删除,或者为其分配新的 UID。
cat /etc/passwd | awk -F: '($3 == 0) { print $1 }'|grep -v '^root$' 
  1. 开启地址空间布局随机化,它将进程的内存空间地址随机化来增大入侵者预测目的地址难度,从而降低进程被成功入侵的风险。

# 执行命令:
sysctl -w kernel.randomize_va_space=2
  1. 检查系统空密码账户

# 为用户设置一个非空密码
  1. 访问控制配置文件的权限设置。

# 运行以下4条命令: 
$ chown root:root /etc/hosts.allow 
$ chown root:root /etc/hosts.deny 
$ chmod 644 /etc/hosts.deny 
$ chmod 644 /etc/hosts.allow
  1. 确保 rsyslog 服务已启用,记录日志用于审计。

# 运行以下命令启用rsyslog服务:
systemctl enable rsyslog
  1. 检查密码重用是否受限制,强制用户不重用最近使用的密码,降低密码猜测攻击风险。

# 在 /etc/pam.d/password-auth 和 /etc/pam.d/system-auth 中 password sufficient pam_unix.so 这行的末尾配置 remember 参数为5-24之间,原来的内容不用更改。
# 如下面只在末尾加了 remember=5,即可限制不能重用最近5个密码。 
password sufficient pam_unix.so sha512 try_first_pass remember=5

以上就是关于 CentOS Linux 7 安全的一些基本设置总结,服务器的安全与管理是一个庞大的工程,如果你有更好的建议,欢迎留言交流。

——The  End——

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

CentOS Linux 7 安全基线设置的更多相关文章

  1. CentOS Linux服务器安全设置

    转自:http://www.osyunwei.com/archives/754.html 引言: 我们必须明白:最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关 ...

  2. CentOS/Linux下设置IP地址

    CentOS/Linux下设置IP地址 1:临时修改:1.1:修改IP地址# ifconfig eth0 192.168.100.100 1.2:修改网关地址# route add default g ...

  3. CentOS/Linux 网卡设置 IP地址配置

    CentOS/Linux下设置IP地址 1:临时修改:1.1:修改IP地址# ifconfig eth0 192.168.100.100 1.2:修改网关地址# route add default g ...

  4. CentOS/Linux 网卡设置 IP地址配置永久生效

    CentOS/Linux下设置IP地址 1.临时生效设置 1.1修改IP地址 #ifconfig eth0 192.168.100.100 1.2修改网关地址 #route add default g ...

  5. CentOS Linux上搭建PPPoE服务器及拨号设置

    CentOS Linux上搭建PPPoE服务器及拨号设置 搭建PPPoE,成功了的话,就觉得超级简单,在CentOS Linux更是5步左右就能搞定. 1.安装pppoe,安装完成后,会有pppoe- ...

  6. CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)

    在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...

  7. CentOS Linux VPS安装IPSec+L2TP VPN

    CentOS Linux VPS安装IPSec+L2TP VPN 时间 -- :: 天使羊波波闪耀光芒 相似文章 () 原文 http://www.live-in.org/archives/818.h ...

  8. centos linux安全和调优 第四十一节课

    centos  linux安全和调优    第四十一节课 上半节课 Linux安全 下半节课 Linux调优 2015-07-01linux安全和调优 [复制链接]--http://www.apele ...

  9. Linux自动登陆的设置方法

    前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时.因此,特意整理了一下Linux自动登陆的设置方法.本文的测试环境为Cento ...

  10. CentOS Linux 系统 安装oracle 11g

    CentOS Linux 系统 安装oracle 11g 在Linux系统上安装oracle是比较麻烦,需要配置各种变量啥的,o(︶︿︶)o ,但是没办法,有些东西你总的去接触,而且接触理解的越早越深 ...

随机推荐

  1. python基础篇:Python基础知识,帮助初学者快速入门

    Python是一种高级编程语言,它易于学习和使用,因此成为了许多人的首选编程语言.本文将介绍Python的基础知识,以帮助初学者快速入门. 安装Python 在开始学习Python之前,您需要安装Py ...

  2. RabbitMQ 消息中间件总结

    RabbitMQ 是实现高级消息队列协议(AMQP:Advanced Message Queue Protocol)的开源代理软件,也称为面向消息的中间件.支持多种操作系统.多种编程语言.Rabbit ...

  3. Windows10彻底关闭自动更新

    此文操作流程只针对于Windows10 1803及以下版本,更新版本未测试. Windows10在本地组策略编辑器禁用了自动更新,系统依然会在某个时候触发自动更新,怎么办呢,方法来了. 这个方法是结合 ...

  4. js函数防抖节流

    // 3.1 函数防抖: // 当持续触发事件时,一定时间段内没有再次触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时.// 也就是说当一个用户一直触发这个函数, ...

  5. CZHA0黑客游戏

    一个自己开发的黑客游戏,里面用到了自研AC库 A0阶段: from ac import* from time import * from sys import * def printf(text): ...

  6. Sping Security前后端分离两种方案

    前言 本篇文章是基于Spring Security实现前后端分离登录认证及权限控制的实战,主要包括以下四方面内容: Spring Seciruty简单介绍: 通过Spring Seciruty实现的基 ...

  7. SpringBoot Windows 自启动 - 通过 Windows Service 服务实现

    SpringBoot 在Windows运行时,有个黑窗体,容易被不小心选中或关闭,或者服务器重启后,不能自动运行,注册为 Windows Service服务 可实现 SpringBoot 项目在Win ...

  8. Laplace分布算子开发经验分享

    摘要:Laplace 用于 Laplace 分布的概率统计与随机采样. 本文分享自华为云社区<Laplace分布算子开发经验分享>,作者:李长安. 1.任务解析 详细描述: Laplace ...

  9. MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图

    MQTT(EMQX) - Linux CentOS Docker 安装 MQTT 概述 MQTT (Message Queue Telemetry Transport) 是一个轻量级传输协议,它被设计 ...

  10. Java并发(一)----进程、线程、并行、并发

    一.进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理 ...