Linux操作系统安全加固

news2024/10/27 15:21:41

作者首发:玖毅论坛

一. 账户安全
 
1.1 锁定系统中多余的自建帐号
 
检查方法:
 
执行命令
 
#cat /etc/passwd
 
#cat /etc/shadow
 
查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。
 
备份方法:
 
#cp -p /etc/passwd /etc/passwd_bak
 
#cp -p /etc/shadow /etc/shadow_bak
 
加固方法:
 
使用命令passwd -l <用户名>锁定不必要的账号。
 
使用命令passwd -u <用户名>解锁需要恢复的账号。


 
1.2设置系统口令策略
 
检查方法:
 
使用命令
 
#cat /etc/login.defs|grep PASS查看密码策略设置
 
备份方法:
 
cp -p /etc/login.defs /etc/login.defs_bak
 
加固方法:
 
#vi /etc/login.defs修改配置文件
 
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
 
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
 
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
 
PASS_MIN_LEN 9 #最小密码长度9


 
1.3禁用root之外的超级用户
 
检查方法:
 
#cat /etc/passwd 查看口令文件,口令文件格式如下:
 
login_name:password:user_ID:group_ID:comment:home_dir:command
 
login_name:用户名
 
password:加密后的用户密码
 
user_ID:用户ID,(1 ~ 6000) 若用户ID=0,则该用户拥有超级用户的权限。查看此处是否有多个ID=0。
 
group_ID:用户组ID
 
comment:用户全名或其它注释信息
 
home_dir:用户根目录
 
command:用户登录后的执行命令
 
备份方法:
 
#cp -p /etc/passwd /etc/passwd_bak
 
加固方法:
 
使用命令passwd -l <用户名>锁定不必要的超级账户。
 
使用命令passwd -u <用户名>解锁需要恢复的超级账户。
 
1.4 限制能够su为root的用户
 
检查方法:
 
#cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so这样的配置条目
 
备份方法:#cp -p /etc/pam.d /etc/pam.d_bak
 
加固方法:
 
#vi /etc/pam.d/su
 
在头部添加:
 
auth required /lib/security/pam_wheel.so group=wheel
 
这样,只有wheel组的用户可以su到root
 
#usermod -G10 test 将test用户加入到wheel组
 
当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。如果是因为PAM验证故障,而引起root也无法登录,只能使用single user或者rescue模式进行排错。


 
1.5 多次登录失败锁定
 
当用户试图登陆多次失败后,锁定此用户(su or login 5次失败锁定)
 
在文件/etc/pam.d/system-auth中配置:
 
auth requisite pam_tally.so per_user onerr=fail deny=4 unlock_time=3600
 
注:超过4次错误就会lock user,为了防止拒绝服务攻击,加入per_user参数


 
二、最小化服务
 
2.1 停止或禁用与承载业务无关的服务
 
检查方法:
 
#who –r或runlevel 查看当前init级别
 
#chkconfig --list 查看所有服务的状态
 
备份方法:记录需要关闭服务的名称
 
加固方法:
 
#chkconfig --level <服务名> on|off|reset 设置服务在个init级别下开机是否启动
 
三、数据访问控制
 
3.1 设置合理的初始文件权限
 
检查方法:
 
#cat /etc/profile 查看umask的值
 
备份方法:
 
#cp -p /etc/profile /etc/profile_bak
 
加固方法:
 
#vi /etc/profile
 
umask=027
 
四、网络访问控制
 
4.1 使用SSH进行管理
 
检查方法:
 
#ps –aef | grep sshd 查看有无此服务
 
备份方法:
 
加固方法:
 
使用命令开启ssh服务
 
#service sshd start


 
禁止root登陆: PermitRootLogin: no
 
修改端口:ListenAddress: 8888
 
限制登录ip:
 
在/etc/hosts.allow添加允许ip,(其中192.168.0.11是你要允许登陆ssh的ip,或者 是一个网段192.168.0.0/24)
 
sshd:192.168.0.11:allow 在/etc/hosts.deny添加,(表示除了上面允许的,其他的ip 都拒绝登陆ssh) sshd:ALL
 
key方式登录:
 
ssh还可以设定public key的方式登录,生成一对key,把public key上传到服务器,这样利用public key和private key认证方式来登录会更安全;


 
4.2 设置访问控制策略限制能够管理本机的IP地址
 
检查方法:
 
#cat /etc/ssh/sshd_config 查看有无AllowUsers的语句
 
备份方法:
 
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
 
加固方法:
 
#vi /etc/ssh/sshd_config,添加以下语句
 
AllowUsers *@10.138.*.* 此句意为:仅允许10.138.0.0/16网段所有用户通过ssh访问
 
保存后重启ssh服务
 
#service sshd restart


 
4.3 禁止root用户远程登陆
 
检查方法:
 
#cat /etc/ssh/sshd_config 查看PermitRootLogin是否为no
 
备份方法:
 
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
 
加固方法:
 
#vi /etc/ssh/sshd_config
 
PermitRootLogin no
 
保存后重启ssh服务
 
service sshd restart


 
4.4 限定信任主机
 
检查方法:
 
#cat /etc/hosts.equiv 查看其中的主机
 
#cat /$HOME/.rhosts 查看其中的主机
 
备份方法:
 
#cp -p /etc/hosts.equiv /etc/hosts.equiv_bak
 
#cp -p /$HOME/.rhosts /$HOME/.rhosts_bak
 
加固方法:
 
#vi /etc/hosts.equiv 删除其中不必要的主机
 
#vi /$HOME/.rhosts 删除其中不必要的主机
 
风险:在多机互备的环境中,需要保留其他主机的IP可信任。


 
4.5 屏蔽登录banner信息
 
检查方法:
 
#cat /etc/ssh/sshd_config 查看文件中是否存在Banner字段,或banner字段为NONE
 
#cat /etc/motd 查看文件内容,该处内容将作为banner信息显示给登录用户。
 
备份方法:
 
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
 
#cp -p /etc/motd /etc/motd_bak
 
加固方法:
 
#vi /etc/ssh/sshd_config
 
banner NONE
 
#vi /etc/motd
 
删除全部内容或更新成自己想要添加的内容


 
4.6 防止误使用Ctrl+Alt+Del重启系统
 
检查方法:
 
#cat /etc/inittab|grep ctrlaltdel 查看输入行是否被注释
 
备份方法:
 
#cp -p /etc/inittab /etc/inittab_bak
 
加固方法:
 
#vi /etc/inittab
 
在行开头添加注释符号“#”
 
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now


 
五、用户鉴别
 
5.1 设置帐户锁定登录失败锁定次数、锁定时间
 
检查方法:
 
#cat /etc/pam.d/system-auth 查看有无auth required pam_tally.so条目的设置
 
备份方法:
 
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
 
加固方法:
 
#vi /etc/pam.d/system-auth
 
auth required pam_tally.so onerr=fail deny=6 unlock_time=300 设置为密码连续错误6次锁定,锁定时间300秒
 
解锁用户 faillog -u <用户名> -r
 
风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆;
 
当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。


 
5.2 修改帐户TMOUT值,设置自动注销时间
 
检查方法:
 
#cat /etc/profile 查看有无TMOUT的设置
 
备份方法:
 
#cp -p /etc/profile /etc/profile_bak
 
加固方法:
 
#vi /etc/profile
 
增加
 
TMOUT=600 无操作600秒后自动退出
 
风险:无可见风险


 
5.3 Grub/Lilo密码
 
检查方法:
 
#cat /etc/grub.conf|grep password 查看grub是否设置密码
 
#cat /etc/lilo.conf|grep password 查看lilo是否设置密码
 
备份方法:
 
#cp -p /etc/grub.conf /etc/grub.conf_bak
 
#cp -p /etc/lilo.conf /etc/lilo.conf_bak
 
加固方法:为grub或lilo设置密码
 
风险:etc/grub.conf通常会链接到/boot/grub/grub.conf


 
5.4 限制FTP登录
 
检查方法:
 
#cat /etc/ftpusers 确认是否包含用户名,这些用户名不允许登录FTP服务
 
备份方法:
 
#cp -p /etc/ftpusers /etc/ftpusers_bak
 
加固方法:
 
#vi /etc/ftpusers 添加行,每行包含一个用户名,添加的用户将被禁止登录FTP服务
 
风险:无可见风险


 
5.5 设置Bash保留历史命令的条数
 
检查方法:
 
#cat /etc/profile|grep HISTSIZE=
 
#cat /etc/profile|grep HISTFILESIZE= 查看保留历史命令的条数
 
备份方法:
 
#cp -p /etc/profile /etc/profile_bak
 
加固方法:
 
#vi /etc/profile
 
修改HISTSIZE=5和HISTFILESIZE=5即保留最新执行的5条命令


 
六、审计策略
 
6.1 配置系统日志策略配置文件
 
检查方法:
 
#ps –aef | grep syslog 确认syslog是否启用
 
#cat /etc/syslog.conf 查看syslogd的配置,并确认日志文件是否存在
 
系统日志(默认)/var/log/messages
 
cron日志(默认)/var/log/cron
 
安全日志(默认)/var/log/secure
 
备份方法:
 
#cp -p /etc/syslog.conf


 
6.2 为审计产生的数据分配合理的存储空间和存储时间
 
检查方法:
 
#cat /etc/logrotate.conf 查看系统轮询配置,有无
 
# rotate log files weekly
 
weekly
 
# keep 4 weeks worth of backlogs
 
rotate 4 的配置
 
备份方法:
 
#cp -p /etc/logrotate.conf /etc/logrotate.conf_bak
 
加固方法:
 
#vi /etc/logrotate.d/syslog
 
增加
 
rotate 4 日志文件保存个数为4,当第5个产生后,删除最早的日志
 
size 100k 每个日志的大小
 
加固后应类似如下内容:
 
/var/log/syslog/*_log {
 
missingok
 
notifempty
 
size 100k # log files will be rotated when they grow bigger that 100k.
 
rotate 5 # will keep the logs for 5 weeks.
 
compress # log files will be compressed.
 
sharedscripts
 
postrotate
 
/etc/init.d/syslog condrestart >/dev/null 2>1 || true
 
endscript
 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea 无法输入中文 快速解决

idea在某些情况会出现无法输入中文的情况&#xff0c;我们不去深究内部原因&#xff0c;直接上解决方案&#xff1a; 1、点击菜单help->Edit Custom VM Options 2、最后一行&#xff0c;追加&#xff1a; -Drecreate.x11.input.methodtrue 、 3、重启

计算机毕业设计Java连锁超市销售与分析系统 销售数据管理 超市运营分析 数据可视化 (源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

10月27日

取P为A 秩1矩阵只有1个特征值为正&#xff0c;其余为1

YOLO11 目标检测 | 自动标注 | 预标注 | 标签格式转换 | 手动校正标签

本文分享使用YOLO11进行目标检测时&#xff0c;实现模型推理预标注、自动标注、标签格式转换、以及使用Labelme手动校正标签等功能。 目录 1、预训练权重 2、生成预标注 3、分析YOLO11的目标检测格式 4、分析Labelme标注工具的格式 5、生成json标注文件 6、手动校正标签 …

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶VNC

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

PHPOK 4.8.338 后台任意文件上传漏洞(CVE-2018-12941)复现

PHPOK企业站(简称PHPOK&#xff09;建设系统是一套基于PHP和MySQL构建的高效企业网站建设方案之一&#xff0c;全面针对企业网&#xff08;以展示为中心&#xff09;进行合理的设计规划。 PHPOK是一套开源免费的建站系统&#xff0c;可以在遵守LGPL协议的基础上免费使用。系统具…

trueNas 24.10 docker配置文件daemon.json无法修改(重启被覆盖)解决方案

前言 最近听说truenas的24.10版本开放docker容器解决方案放弃了原来难用的k3s&#xff0c;感觉非常巴适&#xff0c;就研究了一下&#xff0c;首先遇到无法迁移老系统应用问题比较好解决&#xff0c;使用sudo登录ssh临时修改daemon.json重启docker后进行docker start 容器即可…

腾讯云视频文件上传云存储时自动将mp4格式转码成m3u8

针对问题&#xff1a; 弱网环境下或手机网络播放mp4格式视频卡顿。 存储环境&#xff1a;腾讯云对象存储。 处理流程&#xff1a; 1&#xff1a;登录腾讯云控制台&#xff0c;进入对象存储服务&#xff0c;找到对应的存储桶&#xff0c;点击进入。 在任务与工作流选项卡中找…

Linux复习-C++

参考博客&#xff1a; https://blog.csdn.net/qq_45254369/article/details/126023482?ops_request_misc%257B%2522request%255Fid%2522%253A%252277629891-A0F3-4EFC-B1AC-410093596085%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&req…

深入探索:AI模型在各行业的实际应用

深入探索&#xff1a;AI模型在各行业的实际应用 前言一、卷积神经网络&#xff08;CNN&#xff09;图像分类 二、循环神经网络&#xff08;RNN&#xff09;及其变体&#xff08;LSTM、GRU&#xff09;自然语言处理&#xff08;NLP&#xff09; 三、基于Transformer架构的模型&a…

基于树型结构实现顺序结构堆

目录 前言 一、树 1、树的概念与结构 2、树的相关术语 3、二叉树 4、满二叉树 ​ 5、完全二叉树 ​ 6、二叉树的存储 1、顺序结构 2、链式结构 二、堆 1、堆的结构 2、堆的初始化 3、入堆&#xff08;大根堆&#xff09; 4、出堆&#xff08;大根堆&#xf…

C++网络编程之C/S模型

C网络编程之C/S模型 引言 在网络编程中&#xff0c;C/S&#xff08;Client/Server&#xff0c;客户端/服务器&#xff09;模型是一种最基本且广泛应用的架构模式。这种模型将应用程序分为两个部分&#xff1a;服务器&#xff08;Server&#xff09;和客户端&#xff08;Clien…

Java审计对比工具JaVers使用

最近有个需求&#xff0c;需要将页面的内容生成excel或者word文档&#xff0c;而且每次的修改都需要生成新的版本&#xff0c;同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象&#xff0c;同时存储到数据库一条新数据&#xff0c;对应数据表一…

uniapp圆形波浪进度效果

uniapp圆形波浪进度效果 背景实现思路代码实现尾巴 背景 最近项目中有些统计的地方需要用到圆形的波浪进度效果&#xff0c;要求是根据百分比值然后在一个圆形内动态的展示一个波浪形的进度&#xff0c;看参考一下效果。 实现思路 这个效果看着挺复杂的&#xff0c;那么我们…

android——渐变色

1、xml的方式实现渐变色 效果图&#xff1a; xml的代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools…

索引的使用和优化

索引就是一种快速查询和检索数据的数据结构&#xff0c;mysql中的索引结构有&#xff1a;B树和Hash。 索引的作用就相当于目录的作用&#xff0c;我么只需先去目录里面查找字的位置&#xff0c;然后回家诶翻到那一页就行了&#xff0c;这样查找非常快&#xff0c; 创建一个表结…

【数据结构】宜宾大学-计院-实验五

实验五 栈和队列&#xff08;队列的基本操作&#xff09; 实验目的&#xff1a;链表结点结构&#xff1a;实验结果&#xff1a;运行截图&#xff1a;代码实现&#xff1a; 实验目的&#xff1a; 1&#xff0e;掌握队列的顺序存储结构和链式存储结构 2&#xff0e;实现队列的基…

(北京政务服务满意度公司)满意度调查助力服务质量提升

在当今社会&#xff0c;&#xff08;政务服务满意度公司&#xff09;政务窗口服务的质量直接关系到市民的日常生活和城市的健康发展。为了解市民对政务窗口服务的满意度&#xff0c;提升服务质量&#xff0c;某市委托民安智库专业市场调查公司开展了政务窗口服务满意度调查&…

若依框架部署到服务器刷新或者是退出登录出现404

登出错误404 改成/登出的时候重定向到根路径&#xff0c;让nginx匹配去找dist目录下的index.html文件 或者是直接改为/index.html&#xff0c;少一步可能会快一点&#xff1f; 不过会变得很丑,算了还是根目录吧 原版是index&#xff0c;那玩意是 针对路由的&#xff0c;而打包…

【重生之我要苦学C语言】 函数递归

函数递归 什么是递归&#xff1f; 递归就是函数自己调用自己 递归一定是基于函数的 在任何一次函数调用中&#xff0c;都会申请资源&#xff0c;申请的是内存中栈区的资源 栈区的资源是有限的&#xff0c;因此函数不能无限次的递归 递归的思想 把一个大型复杂问题层层转化为…