本文介绍了新手入门网安前必须了解的linux基础知识。
Linux操作系统
Linux发行版本
-
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本。前者以著名的Redhat(RHEL)为代表, 后者以Debian为代表。
- ebian:由志愿者开发的发行Linux的非商业项目
- Ubuntu:Debian项目构建的一个Linux发行版,专注于提供用 户友好的桌面和服务器操作系统。
- RedHat:红帽公司,产品包括RHEL、Fedora Core与CentOS。
- CentOS:RHEL依照开放源代码规定释出的源码所编译而成。 Kali:基于Debian的Linux发行版,预装了许多安全工具。
Linux文件与目录
目录结构
常见的目录
- etc: 系统配置所在文件夹
- home:除了root用户以外,其他所有用户都会在home中有一个同名文件夹,且 用户对自己的文件夹具有完整操作权限。
- root:只有root用户才有权限操作。
- usr:存放系统软件资源
- tmp:系统临时文件等所在目录。
- bin:命令工具
文件与目录的相关命令
查看
-
查看
pwd:查看当前所在文件位置 cd :切换目录 (后面接绝对路径或相对路径) cd . :.表示当前路径 cd .. :..表示父级路径 ls :以平铺方式显示当前目录包含内容; ls -a :查看隐藏文件 ls -l :列出当前目录下文件(详细) ll :以详细列表形式显示当前目录包含内容。
增删改
-
增删改
mkdir -p 路径:如果路径中包含了不存在的路径,自动创建。 mkdir -p test01/test01-1 : 同时创建父子目录(-p表示多级创建) rmdir 文件路径 :删除空目录 rm 文件名 :删除 rm -r 文件夹 :递归删除非空目录 rm -f 文件 :强制删除某文件 touch 文件名 :创建文件 rm 文件名 : 删除
文件权限
文件权限解读
-
文件权限解读
d后每3个字符为一组,分别是文件拥有者权限、同一组用户权限、其他用户权限
数字15代表里面有15份文件,后面接kali kali分别是用户和组
文件权限管理
-
更改文件权限
chmod 例如: chmod 777 文件名 chmod u=rwx,g=rx,o=rx 文件名
更改文件所有者
-
更改文件所有者
chown 例如: chown kali:kali test 修改为kali用户,kali组 chown 命令用于改变文件或目录的所有者和/或组
Linux用户和组
用户(User)
- 用户( User) 用户账户:每个使用Linux系统的个体或进程都需要一个用户账户。用户账户包含了用户的 信息,如用户名、用户ID(UID)、用户组、家目录、默认Shell等。
- UID(User ID):每个用户都有一个唯一的数字标识符,称为用户ID(UID)。UID为0的用户是超级用户(root),拥有系统上的所有权限。
- 用户信息文件:/etc/passwd文件包含了系统上所有用户的信息。每一行代表一个用户,包 括用户名、UID、组ID(GID)、用户全名或描述、家目录、默认Shell等信息。
- 用户密码文件:用户的密码信息不直接存储在/etc/passwd文件中,而是存储在/etc/shadow 文件中。该文件包含了加密后的密码、密码最后一次更改的日期、密码的最小和最大有效期等信息
组(Group)
- 用户组:用户组用于将多个用户组织在一起, 以便于对文件或目录的权限管理。用户可以是多个 组的成员。
- GID(Group ID):每个用户组都有一个唯一 的数字标识符,称为组ID(GID)。
- 组信息文件:/etc/group文件包含了系统上 所有用户组的信息。每一行代表一个组,包括组名、 GID、组成员列表等信息。
用户与组的相关命令
-
查看
查看当前用户:whoami 查看当前用户组:groups 查看当前用户详细信息:id 同户名 查看所有用户:cat /etc/passwd 查看所有组:cat /etc/group
-
增删改
添加用户:useradd 用户名 #新增某用户就直接新增对应的组了 删除用户:userdel 用户名 修改用户信息:usermod 例子:usermod -aG 组名 用户名 #将某用户加入某组 创建新用户组:groupadd 删除用户组:groupdel 查看所有组:cat /etc/group 修改用户组信息:groupmod
-
权限相关
切换用户:su - 用户名(不加用户名表示切换root) 以系统管理者的身份执行指令:sudo 具体命令 配置密码:passwd 用户名(一般要在前面加sudo) 修改root密码:passwd root <密码>
所有用户和所有组信息
-
cat /etc/passwd
用户名:密码:用户ID:组ID:用户说明:用户目录:shell命令解释器
-
cat /etc/group
组名:组密码:组标识号:组成员(用户列表,每个用户之间用,号 分割;本字段可以为空;如果字段为空表示用户组为GID的用户名)
由上图可见,组和用户可以是一对一、一对多、多对一以及多对多的关系
vim编辑器
vim工作模式
命令模式
-
该状态下敲击键盘会被Vim识别为命令,而非输入字符。 常用命令: i \a 切换到输入模式,在光标当前位置开始输入文本 o 在当前行的下方插入一个新行,并进入插入模式 dd 删除当前行 yy 复制当前行 p 粘贴剪贴板内容到光标下方 u 撤销上一次操作 : 切换到底线命令模式
底线命令模式
-
在命令模式下按下 ”:“(英文冒号)就进入 了底线命令模式 常用命令: q 退出 wq 保存并退出vim编辑 q! 强制退出vim编辑 不保存
Linux进程与软件管理
进程管理
-
# pid:进程标识符 ps:显示当前终端下运行的进程 ps -aux:显示所有用户的所有进程,包括系统进程,提供更详细的进程信息 kill (PID): 终止指定pdi进程 kill -9 (pid):强制终止进程
包管理器
-
-
-
apt(apt-get) 需要root用户权限,不然会报错,权限不足 apt update 列出所有可更新的软件清单命令 apt upgrade 升级软件包 apt install <package_name> 安装指定的软件命令 apt remove <package_name> 删除软件包命令 apt list --installed 列出所有已安装的包 apt list --all-versions 列出所有已安装的包版本信息
安装镜像源
-
源列表
#阿里源 deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-freecontrib #中科大源 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-freecontrib #清华大学源 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contribnon-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling maincontrib non-free #浙大源 deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free #东软大学源 deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib #网易 Kali 源 deb http://mirrors.163.com/debian wheezy main non-free contrib deb-src http://mirrors.163.com/debian wheezy main non-free contrib
-
更换镜像源
vim /etc/apt/sources.list
-
推荐使用阿里镜像源
#sources.list内容 # See https://www/kali.org/docs/general-use/kali-linux-sources-list-repositories deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware # Additional line for source packages # deb-src http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
-
更新索引
# 部分因为某些原因可能需要加证书才能继续进行包安装 wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add apt-get update
防火墙(暂时了解)
iptables-静态防火墙
iptables介绍
- 早期的 Linux 系统中默认使用的是 iptables 防火墙,配置文件在/etc/sysconfig/iptables
- 主要工作在网络层该防火墙使用链式规则,只可以过滤互联网的数据包,无法过滤从内网到内网的数据包
- iptables 只可以通过命令行进行配置
- iptables 默认是允许所有,需要通过拒绝去做限制
- iptables 在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)
iptables工具安装
-
对于基于 Debian 的系统,使用以下命令安装
sudo apt install iptables
-
对于基于 RPM 的系统,使用以下命令
sudo yum install iptables
对于 CentOS 8 及更高版本,使用 dnf install iptables
firewalld-动态防火墙
firewalld介绍
- 取代了之前的 iptables 防火墙,配置文件在/usr/lib/firewalld 和/etc/fiewalld 中
- 主要工作在网络层 新增区域概念,不仅可以过滤互联网的数据包,也可以过滤内网的数据包
- firewalld 不仅可以通过命令行进行配置,也可以通过图形化界面配
- firewalld 默认是拒绝所有,需要通过允许去放行
- firewalld 可以动态修改单条规则,动态管理规则集(允许更新规则而不破环现有会话和连接,可以守护进程)
firewalld安装
-
在安装 firewalld 之前,建议先更新系统的软件包列表。
-
对于基于 RPM 的系统(如 CentOS、Fedora 等),可以使用以下命令:
sudo yum check-update
-
对于使用 dnf 的系统(如较新的 CentOS 版本):
sudo dnf check-update
-
对于基于 Debian 的系统(如 Ubuntu),虽然通常不预装firewalld,但也可以使用 apt 命令进行安装(不过通常推荐使用 UFW 作为默认防火墙)
sudo apt update sudo apt install firewalld
网安作为攻击方,很少用防火墙,所以这里仅先了解即可
Linux Shell
什么是Shell
-
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
-
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
-
Shell 脚本(shell script),是一种为shell编写的脚本程序。与Windows 批处理一样,其意义为便于批量处理多种操作
-
由于bash易用与免费,其被广泛使用也是大多数Linux系统的默认Shell。 (Kali目前为zsh,兼容bash)
写一个简单的Shell脚本
-
创建脚本文件,shell脚本通常以.sh结尾
touch test.sh
-
编写内容
#!/bin/bash #用来指定该脚本的解释器 echo "hello world" #把指令打印到终端
-
执行脚本
./test.sh # 若操作权限不够,需要提权 chmod 777 ./test.sh
xshell和xftp
xshell和xftp是什么
-
xshell业界最强大的ssh客户机
-
xftp可以轻松的通过过网络进行文件传输
使用xshell连接kali
打开kali的ssh功能
-
使用vim编辑ssh功能的配置文件
# 编辑ssh功能的配置文件 vim /etc/ssh/sshd_config
-
修改sshd_config文件以允许ssh
# 修改sshd_config文件 # 第一步 改33行(右下角有行数), # PermitRootLogin prohibit-password 改为: PermitRootLogin yes # 取消注释,允许root用户通过ssh登录 # 第二步 改57行 # PasswordAuthentication no 改为: PasswordAuthentication yes # 允许通过密码登录 esc -> :wq -> 回车
-
打开kali的ssh功能
service ssh start
-
使ssh功能开机自启动
update-rc.d ssh enable
-
检查ssh状态
systemctl status ssh # 查看是否为 enable 和 active(running) 状态
-
查看kali的ip地址
ifconfig # 记录下该IP地址
xshell连接
-
新建 -> 连接-用户身份验证 -> 输入ip和port -> 连接 -> 输入用户名密码
VMware三种网络过连接模式,对应VMware三张网卡(VMnet),主机通过虚拟网卡和VMware的网卡进行通信,编号是对应的。主机ipconfig后发现,一个虚拟机对应两张网卡,分别供NAT模式和仅主机模式使用
- 桥接模式:使用的是和主机同一种网络,不需要借助主机的虚拟网卡
- NAT模式:和物理机不在一个网络,IP地址发生了变化
- 仅主机模式:和物理机不在一个网络,IP地址发生了变化