计算机专业大二大三:3 个网络安全低成本练手项目(附 GitHub 源码 + 实现步骤)

在这里插入图片描述

大二大三是计算机专业攒项目经验的黄金期,但很多同学要么觉得 “网络安全项目太复杂”,要么不知道 “从哪找低成本资源”—— 其实不用买服务器、不用学高深算法,用免费工具 + 开源代码,就能做出能写进简历的网络安全项目。

这篇整理的 3 个项目,从 “基础工具开发” 到 “漏洞检测实战”,难度循序渐进,每个项目都附 “技术栈 + 实现步骤 + GitHub 源码参考”,大二学过 C++/Python 基础就能上手,做完不仅能理解安全核心逻辑,还能在秋招简历里多一个 “硬亮点”。

一、项目 1:简易端口扫描器(Python 实现)—— 理解网络资产探测

项目目标:

开发一个能扫描指定 IP 开放端口,并识别对应服务的工具(类似简化版 Nmap),掌握 “TCP 连接扫描” 原理,熟悉 socket 编程。

适合阶段:

大二刚学 Python,想入门网络安全 “资产探测” 方向。

技术栈:

  • 核心语言:Python(3.8+)
  • 关键库:socket(建立 TCP 连接)、threading(多线程加速扫描)
  • 开发工具:PyCharm(社区版免费)
  • 测试环境:本地 Windows/Linux 虚拟机(VMware 免费版)

实现步骤(共 5 步,2-3 天可完成):

1. 明确核心功能

需要实现 3 个基础功能:

  • 输入目标 IP(如 192.168.1.10)和端口范围(如 1-1000);
  • 扫描开放端口,记录端口对应的服务(如 80 端口→HTTP、22 端口→SSH);
  • 输出扫描结果(开放端口列表 + 服务类型)。
2. 编写 TCP 连接扫描核心代码

python

import socket
import threading

# 定义扫描函数:检测单个端口是否开放
def scan_port(ip, port):
    try:
        # 创建TCP socket
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(1)  # 超时1秒,避免卡壳
        result = sock.connect_ex((ip, port))  # 连接端口,0表示开放
        if result == 0:
            # 尝试获取服务名
            try:
                service = socket.getservbyport(port)
            except:
                service = "Unknown"
            print(f"[+] 端口 {port} 开放,服务:{service}")
        sock.close()
    except:
        pass

# 定义主函数:多线程扫描端口范围
def main():
    target_ip = input("请输入目标IP:")
    start_port = int(input("请输入起始端口:"))
    end_port = int(input("请输入结束端口:"))
    
    print(f"正在扫描 {target_ip}{start_port}-{end_port} 端口...")
    # 多线程扫描,提高效率
    for port in range(start_port, end_port + 1):
        thread = threading.Thread(target=scan_port, args=(target_ip, port))
        thread.start()

if __name__ == "__main__":
    main()
3. 测试与优化
  • 测试环境:用本地虚拟机 IP(如 192.168.122.100),扫描 1-1000 端口;
  • 优化点:添加 “扫描进度提示”(如每扫描 100 个端口打印一次进度)、“结果保存到文件”(将开放端口写入 result.txt)。
4. 扩展功能(可选,提升项目亮点)
  • 添加 “UDP 端口扫描”(用 socket.SOCK_DGRAM);
  • 支持批量 IP 扫描(读取 ip_list.txt 文件,批量检测多个 IP)。
5. 整理项目文档

在 GitHub 仓库里写清楚:

  • 项目功能描述;
  • 依赖库安装命令(pip install 无额外依赖,Python自带);
  • 测试步骤(如 “扫描本地 IP 127.0.0.1 1-1000 端口”);
  • 核心代码解释(标注 “TCP 连接扫描原理”“多线程加速原因”)。

GitHub 源码参考:

简历写法:

“使用 Python 开发简易端口扫描器,实现 TCP/UDP 端口检测与服务识别,通过多线程优化将扫描速度提升 30%,支持批量 IP 扫描与结果导出,可用于网络安全资产探测场景。”

二、项目 2:Web 漏洞扫描器(基于 Burp Suite 插件)—— 入门 Web 安全检测

项目目标:

开发一个 Burp Suite 插件,自动检测 Web 应用的 “SQL 注入”“XSS” 2 类基础漏洞,理解 “漏洞检测逻辑”,熟悉 Web 安全原理。

适合阶段:

大三学过 Web 开发(HTML/PHP),想往 “渗透测试” 方向发展。

技术栈:

  • 核心语言:Java(Burp 插件开发默认语言)
  • 关键工具:Burp Suite 社区版(免费)、IntelliJ IDEA(社区版免费,支持 Burp 插件开发)
  • 测试环境:DVWA 靶场(免费,本地部署)
  • 依赖库:Burp Extender API(Burp 自带,无需额外下载)

实现步骤(共 6 步,5-7 天可完成):

1. 环境搭建
  1. 下载 Burp Suite 社区版,打开后在 “Extender→APIs” 中导出 Burp API 的 jar 包;
  2. 在 IntelliJ IDEA 新建 Java 项目,将 Burp API jar 包添加为依赖;
  3. 新建 “VulnScanner” 类,继承 Burp 的 “IBurpExtender” 和 “IHttpListener” 接口(实现 Burp 插件的核心接口)。
2. 编写漏洞检测核心逻辑

重点实现 2 个漏洞的检测规则:

  • SQL 注入检测:向 URL 参数或表单中插入' or 1=1--,判断响应是否包含 “SQL syntax error” 等报错信息;
  • XSS 检测:插入<script>alert('xss')</script>,判断响应是否包含该脚本(未被过滤则存在 XSS)。

核心代码片段(SQL 注入检测):

java

// 处理HTTP请求,检测SQL注入
private void checkSqlInjection(IHttpRequestResponse requestResponse) {
    // 获取请求URL和参数
    IRequestInfo requestInfo = burp.getHelpers().analyzeRequest(requestResponse);
    List<IParameter> params = requestInfo.getParameters();
    
    for (IParameter param : params) {
        // 构造带SQL注入 payload 的参数
        String payload = param.getValue() + "' or 1=1--";
        IParameter newParam = burp.getHelpers().buildParameter(
            param.getName(), payload, param.getType()
        );
        // 替换原参数,生成新请求
        byte[] newRequest = burp.getHelpers().updateParameter(
            requestResponse.getRequest(), newParam
        );
        // 发送新请求,获取响应
        IHttpRequestResponse newReqResp = burp.makeHttpRequest(
            requestResponse.getHttpService(), newRequest
        );
        String response = burp.getHelpers().bytesToString(newReqResp.getResponse());
        
        // 判断是否存在SQL注入(响应包含报错信息)
        if (response.contains("SQL syntax error") || response.contains("mysql_fetch_array")) {
            System.out.println("[+] 发现SQL注入漏洞,URL:" + requestInfo.getUrl());
            // 在Burp界面标记漏洞(可选)
            burp.addScanIssue(new CustomScanIssue(
                requestResponse.getHttpService(),
                requestInfo.getUrl(),
                new IHttpRequestResponse[]{newReqResp},
                "SQL注入漏洞",
                "高风险",
                "确认存在"
            ));
        }
    }
}
3. 集成到 Burp Suite
  1. 编译 Java 项目为 jar 包;
  2. 在 Burp Suite 的 “Extender→Extensions” 中导入 jar 包,显示 “Loaded successfully” 即成功。
4. 测试漏洞检测功能
  1. 启动 DVWA 靶场,将 Burp 设为浏览器代理;
  2. 在 DVWA 的 “SQL Injection” 模块提交请求,插件自动检测并输出漏洞提示;
  3. 验证 XSS 检测:在 “XSS Reflected” 模块提交脚本,插件标记 XSS 漏洞。
5. 优化功能
  • 添加 “漏洞等级划分”(高 / 中 / 低危);
  • 支持 “漏洞结果导出”(保存为 HTML 报告);
  • 过滤重复漏洞(避免同一漏洞多次检测)。
6. 整理项目文档
  • 写清楚插件安装步骤(“Burp 导入 jar 包→启用插件→开始扫描”);
  • 附测试截图(DVWA 中检测到漏洞的界面截图);
  • 解释漏洞检测原理(如 “SQL 注入通过构造恶意参数触发数据库报错”)。

GitHub 源码参考:

简历写法:

“基于 Burp Suite API 开发 Web 漏洞扫描插件,实现 SQL 注入、XSS 漏洞自动检测,支持漏洞等级划分与 HTML 报告导出,在 DVWA 靶场测试中漏洞检测准确率达 90%,可辅助渗透测试人员高效发现 Web 安全风险。”

三、项目 3:Linux 服务器安全加固脚本(Shell/Python 实现)—— 聚焦安全运维

项目目标:

开发一个自动化脚本,对 Linux 服务器进行 “基础安全加固”(如密码策略配置、防火墙规则设置、日志审计开启),理解 “安全运维日常工作”,熟悉 Linux 系统安全。

适合阶段:

大三学过 Linux 基础命令,想往 “安全运维” 方向发展。

技术栈:

  • 核心语言:Shell 脚本(优先,Linux 自带,无需额外环境)或 Python;
  • 测试环境:CentOS 7/ Ubuntu 20.04(虚拟机免费部署);
  • 工具依赖:iptables(防火墙)、rsyslog(日志服务)、pam(密码策略)。

实现步骤(共 5 步,3-4 天可完成):

1. 明确加固功能清单

选取 5 个基础且实用的加固点(避免复杂操作):

  1. 配置密码策略(最小长度 8 位、包含大小写字母 + 数字、90 天过期);
  2. 禁用 root 用户远程 SSH 登录(只允许普通用户登录后 su 切换);
  3. 配置 iptables 防火墙(只开放 22/80/443 端口,拒绝其他端口访问);
  4. 开启日志审计(记录 SSH 登录日志、sudo 操作日志,保存 30 天);
  5. 定期清理 /tmp 目录(删除 7 天未使用的临时文件,防止恶意文件残留)。
2. 编写 Shell 加固脚本

bash

#!/bin/bash
# Linux服务器基础安全加固脚本(CentOS 7适用)

# 1. 配置密码策略
echo "=== 开始配置密码策略 ==="
# 修改/etc/login.defs(密码过期时间、最小长度)
sed -i 's/PASS_MAX_DAYS    99999/PASS_MAX_DAYS    90/' /etc/login.defs
sed -i 's/PASS_MIN_LEN     5/PASS_MIN_LEN     8/' /etc/login.defs
# 启用pam_cracklib(密码复杂度)
echo "password    required    pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1" >> /etc/pam.d/system-auth

# 2. 禁用root远程SSH登录
echo "=== 开始禁用root远程SSH登录 ==="
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd  # 重启SSH服务生效

# 3. 配置iptables防火墙
echo "=== 开始配置iptables ==="
# 清空现有规则
iptables -F
# 允许22/80/443端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许回环地址
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 拒绝其他所有输入
iptables -A INPUT -j DROP
# 保存规则(CentOS 7)
service iptables save
systemctl restart iptables

# 4. 开启日志审计
echo "=== 开始配置日志审计 ==="
# 配置rsyslog记录SSH登录日志
echo "authpriv.* /var/log/ssh_login.log" >> /etc/rsyslog.conf
# 配置日志保存30天(用logrotate)
cat > /etc/logrotate.d/ssh_log << EOF
/var/log/ssh_login.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
}
EOF
systemctl restart rsyslog

# 5. 定期清理/tmp目录
echo "=== 开始配置/tmp清理任务 ==="
# 添加crontab任务(每天凌晨3点清理7天前的文件)
echo "0 3 * * * find /tmp -type f -mtime +7 -delete" >> /var/spool/cron/root
# 立即生效crontab
crontab /var/spool/cron/root

echo "=== 安全加固完成!请重启服务器确保所有配置生效 ==="
3. 测试脚本功能
  1. 在 CentOS 7 虚拟机中执行脚本(需 root 权限:bash secure_linux.sh);
  2. 验证每个功能:
    • 密码策略:执行passwd test,输入 6 位密码会提示 “密码太短”;
    • SSH 登录:用 root 用户 SSH 连接会提示 “Permission denied”,普通用户可正常登录;
    • 防火墙:执行iptables -L,确认只有 22/80/443 端口开放。
4. 扩展功能(可选)
  • 添加 “漏洞扫描” 模块(调用 openvas 客户端,扫描服务器漏洞);
  • 支持 “加固报告生成”(输出加固项是否成功的日志,保存为 secure_report.txt);
  • 适配 Ubuntu 系统(修改 iptables 保存命令、日志配置路径)。
5. 整理项目文档
  • 标注脚本适用系统版本(“CentOS 7 测试通过,Ubuntu 需修改 XX 行”);
  • 写清注意事项(“执行前需备份 /etc/ssh/sshd_config,避免配置错误导致 SSH 无法登录”);
  • 附功能验证步骤(如 “验证密码策略:执行 passwd 命令测试密码长度限制”)。

GitHub 源码参考:

简历写法:

“开发 Linux 服务器安全加固 Shell 脚本,实现密码策略配置、SSH 安全加固、防火墙规则设置等 5 项核心功能,支持日志审计与定期清理,在 CentOS 7 环境中测试通过,可自动化完成服务器基础安全加固,减少安全运维人工操作成本。”

四、项目实战避坑与简历加分技巧

1. 低成本资源获取

  • 服务器:用 VMware 免费版装 Linux 虚拟机,无需购买云服务器;
  • 靶场:DVWA、Metasploitable 2(均免费,本地部署);
  • 工具:Burp Suite 社区版、IntelliJ IDEA 社区版(足够满足开发需求)。

2. 常见坑点解决

  • 项目 1 端口扫描 “速度慢”:用多线程(threading)而非单线程,同时限制线程数(避免被靶机判定为攻击);
  • 项目 2Burp 插件 “加载失败”:检查 Java 版本(需 Java 8+)、API jar 包是否正确导入;
  • 项目 3Linux 脚本 “执行报错”:用bash -x secure_linux.sh调试,定位报错行(通常是路径或命令不兼容)。

3. 简历包装核心

  • 突出 “问题解决”:比如 “优化端口扫描器多线程逻辑,解决单线程扫描耗时过长问题”;
  • 量化成果:比如 “漏洞扫描插件检测准确率 90%”“加固脚本覆盖 5 项核心安全需求”;
  • 关联岗位:申请渗透测试岗重点写项目 2,申请安全运维岗重点写项目 3。

如果需要 3 个项目的 “完整源码 + 测试报告模板”,评论区扣 “项目源码” 就能领 —— 大二大三不用怕项目复杂,从这 3 个低成本项目入手,既能练技术,又能给简历加分,比只刷算法题更能打动 HR。

网络安全学习资料分享

为了帮助大家更好的学习网络安全,我把我从一线互联网大厂薅来的网络安全教程及资料分享给大家,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,朋友们如果有需要这套网络安全教程+进阶学习资源包,可以扫码下方二维码限时免费领取(如遇扫码问题,可以在评论区留言领取哦)~

在这里插入图片描述

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐