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

发布时间:2023-03-17 | 信息来源: | 发布作者:沃趣科技

01 前言

Linux系统上承载着各种业务,为了业务安全稳定运行,管理员会通过一些手段进行安全加固和漏洞防范。

如:从业务软件本身主要针对于内核或软件漏洞进行及时的修复;从系统角度出发,可以在系统的权限、资源、访问等方面进行安全加固。

本文将对系统自身的一些安全调优配置进行分析讲解。

02 用户相关

用户密码

针对口令密码要定期修改,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



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


export umask=027



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


chattr +a /var/log/messages


ssh远程访问权限控制

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


  • 修改端口号。
  • 使用v2版本协议,更加安全。
  • 不允许root用户ssh登陆。
  • 限制密码登陆认证,建议使用公钥认证。
  • 使用PAM管理,关闭GSSAPI的认证用来优化性能。
  • 内网ssh可以关闭DNS反向查询的功能。
  • 客户端的尝试次数限制。


Port 2222
Protocol 2
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
ClientAliveCountMax 3
UsePAM yes
UseDNS 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 test
cd  test
echo  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%
 



  • systemdservice的配置文件中添加相应的限制参数。


### 打开cpu、内存、进程、IO、访问控制等方面统计,然后通过相应的控制参数进行资源限制
CPUAccounting=yes
MemoryAccounting=yes
TasksAccounting=yes
IOAccounting=yes
IPAccounting=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中给了所有的权限,不建议将这个权限限制,cloudqdatamgr命令需要权限执行一些数据采集的操作。
  • 非活跃终端退出时间:在/etc/profile中增加export TMOUT=120,如果终端在120s的时候不操作,则自动退出,对于一体机是没有影响的。
  • 禁止icmp重定向,防止icmp重定向欺骗攻击。




沃趣科技,让客户用上更好的数据库技术!