发布时间: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操作系统有三类用户:超级用户、普通用户、伪用户,比如普通用户通过su和sudo方式获取权限,在使用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服务的一些安全优化主要有以下一些手段:
Port 2222 Protocol 2 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes ChallengeResponseAuthentication no ClientAliveCountMax 3 UsePAM yes UseDNS no
系统层面需要定期更新openssh的版本,解决版本漏洞的问题,现在市面上很多的扫描软件对于openssh是一定会去建议优化和更新的。
针对于黑白名单配置,一般策略就是开放内网业务主机和堡垒机之间的互联,其他的禁止登陆,早期使用hosts.allow和hosts.deny进行黑白名单配置。
这个限制用到是TCP_wrappers,在早期的版本中openssh自带这个模块可以进行使用,比较新的openssh中已经没有这个模块的支持,所以要使用这个功能需要额外安装模块。
针对于黑白名单的问题,还有就是采用防火墙的方式进行相应的限制。
资源限制
资源限制的目的,为了让系统上核心的业务有足够的资源运行,否则有可能存在系统自带组件或者其他软件异常占用资源,导致核心业务受到影响。
limits.conf
linux可以限制用户进程使用资源的上限,比如最大打开文件个数、创建最大文件大小、最大内存等资源。
limits.conf配置文件中包括两个层面限制,软限制和硬限制,具体限制多大的值,这个要根据自己的业务需求进行配置,通过预先制定的限制,防止程序或者进程因自身问题或者被攻击而申请占用大量系统资源导致崩溃的问题。
cgroup
cgroup主要用来限制或者隔离单个或者多个进程使用的CPU、内存、磁盘IO、网络等资源,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 myservice.service CPUQuota=200%
### 打开cpu、内存、进程、IO、访问控制等方面统计,然后通过相应的控制参数进行资源限制
CPUAccounting=yes
MemoryAccounting=yes
TasksAccounting=yes
IOAccounting=yes
IPAccounting=yes
### 部分资源控制参数
CPUQuota=
MemoryMax=
TasksMax=
IOWeight=
IPAddressDeny=
其他限制