写点什么

【Linux 深潜】详解 Linux 系统自身安全调优配置

作者:沃趣科技
  • 2022 年 5 月 09 日
  • 本文字数:2540 字

    阅读完需:约 8 分钟

前言

linux 系统上承载着各种业务,为了业务安全稳定运行,管理员会通过一些手段进行安全加固和漏洞防范。从业务软件本身主要针对于内核或软件漏洞进行及时的修复,从系统角度出发,可以在系统的权限、资源、访问等方面进行安全加固,本文讲一讲系统自身的一些安全调优配置。

用户相关

用户密码

针对口令密码要定期修改,linux 在/etc/login.defs配置文件中可以配置密码的长度、有效期、过期告警天数等


另外对于密码的组合复杂度要有要求,对于密码组合,要包含字母、数字、特殊字母来增加密码复杂度,可以在/etc/pam.d/system-auth中进行配置。 密码尝试 5 次,长度大于 8,包含数字、小写字母、大写字母、特殊字符等

 

password requisite  pam_cracklib.so try_first_pass retry=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
复制代码

即使密码存在有消息,有时候还是习惯改成同样的密码,为了避免这种情况,可以配置拒绝使用重复密码,还是在/etc/pam.d/system-auth中进行配置,比如不适用最近 3 次修改的密码。

 

password  sufficient  pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3
复制代码

锁定连续失败 5 次的用户,120s 后再重试

 

auth required pam_tally2.so deny=3 unlock_time=120 even_deny_root root_unlock_time=120
复制代码
用户和文件权限

linux 操作系统有三类用户: 超级用户、普通用户、伪用户,比如普通用户通过susudo方式获取权限,在使用 sudo 时候,可以通过在/etc/sudoers中定义用户或者所属组的权限来进行权限管理。

 

# 组权限%wheel    ALL=(ALL)    ALL
# 用户权限wheel ALL=(ALL) ALL
复制代码


文件系统针对 user、group、other 都有读写执行权限的控制,通过 chmod 进行控制这三个权限,执行程序有的采用 755 的权限,为了安全,默认我们可以不给 other 有任何权限,可以通过umask进行修改

 

export umask=027
复制代码

针对于日志的文件系统,我们有时候限制日志文件系统的删除权限,防止恶意攻击,然后删除日志记录,所以对于系统一些常见的日志系统,比如 message、dmesg、secure 这些可以将赋予只能增加不能删除的权限。

 

chattr +a /var/log/messages
复制代码
ssh 远程访问权限控制

针对于 ssh 服务的一些安全优化主要有以下一些手段:

  • 修改端口号。

  • 使用 v2 版本协议,更加安全。

  • 不允许 root 用户 ssh 登陆。

  • 限制密码登陆认证,建议使用公钥认证。

  • 使用 PAM 管理,关闭 GSSAPI 的认证用来优化性能。

  • 内网 ssh 可以关闭 DNS 反向查询的功能。

  • 客户端的尝试次数限制。

 

Port 2222Protocol 2PermitRootLogin noPasswordAuthentication noPubkeyAuthentication yesChallengeResponseAuthentication noClientAliveCountMax 3UsePAM yesUseDNS no
复制代码


系统层面需要定期更新 openssh 的版本,解决版本漏洞的问题,现在市面上很多的扫描软件对于 openssh 是一定会去建议优化和更新的。 针对于黑白名单配置,一般策略就是开放内网业务主机和堡垒机之间的互联,其他的禁止登陆,这个早期使用hosts.allowhosts.deny进行黑白名单配置,这个限制用到是TCP_wrappers,再早期的版本中 openssh 自带这个模块可以进行使用,比较新的 openssh 中已经没有这个模块的支持,所以要使用这个功能需要额外安装模块。针对于黑白名单的问题,还有就是采用防火墙的方式进行相应的限制。

资源限制

资源限制的目的,为了让系统上核心的业务有足够的资源运行,否则有可能存在系统自带组件或者其他软件异常占用资源,导致核心业务收到影响。

limits.conf

linux 可以限制用户进程使用资源的上限,比如最大打开文件个数、创建最大文件大小、最大内存等资源,limits.conf 配置文件中包括两个层面限制,软限制和硬限制,具体限制多大的值,这个要根据自己的业务需求进行配置,通过预先制定的限制,防止程序或者进程因自身问题或者被攻击而申请占用大量系统资源导致崩溃的问题。


cgroup

cgroup 主要用来限制或者隔离单个或者多个进程使用的 CPU、内存、磁盘 IO、网络等资源,cgroup 为这些控制资源定义相应的子系统,部分子系统如下:


cgroup 提供一种对进程进行分层分组的标记方法,并且对其应用资源进行限制,会有以下几种关系:

  • 单个层次结构可以附加在一个或者多个子系统上。

  • 一个子系统只能附加在一个层级上。

  • 单个任务可以在多个 cgroup 中,只要每个 cgroup 位于不同的层次结构中。

  • 子任务继承父任务的 cgroup,也可以单独划分 cgroup 的。

比如限制某一个进程的 CPU 使用率

 

cd /sys/fs/cgroup/cpu/ mkdir testcd  testecho  3456 > cgroup.procs  # 3456为限制进程的id### 绑定核echo "0" > cpuset.cpus### 限制CPU使用率echo  "100000" > cpu.cfs_quota_us
复制代码


systemd

在 7.x 的操作系统中,默认情况下开始使用 systemd 管理服务,通过 systemd 做资源隔离,实际底层还是 cgroup 功能的,systemd 通过可以 Unit 资源控制,Unit 包括 services, slices, scopes, sockets, mount points, 和 swap devices 六种。 限制方式有两种

  • 在配置文件中 systemctl set-property 命令设置 cgroup 的限制,比如限制 CPU 使用率

 

systemctl set-property myservice.service CPUQuota=200%
复制代码


  • 在 systemd 的 service 的配置文件中添加相应的限制参数 

### 打开cpu、内存、进程、IO、访问控制等方面统计,然后通过相应的控制参数进行资源限制CPUAccounting=yesMemoryAccounting=yesTasksAccounting=yesIOAccounting=yesIPAccounting=yes
### 部分资源控制参数CPUQuota=MemoryMax=TasksMax=IOWeight=IPAddressDeny
复制代码


其他限制

  • profile 配置文件中配置 HOSTSIZE:这个选项表示的是历史记录条数,可以减少 history 的条数,比如 10 条以下。

  • 终端命令审计,这个有一些成熟方案可以套用,主要功能是记录终端上执行的命令、ip、用户等信息。

  • 日志审计,可以使用 audit 服务进行审计配置,如果对于性能要求很高的业务不建议使用,会有性能损耗。

  • 禁用 ctrl+alt+del:这个可以进行修改,将这个文件/usr/lib/systemd/system/ctrl-alt-del.target 重命名掉,可以禁用 ctrl+alt+del 快捷键。

  • sendoh 用户权限:默认我们会在/etc/sudoers 中给了所有的权限,不建议将这个权限限制,cloud 和 qdatamgr 命令需要权限执行一些数据采集的操作。

  • 非活跃终端退出时间:在/etc/profile 中增加 export TMOUT=120,如果终端在 120s 的时候不操作,则自动退出,对于一体机是没有影响的。

  • 禁止 icmp 重定向,防止 icmp 重定向欺骗攻击。

发布于: 刚刚阅读数: 3
用户头像

沃趣科技

关注

玩转数据库生态的技术迷 2022.02.23 加入

专注数据库云生态领域,期待与各位一起探索技术奥秘,乐承分享乃永恒之道。

评论

发布
暂无评论
【Linux深潜】详解Linux系统自身安全调优配置_Linux_沃趣科技_InfoQ写作社区