【跟我学Linux】第十二天:日志深度分析、软件源码安装、防火墙规则细化

一、日志深度分析:从海量日志中快速找 “问题线索”

系统日志(比如/var/log/syslog)就像 “黑匣子”,出问题时(比如服务启动失败、登录异常),里面藏着答案。今天学 3 个实用技巧,从日志里 “挖线索”。

1. 按时间范围筛选日志(找 “某个时间段的异常”)

场景:比如你发现 “今天上午 10 点到 11 点之间,SSH 登录总失败”,想只看这段时间的auth.log(安全日志)。

命令公式:用grep结合日期关键词筛选(日志里的时间格式一般是 “月 日 时:分: 秒”,比如 “Jul 12 10:30:22”)。

实操步骤
假设要找 “7 月 12 日 10 点到 11 点的 SSH 登录日志”:

bash

# 查看/var/log/auth.log中,7月12日10点(10:00-10:59)的记录  
grep "Jul 12 10:" /var/log/auth.log  

  • 解释
    • grep "Jul 12 10:":筛选包含 “7 月 12 日 10 点” 的行(日志里的时间格式固定,直接按这个搜);
    • 输出结果会只显示这段时间的日志,避免被其他时间的记录干扰。
2. 统计 “错误出现的次数”(判断问题是否频繁)

场景:日志里有很多 “Failed password”(密码错误),想知道 “今天到底失败了多少次”,判断是不是有人恶意尝试登录。

命令公式:用grep筛选错误关键词,再用wc -l统计行数(一行代表一次错误)。

实操步骤
统计auth.log中 “今天的密码错误次数”:

bash

# 先筛选今天的日志(假设今天是7月12日),再统计错误次数  
grep "Jul 12" /var/log/auth.log | grep "Failed password" | wc -l  

  • 逐句解释
    • grep "Jul 12" /var/log/auth.log:先捞出今天的所有安全日志;
    • | grep "Failed password":从今天的日志里,再捞出包含 “密码错误” 的行(| 是 “管道”,把前一步结果传给后一步);
    • | wc -l:统计最终筛选出的行数(即错误次数)。
3. 跟踪 “特定服务的日志”(比如找 “SSH 服务启动失败的原因”)

场景:SSH 服务启动失败(sudo systemctl start ssh提示错误),想从日志里看 “到底哪里错了”。

实操步骤
grep筛选包含 “ssh” 关键词的日志(SSH 服务的日志会带 “sshd” 标识):

bash

# 从系统日志syslog中找SSH相关的记录  
grep "sshd" /var/log/syslog  

# 如果想实时看SSH的日志(比如启动服务时监控)  
tail -f /var/log/syslog | grep "sshd"  # 实时跟踪并筛选ssh相关日志  

  • 举例
    如果输出里有 “Address already in use”(地址已被占用),说明 22 端口被其他程序占用,导致 SSH 启动失败 —— 这就是解决问题的关键线索!

二、软件源码安装:安装 “包管理工具没有的特殊软件”

之前学的apt install是 “点外卖”(方便但菜品固定),今天学 “自己买菜做饭”—— 源码安装:从软件官网下载源码,手动编译安装,适合安装 “最新版本” 或 “apt 没有的软件”(比如某个小众工具)。

1. 源码安装的 4 个固定步骤(记这四步就够了)

任何源码安装都逃不过这四步:下载源码→解压→配置→编译安装,就像 “买菜→拆包装→准备食材→炒菜”。

2. 实操:源码安装 “tree 工具”(显示目录树结构,apt 也有,但用它练手)

步骤 1:下载源码包(从官网找,这里用示例链接)

bash

cd ~/linux_study  # 到学习目录操作,不乱  
# 下载tree的源码包(如果链接失效,百度“tree源码下载”找最新的)  
wget http://mama.indstate.edu/users/ice/tree/src/tree-2.1.1.tgz  

  • wget:“下载文件” 的命令(如果没有,先sudo apt install wget);
  • 执行后,目录里会多一个tree-2.1.1.tgz压缩包。

步骤 2:解压源码包(拆包装)

bash

tar -zxvf tree-2.1.1.tgz  # 解压tgz压缩包  
cd tree-2.1.1  # 进入解压后的目录(里面是源码文件)  

步骤 3:配置(准备食材,检查系统环境)

bash

./configure  # 配置编译参数(生成Makefile,指导后续编译)  

  • 这一步会检查系统是否有 “编译工具”(比如 gcc),如果提示 “command not found”,安装缺少的工具:

    bash

    sudo apt install gcc make  # 安装编译必需的工具(输入密码后按y)  
    

    安装后再重新执行./configure,直到显示 “configuration done”(配置完成)。

步骤 4:编译并安装(炒菜 + 装盘)

bash

make  # 编译源码(把人类能看懂的代码翻译成机器能懂的二进制文件)  
sudo make install  # 安装到系统(把编译好的文件放到/usr/bin等目录,让系统能找到)  

步骤 5:验证安装成功
输入tree命令,会显示当前目录的树状结构(说明安装成功):

bash

tree  # 试试!会以树形显示目录里的文件  

卸载方法:如果想删除源码安装的软件,在源码目录执行:

bash

sudo make uninstall  # 卸载(比apt remove麻烦,但必须会)  

三、防火墙规则细化:给 “防盗门” 加 “精准门禁”

之前学的ufw allow 22/tcp是 “允许所有人访问 22 端口”(像 “家门对所有人开放”),今天学 “只允许特定 IP 访问某端口”(像 “只让家人刷脸进门”),更安全。

1. 防火墙规则的 “优先级”(先拒绝后允许,更安全)

防火墙规则遵循 “先匹配的规则生效”,推荐设置 “默认拒绝所有”,再手动允许需要的规则(就像 “默认锁门,只给信任的人钥匙”)。

2. 实操 1:只允许 “你的 IP” 访问 SSH 端口(22)

场景:防止别人随便尝试登录你的服务器,只让你自己的电脑(比如 IP 是192.168.1.101)通过 SSH 连接。

步骤 1:先设置默认规则(默认拒绝所有入站连接)

bash

sudo ufw default deny incoming  # 默认拒绝所有外部访问  
sudo ufw default allow outgoing  # 默认允许本机访问外部(不影响你上网)  

步骤 2:允许 “你的 IP” 访问 22 端口(SSH)

bash

# 替换192.168.1.101为你的实际IP(比如你电脑的IP)  
sudo ufw allow from 192.168.1.101 to any port 22/tcp  

  • 解释:from 你的IP表示 “只允许这个 IP”,to any port 22表示 “访问任意 IP 的 22 端口”(这里的 “任意 IP” 指你的服务器自己)。

步骤 3:启用防火墙并查看规则

bash

sudo ufw enable  # 启用规则(如果之前禁用了)  
sudo ufw status numbered  # 查看带编号的规则(方便后续修改)  

  • 输出会显示类似:[ 1] 22/tcp ALLOW IN 192.168.1.101(规则生效)。
3. 实操 2:删除错误的规则(规则写错了怎么办)

如果刚才的 IP 填错了,用编号删除:

bash

sudo ufw delete 1  # 删除编号1的规则(根据status numbered的结果填编号)  

今日必练实操清单(15 分钟完成)

  1. 日志分析

    • grep "Jul 12" /var/log/syslog | grep "error"(替换成今天的日期),统计系统日志里的错误次数。
  2. 源码安装

    • 按步骤源码安装 “tree 工具”,成功后用tree ~/linux_study查看目录树,再用sudo make uninstall卸载(练手)。
  3. 防火墙细化

    • 设置 “只允许本机(127.0.0.1)访问 80 端口”(模拟 “只让自己访问网页服务”),命令:sudo ufw allow from 127.0.0.1 to any port 80/tcp,用ufw status确认规则生效。

今日总结(3 句话记住核心)

  1. 日志分析grep "时间/关键词" 日志文件 | wc -l → 按时间 / 关键词筛日志,统计问题次数,快速找线索。
  2. 源码安装wget下载→tar解压→./configure配置→make编译→sudo make install → 四步安装 apt 没有的软件,像 “自己做饭”。
  3. 防火墙细化sudo ufw allow from 特定IP to any port 端口 → 只让信任的 IP 访问特定端口,比 “允许所有人” 更安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值