零基础入行网络安全,到底要学哪些东西
零基础入行网络安全,到底要学哪些东西?很多人一开始就扎进漏洞利用工具里,却连操作系统目录都认不全。这篇文章把网安入门路上绕不开的 七大技术模块 一次性讲透——Windows、Linux、MySQL、PHP、Docker、HTTP 协议、信息收集,每个模块都告诉你「学什么」和「跟安全有什么关系」。
一、Windows 系统:攻防的第一战场
Windows 至今仍是桌面端占有率最高的操作系统,也是内网渗透中最常见的目标。理解 Windows 的基础结构,是做主机安全、应急响应和内网渗透的前提。
1.1 系统重要目录
搞安全的第一步,是知道文件都在哪:
| 目录 | 作用 | 安全意义 |
|---|---|---|
Program Files | 64 位程序默认安装目录 | 排查可疑软件、提取工具版本信息 |
Program Files (x86) | 32 位程序安装目录 | 注意 x86 是 x86_32 简写,x64 是 x86_64 |
Windows | 系统程序核心目录 | 系统文件篡改、驱动级恶意程序的藏身地 |
用户(Users) | 多用户桌面目录 | 每个用户的独立文件夹,浏览器记录、桌面文件都在这 |
应急响应中,攻击者常常把木马伪装成系统文件放在
Windows\System32下,或者在用户目录的AppData\Roaming里放持久化程序。认识目录结构,才能一眼看出「不该出现的东西」。
1.2 开机自启动:持久化的常用入口
攻击者拿到一台 Windows 主机后,第一件事往往是「留后门」,开机自启动就是最基础的持久化手段。
设置方法:
- 按
Win + R,输入shell:startup回车 - 打开的文件夹路径形如:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup - 把应用程序的快捷方式拖进这个文件夹,开机就会自动运行
安全视角:做应急响应时,这个启动文件夹是必查项之一。很多初级木马就是靠扔一个快捷方式在这里实现自启的。
1.3 查看 IP 与共享资源
ipconfig
这是 Windows 下查看网卡 IP 地址最基础的命令,内网信息收集时人手一条。
Windows 共享资源 在内网中极其常见,也极其危险:
- 设置共享:文件右键 → 属性 → 共享 → 添加
everyone - 访问共享:在运行或资源管理器输入
\\192.168.1.5\Tools - 如果设置了密码,需要用户名和密码登录
经典漏洞
MS17-010(永恒之蓝)就是利用 Windows SMB 共享服务的远程代码执行漏洞。理解共享资源的工作方式,才能理解这类漏洞的攻击面。
1.4 注册表:Windows 的「中枢神经」
打开方式:运行输入 regedit。
注册表(Registry)是 Microsoft Windows 中的核心数据库,存放着系统的各种参数,直接控制着 Windows 的启动、硬件驱动加载以及应用程序运行,在整个系统中起着核心作用。
安全视角:注册表是恶意程序持久化的「重灾区」——
Run、RunOnce等键值可以让程序开机自启;浏览器劫持、文件关联篡改也都通过注册表实现。做主机加固和应急响应,注册表是必须掌握的领域。
二、Linux 系统:服务器端的必修课
互联网上绝大多数服务器跑的都是 Linux。做 Web 安全、运维安全、云安全,Linux 命令是基本功中的基本功。
2.1 远程连接:SSH 是入口
从 Windows 远程连接 Linux 服务器,用的是 SSH 协议:
# 语法
ssh 用户名@ip地址
# 示例
ssh root@192.168.61.131
安全视角:SSH 是服务器的「大门」,也是攻击者最常爆破的服务。弱口令、默认端口 22、未禁用 root 远程登录,都是最常见的安全隐患。做安全加固时,修改 SSH 端口、禁用密码登录改用密钥、限制登录 IP,是标配操作。
2.2 基础指令:生存必备
| 操作 | 命令 | 说明 |
|---|---|---|
| 远程登录 | ssh root@192.168.202.136 | 连接远程服务器 |
| 断开连接 | exit | 退出当前 SSH 会话 |
| 重启系统 | reboot 或 shutdown -h now | 重启服务器 |
| 关机 | shutdown | 默认 30 秒后关机 |
| 立即关机 | shutdown -h now | 立刻关机 |
| 定时关机 | shutdown -h 10 | 10 分钟后关机 |
2.3 文件与目录操作
新建文件 —— touch
# 创建单个文件
touch 1.txt
# 批量创建文件(花括号展开)
touch test{1..10}.txt
touch test{a..f}.txt
# 在指定目录下创建文件
touch /root/4.txt
注意:如果 touch 的文件名称重复了,不会覆盖原文件,只会更新时间戳。
查看目录内容 —— ls
ls 全称 list,常用参数:
| 参数 | 作用 |
|---|---|
-a | 显示隐藏文件(以 . 开头的文件) |
-l | 竖向列表,展示详细信息(注意是字母 L,不是数字 1) |
-h | 以易于阅读的形式显示文件大小,需与 -l 一起用 |
-1 | 每行只显示一个文件名(注意是数字 1) |
# 查看文件是否存在
ls test09.txt
# 查看所有 txt 结尾的文件
ls *.txt
# 一行一个文件显示
ls -1
# 查看所有文件(包括隐藏文件)
ls -a
# 查看所有文件并详细显示
ls -al
# 类似 Windows 的详细列表
ls -l
安全视角:Linux 下以
.开头的文件是隐藏文件,攻击者经常把木马或后门脚本命名为.cache.php、.config.py之类的隐藏文件来躲避排查。用ls -a才能看到这些「看不见的文件」。

三、MySQL:数据库安全的核心
数据库是网站的「数据心脏」,用户信息、文章内容、后台账号密码都存在里面。SQL 注入、拖库、提权,几乎都绕不开 MySQL。
3.1 安装与初始化
CentOS 7 默认安装的是 MariaDB(MySQL 的开源分支,版本 5.5.68 或 5.5.65)。
查看版本:
rpm -qa | grep mariadb
安装最新版 MariaDB(修改 yum 源为清华镜像):
# 编辑 yum 源配置文件
vim /etc/yum.repos.d/mariadb.repo
写入以下内容:
[mariadb]
name=mariadb laster version
baseurl=http://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.6/centos7-amd64/
gpgcheck=0
安装并启动:
# yum 安装 mariadb
yum install mariadb-server -y
# 启动并设置开机自启
systemctl start mariadb
systemctl enable mariadb
# 安全初始化(必做!)
mysql_secure_installation
mysql_secure_installation是安装后的标准安全加固步骤:设置 root 密码、删除匿名用户、禁止 root 远程登录、删除测试数据库。很多新手跳过这一步,直接给服务器留下了「无密码 root 远程登录」的致命漏洞。
3.2 用户授权:权限最小化原则
默认情况下,MySQL 和 MariaDB 都不允许 root 用户远程连接登录。
授权语法:
grant 操作(增删改查, all) on 库名.表名 to 用户名@'%' identified by '密码';
实际示例:
-- 给 root 用户授权从 192.168.31.% 网段远程登录
grant all on *.* to root@'192.168.31.%' identified by 'aini';
-- 给 wordpress 用户授权操作 wordpress 库的所有表
grant all on wordpress.* to wordpress@'192.168.61.%' identified by '123456';
-- 给 jaden 用户只授权操作 wordpress 库的 t1 表
grant all on wordpress.t1 to jaden@'192.168.61.%' identified by '123';
核心原则:网站代码中连接数据库用的是哪个用户,那个用户有什么权限,网站代码就能对数据库做什么操作。 这就是为什么 SQL 注入的危害程度取决于数据库用户权限——如果网站用 root 连库,注入后直接可以读写所有库、甚至写文件拿 shell;如果用最小权限用户,危害就小得多。
用户管理常用命令:
-- 查看某个用户有哪些权限
show grants for root@'%';
-- 单独创建用户(无任何权限,只能登录)
create user wang@'%' identified by '123';
-- 给用户授权
grant all on wordpress.* to wang@'%';
-- 删除用户
drop user wang@'%';
-- 查看用户权限
show grants for jaden@'192.168.61.%';
四、PHP:Web 漏洞的「母语」
PHP 曾经是互联网上使用最广泛的服务端脚本语言,WordPress、Discuz、DedeCMS 等经典建站程序都是 PHP 写的。学 Web 安全,PHP 是绕不开的。
4.1 变量与常量
PHP 中的变量用美元符号 $ 后面跟变量名表示,变量名区分大小写。
<?php
$num = 3.1415;
$a = 5;
$b = 6;
echo $a + $b; // 输出 11
?>
定义常量(常量名一般都是大写字母):
// 方式1:define()
define('website', 'php中文网');
// 方式2:const
const FOO = 'BAR';
// 注意:const 方式不能用在 if 判断中
4.2 单引号、双引号与字符串拼接
这是 PHP 中最基础也最容易踩坑的地方:
<?php
header("Content-Type: text/html; charset=utf-8");
$name = 'kobe';
echo $name;
// 变量不加符号,遇到字符串拼接需要用 . 连接
echo '最喜欢的NBA球星是' . $name . '<br>';
// 单引号:不解析变量,原样输出
echo '最喜欢的NBA球星是$name<br>';
// 双引号:解析变量
echo "最喜欢的NBA球星是$name<br>";
?>
安全视角:单双引号的区别直接关系到 SQL 注入的利用方式。如果代码用单引号包裹 SQL 语句中的变量,注入时需要先闭合单引号;如果用双引号,情况又不同。理解字符串解析机制,是手写注入 Payload 的基础。
4.3 数据类型
PHP 支持 8 种数据类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| 布尔型 | 非 0 为 true,0 或 false 为假 | true / false |
| 整型 | 整数 | -99999 / +99999 |
| 浮点型 | 小数 | -1.9 / 3.25 / 3.00005 |
| 字符串 | 字符序列 | 'hello' / "hello" |
| 数组 | 容器类型,可存放各种基础数据 | $d = array('a', 1, 'c', array(1,2,3)); |
| 对象 | 需要学到类之后使用 | object |
| 资源类型 | 文件等资源数据 | Resource |
| NULL | 空,提前定义但不赋值 | $a = null; |
查看变量类型:
// 只显示类型
gettype(传入一个变量var);
// 显示类型和具体内容(打印数组用这个)
var_dump(传入一个变量var);
// 打印数组
$a = array(1,2,3);
print_r($a);
数组注意点:
echo只能输出字符串,直接echo $d会报错;数组通过索引取值,索引从 0 开始,即$d[0]。
4.4 Session:登录态的核心
Session 是 PHP 中管理用户登录状态的标准机制:
<?php
// 验证的地方
session_start();
isset($_SESSION['user']);
// 登录成功设置
session_start();
$_SESSION['user'] = $u;
$_SESSION['login_time'] = time();
$_SESSION['id'] = '123';
$_SESSION['login_status'] = 1;
?>
Session 存放位置:在
php.ini配置文件中可以找到session.save_path。安全视角:Session 劫持、Session 固定、Session 文件包含(LFI 包含 session 文件 getshell)都是经典的 PHP 安全攻击手法。理解 Session 的工作原理和存储位置,才能理解这些漏洞的成因。
五、Docker:容器化时代的安全新边界
Docker 改变了应用的部署方式,也带来了新的安全攻击面——容器逃逸、镜像漏洞、错误配置导致的权限提升,都是现代云安全的重要课题。
5.1 CentOS 安装 Docker
# centos7 上用 yum 安装
yum install docker -y
# 启动 docker
systemctl start docker
# 设置开机自启
systemctl enable docker
快速体验:
# 体验 docker 版 nginx 最新版
docker run -d -p 80:80 nginx
# 体验 docker 版 nginx 1.16
docker run -d -p 81:80 nginx:1.16
# 体验 wordpress(先跑 mysql,再链接 wordpress)
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -d --link mysql:mysql -p 86:80 wordpress:5.6
5.2 Kali 安装 Docker
Kali 属于 Debian 系列,用 apt 安装:
# 添加 docker 的 gpg 密钥(签名用)
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
# 添加 docker 的 apt 源
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
# 更新 apt 缓存
apt update
# 安装 docker
sudo apt-get install docker docker-compose -y
# 或
sudo apt-get install docker.io
# 安装完成后 docker 自动启动
systemctl status docker
# 查看 docker 版本
docker -v
一句话总结:CentOS 用 yum 安装,Kali 用 apt 安装(Kali 属于 Debian 系列)。
5.3 Docker Compose:多容器编排
docker-compose.yml 示例片段:
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 123456
常用 docker-compose 命令:
# 创建并启动(启动后可通过浏览器访问)
docker-compose up -d
# 停止并删除
docker-compose down
# 重启
docker-compose restart
# 停止
docker-compose stop
# 启动
docker-compose start
安全视角:Docker 的安全问题往往出在配置上——
--privileged特权模式、挂载宿主机/var/run/docker.sock、容器以 root 运行、镜像中存在已知漏洞。做容器安全,核心是「最小权限原则」:不用特权模式、不挂载敏感目录、以非 root 用户运行、定期扫描镜像漏洞。
六、HTTP 协议与抓包:Web 安全的语言
HTTP 是 Web 通信的基础协议。做 Web 渗透,你看到的每一个请求、每一次交互,本质上都是 HTTP 报文。不懂 HTTP,就看不懂 Burp Suite 里的流量,更写不出 Web 漏洞的利用脚本。
6.1 常用端口速查表
应用层常见的端口和对应传输层协议:
| 服务 | 端口 | 传输层协议 |
|---|---|---|
| HTTP | 80 | TCP |
| DNS | 53 | TCP 和 UDP |
| HTTPS | 443 | TCP |
| SMB | 445 | TCP |
| TELNET | 23 | TCP |
| FTP | 20/21 | TCP |
安全视角:端口就是服务的「门牌号」。信息收集中的端口扫描(Nmap),本质就是在探测目标开了哪些「门」,每个门后面跑的是什么服务、什么版本,进而查找对应漏洞。比如看到 445 端口开放,就会想到 SMB 服务和永恒之蓝;看到 23 端口开放,就知道 Telnet 这种明文传输的古老服务可能存在弱口令。
七、信息收集:渗透测试的第一步
渗透测试的标准流程中,信息收集是第一步,也是最关键的一步。收集到的信息越多,后续攻击面就越大。 信息收集分为主动信息收集和被动信息收集,域名信息查询是被动收集中最基础的环节。
7.1 域名 WHOIS 信息查询
WHOIS 是用来查询域名注册信息的协议,可以查到域名注册人、注册邮箱、注册电话、注册商、DNS 服务器、注册时间和到期时间等关键信息。
常用查询网站:
| 平台 | 地址 |
|---|---|
| 站长工具 | https://whois.chinaz.com/ |
| 中国万网(阿里云) | https://whois.aliyun.com/ |
| 西部数码 | https://whois.west.cn/ |
| 新网 | http://whois.xinnet.com/domain/whois/index.jsp |
| 纳网 | http://whois.nawang.cn/ |
| 中资源 | https://www.zzy.cn/domain/whois.html |
安全视角:WHOIS 信息是信息收集的金矿——注册邮箱可以用来撞库、钓鱼;注册人姓名可以关联到其他资产;DNS 服务器可以用来做 DNS 域传送漏洞测试;注册时间可以判断网站的新旧程度。当然,现在很多域名开启了 WHOIS 隐私保护,但通过历史 WHOIS 查询(如 SecurityTrails、Whoxy)仍然可以挖到曾经暴露过的信息。
八、总结:技术栈如何串成安全能力
回头看这七个模块,它们不是孤立的知识点,而是一条完整的能力链:
Windows/Linux 系统基础
↓ (理解操作系统如何工作)
MySQL + PHP
↓ (理解网站如何存储和处理数据)
Docker
↓ (理解现代应用如何部署和隔离)
HTTP 协议
↓ (理解 Web 通信的语言)
信息收集
↓ (在真实目标上应用以上所有知识)
渗透测试 / 安全运维 / 应急响应
- 不懂操作系统,你拿到 shell 之后连文件都找不到,更别说提权和内网漫游;
- 不懂数据库,你看不懂 SQL 注入的原理,也不知道如何加固数据库权限;
- 不懂 PHP,你读不懂漏洞代码,写不出 Exploit;
- 不懂 Docker,你在云原生环境下寸步难行,容器逃逸更是无从谈起;
- 不懂 HTTP,你看不懂抓包流量,Burp Suite 就是个摆设;
- 不懂信息收集,你面对一个目标根本无从下手。
网络安全的本质,是对计算机系统各层知识的综合运用。 把基础打牢,后面的漏洞原理、工具使用、攻防技巧,都是水到渠成的事。
本文基于网络安全入门学习笔记整理,涵盖了从零开始学习网安必须掌握的核心技术模块。建议按照「系统 → 数据库 → 语言 → 部署 → 协议 → 侦察」的顺序逐步学习,每个模块都动手实操,不要只看不练。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐





所有评论(0)