前言
这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段渗透测试工具第1篇。
喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术
Kali Linux 是一款广受网络安全领域欢迎的流行 Linux 发行版。它以其强大的工具和功能而闻名,成为安全专业人士、白帽黑客和网络安全研究人员的优秀选择。
0x00-Kali Linux简介
Kali Linux 的核心基于 Debian-testing 分支构建,专为网络分析师、渗透测试员和网络安全专业人员设计。它是由 Offensive Security 维护的基于 Debian 的 Linux 发行版,由 Mati Aharoni 和 Devon Kearns 开发。Kali Linux 附带了全面的预安装安全工具集,可用于各种目的的安全测试。它是一款开源操作系统,可以免费下载和使用。
1、Kali Linux的由来
Kali Linux 最初于 2013 年 3 月作为 BackTrack Linux 的继任者发布。BackTrack 是由 Offensive Security 创建的一款广泛用于渗透测试和数字取证领域的流行 Linux 发行版,专注于信息安全培训和渗透测试服务。自首次发布以来,Kali Linux 经历了许多更新和改进,现已成为安全领域最受欢迎的 Linux 发行版之一。
2、Kali Linux的特点和使用场景
Kali Linux 预装了许多安全专业人士、白帽黑客和网络安全研究人员必备的工具。它的用户界面友好,即使是初学者也很容易上手。该系统高度可定制,可按用户需求进行调整。它还兼容各种硬件,是适用于桌面、笔记本电脑和树莓派等小型设备的通用操作系统。
另外,它还有一个被称为 Kali NetHunter 的特殊版本,主要提供针对 Android 操作系统的工具。
3、开始使用Kali Linux
有多种使用 Kali Linux 的方法,因此安装选项可能有所不同。渗透测试或安全测试的常规方法是使用 LIVE 媒介,Kali Linux 及其工具可以通过 USB 磁盘在受感染或易受攻击的系统上运行。
此外,Kali Linux 也可以安装在虚拟机或物理机上。安装过程简单,几分钟内即可完成。Offensive Security 在其网站上提供了详细的 Kali Linux 安装说明。
安装 Kali Linux 或从 ISO 启动后,您需要先熟悉它的界面和功能,尤其是第一次使用。
Kali Linux 使用轻量级和快速的 Xfce 桌面环境,带来了传统的菜单和图标驱动的桌面。主要的应用程序菜单将所有工具分类,以便更容易使用。
0x01-Kali Linux安装之vmware
Kali Linux 预装了广泛的基本安全工具,包括:网络扫描、漏洞评估、密码破解和取证分析等,这些工具对于安全测试至关重要。Kali Linux 最受欢迎的工具包括:Nmap、Metasploit、Aircrack-ng 和 John the Ripper 等。
此外,Kali Linux 还包括一些高级安全工具,如 Burp Suite、OWASP ZAP、社会工程学工具包(SET)和 Wireshark 等。这些工具比较复杂,需要较高技术、技能才能有效使用。但它们对全面的安全测试至关重要,并被全球安全专业人员广泛使用。
Linux Kali之vmware安装
双击安装程序
下一步,勾上同意继续下一步
到这里可以更改位置
继续下一步
再来
安装!
到这里点击许可证
然后就完成啦
0x02-Kali Linux虚拟机的安装
Kali Linux官网下载地址:https://www.kali.org/get-kali/#kali-platforms
下载镜像文件或者下载打包好的虚拟机文件压缩包(这里我推荐新手下载压缩包文件,不仅方便而且后面也可以根据自己的需求去配置性能)
虚拟机文件压缩包 我们解压打开.vmx文件
在虚拟机的kali界面
编辑我们虚拟机的配置
0x03-Kali Linux更新apt源
管理工具apt介绍:apt是Advanced Packaging Tool的简称,一款安装包管理工具在下,我们可以使用apt命令可用于软件包的安装 删除 清理等,类似于Windows中的软件管理工具。
1、Kali 更新apt源
1. 输入用户名和密码进入系统
2.打开终端
3.终端内输入 sudo vim /etc/apt/sources.list 然后输入密码(root账户不需要输入密码)
sudo vim /etc/apt/sources.list
4.按 i 进入编辑模式,将官方的更新源注释掉
5.在下方输入以下内容
#中科大
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-free contrib
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
输入完成后 按Esc退出编辑模式 再按Shift+;输入 wq 保存退出
6.更新命令——对软件进行一次整体更新
依次使用下面的三条命令(若出现选择界面,选择YES)
apt-get update & apt-get upgrade
apt-get dist-upgrade
apt-get clean
2、yum使用
Yum 简介
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
常用的 Yum 命令
1、显示已经安装的软件包
yum list installed
2、查找可以安装的软件包 (以 tomcat 为例)
yum list tomcat
3、安装软件包 (以 tomcat 为例)
yum install tomcat
4、卸载软件包 (以 tomcat 为例)
yum remove tomcat
5、列出软件包的依赖 (以 tomcat 为例)
yum deplist tomcat
6、-y 自动应答yes
我们可以用 -y 来应答所有的 yes , 比如我们安装 tomcat 的时候,用下面的命令,将安装任务一气呵成,不会中断。
yum -y install tomcat
7、info 显示软件包的描述信息和概要信息
yum info tomcat
8、升级软件包
yum update #升级所有的软件包
yum update tomcat #升级某一个软件包 ,以升级 tomcat 为例
yum check-update #检查可更新的程序
0x04-Kali Linux虚拟机中网络配置
简介:
基础介绍vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式)。那么这些都是有什么作用呢?VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。
VMware虚拟机三种网络模式详解:
同时,在主机的“网络连接”中我们可以看到这两块虚拟网卡,VMware Network Adapter VMnet1 作用于仅主机模式,用来实现虚拟机和物理机进行通信,和联网无关系,它的联网需要物理网卡的共享才能上网VMware Network Adapter VMnet8 作用于NAT模式,用来实现虚拟机和物理机进行通信,和联网无关系,它是借助于虚拟nat进行联网如果将这两块卸载了,可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。看到这里,大家肯定有疑问,为什么在物理机上没有VMware Network Adapter VMnet0虚拟网卡呢?因为桥接模式是通过虚拟网桥进行通信和联网的,而不需要虚拟网卡来使虚拟机和物理机进行通信。
Bridged(桥接模式):
桥接模式就是将主机网卡与虚拟机的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。
在虚拟机中的使用:
虚拟机–>设置–>虚拟设置来设置网卡模式–>桥接网卡“编辑”–>“虚拟网络编辑器”–>“更改设置”,设置完后【确认】
NAT(地址转换模式):
什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。
Host-Only(仅主机模式):
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
0x05-Kali Linux开启SSH远程登录服务
SSH: 安全通道协议,主要实现字符界面的远程登录,远程复制
对通信双方的数据进行加密处理,用于远程管理
建立在应用层,传输层的安全协议
通过网络和端口进行加密通信,防止信息泄露
数据传输是压缩的,可用提高传输速度
SSH客户端:putty,Xshell,CRT,Mobaxterm,Finalshell
实现步骤:
1.先用命令进入到 cd /etc/ssh ssh目录下,用ls命令查看配置文件
2.用vim进行编辑文件 vim ssh_config
\,然后输入:wq进行保存
3.用命令vim sshd_config 进入修改配置文件 sshd_config
4.重启ssh服务
方法一:service ssh start
方法二:service ssh restart没有修改配置文件sshd_config的情况下,能登录的话,这条命令就不需要了
5.查看ssh服务状态是否正常运行
service ssh status
6.使用xshell进行连接
0x06-Kali Linux的cd命令及路径区别和系统目录各作用
1、cd命令
cd命令的作用:
英文为:change directory,用于切换当前工作目录,既可用于切换绝对路径,如cd /tmp/us,也可用于切换相对路径,如cd …。注意cd之后需用英文状态下的空格分隔。
cd命令语法详解:
命令行:cd [目录名]
使用案例:
切换到更目录
2、路径区别
**相对路径:**就是相对于自己的目标文件的位置。(指以当前文件所处目录而言文件的位置)————以引用文件之间网页所在位置为参考基础,而建立出的目录路径。因此当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。
**绝对路径:**是指文件在硬盘上真正存在的路径。(指对站点的根目录而言某文件的位置)————以web站点为根目录为参考基础的目录路径,之所以成为绝对,意指当所有网页引用同一文件时,所引用的路径都是一样的。
案例:
绝对路径由根目录开始写起的文件名或目录名/home/aaa/tesh.sh
相对路径相对于目前路径的文件名写法./home/dmtsai …/…/home/aaa/ 开头不是/
注意:
1、在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑,只要考虑他们不同之处就可以了。
2、 . 代表目前所在的目录 …代表上一层目录 /代表根目录
3、系统目录各作用
/ 根目录 系统最重要的一个目录 所有目录都由根目录衍生,根目录也与开机还原系统修复等动作有关
根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录在同一分区 。可以提高性能,保护文件系统根目录下应该存在的目录
/bin 放置单人维护模式下还能够被操作的指令
/boot 主要放置开机会使用到的档案,包括linux核心档案,开机选单,开机所需配置文件
/dev LINUX中,任何装置与接口设备都是以档案形态存在于这个目录中,
/etc 系统主要配置文件几乎都在这里,各文件属性可以让一般用户查看,只有root有权力修改
/etc/init.d 所有服务预设启动script都在这里。
/etc/dinetd.d/super daemon管理的各项服务的配置文件目录
/etc/x11 与x window有关的配置文件
/home系统默认的用户家目录
/lib开机时会用到的函数库,以及在/bin /sbin会使用的函式库 类似外挂 /lib/modules放置核心相碰模块(驱动程序)
/media放置的是可移除的装置 软盘光盘DVD
/mnt暂时挂载一些装置,类似/media
/opt自行安装软件的地方 也可以在/usr/local
/rootroot的家目录 进入单人维护模式时仅挂载根目录,所以需要与根目录在同一分区
/sbin为开机过程中所需要的指令 开机修复系统还原, 服务器软件程序一般旋转在/usr/sbin 本机自行安装的软件产生的系统执行文件放置在/usr/local/sbin
/srv一些网络服务启动后,所需取用的数据目录
/tmp临时目录 任何人都可以存取
/lost+found在文件系统出错时,将一些遗失片段放置在此。
/proc此目录是一个VFS,所旋转的数据在内存中,显示内核一些信息
/sys与/proc类似,记载已经加载的核心模块、硬件装置等
不可以与根目录分开的目录
/etc配置文件
/bin重要执行档
/dev所需要的装置档案
/lib执行档所需的函式库与核心所需模块
/sbin重要系统执行文件
/usr Unix Software Resource的缩写, 也就是『Unix操作系统软件资源』所放置的目录 类似\windows+\program files两个目录综合体。
/usr/bin/绝大部分用户可用指令都放在这里。/bin与开机过程有关
/usr/includec/ c++等程序的档头与包含档放置处
/usr/lib包含各应用软件的函数库,目标档案以及不被一般使用者惯用的执行档或脚本
/usr/local/系统管理员在本机自行安装自己下载的软件,建议安装在此目录,便于管理。
/usr/sbin/非系统非常运作需要的指令,如一些网络服务器软件的服务指令 daemon
/usr/share旋转共享文件的地方
/usr/src一般情况下原码建议旋转在这里。
/var主要针对常态性变动的档案,包括cache , log file,lock file, run file,数据库的档案等
/var/cache应用程序本身动作过程中产生的一些暂存档
/var/lib程序本身执行的过程中,需要使用到的数据文件放置的目录,在此目录下各软件要有各自目录
/var/lock/某些装置或档案一次只能被一个应用程序使用,同时有两个使用,会出错。需要将上锁lock
/var/log/登陆文件旋转的目录
/var/mail/旋转个人电子邮件信箱。
/var/run/某些程序或者服务启动后,会将PID旋转在这个目录下,这个目录通常旋转一些队列数据
0x07-Kali Linux的命令概述
1、shell详解
-
Linux系统中运行的一种特殊程序
-
在用户和内核之间作为一名“翻译官”
2、Kali Linux命令分类
3、Kali Linux命令行的格式
命令[选项][参数]
command [options] [arguments]
命令(command):选项是调整命令执行行为的开关,即,选项不同决定了命令的显示结果不同选项(options):选项是调整命令执行行为的开关,即,选项不同决定了命令的显示结果不同
-
长选项 -后面接单个字母
-
短选项 – 后面接单词
4、编辑Kali Linux命令行
Tab键 自动匹配命令或者文件名
反斜杠“\” 换行输入
Ctrl+Shift+C 复制
Ctrl+Shift+V 粘贴
Ctrl+a 光标跳到命令开头
Ctrl+e 光标跳到命令开头
Ctrl+u 清除命令
Ctrl+k 清除光标右侧命令
5、获得命令帮助的方法
提问:如何快速、正确使用命令完成操作?
方法:
1、使用help命令 /查看内部命令
2、使用“–help”选项/查看外部命令
3、使用man手册页
man使用教程:https://www.runoob.com/linux/linux-comm-man.html
0x08-Kali Linux的常用命令1
常用命令包括这些类型:创建目录和文件、复制、删除、移动目录和文件、查看及切换目录、查找目录和文件
cd 命令
cd命令的作用:(英文为:change directory)用于切换当前工作目录,既可用于切换绝对路径,如cd /tmp/us,也可用于切换相对路径,如cd …。注意cd之后需用英文状态下的空格分隔。
cd命令语法详解:cd [目录名]命令
使用实例
pwd 命令
pwd命令的作用:(英文全拼:print work directory) 命令用于显示工作目录。
pwd命令
语法详解:pwd [选项]
命令使用实例
ls 命令
ls命令的作用:(英文为:list)用于显示指定工作目录或文件内的内容,如不指定目录,将列出当前工作目录所含文件及子目录。
ls命令语法详解:ls [选项] [文件]
[选项] 参数:可以选择对应的选项进行查看。
[文件] 参数:可以是指定目录、文件名或者可以为空。为空时,将列出当前工作目录所含文件及子目录
du 命令
du命令的作用:(英文全拼:disk usage)命令用于显示目录或文件的大小。可以显示指定的目录或文件所占用的磁盘空间。
du命令语法详解:[-abcDhHklmsSx][-L <符号连接>][-X <文件>][–block-size][–exclude=<目录或文件>][–max-depth=<目录层数>][–help][–version][目录或文件]
命令使用实例
0x09-Kali Linux的常用命令2
mkdir命令
mkdir 命令的作用:((英文全拼:make directory)命令用于创建目录mkdir
命令语法详解:mkdir [-p] dirName
参数说明:
实例:
touch 命令
touch命令的作用:(命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
touch命令语法详解:touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][–help][–version][文件或目录…]
参数说明
实例
0x10-Kali Linux的常用命令3
cp命令
cp 命令的作用:(英文全拼:copy file)命令主要用于复制文件或目录。
cp 命令语法详解:cp [options] source dest
cp \[选项\] 源文件 目标文件
注意:source(源文件)表示要复制的文件或目录的路径,dest(目标文件)表示复制后的文件或目录的路径
cp [options] source… directory
参数说明:
实例
rm 命令
rm命令的作用:(英文全拼:remove)命令用于删除一个文件或者目录。
rm命令语法详解:rm [options] name…
参数说明
实例
mv命令
mv命令的作用:((英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。
mv命令语法详解:mv [options] source dest
参数说明
实例
0x11-Kali Linux的常用命令4
which命令
which 命令的作用:命令用于查找文件。指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which 命令语法详解:which [文件…]
参数说明
实例
find命令
find命令的作用:命令用于在指定目录下查找文件和目录。它可以使用不同的选项来过滤和限制查找的结果。
find命令语法详解:find [路径] [匹配条件] [动作]
参数说明注意:
1.路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
2.匹配条件 中可使用的选项有二三十个之多
3.动作 可选的,用于对匹配到的文件执行操作,比如删除、复制等
匹配条件
动作
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
正数应该表示时间之前,负数表示时间之内。例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
时间 n 参数的说明:
+n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
0x12-Kali Linux文件权限详解
文件权限
文件权限设计:系统中任何内容都可以用文件表示,其对文件设计了一套权限进行管理;文件权限共有11个字符,从左向右共分为5段(每段的具体说明如下表Linux权限设计说明所示)
权限字符串值表示内容说明
ugo权限字符串值组合对照表
文件权限的修改命令
chmod 命令的作用:(英文全拼:change mode)命令是控制用户对文件的权限的命令
语法:chmod [-cfvR] [–help] [–version] mode file…
注意:只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
实例
0x13-Kali Linux文件管理之查看和检索文件1
统计和检索文件之grep命令
命令的作用:(英文全拼:global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
命令语法详解:grep [options] pattern [files]
或者grep \[-abcEFGhHilLnqrsvVwxy\]\[-A<显示行数>\]\[-B<显示列数>\]\[-C<显示列数>\]\[-d<进行动作>\]\[-e<范本样式>\]\[-f<范本文件>\]\[--help\]\[范本样式\]\[文件或目录...\]
pattern - 表示要查找的字符串或正则表达式。
files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
常用的参数说明
实例
查看文件内容之more 命令
more命令的作用:more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
more命令语法详解:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames…]
参数说明
实例
常用操作命令
查看文件内容之less命令
命令的作用:less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
命令语法详解:less [参数] 文件参数说明
实例
查看文件内容之命令拓展
head 命令:可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容
tail 命令:可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
0x14-Kali Linux文件管理之查看和检索文件2
检索文件之grep命令
命令的作用:命令用于查找文件里符合条件的字符串或正则表达式。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
英文全拼:global regular expression
命令语法详解:grep [options] pattern [files]
或者grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]
常用参数说明
实例
0x15-Kali Linux压缩和解压
使用压缩和解压命令
gzip命令
命令的作用:gzip命令用于压缩文件。
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
命令语法详解:gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/fast][文件…] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/fast][目录]
常用参数说明
实例
bzip2命令
命令的作用:bzip2命令是.bz2文件的压缩程序。
bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
命令语法详解:bzip2 [-cdfhkLstvVz][–repetitive-best][–repetitive-fast][- 压缩等级][要压缩的文件]
参数说明
实例
使用tar归档和释放命令
命令的作用:(英文全拼:tape archive )命令用于备份文件。
tar 用于创建和解压归档文件的命令行工具,可以用来将多个文件和目录组合成一个单一的归档文件,也可以用来解压已经存在的归档文件。
常用参数说明
实例
0x16-Kali Linux之Vim编辑器
vim编辑器简介
**Vim编辑器介绍:**vim 是从 vi 发展出来的一个文本编辑器,支持 代码补全、编译 及 错误跳转 等方便编程的功能特别丰富,在程序员中被广泛使用,被称为 编辑器之神
**学习 vi 的目的:**在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vim进行快速的编辑即可。
**常见需要修改的文件包括:**源程序配置文件,例如 ssh 的配置文件 ~/.ssh/config
**作用:**在没有图形界面的环境下,要编辑文件,vi 是最佳选择!每一个要使用 Linux 的,都应该或多或少的学习一些 vi 的常用命令
Vim 编辑器的三种基本工作模式
命令模式
-
打开文件首先进入命令模式,是使用 vi 的 入口
-
通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除……
-
在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,都在 命令模式 下实现
末行模式 —— 执行 保存、退出 等操作
-
要退出 vi 返回到控制台,需要在末行模式下输入命令
-
末行模式 是 vi 的 出口
编辑模式 —— 正常的编辑文字
末行模式命令
移动光标命令
命令模式
复制、粘贴:vim中提供有一个 被复制文本的缓冲区
-
复制 命令会将选中的文字保存在缓冲区
-
删除 命令删除的文字会被保存在缓冲区
注意:在需要的位置,使用 粘贴 命令可以将缓冲区的文字插入到光标所在位置
删除和追加命令
恢复命令
0x17-Kali Linux之用户管理
用户、密码的作用(3A)
认证(Authentication):证明登录时的身份(用户名,密码)。
授权(Authorization):给某一身份赋予某一种权限。
审计(Accouting/Audition):在完成后,审查谁做了什么。
认证方式:用户+密码,需要对用户身份进行区分,不同用户分配不同的资源。只有密码的情况下,应用于不需要区分用户的身份的场景。
用户概述
Linux系统是一个多用户的系统,同一个账号可以多次同时登录,运行命令,命令会拿着当前用户的身份去访问相应资源。
用户类型
超级管理员:root。
普通用户:除root用户外的用户。
普通用户又分为两类:一种是系统用户,服务和内核态进程对应的用户;一种是登录用户,交互式登录。
UID
系统通过UID去区分用户,不是用户名,每一个用户都有一个唯一的标识。
0:超级管理员,可以用id root查看。
1-999:系统账号,保留给服务使用,一般不可登录。
1-200:由系统自动分配。
201-999:如果使用者有系统账号的需求时。
1000-600000:一般用于useradd命令添加的用户,可登录用户。
定义文件:/etc/login.defs 修改此文件不会影响已经创建的用户。
用户信息
位置 /etc/passwd
使用tali指令查看的结果
保存的用户信息,每个用户一行,以冒号分隔成七列:
-
用户名。
-
都是x,这是之前的密码保存位置,不安全,所以后来把密码分开存放。
-
用户的UID。
-
GID,组ID,这个用户的主要组ID,一个用户只能属于一个主组,但可以属于多个附加组。
-
这个用户的描述信息,可以用usermod -c “adfasdf” tt为用户tt添加描述信息。
-
用户的家目录,创建时,会复制在/etc/skel/目录下所有的文件到用户的家目录。
-
该用户的shell类型,默认shell,是在/etc/default/useradd中定义的shell变量。
密码
位置 /etc/shadow
使用tali指令查看的结果
以冒号分成九列:
-
用户名。
-
加密后的密码,如果此处是两个叹号(!!),第一个叹号表示用户被锁定;第二个叹号表示这个用户没有设置密码。Linux默认是禁止空密码登录的。
-
从最近一次更改的密码日期算起,再过多少天之后才能再次更改密码,0表示无最短期限,随时可以更改。
-
最长密码期限,必须在这个期限内更改密码,否则过了这个期限,密码将过期。
-
密码警告期限,密码过期前多少天开始提醒用户更改密码,0表示不提醒。
-
密码过期之后的宽限天数,也就是说,密码已经过期之后,在这个期限内,登录的时候必须修改密码,才能登录。
-
账号到期时间,从1970年1月1日算起。
-
保留。
关于密码加密:
单向加密:提取数据的指纹,内容一样,指纹也一样。
为了保证相同的密码,加密结果不一样,默认会在密码后面加上杂质,再进行加密。
加密后的密码,用$作为分隔符。
useradd创建用户
-c:添加描述信息。
-g:指定主要组。
-G:指定附属组。
-d:更改家目录。
-D:更改默认值。实际就是在改/etc/default/useradd中的变量值。
-s:指定shell。
-u:指定UID,只能使用1000以上,并且不能和其他UID冲突。
usermod更改用户信息
直接修改/etc/passwd文件,但是不建议。因为这个文件的格式是固定的,一旦被破坏,此文件失效。
建议使用工具修改:usermod。
-g更改主要组。
-G 更改附属组,如果之前已经指定过附属组,会把该用户从之前附属组中删除。
-a 和-G结合使用,不删除之前的组,如果要加入多个组,用空格隔开。
-d 更改用户的家目录,但不会将旧家目录中的文件移过去。
-m 和-d结合使用,更改家目录时,文件一起移过去 。
-s 更改用户的shell 。
-L 锁定用户账号,锁定后除管理员之外的其他用户无法登录。
-U解锁用户账号。
切换用户 user1的shell
chsh user1
userdel删除一个用户
只删除用户,而家目录和邮箱还在。
userdel user4 删除用户后,在创建会提示存在相同的家目录,不能创建。
-r 同时删除用户和家目录和邮箱,如果不加-r选项,只删除用户。
id查看用户信息
显示user1的ID,主要组ID,所有组ID
passwd修改用户密码
passwd user1 #更改 user1这个用户的密码,但这种方式只有root才有权限。
-d,删除用户密码。-l:锁定用户。
-l,锁定用户。
-u,解锁用户 。
-n,指定密码最短有效期 。
-x,指定密码最长有效期 。
-w,指定提前多少天警告 。
-i,宽限期。
0x18-Kali Linux之组管理、切换用户、sudo
组的介绍
一个用户有两种组:主要组(基本组),一般和用户名一样,且只包含一个用户;附加组(属组),一个用户可以属于多个属组。
组信息配置文件:vim /etc/group
组名:组密码;GID:以当前组为附加组的用户(多个用户,用逗号分隔)。
groupadd命令
组创建用户时,会自动创建一个和用户名一样的用户组
-g:指定GID,注意,1000以上,不能冲突。
groupmod命令
-n更改用户组名称,先写新名称,再写旧名称。
groupdel命令
删除一个用户组
gpasswd命令
默认,设置组密码
-a:添加用户到组
-d:从组中删除用户
切换用户
su user #非登录时切换,不会切换当前工作路径,就不会去读取用户家目录下的环境变量文件。
su – user1 #登录时切换,会切换到用户的家目录,并且读取用户家目录下的环境变量文件。
-:其实就是-l选项,表示login
su – user -c “echo hello”#不切换用户,以user身份执行命令
sudo
sudo为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户。
普通用户怎么去使用
sudo +指令
例如:sudo ls
sudo和su的区别
内容不同:
-
su命令:用来切换用户,substitute英文含义“代替”的意思。
-
sudo命令:sudo为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户。
用法不同:
su命令:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变。
sudo命令:查看当前用户可以用sudo执行的命令都有哪些。
环境不同:
su命令:切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境。
sudo命令:是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
su的参数:
-c<指令>或–command=<指令>:执行一个指令后就恢复原来的身份;
-f或–fast:使shell不用读取启动文件,适用于csh和tcsh;
-,-l,–login:切换用户时,使环境变量(home,shell,user,logname,path等)和欲切换的用户相同、不使用则取得用户的临时权限;
-m,-p,:变更身份时,保留环境变量不变;
-s,–shell=:指定执行命令的shell;
–help:显示帮助;
–version:显示版本信息;
0x19-Kali Linux之查看进程和控制进程
查看进程
下面介绍几个常用的进程查看命令
ps 命令——查看静态的进程统计信息
ps 命令只要用于显示包含当前运行的各进程完整信息的静态快照。通过不同的命令选项,可以有选择性的查看进程信息。
a:显示当前终端下的所有进程信息,包括其他用户的进程。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-l:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。
以上列出的是 ps 命令常用的几个选项,将上述选项组合在一起使用,如执行 ps aux 命令后将以简单列表的形式显示出进程,如下所示
第一行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的。
TTY:表明该进程在哪个终端上运行。“ ?” 表示位置或不需要终端。
STAT:显示了进程当前的状态。
START:启动该进程的时间。
TIME:该进程占用的 CPU 时间。
COMMAND:启动该进程的命令的名称。
%CPU:CPU 占用的百分比。
%MEM:内存占用的百分比。
VSZ:占用虚拟内存的大小。
RSS:占用常驻内存的大小。
top 命令——查看进程动态信息
top 命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括 CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次。命令格式如下:
上述信息中,显示了系统任务(tasks)、cpu 占用、内存占用(men)、交换空间(swap)等汇总信息;汇总信息下方依次显示当前进程的排名情况。
pgrep 命令——查询进程信息
pgrep 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定进程的 PID 号。
基本命令格式:pgrep “查询条件”
pstree 命令——查看进程树
pstree 命令可以输出 Linux 系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系。
基本命令格式如下:
控制进程
启动进程
由用户输入命令或者可执行程序的路径,可以至少启动一个进程。手工启动又可以分为前台启动和后台启动。
进程在前台运行时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作都是在前台启动运行。
启动后台进程需要使用" & " 操作符,将 “ & ” 操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。
改变进程的运行方式
-
挂起当前的进程:按Ctrl+Z 组合键可以将当前进程挂起,这种操作需要暂停当前进程并进行其他操作室特别有用。
-
查看后台的进程:可以使用 jobs 命令,结合 “ l ” 选项可以同时显示出该进程对应的 kalipid 号。
-
将后台的进程恢复运行:使用 bg 命令,可以将后台中暂停执行的任务恢复运行,继续在后台执行操作;而使用 fg 命令,可以将后台任务重新恢复到前台运行。
终止进程执行
当用户在前台执行某个进程时,可以按 Ctrl+C 组合键强制进行中断。结束其他终端或后台运行的进程时,可以使用专用的进程终止工具 kill、killall、pkill。
-
使用 kill 命令终止进程:通过 kill 命令终止进程时,需要使用进程的 PID 号作为参数。若该进程已经无法响应,则可以结合 “ -9 ”选项强行终止进程。
-
使用 killall 命令终止进程:使用killall命令可以通过进程名来终止进程,killall命令同样也有 “ -9 ”选项。
-
使用 pkill 命令终止进程:使用 pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程。
0x20-Kali Linux计划任务管理1之一次性计划任务
什么是计划任务
我们可以通过一些设置来让电脑定时提醒我们该做什么事了,或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务。而遇到一些需要执行的事情或任务。我们也可以通过命令来告诉电脑一会临时把这个工作给做一下
在我们LINUX中,我们可以通过crontab和at这两个东西来实现这些功能的
计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据
CROND:这个守护进程是为了周期性执行任务或者处理等待事件
任务调度分两种
-
系统任务调度
-
用户任务调度
两种命令的区别
-
定时性的,例行。每隔一定的周期或要重复这个事情
-
突发性的,就是做完这个事情就没下次了,临时任务
at命令
at [HH:MM] [yyyy-mm-dd] #时间格式
at 02:20 2024-08-12 #设置计划时间为当前时间之后
#写好计划任务之后按Ctrl+D提交
**注意:**写好计划任务之后按Ctrl+D提交
在kali当中第一次使用at命令
需要确认安装一下
或者直接使用sudo apt install at进行安装
查看atd服务状态
systemctl status atd
如果没有启动使用:systemctl start atd
将服务设置为开机自启动:systemctl enable atd
使用atq查看未执行的任务计划
说明:任务编号 任务执行时间 所属用户
使用at查询任务详细
at -c 编号
删除任务计划
atrm 1
0x21-Kali Linux计划任务管理2之周期计划任务
crontab命令
**crontab**
是在Unix-like操作系统中用来创建、编辑和管理定期执行任务的命令。这些任务可以是脚本、命令、程序等,在指定的时间间隔内自动运行。**crontab**
命令允许用户设置定时任务,无需手动执行命令。
linux任务调度的工作主要分为以下两类:
-
系统执行的工作:系统周期性所要执行的工作,如更新whatis数据库 updatedb数据库,日志定期切割,收集系统状态信息,/tmp定期清理
-
个人执行的工作:某个用户定期要做的工作,由每个用户自行设置
语法
crontab [ -u user ] file
或 crontab [ -u user ] { -l | -r | -e }
说明
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数说明
-
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 Vi/Vim,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-
-r : 删除目前的时程表
-
-l : 列出目前的时程表
查看当前用户的 crontab 文件:crontab -l
编辑当前用户的 crontab 文件:crontab -e
删除当前用户的 crontab 文件:crontab -r
列出某个用户的 crontab 文件(需要有相应的权限):crontab -u username -l
编辑某个用户的 crontab 文件(需要有相应的权限):crontab -u username -e
格式
时间格式如下:
f1 f2 f3 f4 f5 program
-
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
-
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
-
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
-
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
-
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。
常用的时间设置:
时间设置 | 含义 |
| 每分钟执行一次 |
| 每小时的第 0 分钟执行一次 |
| 每天的午夜(0 点)执行一次 |
| 每周日的午夜(0 点)执行一次 |
| 每个月的第一天午夜(0 点)执行一次 |
| 每个月的最后一天午夜(0 点)执行一次 |
| 每年的第一天午夜(0 点)执行一次 |
| 每周三的午夜(0 点)执行一次 |
| 每个月的第 1 和第 15 天午夜(0 点)执行一次 |
| 每周五的午夜(0 点)执行一次 |
| 每周五的午夜(0 点)执行一次 |
| 每天的上午 8 点到下午 5 点每小时执行一次 |
| 每周一的中午(12 点)执行一次 |
| 每个月的第 15 天午夜(0 点)执行一次 |
| 每周三的午夜(0 点)执行一次 |
| 每天的上午 8 点到下午 5 点每小时执行一次 |
| 每个工作日的午夜(0 点)执行一次 |
| 每个月的第一个星期五午夜(0 点)执行一次 |
| 每个月的第 1 和第 15 天午夜(0 点)执行一次 |
| 每年的 1 月 15 日午夜(0 点)执行一次 |
| 每周日的午夜(0 点)执行一次 |
| 每周五的午夜(0 点)执行一次 |
实例
每一分钟执行一次 /bin/ls:* * * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分…执行 echo “haha”:
20 0-23/2 * * * echo “haha”
**意思是每两个小时重启一次apache:**0 */2 * * * /sbin/service httpd restart
**意思是每天7:50开启ssh服务:**50 7 * * * /sbin/service sshd start
**意思是每天22:50关闭ssh服务:**50 22 * * * /sbin/service sshd stop
**每月1号和15号检查/home 磁盘:**0 0 1,15 * * fsck /home
**每小时的第一分执行 /home/bruce/backup这个文件 :**1 * * * * /home/bruce/backup
每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home “*.xxx” -mtime +4 -exec rm {} \;
**意思是每月的1、11、21、31日是的6:30执行一次ls命令:**30 6 */10 * * ls
0x22-Kali Linux系统故障分析和排查1日志文件分析
主要日志文件
日志的功能
-
用于记录系统、程序运行中发生的各种事件
-
通过阅读日志,有助于诊断和解决系统故障
日志文件的分类
-
内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似
-
用户日志:记录系统用户登录及退出系统的相关信息
-
程序日志:由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置
默认位置:/var/log 目录下
主要日志文件介绍
常用的系统日志如下:
核心启动日志:/var/log/dmesg
系统报错日志:/var/log/messages
邮件系统日志:/var/log/maillog
FTP系统日志:/var/log/xferlog
安全信息和系统登录与网络连接的信息:/var/log/secure
登录记录:/var/log/wtmp 记录登录者讯录,二进制文件,须用last来读取内容 who -u /var/log/wtmp 查看信息
News日志:/var/log/spooler
RPM软件包:/var/log/rpmpkgs
XFree86日志:/var/log/XFree86.0.log
引导日志:/var/log/boot.log 记录开机启动讯息,dmesg | more
cron(定制任务日志)日志:/var/log/cron
日志文件分析
日志消息的级别
概述:基本上有八个日志级别,由linux内核发送消息,日志级别从高到低,level 0 ~ level 7
级别简述:
0 KERN_EMERG
这是按严重性排序的最高级别:它被有关系统不稳定或即将崩溃的消息采用。
1 KERN_ALERT
此级别用于立即需要用户注意的情况。
2 KERN_CRIT
此严重性级别用于通知与硬件或软件相关的严重错误。
3 KERN_ERR
通常用于通知用户非关键错误,例如设备识别失败或有问题,或者更一般的驱动程序相关问题。
4 KERN_WARNING
或 loglevel 它是大多数 Linux 发行版中通常用作默认值的日志级别。此级别用于显示有关非即将发生的错误的警告或消息。
5 KERN_NOTICE
此级别的消息是关于可能值得注意的事件。
6 KERN_INFO
此级别的消息用于有关内核执行的操作的信息性消息的日志级别。
7 KERN_DEBUG
此级别的消息主要用于调试。
注意:级别越小,优先级越高,消息越重要。
日志记录的一般格式:
时间标签:消息发出的日期时间
主机名 生产消息的计算机的名称
子系统名称:发出消息的应用程序的名称
消息 消息级别的具体内容
rsyslog日志服务是一个常会被攻击的目标,破坏了它将使运维员很难发现入侵及入侵的痕,因此要特别注意监控其守护进程及配置文件。
分析日志的注意事项
总的来说,作为一名合格的系统管理人员,应该提高警惕,随时注意各种可疑的状况定期并随机的检查各种系统日志文件,包括-般信息日志、 网络连接日志、文件传输日志及用户登录日志记录等。在检查这些日志时,要注 意是否有不合常理的时间或操作记录。
例如出现以下一些现象就应该多加注意:
1用户在非常规的时间登绿,或者用户登录系统的IP地址和以往不一样的
2登录失败的日志记录,尤其是那些一再连续尝试进入 失败的日志记录
3非法使用或不正当使用超级用户权限
4无故或者非法重新启动各项网络服务的记录
5不正常的日志记录,如日志残缺不全,或者是诸如wtmp这样的日志文件无故缺少了中间的记录文件
注意:需要提醒运维人员的是,日志并不是完全可靠的,高明的黑客在入侵系统后经常会打扫现场,所以管理人员需要运用综上的所有知识,全面、综合的进行审查和检测。
日志管理:
针对日志定期备份、异地备份(保留1~3个月的日志记录)
针对日志定期切割
针对日志的权限要严格(为了防止敏感信息泄露)
针对日志做集中管理
对于日志文件的保护
chattr +a日志文件, a选项为append (追加) only ,即给日志文件加上a权限后,将只可以追加,不可以删除和修改之前的内容。
[root@localhost ~]# cp /ar/log/secure ./seccure.txt
[root@localhost ~]# chattr +a /var/log/secure
[root@localhost ~]# Isattr /var/og/secure
[root@localhost ~]# rm -rf /var/log/secure
rm:无法删除’ /var/log/secure":不允许的操作
root用户在v编辑器的命令模式按dd删除了两行内容后进行wq !强制保存退出,也会报错
课外补充: chattr +a -R递归式增加a权限
[root@localhost ~]# Isattr /var/log/
0x23-Kali Linux系统故障分析和排查2系统启动类故障排除
MBR扇区故障
故障原因
-
病毒、木马等造成的破坏
-
不正确的分区操作、磁盘读写误操作
故障象限
-
找不到硬盘,启动中断
-
无法加载操作系统,开机后黑屏
解决思路
-
应该提前做好“异地”备份文件
-
以CentOS 7安装光盘引导进入急救模式
-
从备份文件中恢复
修复MBR扇区故障示例:
第一步:添加一块20G硬盘
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000eac35
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 1046 8192000 82 Linux swap / Solaris
/dev/sda3 1046 2611 12573696 83 Linux
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
第二步硬盘分区
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x52d92de3.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
Using default value 2610
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x52d92de3
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
第三步;创建挂载点和格式化
挂载/dev/sdb1 到 /backup,将MBR扇区备份至此,损坏MBR扇区,重启。
[root@localhost ~]# mkdir /shiyan
[root@localhost ~]# mkfs /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
第四步:挂载硬盘和MBR扇区备份
[root@localhost ~]# mount /dev/sdb1 /shiyan/
[root@localhost ~]# dd if=/dev/sda of=/shiyan/sda.mbr bs=512 count=1记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.0246777 秒,20.7 kB/秒
第五步;破坏系统硬盘扇区和恢复系统
[root@localhost ~]# ls /shiyan/ #查看备份是否成功
lost+found sda.mbr
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1 #已经破坏/dev/sda系统盘
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000240867 秒,2.1 MB/秒
来测试以下是否成功破坏
[root@localhost ~]# reboot #重启以下系统
如执行结果以下图片结果一样说明:系统盘已经丢失文件需要修复才可以进入系统
MBR扇区故障
请插入安装程序光盘到服务器里或者使用外部光驱启动,从光盘引导进入安全模式。
选择第三项“Rescue installed systen”
引导程序菜单
选择语言:默认英语 点击:OK
引导程序选择语言
选择键盘;美式键盘 点击:OK
选择键盘
是否开启网络访问:选择NO
是否开启网络访问
选择:Continue
引导程序菜单里面选项
选择:OK
选项OK
选择shell
shell选项界面
在shell界面将/dev/sdb1挂载使用,将里面的备份写入/dev/sda,重启
创建目录挂载备份
重启进入系统,MBR分区修复成功。
进入系统说明已经成功恢复
系统启动自检界面
GRUB引导故障
引起GRUB故障的原因
-
MBR中的GRUB程序遭到破坏
-
grub.conf文件丢失,引导配置有误
故障现象
- 系统引导停滞,显示“grub>”提示符
解决思路
-
尝试手动输入引导命令
-
进入急救模式,从备份文件中恢复grub.conf
这里用第三种方法,向MBR扇区中重建grub程序
1、进入grub2删除grub.cfg配置文件,模拟故障。
rm -rf /boot/grub2/grub.cfg
2、进入急救模式,加载光盘镜像,切换到系统根环境,要快速按ESC
sh-4.2# chroot /mnt/sysimage
3、重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MBR扇区,如果有多个分区可省略
bash-4.2# grub2-install /dev/sda
4、重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
5、退出chroot,重启
bash-4.2# exit
sh-4.2# exit或者reboot
重启,在读条的时候迅速按ESC,然后选择CD-ROM,后面进入急救模式,在上一个实验已经说过如何进入急救模式,这里就不截图了。
遗忘root用户的密码
和UNIX系统相同,Linux超级用户root拥有系统的最高权限。当由于用户的疏忽,遗忘了root 密码,或者系统受到黑客的入侵,无法用root 账号登录系统时,可以通过下列办法来恢复root 的密码。
进入单用户模式
1.使用Linux 系统启动软盘
如果你已创建了Linux 系统的启动软盘,而且设置计算机系统从软盘启动,当显示boot 提示符后输入:
boot: linux single
系统进入了提示符为“#”的单用户模式,计算机引导的运行级别为1,本地文件系统被挂载,很多系统服务没有运行,跳过所有系统认证,是一个系统管理员使用特定的机器,把 root 文件系统挂为读写,此时可以使用:
(1) passwd 程序来设置root的新密码
# passwd root
# reboot
重启系统后,root 密码已被更新。
(2) 通过修改 /etc/shadow 文件,删除root 的密码
# cd /etc
# vi shadow
将以root 开头的一行中“root:”后和下一个“ :”前的内容删除,
第一行将类似于“root ::****”,保存后重启系统,root 密码置为空。
2. 以LILO 多系统引导程序启动
当系统以LILO 引导程序启动时,在出现LILO 提示符时输入:
LILO: linux single
进入单用户后,更改password 的方法同1。
3. 以GRUB 多系统引导程序启动
用GRUB引导系统进入单用户步骤:
(1) 启动GRUB ,然后键入 e 来编辑;
(2) 选择以kernel开头的一行,再按e 键,在此行的末尾,按空格键后输入single,以回车键来退出编辑模式;
(3) 回到了 GRUB 屏幕后,键入 b 来引导进入单用户模式。
进入单用户后,更改password 的方法同1。
0x24-Kali Linux系统故障分析和排查3文件系统类故障排除
修复文件系统
故障原因
-
非正常关机、突然断点、设备读写失误等
-
文件系统的超级块(super-block)信息被破坏
故障现象
-
无法向分区中读取或写入数据
-
启动后提示“Give root password for maintenance”
解决思路
-
根据提示输入root口令,进入修复状态
-
使用xfs_rep命令进行修复air
磁盘资源耗尽故障
第一,模拟i节点耗尽故障
1.添加一块硬盘,分区格式化,挂载
第二,编写测试程序,耗尽i节点
1>vim killinode.sh
具体内容如下:
第三,执行脚本并验证i节点占用情况
2>df -i /disk
3>尝试创建文件
touch /disk/file
4>查看磁盘剩余空间
df -hT /disk
第四,修复i节点耗尽故障
rm -rf /disk/a*
检测磁盘坏道
硬盘的坏扇区/块它是硬盘的一个部分,由于硬盘表面的固定物理损坏或闪存晶体管故障,无法再读取或写入。随着坏扇区的不断积累,它们可能会对硬盘容量产生不良或破坏性的影响,甚至导致可能的硬件故障。
同样重要的是要注意,坏块的存在是提醒你应该开始考虑更换新的硬盘,或者只是将坏块标记为不可用。因此,我们将使用两种工具来扫描确认 Linux 硬盘是否存在坏扇区。
一、使用 badblocks 工具检查 Linux 磁盘中的坏扇区
1、先通过fdisk -l 命令来显示所有磁盘或闪存的信息以及它们的分区信息
2、然后用badblocks命令检查Linux系统硬盘上的坏道/坏块:
root@pxe:~# badblocks -v /dev/sda2 > badsectors.txt正在检查块 0 到 525311检查坏块(只读测试):已完成 所有遍数已完成,发现了 0 个坏块。(0/0/0 个错误)root@pxe:~#
上面的命令中,badblocks 扫描设备/dev/sda3(记得指定你的实际设备),-v选项让它显示操作的详情。另外,这里使用了输出重定向将操作结果重定向到了文件badsectors.txt。
如果扫描发现硬盘任何坏扇区,为了数据安全,首先备份数据。,然后再尝试修改硬盘坏道。
使用e2fsck或fsck命令修复,还需要用到上面扫描记录的坏道文件,badsectors.txt。-l 选项告诉命令将在指定的文件 badsectors.txt 中列出的扇区号码加入坏块列表。
A.针对 for ext2/ext3/ext4 文件系统
root@pxe:~# e2fsck -l badsectors.txt /dev/sda3
B.针对其它文件系统
root@pxe:~# fsck -l badsectors.txt /dev/sda3
二、使用Smartmontools扫描Linux磁盘上的坏扇区
基于硬盘的 S.M.A.R.T(自我监控、分析和报告技术)系统,该系统更加的可靠和高效有助于检测、报告并可能记录其健康状况,更加准确找出任何即将发生的硬件故障。
1、可以通过运行以下命令来安装 smartmontools:
A.在基于 Debian/Ubuntu 的系统上
root@pxe:~# apt-get install smartmontools
B.在基于 RHEL/CentOS 的系统上
sudo yum install smartmontools
2、使用smartctl 工具检测硬盘健康状态
root@pxe:~# smartctl -H /dev/sdasmartctl 7.2 2020-12-30 r5155 [x86_64-linux-6.5.0-44-generic] (local build)Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===SMART Health Status: OK
root@pxe:~#
主要关注SMART Health Status是否为OK或FASSED
三、smartctl 工具的其它日常应用
1、smartctl -a /dev/sa* :显示硬盘SMART的全部信息。检查该设备是否已经打开SMART技术。
2、smartctl -H /dev/sa* :查看硬盘的健康状况。
3、smartctl -l selftest /dev/sa* :显示硬盘测试信息。
4、smartctl -l error /dev/sa* :显示硬盘历史错误信息。
5、smartctl -A /dev/sa* :显示设备SMART厂商属性和值。
6、对硬盘进行检测 手工对硬盘进行测试的方法有以下四种:
smartctl -t short /dev/sa* 后台检测硬盘,消耗时间短
smartctl -t long /dev/sa* 后台检测硬盘,消耗时间长
smartctl -C -t short /dev/sa* 前台检测硬盘,消耗时间短
smartctl -C -t long /dev/sa* 前台检测硬盘,消耗时间长
其实就是利用硬盘SMART的自检程序。此时可以用smartctl -X中断后台测试。
7、smartctl -i /dev/sa* :显示设备的身份信息,检查硬盘是否打开了SMART支持。
看到有:SMART support is: Enabled,说明硬盘支持SMART。
如果为Disabled,使用:smartctl --smart=on --offlineauto=on --saveauto=on /dev/sa*,启用SMART。
8、smartctl -s on /dev/sa* 如果没有打开SMART技术,使用该命令打开SMART技术。
0x25-Kali Linux基础网络设置之查看及测试网络
1、查看网络配置
查看及测试网络配置是管理Linux网络服务的第一步,下面介绍Linux系统中的一些查看及测试命令。
1)ifconfig命令–查看网络接口地址
主机的网卡通常称为网络接口,在Linux系统中,使用ifconfig命令可以查看网络接口的地址配置信息。
①查看活动的网络接口设备
执行“ifconfig”命令且不带任何选项和参数时,将显示当前主机中已启用(活动)的网络接口信息。
上述输出结果中:
第一部分“ens33”是网卡名称,包括网卡的ip地址、网络地址、掩码地址等。
第二部分“lo”是回环网络接口,是“loopback”的缩写,是一个虚拟的网络接口,IP地址默认为“127.0.0.1”,回环地址通常仅用于对本机的网络测试。
第三部分“virbr0”是虚拟网桥网卡(virtual bridge)的相关信息。
如果需要查看所有网络接口信息,可以在“ifconfig”命令后添加“-a”选项,即执行命令“ifconfig -a”。
②查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为ifconfig命令的参数。例如执行“ifconfig ens33”命令只查看网卡ens33的配置信息。
从上述命令显示的结果中,可以获知ens33网卡的一些基本信息,如下所述:
ether:表示网卡的物理地址(MAC地址)。
inet:表示网络接口的IP地址。
broadcast:表示网络接口所在网络的广播地址。
netmask;表示网络接口的子网掩码。
除此外,还可以通过“TX"”RX"等信息了解通过该网络接口发送和接收的数据包个数、流量等更多属性。
2)ip/ethtool命令–查看网络接口
ip/ethtool与ifconfig命令相同,也是查看网络接口的命令,但是功能更为强大。常用的命令有:
ip link:查看网络接口的数据链路层信息。
ip address:查看网络接口的网络层信息。
ethtool eth0:查看指定网络接口的速率、模式等信息。
3)route命令–查看路由表条目
直接执行route命令可以查看当前主机中的路由表信息。
上述输出结果中,Destination列对应目标网段的地址,Gateway列对应下一跳路由器的地址,Iface列对应发送数据的网络接口。
当目标网段为default时,表示此行是默认网关记录;当下一跳地址为“ * ”时,表示目标网段与本机是直接相连的。
4)netstat命令–查看网络连接情况
通过netstat命令可以查看当前系统的网络连接状态、路由表、接口统计等信息,常用的选项有:
-a:显示当前主机中所有活动的网络连接信息。
-n:以数字的形式显示相关的主机地址、端口等信息。
-r:显示路由表信息。
-l:显示处于监听(listening)状态的网络连接及端口信息。
-t:查看TCP协议相关的信息。
-u:显示UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(需root权限)。
通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息。
结合命令管道使用grep命令,还可以在输出结果中过滤指定的记录。例如,执行下列操作可查看本机中TCP协议相关的信息(相当于执行“netstat -anp”命令)服务程序。
2、测试网络连接
1)ping命令–测试网络连通性
使用ping命令可以向目的主机持续的发送测试数据包,并显示反馈结果,直到按Ctrl+C组合键中止测试,并显示最终结果。
运行ping命令测试网络连通性时,如果不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。例如反馈信息”Destinatin Host Unreachable“,表示目的主机不可到达,可能目标地址不存在或者主机已经关闭;如反馈”Network is unreachable“信息,则表示没有可用的路由记录(如默认网关),无法到达目标主机所在的网络。
当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒/网络攻击等),使用ping测试命令可能看到”Request timeout“的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。当目标主机有严格的防火墙限制时,也可能收到”Request timeout“反馈结果。
2)traceroute–命令跟踪数据包的路由途径
使用traceroute命令可以测试从当前主机到目的主机之间经过了哪些网络节点,并显示各中间节点的连接状态(响应时间)对于无法相应响应的节点,连接状态将显示为“ * ”。
traceroute命令能比ping命令更加准确的定位网络连接的故障点(中断点),因此在网络测试和排错过程中,通常先使用ping命令测试与目的主机的网络连接,如有故障,再使用traceroute命令跟踪查看定位故障的网络节点。
3)nslookup命令–测试DNS域名解析
当域名解析出现异常时,将无法使用域名的形式访问网络中的Web站点、电子邮件系统等服务。nslookup命令是用来测试域名解析的专用工具,指定解析的目标域名作为参数即可。例如执行“nslookup www,baidu,com”命令,根据输出结果查看域名www.baidu.com对应的IP地址是多少。
如果能够成功反馈要查询的域名对应IP地址,则表示域名解析没问题。否则需要根据实际反馈情况来判断故障原因。
0x26-Kali Linux基础网络设置之设置网络地址参数
在Linux主机中,手动修改网络配置包括两种最基本的方法。
临时配置:通过命令行修改当前正在使用的网络地址,修改后立即可以生效。但由于所做修改没有固定地存放在静态的文件中,当重启network服务或者重启主机后会失效,一般在调试网络的过程中使用。
固定配置:通过配置文件来存放固定的各种网络地址,需要重启network服务或重启主机后才会生效,但相当于“永久配置”,一般在需要为服务器设置固定的网络地址时使用。
1、使用网络配置命令
1)ifconfig命令–修改网卡的地址、状态
ifconfig命令可以用来查看网卡配置,也可以用作修改网卡的IP地址、子网掩码,还可以用作绑定虚拟网络接口、激活或者停用网络接口。
①修改网卡的IP地址、子网掩码
需要设置网卡的地址时,命令格式如为:
ifconfig 网络接口名称 IP地址 [netmask 子网掩码]
或者
ifconfig 网络接口名称 IP地址 [/子网掩码长度]
指定新的IP地址和子网掩码后,原有的地址失效。例如执行命令“ifconfig eth0 192.168.1.0/24"或者命令”ifconfig eth0 192.168.1.102 netmask 255.255.255.0“表示将网卡eth0的IP地址设置为192.168.1.102,子网掩码长度为24。
②禁用、激活网络接口
结合”down”或者“up”开关选项可以临时禁用或者重新激活指定的网络接口,例如执行命令“ifcofig eth0 down”(也可以直接”ifdown eth0“)来禁用网卡eth0。
③为网卡绑定虚拟接口
在对服务器网络调试时,可能需要临时在同一个网卡上使用一个新的IP地址,但是又不能覆盖原有IP避免服务程序不可用,这时可以网卡绑定一个虚拟网络接口,并为虚拟接口设置新的IP地址。例如,下面操作为eth0网卡配置了虚拟接口eth0:0并将该虚拟接口IP设置为192.168.1.102。
2)route命令–添加、删除静态路由记录
route命令不仅可以用于查看路由表信息,也可以用于删除、添加静态的路由表条目。
①添加、删除到指定网段的路由记录
通过“route add”操作可以添加路由记录,结合“-net”选项指定目标网段的地址,结合“gw”指定下一跳的路由器IP地址。例如下面操作添加到192.168.20.0/24网段的静态路由,指定下一跳地址为192.168.30.188(需要与本机其中一个接口的IP地址在同一网段内)。
通过“route del”操作可以删除路由记录,结合“-net”选项指定对应路由记录中目标网段的地址即可。例如删除上面添加的到182.168.20.0/24网段的静态路由可以执行下面操作。
②添加、删除默认网关记录
添加、删除默认网关记录时与添加、删除静态路由记录命令格式类似,指定网段时只需将”-net“指明的网段改成使用“defaul”即可。
例如执行下面操作,删除默认网关192.168.10.2/24,再添加新的默认网关192.168.10.3/24。
2、修改网络配置文件
1)网络接口配置文件
网络接口配置文件默认位于目录“/etc/network/"中。
在网卡配置文件eth0中,可以看到设置静态IP地址的部分内容:
nmcli connection show
其中部分配置项含义及作用为:
-
NAME: 网络连接的名称。
-
UUID: 网络连接的唯一标识符。
-
TYPE: 网络连接的类型,例如
802-3-ethernet
代表以太网连接。 -
DEVICE: 与网络连接关联的设备名称,例如
eth0
。
2)启用、禁用网络接口配置
在kali中,当修改了网络接口的配置文件后,若需要使新的配置生效,可以重启network服务或者重启主机。命令”sudo systemctl restart networking”重新启用所有的网络接口。
3)主机名称配置文件
kali中,主机名称配置文件为/etc/hostname,命令hostnamectl可以用于修改此文件信息。
例如执行“hostnamectl set-hostname fp"将主机名更改为”fp“。
4)域名解析配置文件
①指定为本机提供DNS解析的服务器地址
/etc/resolv.conf文件中记录了本地默认使用的DNS服务器的地址信息,对该文件所做的修改会立刻生效。
Linux系统中最多可以指定三个(第三个以后将被忽略)不同的DNS服务器地址,优先使用第一个DNS服务器地址,例如执行下列操作可以指定默认使用的两个DNS服务器地址分别为114.114.114.114和8.8.8.8(也可以vim进入配置文件再输入)。
②本地主机映射文件
/etc/hosts文件中记录着主机名与IP地址的映射关系,一般用来保存经常需要访问的主机的信息。当访问一个位置的域名时,先查找该文件中是否有相应的映射关系,如果没有再去向DNS服务器查询。
例如在/etc/hosts文件中添加”10.10.10.10 www.abc.com“的映射记录,则当访问网站www.abc.com时,将会直接向IP地址10.10.10.10发送Web请求而省略向DNS服务器解析IP地址的过程。
对于经常访问的网站,可以通过在/etc/hosts文件中添加正确的IP地址与域名映射记录,减少DNS查询过程,从而提升上网速度。
0x27-Kali Linux基础网络设置之DHCP服务器
DHCP概述
DHCP可以为客户机自动分配IP地址,子网掩码,默认网关和DNS服务器地址等TCP/IP参数。
两台连接到互联网上的电脑要互之间通信,必须有各自的IP地址,由于IP地址资源有限,宽带接入运营商不能做到给每个报装宽带的用户都能分配一个固定的IP地址(所谓固定IP就是即使在你不上网的时候,别人也不能用这个IP地址,这个资源一直被你所独占),所以要采用DHCP方式对上网的用户进行临时的地址分配。也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。当下线的时候,DHCP服务器可能就会把这个地址分配给之后上线的其他电脑。这样就可以有效节约IP地址,既保证了网络通信,又提高IP地址的使用率,也有助于降低网络维护和管理的耗费。
举个例子,假设只拥有30个合法的IP地址,而管理的机器有60台,那么只要这60台机器中,同时使用服务器DHCP的服务的不超过30台,就可以解决IP地址不足的问题。
安装DHCP服务
在Kali Linux中,没有默认安装DHCP服务。我们需要手动安装它,打开终端,开启root权限,执行命令如下:
执行以上命令后,将开始安装DHCP服务。如果安装过程中没有报错的话,则该服务将被成功安装到系统中。
配置DHCP服务
如果要启动DHCP服务,则需要做一些简单配置。
执行命令如下,打开DHCP的主配置文件:
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #动态DNS更新模式
authoritative;
default-lease-time 600; #DHCP租约时间
max-lease-time 7200; #DHCP最大租约时间
subnet 192.168.0.0 netmask 255.255.255.0 { #DHCP服务用于分配地址的网段
range 192.168.0.10 192.168.0.20; #地址池
option subnet-mask 255.255.255.0; #子网掩码
option routers 192.168.0.1; #默认网关 option
broadcast-address 192.168.0.255; #广播地址
option domain-name-servers 192.168.0.1; #DNS服务器的地址
}
Tips: vim可以通过在正常模式下依次按 ggVG$ 实现全选。
gg — 跳动到文档开头
V — 进入行可视化模式
G — 跳动到文档末尾
如果是gvim的话选不到最后一行,按下$即可解决。
以上配置信息表示配置了一个192.168.0.0网段的地址池。其中,默认网关为192.168.0.1;DNS服务器地址为192.168.0.1;用于分配的地址池为192.168.0.10-20。注意:这里配置的子网信息要与主机中其中一个网络接口的地址处于同一个网段。提示:如果用户做伪AP用自己的DHCP服务分配地址,则配置的DHCP服务网段要与无线接口的IP地址处于同一网段。例如,系统主机中的IP地址为192.168.1.100,则指定的网段则为192.168.1.0。
启动DHCP服务
输入命令如下:dhcpd -cf /etc/dhcp/dhcpd.conf
第八行 无法打开租用数据库 /var/lib/dhcp/dhcpd.leases:没有此类文件或目录
在/var/lib/dhcp下touch个dhcpd.leases即可
0x28-Kali Linux操作系统符号之系统符号
基础符号
-
$
-
取出变量中的内容
-
取出指定列的信息(awk)
awk '{print $3}' /old.txt
取出第三列的信息
-
!
-
表示取反或者排除
-
命令行中表示取出最近命令
-
用于表示强制操作处理
-
vim底行模式强制保存退出:
!wq
-
|
-
前一个命令执行结果交给后面命令处理
-
xargs配合使用:将信息进行分组显示
引号符号系列
-
‘’:sed和awk要使用单引号
-
所见即所得
-
“”
-
对特殊信息会做解析
-
``或$()
-
先执行里面的内容然后交给前面的命令,并且执行的结果如果是多行交给前面的命令变成了一行
-
没有引号
-
和双引号功能类似
-
但是可以直接识别通配符信息
echo {00..5}.txt
输出5个txt
echo "{00..5}.txt"
输出原样
定向符号系列
-
>
:标准输出重定向符号 -
2>
:错误输出重定向符号(只输出错误的) -
>>
:标准输出追加重定向符号 -
2>>
:错误输出追加重定向符号 -
<
:标准输入重定向符号
tr 'A-Z' 'a-z' < old.txt | xargs echo
<<
:标准输入追加重定向符号
cat >> old.txt <<EOF
xxx
xxx
EOF
- 如何将正确和错误的信息都可以放进去(都是追加)
echo old >> /var/1.log 2>> /var/1.log
或
echo old &>> /var/1.log
或
echo old >> /var/1.log 2>&1
路径信息系列
-
../
:上一级目录 -
./
:当前路径 -
~
:返回到家目录 -
-
:两个目录之间进行快速切换
逻辑符号
-
&&
:与逻辑符号,前一个命令执行成功了才执行后面的命令 -
||
: -
如果前面命令执行失败就执行后面的命令。
-
如果前面命令执行成功就不执行后面的命令
-
;
:不管前面执行是否成功都执行后面的命令(所有命令都执行) -
&&\
:可以将要执行的命令重新一行开始写
0x29-Kali Linux操作系统符号之通配符号
**作用:**根据文件名称进行匹配
通配符号
-
*
:模糊匹配所有内容 -
在grep命令里使用的是正则符号:匹配前一个字符出现了0次或多次
-
{}
: -
生成序列信息(生成一行序列)
echo {1..10}
echo {01..10}
echo {a..z}
- 生成连续序列
echo {1..10..2}
1 3 5 7 9
- 生成不连续序列
echo {www,bbs,ccc}
www bbs ccc
- 生成组合序列
echo {a..c}{01..03}
a01 a02 a03 b01 b02 b03 c01 c02 c03
echo A{01..03}
A01 A02 A03
- 快速备份文件数据
echo old.txt{,.bak}
old.txt old.txt.bak
cp old.txt{,.bak}等价于cp old.txt old.txt.bak
- 快速还原
mv /old/1.txt{.bak,}等价于mv /old/1.txt.bak /old/1.txt
0x30-Kali Linux操作系统符号之正则符号
正则符号的介绍
-
用处
-
利用正则符号匹配文件内容信息
-
正则符号经常出现在各种开发与研制
-
正则符号经常被三剑客命令使用
-
分类
-
基础正则符号:base
-
扩展正则符号:extended
基础符号
^
:匹配以什么开头的
匹配当前路径下的目录
ll | grep "^d"
$
:以什么结尾的信息
匹配以/结尾的
ll -F | grep "/$"
-F 目录后面有一个/
不匹配空行
grep -v "^$"
^$:匹配空行
-v:取反
.
:匹配任意一个字符且只有一个字符
grep -o '.' 1.txt
-o:显示匹配过程
发现每次匹配的都是一个字符一个字符匹配且如果行为空的话不匹配。会对文件所有内容都进行匹配
*
:匹配前一个字符出现了0次或多次
grep -o '01*' 1.txt
会对文件所有内容都进行匹配
先匹配1 然后匹配1
.*
:匹配任意所有信息
#这匹配的是以mm开头mm结尾中间没内容的行。就是一行的内容为mm
grep "^mm$" 1.txt
#这匹配的是以mm开头,mm结尾但中间有内容
grep "^mm.*mm$" 1.txt
转义符号:\
grep "\.$" 1.txt
匹配以.结尾的行
-
将有特殊意义的符号,转义成普通信息进行识别
-
将没有意义的信息转为有特殊意义的信息
\n:换行符号
\t:制表符号
[]
:匹配多个信息。括号里面的的每个字符都是独立的
grep "oldb[oe]y" 1.txt
匹配oldboy和oldbey的信息。
grep "^[a-Z]" 1.txt
括号中的排除:^
grep "^[^a-Z]" 1.txt
匹配不以a-Z开头的行,不包含空行
扩展符号
默认grep、sed不能直接识别。grep需要加-E,sed需要加-r
+
:匹配前一个字符一次或多次
grep -E "0+" 1.txt
|
:并且符号,用于匹配多个信息
grep -E "oldboy|blog" 1.txt
匹配oldboy或blog信息的数据
()
:指定信息进行整体匹配;进行后项引用前项使用
- 批量创建用户
echo oldboy{01..10} | xargs -n1 | sed -r 's#(.*)#useradd \1#g' | bash
ehco oldboy{01..10}:一行输出oldboy01到oldboy10
|xargs -1:将每一块变成一列一列
|sed -r 's#(.*)#useradd \1#g':
-r:识别高级正则符号
s:substitute替换
#要修改的内容#修改后的内容#:修改规则
(.*):一行的所有内容作为一个整体,也就是前项
useradd \1:
useradd:创建用户命令
\1:调用前项,也就是(.*)匹配的内容
|bash:执行命令 useradd .*
- 批量创建并且修改密码
seq -w 10 | sed -r 's#(.*)#useradd oldboy\1#g';echo 123456 | passwd --stdin oldboy\1 | bash
seq -w 10:
01
02
...
10
|sed -r 's#(.*)#useradd oldboy\1#g':
useradd oldboy01
useradd oldboy02
...
useradd oldboy10
#要修改的内容#修改后的内容#:修改规则
(.*):一行的所有内容作为一个整体,也就是前项
useradd \1:
useradd:创建用户命令
\1:调用前项,也就是(.*)匹配的内容
;:不管前面命令是否执行成功都执行后面的命令
echo 123456 | pwsswd --stdin oldboy01:免交互设置密码
|bash:执行命令 useradd .*
{}
:指定字符连续匹配的次数
x{n,m}:x字符至少出现n次,最多匹配m次
grep -E "0{2,3}" 1.txt
如果有连续的3个0,就会只匹配三个0
如果有连续的5个0,就会先匹配3个在匹配2个。五个都会匹配出来
x{n,}:最少匹配n次,最多不限制
x{n}:指定匹配n次
?
:匹配前一个字符出现0次或1次
ifconfig | grep "([0-9]+\.?){4}" -0
[0-9]出现了多次 .出现0次或一次。这个整体匹配4次
0x31-Kali Linux之shell脚本的介绍和使用
shell介绍
**shell(外壳)**是C语言编写的程序,是用户使用linux的桥梁,shell既是一种命令也是一种程序设计语言,即就是脚本语言。常见的脚本语言有JavaScript、VBScript、ASP、JSP、PHP、SQL、Perl、shell、python、Ruby、JavaFX、Lua等,shell其实是一种应用程序,这个应用程序提供了一个用户界面。linux中有很多类型的shell,不同的shell具备不同的功能shell还决定了脚本中函数的语法,linux中默认的shell是 /bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,(知道就行了,别问为啥,因为我也不知道)不同的shell都有自己的特点以及用途。
**bash:**大多数linux系统默认使用的shell都是这个,bash shell是 bourne shell的一个免费版本,是最早的Unix shell,bash还有一个特点就是通过help可以查看帮助,它包含的功能几乎涵盖了shell所有的功能,所以一般的shell脚本都会指定它为执行路径。
shell入门
入门很简单,如果你学过其他的编程语言就更容易上手,还有linux的vim最好能会用,就是基本的操作就可以了,进度就会很快的。
先给大伙说一下,我使用的系统是kali linux,权限在root用户下。
代码规范
#!/bin/bash 指定告知系统当前这个脚本要使用的shell解释器,这行一般都写在首部
shell相关指令
文件命名规范:
文件名.sh .sh是linux下的bash shell的默认后缀
使用流程:
(1)创建.sh 文件 | touch test.sh |
(2)编写shell代码 | |
(3)执行 | 脚本必须得有执行权限 chmod u+x 文件名.sh |
**练习1:**创建一个test.sh 文件脚本程序,输出属于我们的 hello world
注意:输出的内容如果包含字母和符号,则需要用引号包括起来,如果是纯数字,可以包也可以不包。
(1)先创建文件 touch test.sh
(2) vim test.sh 进入编辑,
1 #!/bin/bash
2 echo "hello,world"
(3)完成后按一下 ESC 再shift + :再输入wq进行保存退出
注意:
-
echo是bash的输出语句相当于C语言的printf,C++的cout,java的print
-
前面的我尽可能的把细节说一下,后面就不提了,这些基本的操作一定要熟练才是。
-
加上执行权限:chmod ugo+x test.sh 为所有用户加上此文件的可执行权限,你可能就注意到刚写的test.sh绿了,咳咳,别多想,它就表示整个文件是可执行文件
-
执行:./test.sh 一定要写成 ./test.sh ./ 就相当于告诉系统就在当前目录找。
练习2:
使用root账户创建并执行test2.sh 实现创建一个shelltest用户并在其家目录创建新的文件test.txt
两步走:
(1)添加用户
(2)创建文件如下
1 #!/bin/bash
2 useradd -m -g xk test
3 touch /home/test/test.txt
-g 是指定用户所在的组
在bash里面,写入的Linux命令没有什么特别的地方,不需要语法,就和平常键入命令一样,脚本一旦执行命令也就执行了
然后给这个脚本添加可执行权限并且执行
运行查看:家目录下用户创建成功,对应的文件也创建了
0x32-Kali Linux操作系统加固之账号和口令
禁用或删除无用账号
减少系统无用账号,降低安全风险。
使用命令 userdel <用户名> 删除不必要的账号。
使用命令 passwd -l <用户名> 锁定不必要的账号。
使用命令 passwd -u <用户名> 解锁必要的账号。
检查特殊账号
检查是否存在空口令和root权限的账号。
查看空口令和root权限账号,确认是否存在异常账号:
使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令账号。
使用命令 awk -F: '($3==0)' /etc/passwd 查看UID为零的账号。
加固空口令账号:
使用命令 passwd <用户名> 为空口令账号设定密码。
确认UID为零的账号只有root账号.
添加口令策略
加强口令的复杂度等,降低被猜解的可能性。
使用命令 vi /etc/login.defs 修改配置文件。
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
使用chage命令修改用户设置。
例如,chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>表示将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户。
设置连续输错三次密码,账号锁定五分钟。使用命令 vi /etc/pam.d/common-auth修改配置文件,在配置文件中添加 auth required pam_tally.so onerr=fail deny=3 unlock_time=300。
限制用户su
限制能su到root的用户。
使用命令 vi /etc/pam.d/su修改配置文件,在配置文件中添加行。例如,只允许test组用户su到root,则添加 auth required pam_wheel.so group=test。
禁止root用户直接登录
限制root用户直接登录。
创建普通权限账号并配置密码,防止无法远程登录;
使用命令 vi /etc/ssh/sshd_config修改配置文件将PermitRootLogin的值改成no,并保存;
然后使用service sshd restart重启服务。
0x33-Kali Linux操作系统加固之服务
关闭不必要的服务
关闭不必要的服务(如普通服务和xinetd服务),降低风险。
使用命令systemctl disable <服务名>设置服务在开机时不自动启动。
说明:可以使用命令chkconfig --level <init级别> <服务名> off设置服务在指定init级别下开机时不自动启动。
SSH服务安全
对SSH服务进行安全加固,防止暴力破解成功。
使用命令 vim /etc/ssh/sshd_config 编辑配置文件。
不允许root账号直接登录系统。
设置 PermitRootLogin 的值为 no。
修改SSH使用的协议版本。
设置 Protocol 的版本为 2。
修改允许密码错误次数(默认6次)。
设置 MaxAuthTries 的值为 3。
配置文件修改完成后,重启sshd服务生效。
0x34-Kali Linux操作系统加固之文件系统
设置umask值
设置默认的umask值,增强安全性。
使用命令 vi /etc/profile 修改配置文件,添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。
设置登录超时
设置系统登录后,连接超时时间,增强安全性。
使用命令 vi /etc/profile 修改配置文件,将以 TMOUT= 开头的行注释,设置为TMOUT=180,即超时时间为三分钟。
0x35-Kali Linux操作系统加固之日志
syslogd日志
启用日志功能,并配置日志记录。
Linux系统默认启用以下类型日志:
1、系统日志(默认)/var/log/messages
2、cron日志(默认)/var/log/cron
3、安全日志(默认)/var/log/secure
注意:部分系统可能使用syslog-ng日志,配置文件为:/etc/syslog-ng/syslog-ng.conf。
记录所有用户的登录和操作日志
通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。
1、运行vim /etc/profile
打开配置文件。
2、在配置文件中输入以下内容:
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
运行source /etc/profile加载配置生效
注意:/var/log/history
是记录日志的存放位置,可以自定义。
通过上述步骤,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外)。
0x36-Kali Linux防火墙配置与管理之防火墙基础
防火墙的概念
防火墙是一种网络安全设备,用于监控和控制网络流量,根据预定义的规则来允许或拒绝来自不同网络的数据包。它可以保护计算机或网络免受未经授权的访问、网络攻击和恶意软件的威胁。
防火墙在Kali Linux中的作用
Kali Linux是一种基于Debian的Linux发行版,专注于渗透测试和网络安全。其中,防火墙在Kali Linux中起到重要作用,可以帮助保护系统免受恶意攻击和未经授权的访问。
Kali Linux中的防火墙可以协助用户过滤网络流量,限制网络访问,并提供额外的层次保护。通过配置适当的规则和策略,用户可以选择让特定的网络流量通过或阻止,从而保护系统的安全性。
常见的Kali Linux防火墙工具
在Kali Linux上,有许多可以用于配置和管理防火墙的工具。以下是其中一些常见的工具:
iptables: 是一个功能强大的命令行工具,用于配置Linux系统的防火墙。它允许用户定义各种规则和过滤器来控制
网络流量。
ufw(Uncomplicated Firewall): 是iptables的前端工具,提供了更简单的用户界面和配置选项。
firewalld: 是基于D-Bus的防火墙管理工具,可以用于添加、删除和修改防火墙规则。
Gufw: 是ufw的图形界面前端,提供了直观易用的方式来配置ufw防火墙。
特性/防火墙 | iptables | ufw | firewalld | Gufw |
操作系统支持 | 所有Linux发行版 | Debian系列(Ubuntu等) | 主要Red Hat系列(CentOS、RHEL等) | Debian系列(Ubuntu等) |
用户界面 | 命令行 | 命令行(简化iptables命令) | 命令行和图形界面(firewall-config) | 图形界面 |
配置持久化 | 需要手动保存规则 | 配置时自动持久化 | 配置时自动持久化 | 通过ufw命令持久化 |
默认策略 | 允许所有流入 | 拒绝所有流入,允许所有流出 | 基于区域的默认策略(如public区域拒绝流入) | 遵循ufw的默认策略 |
规则复杂度 | 高,需要深入了解 | 低,简化了iptables规则 | 中等,提供了区域和服务的概念简化配置 | 低,图形界面简化了规则设置 |
实时更新规则 | 不支持,更改后需重启 | 支持 | 支持 | 支持,通过ufw命令 |
多版本支持 | IPv4和IPv6(iptables和ip6tables) | IPv4和IPv6 | IPv4和IPv6(底层使用nftables) | IPv4和IPv6(基于ufw) |
兼容性 | 广泛使用,但逐渐被nftables替代 | 基于iptables,广泛使用 | 逐渐取代iptables,特别是在新系统中 | 基于ufw,用户友好 |
使用场景 | 适合高级用户和定制需求 | 适合需要简化iptables配置的用户 | 适合需要动态规则和区域管理的场景 | 适合不熟悉命令行操作的用户 |
以上是一些常见的防火墙工具,您可以根据自己的需求选择适合您的工具来配置和管理Kali Linux的防火墙。
希望通过本章的介绍,您对Kali Linux防火墙基础有了初步的了解。在接下来的章节中,我们将详细探讨Kali Linux防火 墙的配置和管理。
0x37-Kali Linux防火墙配置与管理之防火墙配置
检查当前防火墙状态
首先,我们需要检查当前Kali Linux系统上防火墙的状态。在Kali Linux中,默认使用的是iptables作为防火墙工具。我们可以通过以下命令来查看当前的防火墙规则
sudo iptables -L
该命令将列出当前所有的防火墙规则,包括允许的和禁止的规则。
配置Kali Linux默认防火墙规则
在Kali Linux中,可以通过编辑iptables规则文件来配置默认的防火墙规则。编辑iptables规则文件可以
在/etc/iptables/rules.v4(IPv4)和/etc/iptables/rules.v6(IPv6)找到。我们可以使用文本编辑器,如nano或vim来编辑这些文件。
为了添加一个允许所有本地传出流量的规则,我们可以编辑/etc/iptables/rules.v4文件,并添加以下规则:
# 允许所有本地传出流量
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j DROP
保存文件后,我们需要重新加载防火墙规则,以使更改生效。可以使用以下命令重新加载防火墙规则:
sudo iptables-restore < /etc/iptables/rules.v4
自定义防火墙规则
除了修改默认的防火墙规则外,我们还可以添加自定义的防火墙规则。例如,如果我们需要允许特定端口的流量通过防火墙,我们可以使用类似以下命令的规则:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
该命令将允许SSH流量通过防火墙。我们也可以通过类似的命令来禁止特定IP地址的流量通过防火墙:
sudo iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
以上是配置Kali Linux防火墙的基本内容,接下来我们将进一步学习如何管理这些防火墙规则以及如何在实践中应用它们。
0x38-Kali Linux防火墙配置与管理之防火墙状态管理
在本章中,我们将深入探讨Kali Linux防火墙的管理,包括如何管理防火墙状态、添加、删除和修改防火墙规则,以及防火墙日志的查看与分析。
防火墙状态管理
在Kali Linux中,可以使用iptables命令来管理防火墙状态。以下是一些常用的iptables命令:
检查当前防火墙规则:
sudo iptables -L
该命令将列出当前的防火墙规则,包括已设置的规则和策略。
关闭防火墙:
sudo iptables -F
该命令将清空所有已设置的规则和策略,相当于关闭防火墙。
开启防火墙:
sudo iptables-restore < /etc/iptables/rules.v4
该命令将加载先前保存的iptables规则,相当于开启防火墙并应用之前保存的规则。
添加、删除和修改防火墙规则
要添加新的防火墙规则,可以使用iptables命令的-A参数,例如:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
该命令将允许TCP流量通过端口80。
要删除已有的防火墙规则,可以使用iptables命令的-D参数,例如:
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
该命令将删除允许TCP流量通过端口80的规则。
要修改防火墙规则,可以先删除旧规则,然后添加新规则。
防火墙日志查看与分析
Kali Linux的防火墙日志通常存储在/var/log目录下,您可以使用grep命令来查看和分析防火墙日志,例如:
sudo grep "BLOCK" /var/log/syslog
该命令将过滤并显示包含"BLOCK"关键词的防火墙日志条目,这有助于您了解哪些流量被阻止了。
以上是Kali Linux防火墙管理的基本操作,通过这些操作,您可以灵活地管理和调整防火墙规则,以确保系统的安全性。
0x39-Kali Linux防火墙与入侵之防火墙实践应用
阻止非授权访问
在Kali Linux中,防火墙可以用于限制非授权访问,提高系统安全性。以下是一个例子,假设我们需要拒绝所有对SSH
服务的访问,除非是特定的IP地址:
# 配置防火墙规则,拒绝所有对SSH服务的访问
sudo iptables -A INPUT -p tcp --dport 22 -s ! 允许的IP地址 -j DROP
代码解释:
sudo iptables:使用iptables进行防火墙规则配置
-A INPUT:添加规则到INPUT链,即对输入流量进行过滤
-p tcp:指定使用TCP协议
–dport 22:指定目标端口为SSH的默认端口22
-s ! 允许的IP地址:指定源IP地址为非允许的IP地址
-j DROP:如果上述条件匹配,则丢弃该数据包
代码总结:上述规则实现了拒绝所有来源非指定IP地址的SSH访问。
结果说明:此规则添加后,系统将拒绝所有非特定IP地址的SSH访问,从而提高了系统的安全性。
配置防火墙以保护服务
对于Kali Linux中运行的特定服务(如Web服务、数据库服务),可以通过防火墙配置来限制访问,提高服务的安全性。以下是一个示例,假设我们需要允许对Web服务(HTTP和HTTPS)的访问,但限制到特定IP地址:
# 配置防火墙规则,允许特定IP地址对HTTP和HTTPS服务的访问
sudo iptables -A INPUT -p tcp -s 允许的IP地址 --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 允许的IP地址 --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP
代码解释:
-A INPUT:添加规则到INPUT链
-p tcp:指定使用TCP协议
-s 允许的IP地址:指定允许的源IP地址
–dport 80:指定目标端口为HTTP服务的端口80
–dport 443:指定目标端口为HTTPS服务的端口443
-j ACCEPT:如果上述条件匹配,允许数据包通过
-j DROP:如果上述条件不匹配,丢弃数据包
代码总结:上述规则允许指定IP地址对HTTP和HTTPS服务的访问,同时拒绝其他IP地址对这两个服务的访问。
结果说明:配置后,只有特定IP地址可以访问HTTP和HTTPS服务,提高了服务的安全性。
防火墙与网络安全应用案例
Kali Linux防火墙的实践应用还包括但不限于:保护
Kali Linux防火墙的实践应用还包括但不限于:保护内部网络不受外部网络的攻击、限制恶意流量对系统资源的占用、 为安全审计提供有效的安全策略等。在实际网络安全环境中,结合防火墙与其他安全工具的使用,可以更全面地提升系统的安全性。
以上是Kali Linux防火墙实践应用的部分示例,通过合理配置防火墙规则,能够有效保护系统和服务不受未授权访问和恶意攻击。
0x40-Kali Linux防火墙与入侵之检测系统(IDS)的集成
什么是入侵检测系统(IDS)?
入侵检测系统(IDS)是一种计算机安全技术,用于监视网络或系统中的恶意活动和违规行为。它可以识别和响应各种安全事件,包括恶意软件、未经授权访问、端口扫描等。
防火墙与IDS的集成原理
Kali Linux防火墙可以与IDS集成,以加强对网络安全的监控和保护。通过在防火墙中设置规则,可以将流量引导到IDS进行检测,从而实现对潜在威胁的识别和响应。
配置防火墙与IDS的集成
1 配置防火墙规则
# 设置防火墙规则,将流量引导到IDS
iptables -A INPUT -j NFQUEUE --queue-num 0
iptables -A OUTPUT -j NFQUEUE --queue-num 0
2 启动IDS服务
# 启动IDS服务,对进入队列的流量进行检测
sudo suricata -q 0
3 监控IDS日志
# 监控IDS日志,查看检测到的安全事件
sudo tail -f /var/log/suricata/fast.log
结论
通过在Kali Linux防火墙中配置与IDS的集成,可以实现对网络流量的实时监控和安全威胁的检测。这种集成模式能够大大提高对潜在攻击的识别和响应能力,是网络安全防护的重要手段之一。
0x41-Kali Linux防火墙的实践
在配置和管理Kali Linux防火墙时,有一些最佳实践原则可以帮助您提高网络安全性和防火墙的效能。本章将介绍一些关键的实践原则,以确保您的防火墙系统运行良好并保护您的系统和网络。
防火墙规则的优化
- 删除不必要的规则
在配置防火墙规则时,应该定期审查并删除不再需要的规则。这些规则可能是过时的、不使用的或与您的当前配置不符的规则。通过删除不必要的规则,您可以减少规则集的复杂性,并提高防火墙的性能和可维护性。
# 示例:删除不必要的规则
iptables -D INPUT 5 # 删除编号为5的INPUT链规则
- 使用IP组和端口组
使用IP组和端口组在大规模配置规则时能够更好地管理和组织规则。IP组将相关的IP地址组合在一起,并为组指定一个名称,从而使得添加和删除IP地址更加方便。端口组的原理也是类似的,它将相关的端口组合在一起,并为组指定一个名称。
# 示例:创建IP组和端口组
iptables -N GROUP1 # 创建一个名为GROUP1的IP组
iptables -A GROUP1 -s 192.168.1.0/24 -j ACCEPT # 将192.168.1.0/24添加到GROUP1组中
iptables -A INPUT -m set --match-set GROUP1 src -j ACCEPT # 将GROUP1组应用到INPUT中
iptables -N GROUP2 # 创建一个名为GROUP2的端口组
iptables -A GROUP2 -p tcp --dport 80 -j ACCEPT # 将80端口添加到GROUP2组中
iptables -A INPUT -m set --match-set GROUP2 dst -j ACCEPT # 将GROUP2组应用到INPUT中
定期审查与更新防火墙规则
定期审查和更新防火墙规则是保持防火墙系统的有效性和安全性的重要步骤。随着网络环境的变化和攻击技术的不断发展,您的防火墙配置可能需要进行调整和更新。
审查日志和网络流量
通过审查防火墙日志和网络流量,您可以识别潜在的攻击行为和漏洞,并采取相应的措施加强防护。定期检查日志和网络流量,可以及时发现异常活动,并针对性地更新防火墙规则。
# 示例:查看防火墙日志
tail -f /var/log/iptables.log # 实时显示防火墙日志
# 示例:禁止特定的IP地址
iptables -A INPUT -s 192.168.1.100 -j DROP # 禁止IP地址为192.168.1.100的流量
实验室环境与生产环境的防火墙配置差异
由于实验室环境和生产环境的需求和风险不同,防火墙在这两种环境下的配置也会有所差异。
在实验室环境中,可能需要更加灵活的防火墙规则,以便测试不同的网络配置和攻击场景。然而,在生产环境中,稳定性和安全性是首要考虑的因素,因此需要更加严格的防火墙规则,以限制访问权限和减少攻击面。根据实验室和生产环境的不同需求,您可以采取不同的防火墙配置策略,以确保防火墙系统能够最大程度地满足您的要求。
以上是关于Kali Linux防火墙的最佳实践的一些建议。通过遵循这些实践原则,您可以提高防火墙的性能和安全性,并保护您的网络和系统免受潜在的威胁。
0x42-kali中通过Hydra破解密码ssh
介绍
Hydra又叫九头蛇,是一款由著名的黑客组织THC开发的开源暴力破解工具,支持大部分协议的在线密码破解,是网络安全渗透测试必备的一款工具
目前支持的协议包括:Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP。
环境:kali中自带hydra这款工具。
实战中利用场景:发现目标机开启了ssh服务。
使用命令
选项 | 描述 |
-R | 恢复先前终止/崩溃的会话 |
-I | 忽略现有的还原文件(不要等待10秒) |
-S | 执行SSL连接 |
-s PORT | 如果服务在不同的默认端口上,则在这里定义它 |
-l LOGIN or -L FILE | 使用指定登录名登录,或者使用文件加载多个登录名 |
-p PASS or -P FILE | 使用指定密码登录,或者使用文件加载多个密码 |
-x MIN:MAX:CHARSET | 密码暴力生成, 使用’-x -h‘获取帮助 |
-y | 暴力破解时忽略符号,见上文 |
-e nsr | 可选选项,n:空密码试探,s:使用指定用户和密码试探,或“r”反向登录 |
-u | 循环用户,而不是密码(有效!用-x表示) |
-C FILE | 使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数 |
-M FILE | 要攻击的服务器列表,每行一个条目,':'指定端口 |
-o FILE | 将找到的登录名/密码对写入FILE而不是输出 |
-b FORMAT | 指定-o文件的格式:text(默认),json, jsonv1 |
-f / -F | 当找到login/pass对时退出(-M: -f per host, -f global) |
-t TASKS | 同时运行的线程数,默认为16 |
-T TASKS | run TASKS connects in parallel overall (for -M, default: 64) |
-w / -W TIME | 设置最大超时的时间,单位秒,默认是30s |
-c TIME | 所有线程上每次登录尝试的等待时间(强制执行-t 1) |
-4 / -6 | 使用IPv4(默认)/ IPv6地址(将always放在[]中,也放在-M中) |
-v / -V / -d | 详细模式/每次尝试显示登录+通过/调试模式 |
-O | 使用旧的SSL v2和v3 |
-K | 不重做失败的尝试(适用于-M批量扫描) |
-q | 不打印有关连接错误的消息 |
-U | 服务模块使用详情 |
-m OPT | 选项特定于模块,请参见-U output获取信息 |
-h | 更多命令行选项(帮助) |
server | 目标:DNS、IP或192.168.0.0/24(这个或-M选项) |
service | 指定服务名,支持的服务和协议 |
OPT | 一些服务模块支持额外输入(-U表示模块帮助) |
使用说明:
这些命令基本用法用起来大体上很类似,我们以第一个命令为例,大体上可以分成三部分,即用户名,密码,和协议。
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh
kali自带密码字典:
在kail中是自带字典的,可以通过/usr/share/wordlists/dirb路径进行查看,当然都是txt文件,也可以自己向里面添加。
big.txt #大的字典
small.txt #小的字典
catala.txt #项目配置字典
common.txt #公共字典
euskera.txt #数据目录字典
extensions_common.txt #常用文件扩展名字典
indexes.txt #首页字典
mutations_common.txt #备份扩展名
spanish.txt #方法名或库目录
others #扩展目录,默认用户名等
stress #压力测试
vulns #漏洞测试
Hydra密码生成器
参数 | 介绍 |
-x MIN:MAX:CHARSET | 规则:MIN表示生成密码的最短长度;MAX表示生成密码的最长长度;CHARSET表示使用指定的字符生成密码,'a’表示所有的小写字母,'A’表示所有的大写字母,'1’表示所有的数字,对于其他字符,只需要添加在后面即可 |
-y | 使用方式见-x,它表示charset的字符是实际的字符,而不是正则表达式 |
-x 3:5:a | 生成的密码字典长度为3到5位,由所有的小写字母组成 |
-x 5:8:A1 | 生成的密码字典长度为5到8位,有所有的大写字母和数字组成 |
-x 5:5/%,.- | 生成的密码字典长度为5位,只由’/ % , . -'这5种字符构成 |
-x 3:5:aA1 -y | 生成的密码字典长度为3到5位,且只由’a A 1’这三种字符组成 |
-x 3:5:aA1.-+# | 生成的密码字典长度为3到8位,由大小写字母+数字+.-+#进行组合。 |
实战爆破SSH
hydra -l user.txt -P passwd.txt -o ssh.txt -vV -t ip ssh -s 22
#-l 指定用户字典文件
#-P 指定密码字典文件
#-o 把成功的输出到ssh.txt文件
#-vV 显示详细信息
#-s 指定其他端口 如果要修改默认22端口,可以使用 -s 参数
实战步骤:
第一步:对目标主机进行探测
第二步:创建或设置好自己的密码字典
第三步:设置好攻击方式进行爆破
0x43-kali中fcrackzip破解zip保护密码
介绍
在Linux中,我们常用fcrackzip这款工具来找回我们的密码。在kali中此工具默认安装。如果其他系统想要安装此工具,我们只需执行下面命令即可。
安装方式
apt-get install fcrackzip
常看帮助
fcrackzip -h
常用参数
-
-b
暴力破解方式 -
-D
字典破解方式 -
-c
暴力破解的字符类型,1=19,a=az,A=A~Z,!=字符,:=所有字符 -
-v
显示实时爆破信息 -
-l
指定破解的密码为几位数 -
-u
指定爆破文件 -
-p
破解的起始位置
实践案例
准备:对zip文件进行加密压缩
攻击指令:fcrackzip -b -c1 -v -u kali.zip
0x44-kali中sqlmap的使用
介绍
首先,SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现、利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB。
SQLMap支持五种不同的注入模式:
1. 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
2. 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句
网络安全学习包
资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
282G《网络安全/黑客技术入门学习大礼包》,可以扫描下方二维码免费领取!
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**
**
6.面试题合集
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
更多内容为防止和谐,可以扫描获取~
朋友们需要全套共282G的《网络安全/黑客技术入门学习大礼包》,可以扫描下方二维码免费领取!
END