day10_kls_review

课程内容

docker-compose

yml的构成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: '3.9'  # Compose 文件格式版本
services: # 服务定义
service_name: # 服务名称
image: image_name:tag # 使用的镜像和标签
build: # 构建选项(可选)
context: ./path # Dockerfile 的上下文目录
dockerfile: Dockerfile # Dockerfile 文件名
container_name: container_name # 容器名称(可选)
ports: # 端口映射
- "外部端口:容器端口"
volumes: # 数据卷挂载
- "宿主路径:容器路径"
environment: # 环境变量
- KEY=value
depends_on: # 服务依赖关系
- other_service_name
networks: # 网络配置
- network_name
networks: # 自定义网络(可选)
network_name:
driver: bridge
volumes: # 定义数据卷(可选)
volume_name:
driver: local

实例&&作业

docker-compose搭建harbor

image.png

已经启动过了,这里就不演示启动了

思考&&todo

复习内容没写,累了,周五下午打游戏去了。

week2_kls_exam

题目1

id:: 67401618-77f2-4cd7-ab26-b033e352aa66

配置vsftpd服务,添加ftp服务用户lihua,并限制lihua使用ftp服务的访问路径为/usr/share/ftp_files

step1:添加用户,并设置家目录,以及家目录权限,设置密码

image.png

image.png

step2:修改vsftp配置文件

image.png

修改/etc/vsftpd/vsftpd_userlist

image.png

创建/etc/vsftpd/user_conf目录,并添加lihua配置文件

image.png

step3:重新加载vsftp配置文件并重启

image.png

step4:连接ftp

image.png

vsftp.gif

题目2

配置ssh服务,要求用户jack可以使用id_rsa 免密登录ssh

server: centos.pcx.home

client: kali.pcx.home

step1:添加jack用户,创建家目录,设置密码

image.png

step2:让jack生成ssh公私钥匙对

image.png

step3:上传公钥

image.png

step4:登陆centos

image.png

在centos端查看在线用户:

image.png

在centos端查看~/.ssh/authorized_keys

image.png

题目3

在kali上编写ufw防火墙规则,禁止kali连接任何机器的smb服务

step1:开启smb服务并测试

image.png

连接测试

image.png

step2:ufw规则编写

现有规则查看

image.png

新规则添加

image.png

sudo ufw deny out 139/tcp,445和139都要禁止

查看规则

image.png

step3:重启ufw并尝试连接其他主机的smb

重启

image.png

尝试连接

kalismb.gif

题目4

基于Dockerfile构建的镜像搭建一个容器,要求同时具有ssh服务与redis服务,基础镜像选择 centos/debian/ubuntu均可

step1:拉取ubuntu镜像

image.png

这里拉过了,就不拉了

step2:编写Dockerfile

启动脚本

1
2
3
4
5
6
7
#!/bin/bash
# 启动 SSH 服务
service ssh start
# 启动 Redis 服务
redis-server &
# 保持容器运行
tail -f /dev/null

image.png

step3:构建镜像

image.png

查看镜像

image.png

step4:测试镜像

创建容器

image.png

image.png

测试ssh连接

image.png

测试redis连接

image.png

day9_kls

课程内容

docker网络

docker中的网络模式

bridge

host

none

相关命令

查看:docker network ls,docker network inspect NETWORK

创建:docker network create -d TYPE network_name

加入:docker network connect NETWORK CONTAINER [CONTAINERS]

使用

在创建容器时使用--network 指定网络即可docker run --network NETWORK IMAGE

docker卷

基本用法

查看docker volume ls

创建docker volume create volume_name

删除docker volume rm VOLUME

使用

在创建容器时使用-v指定即可docker run -v VOLUME:xxx IMAGE

docker创建自己的镜像(dockerfile)

不使用dockerfile(docker commit 不推荐)

不使用dockerfile,基于CONIANER的修改生成新的镜像

使用docker commit CONTAINER IMAGE

不推荐使用:

难以维护

不透明,无法得知修改了什么

使用dockerfile

基本语法

FROM:指定基础镜像。

RUN:运行命令。

CMDENTRYPOINT:指定容器启动命令。

COPYADD:复制文件到镜像中。

WORKDIR:设置工作目录。

ENV:设置环境变量。

EXPOSE:声明端口。

VOLUME:定义挂载点。

LABEL:添加元数据。

生成镜像

docker build -t IMAGE docker_file_dirname

docker-compose

概念

docker-compose.yml是docker-compose启动所需的配置文件。默认是这个,如果你要使用其他的请在运行时指定docker-compose up -f /path/to/your_yml

命令

创建docker-compose up [options],常用的参数-d后台运行

启停docker-compose start/stop

删除docker-compose down

实例&&作业

dvwa站库分离(php-apache+mysql)

创建docker网络

1
docker network create -d bridge my_self_bridge

image.png

php-apache环境搭建

image.png

因拓展无法安装,后面这个我换成了php:8.0-apache,后面发现不是php版本的问题。dvwa官方推荐7.3及以上

创建mysql数据库

image.png

这里无需进行映射端口,使用主机名(容器名)连接即可

创建结束后,我们查看该网络的信息

1
docker network inspect my_self_bridge

image.png

我们发现这两个container已经加入到网络中了

把dvwa源码扔到php的app目录

image.png

复制配置文件并修改

image.png

这里的db_server我们可以设置为dvwa-mysql(容器名)

修改完成后访问setup.php

image.png

发现没有mysqli拓展

php镜像官方提供了一个工具docker-php-ext-install用于安装拓展

1
2
3
4
5
6
7
8
docker exec -it my-apache-php-app /bin/bash
# 为dg的安装提前安装相关依赖
apt-get update && apt-get install -y \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
zlib1g-dev
docker-php-ext-install mysqli dg pdo_mysql

现在我们退出容器,重新启动容器

image.png

创建第一个自己的镜像(docker commit)

拉取ubuntu镜像

image.png

创建一个ubuntu容器,并在后台运行

image.png

kitten可执行文件上传

image.png

将镜像提交

image.png

根据刚创建的镜像开启一个新的容器,查看/bin下是否有kitten

image.png

image.png

构建python程序镜像(docker build)

dockerbuild文件编写

1
2
3
4
5
6
7
FROM python:3.8
RUN mkdir /opt/app
WORKDIR /opt/app
COPY . .
RUN pip install --upgrade pip \
&& pip install -r requirements.txt
CMD ["python", "/opt/app/main.py"]

关于参数传递,可以使用,run的参数传递,环境变量,配置文件等

image.png

创建镜像docker build -t IMAGE:TAG .

运行docker run IMAGE args

思考&&todo

DONE dockerfile编写

day8_kls

课程内容

docker

安装docker-ce

centos安装docker以及docker-compose | ziWindlu的博客

使用apt包管理器的发行版

1
2
3
4
5
6
7
8
9
10
11
12
# 添加公钥
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 参加仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

特殊的,如果你使用的kalilinux,那么在添加仓库这一步需要将"$(. /etc/os-release && echo "$VERSION_CODENAME")"替换为buster

普通权限用户便捷地执行docker

方案1使用sudo无需输入密码

编辑你的sudoers

user_name ALL=(root:root) NOPASSWD: /bin/docker

这样你就可以愉快的sudo docker

方案2加入docker用户组(好用,推荐)

1
2
3
usermod -aG docker $USER
# 切换到docker用户组,不想执行这个命令的话,你可以重新登陆一下
newgrp docker

这样你就可以愉快的使用docker啦,不用使用sudo

docker添加代理

编辑/etc/docker/daemon.json配置docker的代理

1
2
3
4
5
6
7
{
"proxies": {
"http-proxy": "your_proxy",
"https-proxy": "your_proxy",
"no-proxy": "your_no_proxy_doman,other_doman"
}
}

重启docker

1
2
systemctl daemon-reload
systemctl restart docker

使用

概念

容器(CONTAINER)、镜像(IMAGE)

镜像相关操作

搜索镜像docker search IMAGE

拉取镜像docker pull IMAGE

创建

docker run [options] IMAGE [command [args]]

参数 说明 举例
-d 以守护程序运行(后台运行)
-v 创建挂载绑定 docker run -v /host/path:/container/path IMAGE
-p 端口映射 docker run -p host_port:container_port IMAGE
--name 指定容器名 docker -run --name container_name IMAGE
--restart 重启策略 常用的always,no
-e 设置环境变量 docker run -e ENV_KEY="env_value" IMAGE
--rm 容器退出后删除 docker run --rm busybox ping baidu.com
修改

docker update [options] CONTAINER [CONTAINERS]

删除

删除容器docker rm CONTAINER

删除镜像docker rmi IMAGE

打包与导入

镜像

打包:docker save -o xx.tar IMAGE

导入:docker load -i xx.tar

容器

打包:docker export -o xx.tar CONTAINER

导入:docker import xx.tar IMAGE

docker网络

TODO [[docker网络]]

日志

docker logs -f CONTAINER

docker添加kitty集成

step1:将kitten可执行文件放到docker的/bin或其他可执行目录中

step2:接下来愉快的执行docker exec -it container_name kitten run-shell --shell=/path/to/shell

散碎的知识点

实例&&作业

使用docker启动一个nginx

寻找可用镜像

在dockerhub中搜索ngnix

image.png

我们使用官方镜像

拉取镜像

image.png

创建docker容器

nginx文档给出了一个简单的命令

image.png

测试

在目录下创建一个index.html

image.png{:height 132, :width 687}

访问localhost:8080

2024-11-20_13-51.jpg
id:: 673d78e0-9c74-47bd-b3eb-5f9e34550dff

使用docker搭建lamp+dvwa

拉取lamp

docker pull mattrayner/lamp:latest-1804

image.png

启动容器

docker run -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest-1804

image.png

我们发现了mysql的密码

image.png

下一步我们要修改mysql密码,我们直接使用phpmyadmin,账号为admin,密码为mysql的密码

image.png

image.png

下载dvwa源码并传到目标服务器

image.png

解压并复制一份dvwa配置

image.png

image.png

修改dvwa数据库配置

image.png

在网页端初始化dvwa

image.png

image.png

思考&&todo

参考

day7_kls

课程内容

防火墙

linux常用的防火墙

iptables(基于netfilter)

nftables(iptables的后继,现代化的防火墙)

ufw(基于iptables)

firewalld

基本概念

四表五链

四表(table):Filter表、NAT表、Mangle表、Raw表

五链(chain):PREROUTING链、INPUT链、FORWARD链、OUTPUT链、POSTROUTING链

规则(以iptables为例)

匹配条件:

指定规则适用的数据包类型(如源地址、目标地址、协议等)。

IP 地址:-s 192.168.1.1(源地址)或 -d 10.0.0.1(目标地址)。

协议:-p tcp。

端口:–dport 22(目标端口)或 –sport 80(源端口)。

动作(Action):

定义数据包被匹配后执行的操作。

常见动作:

ACCEPT:允许数据包通过。

DROP:直接丢弃数据包。

REJECT:拒绝数据包并返回响应。

LOG:记录数据包信息到日志中。

便捷的规则书写

多个ip

指定某个网络:iptables -A INPUT -s 192.168.1.1,192.168.1.0/24 -j ACCEPT

指定多个非连续ip:iptables -A INPUT -s 192.168.1.1,192.168.1.2,192.168.1.3 -j ACCEPT

指定多个连续ip:sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.120 -j ACCEPT

多个端口

使用,指定多个端口:-m multiport,iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT

使用:指定多个端口:,iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

规则匹配逻辑

从上到下逐行匹配,第一条匹配成功后立即停止检查后续规则

因此,规则匹配的顺序应从具体到通用,特例优先,全局策略后置。

iptables

启停

systemctl start/stop iptables

查看规则

查看规则iptables -t [table] -L [chain] [options]

常用参数:

参数 说明 举例
-n numeric,显示数字ip和端口
-v verbose,冗长的信息
--line-number 列出规则时在每一行添加数字(这个数字在删除时有帮助)

添加规则

iptables -t [table] -A [chain] [match] -j [action]

删除规则

iptables -t [table] -D [chain]

table默认为filter

永久保存防火墙配置

保存iptables-save > file

加载iptables-restore < file

自动导入:写一个开机自启脚本,使用 iptables-persistent

ufw

启停

systemctl start/stop/restart ufw

ufw enable/disable/reload

状态查看:

systemctl status ufw

ufw status

查看规则

ufw status [numberd] [verbose]

添加规则

ufw action args

action:allow,reject,deny,limit

简单的args:

端口号/协议port[/protocol]

服务名service,example:samba,ftp,mysql

注意这里的mysql等服务都是默认的端口,如果你改了对应服务的端口,这里不会生效

指定出入方向

ufw allow out 22

值得注意的,如果没有指定方向那么方向默认为in

指定出入ip,协议,端口

ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25

from:原ip,to 目的ip

指定网卡

ufw deny on interface proto tcp

一些方便的写法

any所有的ip

删除规则

ufw delete add_thing

add_thing为你添加时输入的内容

永久保存防火墙配置

ufw默认就是永久保存,无需做其他操作

firewalld

启停

systemctl start/stop/restart firewalld

查看规则

firewall-cmd --list-all

添加规则

firewall-cmd --add-xx args

example:

添加http服务放行firewall-cmd --add-service http

添加tcp88端口放行firewall-cmd --add-port 88/tcp

如果想要添加永久规则,需要添加参数--permanent,例如firewall-cmd --permanent --add-service http,让其生效需要执行firewall-cmd --reload

删除规则

firewall-cmd --remove-xx args

example:

删除服务规则firewall-cmd --remove-service service_name

其他的

应急模式firewall-cmd --panic-on/off

selinux

强制访问控制,为linux提供了细粒度的安全控制。

临时关闭

setenforce 0

永久关闭

编辑/etc/selinux/config

修改SELINUX为disableSELINUX=disabled

实例&&作业

iptables添加规则拦截icmp(iptables)

规则添加前,ping kali

image.png

添加规则

iptables.gif

规则添加后,ping kali

image.png

防火墙禁止https出网(iptables)

未配置的情况

image.png

添加防火墙规则

image.png

配置后的情况

image.png

防火墙禁止访问tcp8000端口(iptables)

pcx.z.home开启一个8000端口的http服务

image.png

访问正常

image.png

配置防火墙策略

image.png

配置后的情况

image.png

防火墙配置禁止某个网卡发送icmp包

配置防火墙策略iptables -I OUTPUT -o interface_name -p icmp -j DROP

验证ping -I interface host

防火墙配置允许连接本地ssh(ufw)

配置前

image.png

假装连不上

配置防火墙规则

image.png

连接成功

image.png

思考&&todo

DONE kitty+zsh补全显示异常问题解决

kali的zsh配置的问题,我们自己配置就不会有这个问题了

参考

man ufw

man iptables

SELinux ArchWiki

day6_kls

课程内容

ssh服务

服务sshd,端口22,配置文件:/etc/ssh/sshd_config,重要的相关文件~/.ssh/authorized_keys

cron

服务cronie等,重要的相关文件/etc/crontab,/var/spool/cron/username

SMB

服务端

安装:yum install samba

archlinux下samba服务搭建 | ziWindlu的博客

端口445,139

配置文件:/etc/samba/smb.conf

smb用户管理:pdbedit

客户端

smbclient连接smbsmbclient --user username //host/share_name

挂载mount -t cifs -o username=user_name,password=passwd //host/share_name /local_mount_point

对于linux挂载需要安装cifs-utils

win(net use)命令行挂载net use \\host\share_name password /user:user_name

安全

windows的安全策略

防火墙默认组织smb连接

杀毒软件默认阻止smb连接

历史漏洞

ms17010(永恒之蓝)

CVE-2017-7494

ftp

服务端

安装:yum install vsftpd

端口:

配置文件:/etc/vsftpd/vsftpd.conf

常见配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 匿名用户关闭
anonymous_enable=NO
# 匿名用户的ftp根目录(匿名用户开启才有效)
anon_root=/opt/ftp
# 允许本地用户登陆
local_enable=YES
# 允许写入
write_enable=YES
# 启用用户列表功能
userlist_enable=YES
# 用户列表文件
userlist_file=/etc/vsftpd/vsftpd.userlist
# 用户列表策略
userlist_deny=NO
# 禁止切换root目录
chroot_local_user=YES
allow_writeable_chroot=NO

多用户列表配置

使用pam

auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/allow_list2 onerr=fail

客户端

ftp客户端ftp host

挂载mount -t fuse.curlftpfs ftp://user_name:password@host /mnt_point
id:: 673af920-f628-4041-8bdb-9821d32774c0

对于linux挂载需要安装curlftpfs

安全

linux默认会有对vsftp的安全配置,比如禁止root用户登陆

散碎的知识点

pip临时使用某镜像源

清华源

1
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package

pyftpdlib使用

1
python -m pyftpdlib -u user_name -P password -p port --write

实例&&作业

windows连接smb(图形化)

Peek 2024-11-18 11-25.gif

windows连接smb(net use)

Peek 2024-11-18 14-10.gif

允许root用户登陆ftp(配置+登陆演示)

配置文件修改

/etc/vsftpd/vsftpd.conf主配置文件

1
2
3
4
5
6
7
anonymous_enable=NO
userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.userlist
# 配置策略为允许列表内登陆
userlist_deny=NO
local_enable=YES
write_enable=YES

/etc/vsftpd/vsftpd.userlist配置文件编写

1
2
root
other_user

允许root登陆

在vsftpd安装后,linux会在/etc/pam.d/vsftpd添加相关安全策略

image.png

修改/etc/vsftpd/ftpusers将里面的root删除,或者把这条策略删除

现在你就可以愉快的连接了

连接ftp

ftp.gif

使用pyftpdlib开启ftp

服务端

ftp-s.gif

客户端

ftp-c.gif

思考&&todo

参考

pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

无代码鼠标党狂喜奶妈级教学从0开始手把手教你使用centos搭建dvwa

引子

dvwa搭建过很多次了,这次准备0开始搭建一次。本文将会从一台centos裸机开始,搭建出dvwa靶场。

为了简化部分服务的枯燥安装,且复合中国特色,本文会使用bt面板。官方推荐XAMPP

前排提醒:本文有点抽象,在意的集美集帅们请轻按键盘上的ctrl+w

后记:

搭到一半,bt默认有些安全措施,导致dvwa初始化出现了各种问题。枯啦😥,越写越抽象,心态崩了。55555

centos虚拟机安装(pve)

没有使用pve的同志可以跳到centos的安装部分,使用vps或者实体鸡的大佬可以直接跳过了

虚拟机创建

image.png

image.png

image.png

以上是基本配置,部分简单的操作这里就不截图了

我们在安装时就将网卡配置好,免得后面再手动配置

image.png

配置root密码

image.png

本地ssh配置(非必需,可以跳过)

为了更快捷的连接我们的dvwa主机,对自己电脑中的ssh进行配置。记得上传公钥

image.png

这样就可以使用ssh dvwa愉快的连接辣

如果你对ssh配置不感兴趣,这一步你可以跳过

宝塔安装

前排提醒:安装前你无需对centos进行任何操作,宝塔安装脚本会帮你换源。你也无需担心找不到curl命令。即使是最小安装的centos,curl命令也是会有的。

2024-11-15_19-44.jpg
id:: 6737337b-8018-4a31-b213-7fafa9020684

复制连接,粘贴到终端中运行

1
url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec

2024-11-15_19-45.jpg

输入y确定

接下来就是等待

2024-11-15_19-56.jpg

出现这个说明你已经成功安装了bt,接下就去愉快的安装lnmp吧

这个信息建议保存,不保存的话忘记了也能重置

使用浏览器进入面板地址

登陆成功后bt会让你绑定账号

2024-11-15_20-00.jpg

老老实实绑定吧骚年

lnmp安装

2024-11-15_20-02.jpg

当你绑定完成账号后,bt就热情的推荐你安装lnmp,直接无脑一键安装

这个步骤有点慢,这个时候你可以去下载dvwa的源码

友情提示: php版本请使用7.3以上,dvwa在7.3以下有问题。

dvwa安装

本文采用源码安装,dvwa提供了安装脚本,也有docker镜像。但是俺不得,就用源码装。

源码下载

gayhub下载地址

Releases · digininja/DVWA · GitHub

上传源码

这一步有n种方法传上去,这里我们使用bt自带的文件管理上传

2024-11-15_20-13.jpg

解压缩

2024-11-15_20-14.jpg

创建站点

添加站点

2024-11-15_20-20.jpg

域名这里我们写自己的ip地址,根目录选择解压后的dvwa的目录。

创建一个数据库,为了方便账号密码这里使用的是dvwa配置文件中默认的。如果你想要个性化,后面还需要修改dvwa对应的配置文件。

2024-11-15_20-19.jpg

测试可达性

访问http://192.168.0.124

这里要替换成你的ip啊!!!! 😠

不出意外,你的dvwa就可以正常使用了

如果有意外(实际上根据上面的教程来百分百会出意外😁),请参考: 可能会遇到的问题

初始化dvwa

2024-11-15_20-31.jpg

先不要着急点击创建数据库,看到红色的没有。请先解决。参考: 可能会遇到的问题

bt是作为建站使用的,会默认禁用很多php的危险函数,首先我们要先对这些危险函数放行。参考: 可能会遇到的问题

2024-11-15_21-54.jpg

当红字都解决了,你就可以愉快的点击Create / Reset Database按钮辣😁

这个时候你可能会狂点,发现它好像不起作用。不要点辣,重新访问一下login.php试试

2024-11-15_21-59.jpg

现在你可以,dvwa启动了

可能会遇到的问题

宝塔安装时yum被占用了5555

具体情况是这样

1
2
3
4
5
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 28 M RSS (1.1 GB VSZ)
Started: Fri Nov 15 19:47:54 2024 - 02:59 ago
State : Sleeping, pid: 9557

这是脚本在安装其他软件,我这个状态是sleeping,可以先给他停止了,虽然不知道会出什么问题..

比较稳妥的方法,使用ps看看是他在干什么

1
2
ps -elf | grep 9557
4 S root 9557 9556 0 80 0 - 279723 ep_pol 19:47 pts/0 00:00:00 /usr/bin/python /bin/yum -y update polkit

以我的这个为例,yum正在安装polkit,等会脚本结束如果没有这个软件,我再手动给他装上就行了

首次访问dvwa报错,不想玩辣

DVWA System error config file not found. Copy
config/config.inc.php.dist to config/config.inc.php and configure to
your environment.

2024-11-15_20-25.jpg

字面意思,按照他教你的方法做,将config/config.inc.php.dist 拷贝一份到config/config.inc.php

你可以用bt的文件管理来做这件事情

bt太安全辣让我的php网站很难被攻击(删除php禁止函数)

2024-11-15_21-17.jpg

选择你建站时使用的php版本。

我有这么多php,是因为踩了很多坑,挨个都尝试了一遍 😢

2024-11-15_21-15.jpg

拿起你的鼠标挨个删除吧

其实可能有更简便的方法来删除,但是我已经挨个点完了,所以你也要点🤓

初始化时出现了很多红字字🤬丸辣,启用某些配置

你的红字可能不一样,这里仅介绍将Disabled的红字变成绿色的Enabled

2024-11-15_21-30.jpg

2024-11-15_21-17.jpg

仍然选择你对应的版本

2024-11-15_21-27.jpg

2024-11-15_21-32.jpg

搜索你对应的红色字的东西,把它后面的Off改成On

2024-11-15_21-33.jpg

2024-11-15_21-35.jpg

改完之后重启PHP,重启中间件

如果仍然是红的,那么请修改dvwa根目录下的php.ini

2024-11-15_21-37.jpg

初始化时reCAPTCHA key: Missing

这个是验证码靶场用的,需要去咕噜咕噜申请验证码的key,不使用这个靶场可以忽略。🪿且咱们搭建在内网,没法申请这个key。如果你搭建在公网上,请自行参考dvwa文档

参考

宝塔面板 简单好用的Linux/Windows服务器运维管理面板

Releases · digininja/DVWA · GitHub

day5_kls_review

复习

虚拟机网络模式

nat,bridge,host-only

linux目录结构

tree -L 1 /获取根目录结构

每个目录的作用

linux命令

文件相关

查看文件: ls

查看文件内容: cat,more,tail,head,其他的文件编辑器

修改文件: cp,mv,rm,rmdir

创建文件: mkdir,touch

网络相关

查看网卡信息: ip,ifconfig

查看网络连接情况:netstat

修改网卡信息: nmtui,配置文件修改

redhat /etc/sysconfig/network-script/ifcf-xxx
debain /etc/network/interfaces

进程相关

查看进程: ps,top

进程管理: kill,top

权限相关

修改权限: chmod

修改所属用户和组: chown

用户管理相关

相关配置文件:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow

创建: useradd,groupadd

修改: usermod,groupmod

删除: userdel,groupdel

切换用户: su

文本处理

grep

find

文件查找

find

whereis

打包解包压缩解压缩

打包解包:tar

压缩解压缩:zip,unzip

定时任务

crontab

查缺补漏

linux配置文件

/etc/passwd

1
2
#用户名:密码占位符:用户ID:组ID:用户全名:用户主目录:用户默认shell
root:x:0:0::/root:/bin/bash

/etc/shadow

1
2
#用户名:加密密码:最后修改密码的日期:最小密码年龄:最大密码年龄:警告期:不活动期:过期日期:保留字段
root:sadfasdfxc:19612::::::

/etc/group

/etc/gshadow

day4_kls

课程内容

包管理器

linux包管理器 | ziWindlu的博客

linux系统信息查看

cat /etc/os-release查看系统相关信息

uname -a查看内核版本

工具

neofetch(已归档)

fastfetch(推荐)

LNMP/LAMP

bt.cn

ssh

服务相关

开启自启动,并现在开启服务systemctl enable --now sshd

关闭开机自启动,并现在关闭服务systemctl disable --now sshd

修改配置文件,并令其生效

1
2
systemctl daemon-reload
systemctl restart sshd

使用

ssh user@host连接

ssh-keygen生成公私钥对

ssh-copy-id -i /path/to/public user@host上传公钥

ssh上传公钥手动上传+命令上传 | ziWindlu的博客

配置

对于ssh服务端的配置文件在/etc/ssh/sshd_config

几个重要的配置

1
2
3
4
# 允许root用户登陆
PermitRootLogin yes
# 允许密码认证
PasswordAuthentication yes

计划任务

分类

系统计划任务/etc/crontab

用户计划任务/var/spool/cron/username

计划任务crontab

查看(l)用户(u)的计划任务crontab -l -u username

编辑(e)用户(u)的计划任务crontab -e -u username

散碎的知识点

实例

获取系统信息

fetch.gif

ssh修改配置文件

shhd.gif

计划任务crontab使用

为用户lzf创建一个定时任务

crontab.gif

思考&&todo

asciinema不支持显示edit-in-kitty,以后需要避免使用

kitty仅可在显式的使用ssh连接的用户中使用edit-in-kitty,切换用户后

DONE 让kali的zsh支持c-p,c-n作为上和下键来使用

参考

cron ArchWiki

ssh上传公钥手动上传+命令上传

公钥生成

ssh-keygen

该命令会生成一个私钥和公钥在~/.ssh

手动上传

~/.ssh/authorized_keys将你的公钥内容复制到远程主机的这个文件中即可,多个要分多行

manual_put_public_key.gif

命令上传ssh-copy-id

ssh-copy-id -i /your/public/key.pub username@host命令上传公钥