1.账号管理与认证授权

1.1.为不同的管理员分配不同的账号

目的:根据不同用途设置不同账户账号,提高安全层级

实施方法:

1.设置高风险文件为最小权限,如:passwd、shadow、group、securetty、services、grub.conf等

2.使用 sudo 命令设置命令执行权限和禁止敏感操作权限

3.检查其他权限过高的文件

创建多用途账号:
useradd username
passwd username 修改目录权限:(实施风险高,有可能权限不够造成服务启不来)
chmod 750 directory
chown username:groupname directory 普通账户使用特定授权命令:
sudo ifconfig

修改 sudo 的提权应用
visduo
username host=shell
eg:admin 可以在本地使用 useradd 命令
admin localhost=/usr/sbin/useradd(多个命令用逗号隔开)
拒绝权限
admin localhost=/usr/sbin/useradd,/usr/bin/vi,!/usr/bin/vi /etc/hosts(可以使用 vi,但禁止编辑hosts文件)

检查高权限文件(应急响应的时候用得多)

过高的权限或在不应该时间段创建或修改的文件(查出来的是在最后一位为7权限的文件)
find / -type f \( -perm -00007 \) -a -ctime -1 -exec ls -lg {} \;
ctime:属性变更的时间
mtime:内容修改的时间
atime:被访问的时间
-1:1天之内
也可以使用:find / -type f \( -perm -00007 \) -a -ctime -1 | xargs -I {} ls -lh {}

1.2.去除不需要的账号、修改默认账号 shell 环境

目的:删除系统不需要的默认账号、更改危险账号的默认 shell 变量,降低被利用的可能性

实施方法:

删除/锁定多余用户与组:
userdel -r username
groupdel groupname
passwd -l username 修改程序账户的登录 shell
usermod -s /sbin/nologin username

1.3.限制超级管理员远程登录

目的:限制具备超级权限的用户远程登录

实施方法:

修改远程管理程序 ssh 的配置文件
vi /etc/ssh/sshd_config
PermitRootLogin yes -> PermitRootLogin no
重启 sshd 服务
systemctl restart sshd

1.4.删除 root 以外 UID 为 0 的用户

目的:减少被越权使用的可能性

实施方法:

检查哪些账户的 UID 为 0:
awk -F: '($3 == 0) { print $1 }' /etc/passwd #以 : 分隔,第三列值为 0 的用户(grep :0:)
删除账户:
userdel -r username
或者编辑 passwd 与 shadow 文件

1.5.不应存在位于高权限组的账户

目的:检查是否有账户获取过高权限

实施方法:

检查哪些账户属于其他组:
grep -v ^# /etc/login.defs |grep "^GID_MIN" |awk '{ print $2 }' #筛选出GID的最小值
awk -F: '$3 > 500 { print $1 }' /etc/passwd | xargs -I {} grep {} /etc/group #找高权限组的账户
grep -v "/sbin/nologin" /etc/passwd | awk -F: '{ print $1 }' | xargs -I {} grep {} /etc/group

1.6.缩短默认密码生成周期

目的:对于采用静态密码认证的设备,账户密码的生存周期不长于 90 天

实施方法:

修改文件密码策略文件:
vi /etc/login.defs
PASS_MAX_DAYS 90 #最长使用期限
PASS_MIN_DAYS 0 #最短使用期限
PASS_MIN_LEN 8 #密码最小长度
PASS_WARN_AGE 7 #最长期限到期前 7 天提醒更改密码

1.7.设置密码强度策略

目的:规范使用高强度密码,延迟被爆破的时间

实施方法:

修改 pam 认证文件
/ect/pam.d/system-auth
添加/修改内容
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minclass=3 minlen=8

高版本可使用以下命令:/etc/security/pwquality.conf
authconfig --passminlen=8 --update #密码最短8位
authconfig --enablereqlower --update #包含一个小写
authconfig --enablerequpper --update #包含一个大写
authconfig --enablereqdigit --update #包含一个数字
authconfig --enablereqother --update #包含一个字符

1.8.设置强制密码历史

目的:防止被社工字典破解

实施方法:

修改 pam 认证文件:/etc/pam.d/system-auth
添加/修改内容
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

1.9.设置账户锁定策略

目的:防止被连续试探密码,降低爆破可能性

实施方法:

修改 pam 认证文件:
/etc/pam.d/system-auth
/etc/pam.d/sshd
/etc/pam.d/login
添加/修改内容
auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=60

解锁:pam_tally2 --user username --reset

1.10.设置关键目录的权限

目的:在设备权限配置能力内,根据用户的企业需要,配置其所需的最小权限,以减少被非法访问的可能性

实施方法:

更改账户组文件的权限设置
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group
去除多余的写入操作,如:
chmod -R go-w /etc

1.11.修改 umask 值

目的:修改创建文件或目录时的默认权限,防止属于该组的其他用户级别组的用户修改该用户的文件

实施方法:

修改启动脚本文件
/etc/profile
/etc/csh.login
/etc/csh.cshrc
/etc/bashrc
在文件末尾加入 umask 值
umask 027

1.12.限制硬件资源

目的:限制用户对系统资源的使用,减缓 DDOS 等攻击

实施方法:

修改限制文件
vi /etc/security/limits.conf
加入下列内容
* soft core 0
* hard core 0
* hard rss 5000
* hard nproc 20

*:所有用户
soft:软连接
hard:硬链接
core 0:表示禁止创建 core 文件
nproc 20:把最多进程数限制到 20
rss 5000:表示除了 root 外,其他用户都最多只能用 5M 内存

1.13.禁止任何人 su 切换 root 账户

目的:避免任何人使用 su 切换到 root,减少提权风险

实施方法:

修改 su 的配置文件:/etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so
group=wheel
如果需要 su 切换,将用户加入 wheel 组
gpasswd -a username wheel

1.14.去掉所有 SUID 和 SGID

目的:防止被利用提权

实施方法:

查找具有 SUID 和 SGID 的对象
find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lh {} \;
chmod ugo-s 文件

1.15.重要日志权限不应该高于640

防止日志泄露敏感信息

ls -la /var/log/

chmod -R 640 /var/log

1.16.设置关键文件底层属性

目的:增强关键文件的底层属性,降低篡改风险

实施方法:

修改关键文件和日志的底层属性
chattr +a /var/log/messages
chattr +i /var/log/messages.*
chattr +i /etc/shadow
chattr +i /etc/passwd
chattr +i /etc/group
不只限于上述文件,可用 lsattr 查看更改结果

2.通讯协议

2.1.关闭非加密远程管理 telnet

目的:降低被抓包后获取系统关键信息

实施方法:

修改 telnet 配置文件
vi /etc/xinetd.d/telnet
确认/修改内容为
disable=yes

2.2.使用加密的远程管理 ssh

目的:使用安全套接字层加密传输信息,避免被侦听敏感信息

实施方法:

修改配置文件
vi /etc/ssh/sshd_config
禁止 root 登录,修改默认端口,开启 v2 版本
PermitRootLogin no
Port 20202
Protocol 2
重启服务:systemctl restart sshd

2.3.设置访问控制列表

如果公网直连,此项没用;一般用作跳板机

目的:设置访问控制白名单,减少被入侵的风险

实施方法:

修改拒绝策略
vi /etc/hosts.deny
加入信息
ALL:ALL 修改允许策略
vi /etc/hosts.allow
加入信息
sshd:来访者IP地址

2.4.不响应 ICMP 请求

修改网络策略布尔值

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

2.5.关闭无用服务

检查有哪些自启动服务,并记录列表

systemctl list-unit-files |grep enabled

禁用无用服务

3.补丁管理

使用 yum 更新:yum update(不推荐)

使用 rpm 安装:rpm -Fvh rpm包

所有补丁需要在测试环境下测试不影响业务服务后才可更新,下载补丁时,一定要对文件进行签名核实

4.服务进程与启动

建议关闭的服务(如无需要,建议关闭或卸载)

rpm -qa | grep -E "^amanda|^chargen|^chargen-udp|^cups|^cups-lpd|^daytime|^daytime-udp|^echo|^echo-udp|^eklogin|^ekrb5-telnet|^finger|^gssftp|^imap|^imaps|^ipop2|^ipop3|^klogin|^krb5-telnet|^kshell|^ktalk|^ntalk|^exec|^rlogin|^rsh|^rsync|^talk|^tcpmux-server|^telnet|^tftp|^time-dgram|^time-stream|^uucp"

5.banner 与自动注销

5.1.隐藏系统提示信息

避免通过系统提示信息获取系统状态

查看登录 banner 信息:cat /etc/issue

清空 banner 文件:echo > /etc/issue

5.2.设置登录超时注销

防止疏忽导致命令行被他人使用

修改 /etc/profile

在 HISTFILESIZE 下面加入:TMOUT=180

生效:source /etc/profile

5.3.减少history 历史数量

降低之前操作被窃取的风险

修改 /etc/profile

修改信息:HISTFILESIZE=50

source /etc/profile

5.4.跳过 grup 菜单

防止在 grup 菜单对引导过程进行修改

修改 grup 配置文件:vi /boot/grup2/grup.cfg

修改超时时间:set timeout=8

5.5.关闭 ctrl+alt+del 重启功能

防止误操作重启服务器

修改配置文件:vi /usr/lib/systemd/system/ctrl-alt-del.target

注释所有内容

10、操作系统安全加固-Linux加固的更多相关文章

  1. 如何加固Linux系统

    如何加固Linux系统 一. 账户安全 1.1 锁定系统中多余的自建帐号 检查方法: 执行命令 #cat /etc/passwd #cat /etc/shadow 查看账户.口令文件,与系统管理员确认 ...

  2. linux加固目标和对象

    一.  linux加固目标和对象 项目加固的目标:  解决今年信通公司在风险评估工作中发现的linux服务器存在的安全问题,并结合南方电网安全基线标准修订版部署相关要求,将linux服务器的安全状况提 ...

  3. Rpm另类用法加固Linux安全

    Rpm另类用法加固Linux安全   RPM是Red Hat Package Manager的缩写即Red Hat软件管理器.它是一个开放的包管理软件,由Red Hat公司所开发和维护,可以在Red ...

  4. 虚拟化–操作系统级 LXC Linux Containers内核轻量级虚拟化技术

    友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/288 软 ...

  5. 操作系统-百科:Linux

    ylbtech-操作系统-百科:Linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNI ...

  6. 从操作系统层面理解Linux下的网络IO模型

    I/O( INPUT OUTPUT),包括文件I/O.网络I/O. 计算机世界里的速度鄙视: 内存读数据:纳秒级别. 千兆网卡读数据:微妙级别.1微秒=1000纳秒,网卡比内存慢了千倍. 磁盘读数据: ...

  7. NO10 查看Linux操作系统-版本-内核-Linux分区

    ·看Linux系统: [root@localhost ~]# uname -m  (看操作系统)x86_64[root@localhost ~]# uname -a   (看操作系统)Linux lo ...

  8. 柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布

    柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要 ...

  9. android安全检测工具,梆梆安全 - 防止反编译|APP安全加固|应用加固|盗版监测

    android安全检测工具,梆梆安全 - 防止反编译|APP安全加固|应用加固|盗版监测https://dev.bangcle.com/ 业内专业的应用加固服务供应商 帮助数十万APP抵御破解风险,早 ...

  10. DELPHI 10.2 TOKYO搭建LINUX MYSQL开发环境

    DELPHI 10.2 TOKYO搭建LINUX MYSQL开发环境 笔者使用ubuntu64位LINUX 首先必须保证LINUX可以连互联网. 安装MYSQLsudo apt-get update ...

随机推荐

  1. 2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个

    2024-03-27:用go语言,多维费用背包. 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 ...

  2. linux下firefox用css配置把网页设置成黑白

    网址输入 about:config 忽略警告 toolkit.legacyUserProfileCustomizations.stylesheets设置为true 在 /home/user/.mozi ...

  3. Scala 不可变集合Set

    1 package chapter07 2 3 object Test06_ImmutableSet { 4 def main(args: Array[String]): Unit = { 5 // ...

  4. #主席树,并查集#CodeChef Sereja and Ballons

    SEABAL 分析 考虑用并查集维护当前连续被打破的气球段,那么每次新增的区间就是 \([l_{x-1},x]\) 到 \([x,r_{x+1}]\) 的连接. 只要 \(l,r\) 分别满足在这之间 ...

  5. #最大公约数#CF346A Alice and Bob

    题目传送门 CF346A 分析 可以发现其所能表示的数就是能被最大公约数整除的数,且这些数不能超过最大值, 于是判断一下取数的奇偶性即可 代码 #include <cstdio> #inc ...

  6. #树链剖分,树上启发式合并#CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    题目 分析 考虑回文串当且仅当最多有一个字母出现奇数次, 可以记录某个二进制状态的最大深度, 一种就是点\(x\)到某个点,另一种就是经过点\(x\)的一条路径 在\(x\)的子树中递归实现,重儿子保 ...

  7. JDK14的新特性:JFR,JMC和JFR事件流

    目录 简介 JFR JMC 创建JFR 分析JFR JFR事件 JFR事件流 总结 JDK 14的新特性:JFR,JMC和JFR事件流 简介 Java Flight Recorder(JFR)是JVM ...

  8. centos运行django,遇到sqlite报错

    在centos上运行django,报错: django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required ...

  9. HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

    一.  介绍 溪村小镇是一款展示溪流背坡村园区风貌的应用,包括园区内的导航功能,小火车行车状态查看,以及各区域的风景展览介绍,主要用于展示HarmonyOS的ArkUI能力和动画效果.具体包括如下功能 ...

  10. k8s集群安装(kubeadm方式)

    一.准备三台虚拟机,系统CentOS7.9: 192.168.1.221 master1 192.168.1.189  node1 192.168.1.60  node2 二..对三台虚拟机初始化 1 ...