全网最全安全加固指南之linux系统加固

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
运维安全中心(堡垒机),免费版 6个月
简介: 全网最全安全加固指南之linux系统加固

全网最全安全加固指南之linux系统加固

Linux系统安全加固

系统用户

账号分类:
超级管理员     uid=0,
系统默认用户    系统程序使用,从不登录
新建普通用户    uid大于500

/etc/password

/etc/shadow

liunx用户管理

#添加用户
useradd <用户名>
#删除用户
userdel [-r][-f] <用户名>

#锁定/解锁用户
passwd -l <用户名>
passwd -u <用户名>

#用户属性
usermod -L  <用户名>锁定用户 
usermod -U <用户名>解锁用户

#查看当前用户
id

解析文件权限

执行ls -l .. .. 命令查看

输出命令包括7个字段

权限与归属

  • 访问权限

读取:允许查看内容-read

写入:允许修改内容-write

可执行:允许运行和切换-excute

  • 归属关系

所有者:拥有此文件/目录的用户-user

所属者:拥有此文件/目录的组-group

其他用户:除所有者、所属组以外的用户-other

所有用户:以上三类归属称-all

文件系统安全

查看权限:
      ls -l
修改权限:
    chmod 777 test    
    
    chown 123:123 test

    chgrp root test

设置合理的初始文件权限

UMASK命令:

umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644和755
文件夹其权限规则为:777-022=755
文件其权限规则为: 777-111-022=644(因为文件默认没有执行权限)
修改UMASK值:
1、直接在命令行下umask xxx (重启后消失)
2、修改/etc/profile中设定的umask值

linux提权漏洞

由于Linux 内核的内存子系统在处理 Copy-on-Write 时出现竞争条件(漏洞),导致私有的只读内存映射被破坏、获取读写权限后低权限用户可以进一步提权。

1.检查是否有内核升级包:yum check-update |grep kernel
2.升级内核:yum update kernel
3.确认下新版本的内核或 initrd/initramfs 是否有xen-vbd和virtio_blk驱动:

#lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk' -rwxr--r-- 1 root root 23448 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko -rwxr--r-- 1 root root 54888 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko

如果没有,则需要给initrd/initramfs安装驱动,然后执行第三步后重启。

锁定系统中多余的自建帐号

执行命令

cat /etc/passwd
cat /etc/shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,

adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。

加固方法:
  使用命令passwd -l <用户名>锁定不必要的账号。

  使用命令passwd -u <用户名>解锁需要恢复的账号。

检查shadow中空口令帐号

检查方法:

awk -F ":" '($2=="!"){print $1}' /etc/shadow

加固方法:

#锁定不必要的账户
passwd -l <用户名>

#解锁需要恢复的账户
passwd -u <用户名>

#为用户设置密码
passwd <用户名>

设置系统密码策略

执行命令
cat /etc/login.defs|grep PASS  #查看密码策略设置
加固方法:
vi /etc/login.defs修改配置文件
    PASS_MAX_DAYS        90       #用户的密码最长使用天数
    PASS_MIN_DAYS        0       #两次修改密码的最小时间间隔
    PASS_MIN_LEN        7       #密码的最小长度
    PASS_WARN_AGE    9       #密码过期前多少天开始提示

禁用root之外的超级用户

检测方法:

#检查用户ID为0的用户
awk -F ":" '($3=="0"){print $1}' /etc/passwd

加固方法:

#锁定用户
passwd -l <用户名>

限制能够su为root的用户

#查看是否有auth required /lib/security/pam_wheel.so这样的配置条目
cat /etc/pam.d/su

加固方法
在头部添加:

auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root

#将test用户加入到wheel组
usermod -G10 test

重要文件加上不可改变属性

#把重要文件加上不可改变属性
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/gshadow
chattr +i /etc/group
chattr +i /etc/inetd.conf
chattr +i /etc/httpd.conf

ssh安全

禁止root用户进行远程登录
检查方法:

#是否为no
cat /etc/ssh/sshd_config | grep PermitRootLogin 

加固方法

vi /etc/ssh/sshd_config 
PermitRootLogin no

更改服务端口

vi /etc/ssh/ssh_config
Port 2222                更改ssh端口

屏蔽SSH登录banner信息
检查方法:

#查看文件中是否存在banner字段,或banner字段为NONE
cat /etc/ssh/sshd_config
#查看文件内容,该处内容作为banner信息显示给登录用户
cat /etc/motd 

加固方法:

vim /etc/ssh/sshd_config

添加:

banner NONE
#vim /etc/motd

删除全部内容或更新成自己想要添加的内容

仅允许SSH协议版本2

有两个SSH协议版本,仅使用SSH协议版本2会更安全。

SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。

编辑/etc/ssh/sshd_config文件并查找下面这样的行:

Protocol 2,1 

修改为

Protocol 2 

防止误使用Ctrl+Alt+Del重启系统

检查方法:

查看输出行是否被注释

cat /etc/inittab |grep ctrlaltdel
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

加固方法:

vim /etc/inittab

在行开否添加注释符号“#”

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

设置账户锁定登录失败锁定次数锁定时间

检查方法:

cat /etc/pam.d/system-auth|grep auth 

查看有无auth required pam_tally.so 条目的设置
加固方法:

#设置为密码连续错误6次,锁定时间300秒
vi /etc/pam.d/system-auth
auth required pam_tally.so oneer=filad deny=6 unlock_time=300 

解锁用户:faillog -u <用户名> -r

修改账户TMOUT值,设置自动注销时间

检查方法:

#查看有无TMOUT的设置
cat /etc/profile|grep TMOUT 

加固方法:

vim /etc/profile

增加

TMOUT=600 

无操作600秒后自动退出

设置BASH保留历史命令的条目

检查方法:

cat /etc/profile | grep HISTSIZE
HISTSIZE=1000

加固方法:

vim /etc/profile

修改

HISTSIZE=5

即保留最新执行的5条命令

用户注销时删除命令记录

检查方法:
查看/etc/skel/.bash_logout文件,增加如下行

rm -f $HOME/.bash_history

这样,系统中的所有用户注销时都会删除其命令记录,如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件增加相同的一行即可。

设置系统日志策略配置文件

日志的主要用途是系统审计、监测追踪和分析统计。
为了保证 Linux 系统正常运行、准确解决遇到的各种各样的系统问题,认真地读取日志文件是管理员的一项非常重要的任务。
UNIX/ Linux采用了syslog工具来实现此功能,如果配置正确的话,所有在主机上发生的事情都会被记录下来,不管是好的还是坏的。

CentOS6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!

检查方法:

ps -aef | grep syslog #确定syslog服务是否启用
cat /etc/rsyslog.conf #查看syslogd的配置,并确认日志文件日否存在
#系统日志 (默认)   
/var/log/messages
#cron日志 (默认)   
/var/log/cron
#安全日志 (默认)   
/var/log/secure

阻止系统响应任何从外部/内部来的ping请求

加固方法:

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

其他客户端就不能ping通你的服务器了。

目录
相关文章
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
119 3
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
96 2
|
23天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
168 78
|
27天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
61 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
183 48
|
23天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
91 13
|
2月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
58 3
|
24天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
40 0
|
2月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
91 4
|
2月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
44 1