Linux安全加固

账号和权限

系统用户
  • 超级管理员:UID=0

  • 系统默认用户:系统程序使用,从不登录

  • 新增普通用户:UID大于500

 

用户管理
  • 添加用户:useradd <用户名>

  • 删除用户:userdel [-r] [-f] <用户名>

  • 锁定/解锁用户:

    • 锁定:passwd -l <用户名>

    • 解锁:passwd -u <用户名>

  • 用户属性:
    • usermod -L <用户名>     #锁定用户

    • usermod -U <用户名>    #解锁用户

  • 查看当前用户:id

权限管理

解析文件权限
[root@anonymous ~]# ls -ld /etc/passwd /bootdr-xr-xr-x. 5 root root 4096 2月   2 08:49 /boot-rw-r--r--  1 root root 1240 1月  27 08:18 /etc/passwd
-rw-r--r--:权限位 1:硬链接数root:属主root:属组1240:文件大小1月  27 08:18:最后修改时间/etc/passwd:文件/目录名称
权限和归属

访问权限:

  • - 读取:允许查看内容read

  • - 写入:允许修改内容write

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

归属关系:

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

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

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

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

文件系统安全

查看权限:ls -l

修改权限:

图片

UMASK设置合理的初始文件权限

图片

umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644和755

文件夹其权限规则为:777-022-755

文件其权限规则为:777-111-022=644(因为文件默认没有执行权限)

修改UMASK值:

1、直接在命令行下 umask xxx(重启后消失)

2、修改/etc/profile中设定的umask值

[root@anonymous ~]# umask 027[root@anonymous ~]# touch test2[root@anonymous ~]# ls -l test2-rw-r----- 1 root root 0 2月   2 09:24 test2[root@anonymous ~]# mkdir test10[root@anonymous ~]# ls -ld test10drwxr-x--- 2 root root 6 2月   2 09:24 test10

系统加固

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

执行命令

  •  cat /etc/passwd

  •  cat /etc/shadow

查看账户、口令文件,与管理员确认不必要的账号。对于一些保留的系统伪账号,如bin、adm、uucp、ip、nuucp、hpdb、www、daemon等可根据需要锁定登录。

加固方法:

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

  • passwd -u <用户名>   #解锁用户

检查shadow中空口令账号
awk -F ":" '($2=="!!")  {print $1}' /etc/shadows

 加固方法:

  • 使用命令passwd -l <用户名> 锁定不必要的账号

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

  • 使用命令passwd <用户名> 为用户设置密码

设置系统密码策略

执行命令查看密码策略设置

cat /etc/login.defs | grep PASS

加固方法:

vim /etc/login.defs

PASS_MAX_DAYS   99999 #用户密码最长使用时间,99999表示无限期
PASS_MIN_DAYS   0
PASS_MIN_LEN    8  #密码最小长度
PASS_WARN_AGE   7  #密码过期前多少天提示
禁用root之外的超级用户

查看系统中的超级用户 :

awk -F ":" '($3=="0"){print $1}' /etc/passwd 

加固方法:

除root外的用户全部锁定。

passwd -l <用户名> 
限制能够su为root的用户

cat /etc/pam.d/su

查看是否有auth required /libsecurity/pam_whell.so这样的配置条目。

加固方法:

在此文件头部加入:

#只有wheel的用户才能su到root
auth           required        /lib/security/pam_wheel.so group=wheel 
重要文件加上不可改变属性

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/gshadow
chattr +i /etc/group
Umask安全
# umask
0022
  • 第一个0代表suid丢失的权限
  • 第二个0代表本文件/目录拥有者什么权限都没有丢失
  • 第三个2代表本文件/目录的用户组丢失了w权限。
  • 第四个2代表本文件/目录的其他用户能使用的权限只有r和x权限

文件实际权限:7777-0022

SSH安全

禁止root用户进行远程登陆

检查方法:

# cat /etc/ssh/sshd_config  |grep Permit
PermitRootLogin yes

PermitRootLogin要设置成no。 

仅允许SSH协议版本2

/etc/ssh/sshd_config中设置Protocol仅支持协议2

Protocol 2
修改账号TMOUT值,设置自动注销时间

检查方法:

cat /etc/profile | grep TMOUT

加固方法:

vim /etc/profile

增加

TMOUT=600 无操作600秒后自动退出
设置BASH保留历史命令的条目

检查方法:

cat /etc/profile | grep HISTSIZE

加固方法:

vim /etc/profile

修改HISTSIZE=5即保留最新执行的5条命令
注销时删除命令记录

检查方法:

cat /etc/skel/.bash_logout 增加如下行

rm -f $HOME/.bash_history

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

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

日志的主要用途是系统审计 、监测追踪和分析。为了保证 Linux 系统正常运行、准确解决遇到的各种各样的问题,认真地读取日志文件是管理员的一项非常重要任务。

UNIX/ Linux 采用了syslog 工具来实现此功能,如果配置正确的 话,所有在主机上发生的事情都会被记录下来不管是好还是坏的

检查方法:

cat /etc/profile | grep HISTSIZE

图片

确定syslog服务是否启用

[root@anonymous ~]# cat /etc/rsyslog.conf# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html#### MODULES ####module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)       SysSock.Use="off") # Turn off message reception via local log socket;                          # local messages are retrieved through imjournal now.module(load="imjournal"             # provides access to the systemd journal       UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from       StateFile="imjournal.state") # File to store the position in the journal#module(load="imklog") # reads kernel messages (the same are read from journald)#module(load="immark") # provides --MARK-- message capability# Provides UDP syslog reception# for parameters see http://www.rsyslog.com/doc/imudp.html#module(load="imudp") # needs to be done just once#input(type="imudp" port="514")# Provides TCP syslog reception# for parameters see http://www.rsyslog.com/doc/imtcp.html#module(load="imtcp") # needs to be done just once#input(type="imtcp" port="514")#### GLOBAL DIRECTIVES ##### Where to place auxiliary filesglobal(workDirectory="/var/lib/rsyslog")# Use default timestamp formatmodule(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")# Include all config files in /etc/rsyslog.d/include(file="/etc/rsyslog.d/*.conf" mode="optional")#### RULES ##### Log all kernel messages to the console.# Logging much else clutters up the screen.#kern.*                                                 /dev/console# Log anything (except mail) of level info or higher.# Don't log private authentication messages!*.info;mail.none;authpriv.none;cron.none                /var/log/messages# The authpriv file has restricted access.authpriv.*                                              /var/log/secure# Log all the mail messages in one place.mail.*                                                  -/var/log/maillog# Log cron stuffcron.*                                                  /var/log/cron# Everybody gets emergency messages*.emerg                                                 :omusrmsg:*# Save news errors of level crit and higher in a special file.uucp,news.crit                                          /var/log/spooler# Save boot messages also to boot.loglocal7.*                                                /var/log/boot.log# ### sample forwarding rule ####action(type="omfwd"# An on-disk queue is created for this action. If the remote host is# down, messages are spooled to disk and sent when it is up again.#queue.filename="fwdRule1"       # unique name prefix for spool files#queue.maxdiskspace="1g"         # 1gb space limit (use as much as possible)#queue.saveonshutdown="on"       # save messages to disk on shutdown#queue.type="LinkedList"         # run asynchronously#action.resumeRetryCount="-1"    # infinite retries if host is down# Remote Logging (we use TCP for reliable delivery)# remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514#Target="remote_host" Port="XXX" Protocol="tcp")
阻止系统响应任何从外部/内部来的ping请求

加固方法:

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

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

electron 打包生成的latest.yml文件名字变成xxx.yml文件名

正常情况是electron每次打包会生成一个latest.yml文件和一个xxx.exe文件&#xff0c;但是当version的名字修改成 这样 后面添加了-beta &#xff0c;然后生成的文件名字就变成了 beta.yml 更改方法&#xff1a; 在build配置底下添加 "detectUpdateChannel": false…

我的C++奇迹之旅:值和引用的本质效率与性能比较

文章目录 &#x1f4dd;引用&#x1f320;引用概念&#x1f309;引用特性 &#x1f320;使用场景&#x1f309;做参数&#xff08;传值与传地址&#xff09;&#x1f309;传值、传引用效率比较 &#x1f320;引用做返回值&#x1f309;引用和指针的区别 &#x1f320;常引用&am…

坚持刷题|分发饼干

文章目录 题目思路代码实现实现总结主要步骤时间复杂度 扩展问题 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷第一个贪心算法&#xff1a;分发饼干 题目 455.分发饼干 思路 要解决这个问题&#xff0c;可以使用…

深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现

大家好,我是微学AI,今天给大家介绍一下深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现。多模态CLIP(Contrastive Language-Image Pre-training)模型是一种深度学习模型,其核心设计理念是通过大规模的对比学习训练,实现图像与文本之间的跨模…

Linux——进程管理

目录 作业和进程的概念 程序与进程的关系 查看进程信息——ps&#xff0c;top ps命令 top命令 设置进程的优先级——nice&#xff0c;renice nice命令 renice命令 查看进程信息——pgrep&#xff0c;pstree pgrep命令 pstree命令 切换进程——jobs&#xff0c;bg&a…

【linux】基础IO(一)

文件只有站在系统层面才能彻底理解 简单回顾一下文件&#xff1a; 首先我们要明确一点&#xff0c;我们说的打开文件不是写下fopen就打开文件&#xff0c;而是当我们的进程运行起来&#xff0c;进程打开的文件。 我们在C语言一般都会使用过如下的代码进行向文件中写入 但是除…

Oracle客户端如何连接远程数据库?

Oracle是一种常用的数据库管理系统&#xff0c;它具有高效、稳定的特性&#xff0c;广泛应用于各行各业。为了实现远程数据库的连接&#xff0c;我们可以使用Oracle客户端工具。本文将介绍如何使用Oracle客户端连接远程数据库&#xff0c;并讨论其使用场景。 Oracle客户端工具 …

sql中如何添加数据?

添加 在 SQL 中添加数据通常使用INSERT语句。INSERT语句用于将新的数据行插入到数据库表中。 基本的INSERT语句语法如下&#xff1a; INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);其中&#xff1a; INSERT INTO&#xff1a;指定要插入数据…

利用Flutter的特性最大程度提升iOS应用的用户体验

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

SSM框架学习——MVC模式与三层架构

MVC模式与三层架构 什么是MVC模式 MVC模式代表Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式。这种应用模式用于应用程序的分层开发。 Model代表存取数据的对象&#xff0c;它自身可带有逻辑&#xff0c;数据变化时更新Controller。View代表Model包含…

最牛的音乐大模型-suno 音乐界的ChatGPT

一、前言 之前一直对音乐是无感的&#xff0c;但随着 suno.ai 大火&#xff0c;开始喜欢上了音乐&#xff0c;喜欢上了音乐创作的 二、suno介绍 2.1 基本介绍 基于 Suno 任何人都可以创作美妙音乐。无论您是歌手还是艺术家抑或是对音乐一无所知的人&#xff0c;suno都会打破…

STM32(1):系统架构地址映射

STM32&#xff08;1&#xff09;&#xff1a;系统架构&地址映射 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com…

基因组Survey分析

流程图&#xff1a; 图片来源&#xff1a;https://www.jianshu.com/p/94da86093843 一、Fastp质控 二、NT比对 一般选择第六个输出格式 结果示例&#xff1a; 三、k-mer分析 软件&#xff1a;GCE/genomescope 分析目的&#xff1a;预估基因组大小&#xff0c;重复序列比…

团聚金刚石研磨液为高性能研磨抛光材料 中机新材是国内领先供应商

团聚金刚石研磨液为高性能研磨抛光材料 中机新材是国内领先供应商 团聚金刚石研磨液是一种高性能研磨抛光材料&#xff0c;是以团聚金刚石微粉为原料采用特殊配方配制而成。团聚金刚石微粉是由金刚石微粉、粘结剂经特殊工艺处理集合而成的球形磨料。金刚石微粉制备方式多样&am…

4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生。

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试…

使用Java流API构建树形结构数据

简介&#xff1a; 在实际开发中&#xff0c;构建树状层次结构是常见需求&#xff0c;如组织架构、目录结构或菜单系统。本教案通过解析给定的Java代码&#xff0c;展示如何使用Java 8 Stream API将扁平化的菜单数据转换为具有层级关系的树形结构。 1. 核心类定义 - Menu Data…

中科驭数超低时延网络解决方案入选2023年度金融信创优秀解决方案

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」&#xff0c;中科驭数超低时延网络解决方案从众多方案中脱颖而出&#xff0c;成功入选&#xff0c;代表了该方案的技术创新和金融实践…

Servlet基础 管理员注册页面

管理员注册页面 index.jsp <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":&quo…

Linux下javaweb项目部署

javaweb项目部署测试 测试环境&#xff1a;centos7 下载安装jdk rpm -ivh jdk-8u131-linux-x64.rpm 下载安装MySQL wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.33-1.el7.x86_64.rpm https://downloads.mysql.com/archives/get/p…

Android12 简单的共享内存驱动实现 参考Ashmem

Android12 共享内存驱动实现 SOC&#xff1a;RK3568 system&#xff1a;Android12 概述&#xff1a; 1. 概述 Ashmem&#xff08;Anonymous Shared Memory&#xff0c;Android 匿名共享内存&#xff09;&#xff0c;它基于 mmap 系统调用&#xff0c;可以让不同进程将同一段…