很多人第一次听说R语言,是因为同事在用它做报表分析。其实,除了统计和绘图,R在安全防护领域也有不少实用场景。比如公司每天收到大量登录日志,手动翻查异常IP几乎不可能,但用几行R代码就能自动识别可疑行为。
安装R与基础环境配置
先去官网下载R和RStudio,这两个工具免费且兼容性好。安装完成后打开RStudio,界面左边是代码输入区,右边能实时看到变量和图表。对于刚接触编程的人来说,这种即时反馈很友好。
读取日志文件并筛选异常记录
假设你手头有一份CSV格式的访问日志,包含时间、IP地址和请求状态。可以用下面这段代码快速加载数据:
data <- read.csv("access_log.csv", header = TRUE)
head(data)
接着筛选出所有返回404或500错误的请求:
error_logs <- subset(data, status == 404 | status == 500)
table(error_logs$ip_address)
执行后你会发现某些IP频繁出现,可能是扫描器或者恶意爬虫。这时候就可以把这些IP加入防火墙黑名单。
可视化攻击趋势
光看数字不够直观,画个折线图更清楚。比如按小时统计失败登录次数:
library(ggplot2)
data$time <- as.POSIXct(data$time)
data$hour <- format(data$time, "%H")
attacks_per_hour <- table(data$hour)
df <- data.frame(hour = names(attacks_per_hour), count = as.numeric(attacks_per_hour))
ggplot(df, aes(x=hour, y=count)) +
geom_line() +
labs(title="每小时异常请求分布", x="小时", y="次数")
图中如果凌晨两点突然飙升,基本可以判断是自动化脚本在撞库。结合之前的IP统计,能更快定位风险源。
自动化监控小脚本
把上面的逻辑打包成一个函数,每天早上跑一遍,自动生成报告邮件:
send_alert <- function(){
data <- read.csv("today_log.csv")
bad_ips <- subset(data, attempts > 10)$ip
if(length(bad_ips) > 0){
write(paste("发现高危IP:", paste(bad_ips, collapse=", ")),
"alert.txt")
}
}
虽然不能完全替代专业安全系统,但对中小团队来说,这套方法成本低、见效快,特别适合预算有限又想提升防护能力的情况。