前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 安全与运维实用指南

Linux 安全与运维实用指南

作者头像
曈曈too
发布2024-02-03 12:22:12
3260
发布2024-02-03 12:22:12
举报
文章被收录于专栏:瞳瞳too的学习笔记

Linux 安全与运维实用指南

引言

Linux作为许多服务器和网络环境的核心,具备高度的灵活性和强大的功能。本指南旨在深入介绍Linux系统中常用的命令和日志文件,帮助安全运维人员更有效地管理和保护Linux环境。

0x01 Linux基础命令

1. 文件和目录操作
  • ls:列出目录内容。使用ls -l 显示详细信息,对于安全检查,重点关注文件权限和修改时间,以识别潜在的未授权更改。
  • find:查找文件。find / -name 'filename' 在整个系统中查找特定文件,对于追踪恶意文件或不寻常的文件特别有用。
  • stat:查看文件或目录的具体信息,如修改时间、访问权限等,这对于确定文件是否被篡改非常关键。
2. 定时任务
  • crontab:管理用户的定时任务。crontab -e 编辑当前用户的定时任务,crontab -l 查看当前用户的定时任务列表。在安全事件响应中,检查和清理可能被恶意修改的定时任务是常见的步骤。
  • /etc/crontab:系统级的定时任务配置文件。与用户级的crontab不同,它可以指定任务由哪个用户运行。在安全审计中,检查此文件以确定是否有不寻常或未授权的任务。
  • /etc/cron.d/:目录包含系统级的定时任务文件。这些文件的格式类似于/etc/crontab。安全审计时应检查这个目录下的文件,以识别潜在的恶意任务。
3. 权限管理
  • chmodchown:这些命令在所有Linux发行版中通用。chmod 用于更改文件或目录的访问权限,如chmod 755 filenamechown 更改文件或目录的所有者和/或所属组,如chown user:group filename
  • setfaclgetfacl:提供了更细粒度的权限控制。例如,setfacl -m u:username:rwx file 为特定用户设置文件权限。这在各个发行版中都有支持,但可能需要安装acl包。
4. 用户和组管理
  • useradduserdel:这些基础命令在所有主流Linux发行版中都是相同的。useradd 用于创建新用户,userdel 用于删除用户。
  • adduserdeluser:在一些发行版(如Debian/Ubuntu)中,这些命令提供了useradduserdel的更友好的接口,包括更多的默认行为(如创建用户主目录)。
  • usermod:用于修改用户账户,例如更改用户名或所属组。这在各个发行版中都是标准命令。
5. 高级用户管理
  • visudo:编辑sudoers文件,控制哪些用户和组可以使用sudo以及他们可以执行的命令。这对于在多用户环境中限制管理员权限非常重要。
  • chage:用于更改和查看用户密码过期信息。例如,chage -l username 查看用户的密码过期信息,这在强制密码策略方面很有用。
6. 安全上下文和SELinux
  • ls -Zchcon:在使用SELinux的系统(如Red Hat/CentOS、Fedora)中,这些命令用于查看和更改文件的安全上下文。这对于维护符合SELinux策略的系统非常关键。

0x02 高级文件和系统管理命令

1. 查找与文本操作
  • find 命令应用
    • 按修改时间搜索:
      • find / -mtime -1:搜索在过去24小时内修改的文件,用于检测最近的文件更改。
      • find / -mmin -30:搜索在过去30分钟内修改的文件,用于快速定位最近可能受攻击的文件。
    • 按用户和组搜索:
      • find / -user username:搜索属于指定用户的所有文件,用于审计特定用户的文件活动。
      • find / -group groupname:搜索属于指定组的所有文件,有助于检查组级文件访问权限。
    • 组合条件搜索:
      • find / -name "*.log" -mtime -7:搜索在过去7天内修改过的所有.log文件,常用于日志文件分析。
      • find / -size +1M -size -5M:搜索大小在1MB到5MB之间的文件,有助于定位异常大小的文件。
    • 执行操作:
      • find / -type f -name "*.tmp" -exec rm {} \;:删除所有.tmp结尾的文件,用于清理临时或可疑文件。
      • find / -size +100M -exec mv {} /path/to/directory/ \;:将所有超过100MB的文件移动到指定目录,用于管理大文件。
    • 忽略某些目录:
      • find / -path /path/to/exclude -prune -o -name "*.txt" -print:搜索所有.txt文件,但忽略指定的目录,有助于提高搜索效率。
    • 按权限搜索:
      • find / -perm 644:搜索权限精确匹配644的文件,用于审计文件权限设置。
      • find / -perm /u=r:搜索用户可读的文件,有助于识别潜在的权限过度放宽的文件。
  • grep 命令应用
    • grep 'Failed' /var/log/auth.log:查找登录失败的尝试,关键用于安全事件分析,比如检测暴力破解尝试。
  • awksed 命令应用
    • awk -F ':' '{print $1}' /etc/passwd:打印passwd文件中每行的第一列,常用于提取特定信息,如用户名列表。
    • sed 's/old/new/g' file.txt:将文件中所有old字符串替换为new,用于快速修改文件内容,如配置文件更新。
2. 系统状态命令
  • top:显示当前活动的进程。top -u username 显示指定用户的进程,top -i 忽略闲置和僵尸进程。
  • dfdu:磁盘使用情况。df -h 以人类可读的格式显示磁盘空间,du -sh /path/to/directory 显示指定目录的总大小。
  • htop:提供更直观的界面和更多功能的进程监控工具。
3. 网络和进程监控
  • netstat:网络统计。netstat -tuln 查看所有监听端口,netstat -an | grep ESTABLISHED 查看建立的网络连接。
  • ss:现代化的网络连接监控工具,ss -tuln 查看监听端口,ss -tp 显示哪些进程正在使用哪些端口。
  • ps:查看当前进程。ps -aux 显示所有进程的详细列表,ps -aux | grep httpd 查找所有运行的httpd进程。
  • lsof:列出被进程打开的文件,lsof -i :80 显示所有打开80端口的进程。
4. 审计和日志分析
  • journalctl:系统日志管理,journalctl -u sshd 查看SSH服务的日志。
  • tcpdump:网络流量分析,tcpdump port 80 监控80端口的流量。
5. 特殊文件权限

Linux中的特殊权限位包括SetUID、SetGID和Sticky Bit。这些权限位对于系统安全至关重要,因为它们改变了文件或目录的标准行为。

  1. SetUID(SUID)
    • 功能:当设置在可执行文件上时,用户运行该文件时,文件的进程将拥有文件所有者的权限,而不是运行它的用户的权限。
    • 设置方法chmod u+s filename。这会在文件的权限表示中的用户执行位添加一个Ss(如果文件已经可执行)。
    • 删除方法chmod u-s filename
    • 示例/usr/bin/passwd 文件通常设置了SUID位,使得普通用户可以修改自己的密码,即使passwd程序需要以root身份运行。
    • 风险与管理:不当设置SUID可能导致安全风险。建议定期使用 find / -perm -4000 -exec ls -ldb {} \; 命令检查系统上设置了SUID的文件。
  2. SetGID(SGID)
    • 功能
      • 在可执行文件上设置时:和SUID类似,但进程将获得文件所属组的权限。
      • 在目录上设置时:该目录下新创建的文件将继承该目录的组,而不是创建者的主组。
    • 设置方法chmod g+s filenamechmod g+s directory
    • 删除方法chmod g-s filename/directory
    • 风险与管理:定期检查设置了SGID的文件和目录,使用 find / -perm -2000 -exec ls -ldb {} \;
  3. Sticky Bit
    • 功能:主要用于目录。当设置在目录上时,只有文件所有者、目录所有者或root用户可以删除或修改目录中的文件,即使该目录对其他用户是可写的。
    • 设置方法chmod o+t directory
    • 删除方法chmod o-t directory
    • 示例/tmp 目录通常设置了Sticky Bit,以防止普通用户删除或更改其他用户的临时文件。
    • 风险与管理:使用 find / -perm -1000 -exec ls -ldb {} \; 检查设置了Sticky Bit的目录。

0x03 日志分析与安全监控

1. 日志文件的位置和分析
  • 重要日志文件及其作用
    • 安全日志/var/log/secure (包含验证和授权信息,如SSH登录尝试,关键用于追踪未授权访问尝试)
    • 系统日志/var/log/syslog (Debian系系统) 或 /var/log/messages (RedHat系系统) (记录系统运行信息,有助于诊断系统级问题)
    • Web服务日志:如Apache的/var/log/access.log/var/log/error.log (记录Web访问和错误信息,对于分析网站安全事件至关重要)
    • 应用程序日志:如数据库服务(MySQL, PostgreSQL)的/var/log/mysql/和邮件服务(Postfix, Sendmail)的/var/log/mail/ (记录操作和错误信息,用于追踪应用级别的安全问题)
    • 认证日志/var/log/auth.log (Debian系系统)、/var/log/secure (CentOS/RHEL系系统) — 这些日志文件记录用户认证信息,包括登录、sudo请求等。它们是关键资源,用于追踪权限提升和内部威胁。监控这些日志可以帮助识别未授权访问尝试和其他潜在的安全风险。
    • 内核日志/var/log/kern.log (记录与内核相关的消息,关键用于调查系统崩溃和硬件问题)
    • 启动日志/var/log/boot.log (记录系统启动过程中的信息,有助于诊断启动时出现的问题)
    • 历史命令日志~/.bash_history/root/.bash_history (记录用户的命令历史,可以用来追踪用户的操作历史,尤其在调查安全事件时非常重要)
2. 敏感系统文件
  • 敏感配置文件
    • /etc/passwd/etc/shadow:存储用户账户信息和加密后的密码,监控这些文件有助于发现未授权的用户账号更改。
    • /etc/sudoers:定义了哪些用户具有sudo权限,监控此文件有助于检测未授权的权限提升。
    • /etc/ssh/sshd_config: SSH守护进程的配置文件,定义了SSH服务的配置选项,如端口号、允许的认证方法、登录尝试次数等。
    • /etc/group:存储用户组信息,包括组名、组密码、组ID和组内成员。监控此文件有助于发现未授权的用户组更改,如新用户被添加到特权组。
    • /etc/hosts:用于存储静态的主机名与IP地址映射。更改此文件可能影响系统中的网络配置,监控它可以帮助识别DNS欺骗或网络攻击尝试。
    • /etc/crontab/etc/cron.\*/\*:存储计划任务配置。监控这些文件可以防止恶意代码被安排定期执行,这是许多恶意软件保持持久性的常见方式。
    • /root/.ssh/authorized_keys:存储有权限远程访问root用户的SSH密钥。监控此文件可以发现未授权的SSH密钥添加,这是一个常见的横向移动和持久化技术。
3. 日志分析工具与技巧
  • 常用日志分析命令
    • grep:用于查找特定模式。例如,grep 'Failed' /var/log/secure 查找失败的登录尝试。
    • tailhead:查看文件的末尾或开头部分。tail -f /var/log/messages 实时监控系统日志。
    • awk:用于复杂的文本处理。例如,awk '{print $1}' /var/log/auth.log | sort | uniq -c | sort -nr 可以统计登录尝试的频率。
    • sortuniq:这两个命令经常与grepawk配合使用,进行排序和统计唯一行。
    • less:与cat类似,但更适合查看较大文件。例如,使用less /var/log/syslog 可以逐行或逐页查看日志文件。
    • journalctl:用于Systemd系统的日志管理。例如,journalctl -u nginx 查看Nginx服务的日志。
    • logrotate:用于管理日志文件的轮换和存档。配置文件通常位于/etc/logrotate.conf/etc/logrotate.d/
  • 日志分析技巧
    • 关键词搜索:例如,搜索"error", "failed", "denied" 等关键词可以快速定位问题。
    • 时间戳对比:检查与事件相关的时间戳,帮助确定事件发生的顺序。
    • IP地址和用户分析:分析异常的IP地址或用户行为,如频繁的登录尝试或不寻常的访问模式。
    • 日志关联分析:结合多个日志源,如系统日志和应用日志,提供更全面的视图。

结语

作为一名安全运维工程师,熟练掌握Linux系统中各种命令和对日志的分析是日常工作的基础。通过这些命令和技巧,我们可以有效地管理系统、诊断问题并保护系统免受安全威胁。持续学习和实践是保持技能现代化和应对新挑战的关键。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 0x01 Linux基础命令
    • 1. 文件和目录操作
      • 2. 定时任务
        • 3. 权限管理
          • 4. 用户和组管理
            • 5. 高级用户管理
              • 6. 安全上下文和SELinux
              • 0x02 高级文件和系统管理命令
                • 1. 查找与文本操作
                  • 2. 系统状态命令
                    • 3. 网络和进程监控
                      • 4. 审计和日志分析
                        • 5. 特殊文件权限
                        • 0x03 日志分析与安全监控
                          • 1. 日志文件的位置和分析
                            • 2. 敏感系统文件
                              • 3. 日志分析工具与技巧
                              • 结语
                              相关产品与服务
                              Elasticsearch Service
                              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档