零基础入行网络安全,到底要学哪些东西?很多人一开始就扎进漏洞利用工具里,却连操作系统目录都认不全。这篇文章把网安入门路上绕不开的 七大技术模块 一次性讲透——Windows、Linux、MySQL、PHP、Docker、HTTP 协议、信息收集,每个模块都告诉你「学什么」和「跟安全有什么关系」。


一、Windows 系统:攻防的第一战场

Windows 至今仍是桌面端占有率最高的操作系统,也是内网渗透中最常见的目标。理解 Windows 的基础结构,是做主机安全、应急响应和内网渗透的前提。

1.1 系统重要目录

搞安全的第一步,是知道文件都在哪:

目录作用安全意义
Program Files64 位程序默认安装目录排查可疑软件、提取工具版本信息
Program Files (x86)32 位程序安装目录注意 x86 是 x86_32 简写,x64 是 x86_64
Windows系统程序核心目录系统文件篡改、驱动级恶意程序的藏身地
用户(Users)多用户桌面目录每个用户的独立文件夹,浏览器记录、桌面文件都在这

应急响应中,攻击者常常把木马伪装成系统文件放在 Windows\System32 下,或者在用户目录的 AppData\Roaming 里放持久化程序。认识目录结构,才能一眼看出「不该出现的东西」。

1.2 开机自启动:持久化的常用入口

攻击者拿到一台 Windows 主机后,第一件事往往是「留后门」,开机自启动就是最基础的持久化手段。

设置方法:

  1. Win + R,输入 shell:startup 回车
  2. 打开的文件夹路径形如:
    C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    
  3. 把应用程序的快捷方式拖进这个文件夹,开机就会自动运行

安全视角:做应急响应时,这个启动文件夹是必查项之一。很多初级木马就是靠扔一个快捷方式在这里实现自启的。

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 的启动、硬件驱动加载以及应用程序运行,在整个系统中起着核心作用。

安全视角:注册表是恶意程序持久化的「重灾区」——RunRunOnce 等键值可以让程序开机自启;浏览器劫持、文件关联篡改也都通过注册表实现。做主机加固和应急响应,注册表是必须掌握的领域。


二、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 会话
重启系统rebootshutdown -h now重启服务器
关机shutdown默认 30 秒后关机
立即关机shutdown -h now立刻关机
定时关机shutdown -h 1010 分钟后关机

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 常用端口速查表

应用层常见的端口和对应传输层协议:

服务端口传输层协议
HTTP80TCP
DNS53TCP 和 UDP
HTTPS443TCP
SMB445TCP
TELNET23TCP
FTP20/21TCP

安全视角:端口就是服务的「门牌号」。信息收集中的端口扫描(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 就是个摆设;
  • 不懂信息收集,你面对一个目标根本无从下手。

网络安全的本质,是对计算机系统各层知识的综合运用。 把基础打牢,后面的漏洞原理、工具使用、攻防技巧,都是水到渠成的事。


本文基于网络安全入门学习笔记整理,涵盖了从零开始学习网安必须掌握的核心技术模块。建议按照「系统 → 数据库 → 语言 → 部署 → 协议 → 侦察」的顺序逐步学习,每个模块都动手实操,不要只看不练。
请添加图片描述
请添加图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐