app开发者平台在数字化时代的重要性与发展趋势解析
844
2022-08-24
【Linux深潜】详解Linux系统自身安全调优配置
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服务的一些安全优化主要有以下一些手段:
修改端口号。使用v2版本协议,更加安全。不允许root用户ssh登陆。限制密码登陆认证,建议使用公钥认证。使用PAM管理,关闭GSSAPI的认证用来优化性能。内网ssh可以关闭DNS反向查询的功能。客户端的尝试次数限制。
Port 2222Protocol 2PermitRootLogin noPasswordAuthentication noPubkeyAuthentication yesChallengeResponseAuthentication noClientAliveCountMax 3UsePAM yesUseDNS no
系统层面需要定期更新openssh的版本,解决版本漏洞的问题,现在市面上很多的扫描软件对于openssh是一定会去建议优化和更新的。 \针对于黑白名单配置,一般策略就是开放内网业务主机和堡垒机之间的互联,其他的禁止登陆,早期使用hosts.allow和hosts.deny进行黑白名单配置。
这个限制用到是TCP_wrappers,在早期的版本中openssh自带这个模块可以进行使用,比较新的openssh中已经没有这个模块的支持,所以要使用这个功能需要额外安装模块。
针对于黑白名单的问题,还有就是采用防火墙的方式进行相应的限制。
资源限制
资源限制的目的,为了让系统上核心的业务有足够的资源运行,否则有可能存在系统自带组件或者其他软件异常占用资源,导致核心业务受到影响。
limits.conf
linux可以限制用户进程使用资源的上限,比如最大打开文件个数、创建最大文件大小、最大内存等资源。
limits.conf配置文件中包括两个层面限制,软限制和硬限制,具体限制多大的值,这个要根据自己的业务需求进行配置,通过预先制定的限制,防止程序或者进程因自身问题或者被攻击而申请占用大量系统资源导致崩溃的问题。
cgroup
cgroup主要用来限制或者隔离单个或者多个进程使用的CPU、内存、磁盘IO、网络等资源,cgroup为这些控制资源定义相应的子系统,部分子系统如下:
字段 | 含义 |
cpu | 主要限制进程的 cpu 使用率。 |
cpuacct | 自动生成关于 cgroup 中任务使用的cpu资源的报告。 |
cpuset | 可以为 cgroups 中的进程分配单独的cpu节点或者内存节点。 |
memory | 可以限制进程的 memory 使用量。 |
blkio | 限制进程的单个io。 |
devices | 控制进程能够访问某些设备。 |
net_cls | 使用类标识符 ( classid ) 标记网络数据包,允许 Linux 流量控制器( tc 命令)识别源自特定 cgroup 任务的数据包。net_cls(iptables)的 子系统net_filter也可以使用此标签对此类数据包执行操作。使用 net_filter防火墙标识符 ( fwid ) 标记网络套接字,允许 Linux 防火墙(iptables命令)识别源自特定 cgroup 任务的数据包(skb->sk); |
freezer | 挂起或者恢复 cgroups 中的进程。 |
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重定向欺骗攻击。
有问题可以添加沃趣QFusion( irds-)小助手:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~