Linux系统安全及应用
????博客主页: 微笑的段嘉许博客主页
????欢迎关注????点赞????收藏⭐留言????
????本文由微笑的段嘉许原创!
????51CTO首发时间:????2022年10月日27????
✉️坚持和努力一定能换来诗与远方!
????作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
⭐本文介绍⭐
作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势而得以广泛应用。本文主要从账号安全控制、系统引导和登录控制的角度,介绍Linux系统安全优化的点点滴滴;还将介绍基于Linux环境的弱口令检测、网络扫描等安全工具的构建和使用,帮助管理员查找安全隐患,及时采取有针对性的防护措施。
????理论讲解:
账号安全控制
用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。
基本安全措施
- 系统账号清理
在Liunx系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生的其他大量账号。除了超级用户root之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。
常见的非登录用户账号包括bin、daeon、lp、mail等。为了确保系统安全,这些用户账号的登录Shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动 - 密码安全控制
在不安全的网络环境中,为了降低密码被猜出或被暴力破-解的风险,用户应养成定期更改密码的习惯,避免长期使用同一个密码。管理员可以在服务器限制用户的最大有效天数,对于密码已过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。 - 命令历史、自动注销
Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文密码,则无意之中服务器的安全壁垒又多了一个缺口。
Bsah终端环境中,历史命令的记录条数由变量HSTSIZE控制,默认为1000条。通过修改/etc/profile文件中的SISTSIZE变量值,可以影响系统中的所有用户
用户切换与提权
大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破环,另一方面也降低了特权密码在不安全的网络中被泄密的风险。鉴于这些原因,需要为普通用户提供一种身份切换或权限提升机制,以便在必要的时候执行管理任务。
Liunx系统为我们提供了su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令用来提升执行权限,下面分别进行介绍。
- su命令——切换用户
使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。当然,这切换时需要对目标用户的密码进行验证(从root用户切换为其他用户时除外)。 - sudo命令——提升执行权限
通过su命令可以非常方面地切换为另一个用户,当前提条件是必须知道目标用户地登录密码。例如,若要从jerry用户切换为root用户,必须直到root用户的密码。对于生产环境中地Linux服务器,每多一个人直到特权密码,其安全风险也就增加一分。
那么,有没有一种折中地办法,既可以让普通用户拥有一部分管理权限,又不需要将root用户都密码告诉他呢?答案是肯定的,使用sudo命令就可以提升执行权限。不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令。
授权配置主要包括用户、主机、命令三个部分,即授权哪些人哪些主机上执行哪些命令、各部分的具体含义如下。
- 用户(user):直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)。
- 主机(MACHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用一份sudoers文件,一般设为local host或者实际的主机名即可。
- 命令(COMANDS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号" ,"进行分隔。
系统引导和登录控制
在互联网环境中,大部分服务器是通过远程登录的方式来进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、安全的管控制度时,如何防止其他用户的非授权介入就成为必须重视的问题。
开关机安全控制
对于服务器主机,其物理环境的安全防护是非常重要的;不仅要保持机箱完好、机柜锁闭,还要严格控制机房的人员进出、硬件设备的现场接触等过程。在开关机控制方面,除了要做好物理安全防护以外,还要做好系统本身的一些安全措施。
- 调整BIOS引导设置
- 将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
- 禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为"Disabled"。
- 将BIOS的安全级别改为"setup",并设置好管理员密码,以防止未授权的修改。
- 禁止Ctrl+Alt+Del快捷键重启
快捷键重启功能为服务器的版本到底维护提供了方便,但对于多终端登录的Linux服务器,禁用此功能是比较安全的选择。在CentOS7中,执行cat /etc/initab命令可以得知Ctrl+Alt+Del快捷键功能由/usr/lib/systemd/system/ctrl-alt.target文件进行设置。查看/usr/lib/systemd/system/ctrl-alt-del.traget文件发现,ctrl-alt.target是reboot.target文件的软链接文件。 - 限制更改GRUB引导参数
在之前的文章中介绍过通过修改GRUB引导参数,对一些系统问题进行修复。从系统安全的角度来看,如果任何人都能修改GRUB参数,对服务器本身显然是一个极大的威胁。为了加强对引导过程的安全控制,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
为了GRUB菜单设置的密码建议采用"grub2-mkpasswd-pbkdf2"命令生成,表现为经过PBKDF2算法加密的字符串,安全性更好。生成密码后在/etc/grub.d/00_header配置文件中,添加对应的用户、密码等配置。
????友情提示
为GRUB设置密码是,"grub.pbkdf2.sha512..."部分可替换为明文的密码字符串,如"123456",但安全性性稍差。不建议使用明文的面字符串。
终端及登录控制
在Linux服务器中,默认开启了六个tty终端,允许任何用户进行本地登录。关于本地登录的安全控制,可以从以下几个方面着手。
- 禁止root用户登录
在Linxu系统中,login程序会读取/etc/securetty文件,以决定允许root用户从哪些终端(安全终端)登录系统。若要禁止root用户从指定的终端登录,只需从该文件中删除注释掉对应的行即可 - 禁止普通用户登录
当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时候,只需要简单地建立/etc/nologin文件即可。login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制)。
????实验配置与实现:
推荐步骤:
- 用户账户安全创建用户设置密码,禁用用户解锁用户,使用 su 命令切换普通用户和管理员,禁用账户密码文件防止创建删除修改用户信息
- 配置 sudo 授权 alice 用户执行管理员 root 命令,grub 引导菜单添加密码,使用 JR 进行弱口令扫描,使用扫描工具扫描系统开放的端口信息
实验步骤:
一、用户账户安全配置
1、创建用户设置密码
1)创建用户、给 alice 用户设置密码
2、对 alice 用户进行锁定和解锁
1)锁定 alice 用户
2)查看用户锁定状态
3)解锁用户
3、使用 su 命令切换到普通用户宿主目录
1)切换到 alice 用户宿主目录
2)切换到 root 用户
4、锁定密码和用户文件禁止创建用户修改密码
1)禁用账户和密码文件
2)查看被锁定的文件
3) 验证文件锁定
4)解锁配置文件
二、配置 sudo 授权 alice 用户执行管理员 root 命令,grub 引导菜单添加密码,使用 JR 进行弱口令扫描,使用扫描工具扫描系统开放的端口信息
1、配置 sudo 授权 alice 用户执行管理员 root 命令
1)将用户加入到 wheel 组
2)修改配置文件授权 alice 用户重启系统和配置 IP 地址信息
3)验证 sudo
4)查看 sudo 授权
2、grub 引导菜单设置密码
1)生成密码文件
2)修改配置文件
3)生成引导菜单重启系统验证
4) 到引导菜单按 e 进行验证
3、扫描工具使用
1)挂载 Linux 系统盘到/mnt
2)安装 nmap 扫描工具
3)扫描系统开放的 TCP 端口
4)扫描指定端口
5)扫描指定网段端口
4、弱口令扫描应用
1)解压缩 JR
2)配置安装 JR
3)给 alice 用户设置弱口令 123456
4)备份密码文件扫描弱口令
????作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!