邓老师 发布的文章
mimikatz
eve-ng镜像下载
使用sqlmap进行sqli-labs通关
alpine linux 基本使用命令
Alpine Linux 是一个社区开发的面向安全应用的轻量级 Linux 发行版,适合用来做路由器、防火墙、VPNs、VoIP 盒子以及服务器的操作系统,基于 uClibc 和 Busybox。
1.修改源:
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
2.安装软件:
apk update
apk add vim
# 全局参数
--no-cache:不使用本地缓存
--no-network:不使用公网操作
3.删除软件:
apk del vim
4.升级软件:
apk upgrade vim
5.下载软件到本地
# 从仓库下载 vim 及依赖包到本地目录,下载下来的是 .apk 包
apk fetch -R -o /usr/local/src/ vim
6.查看服务
rc-service --list
启动/停止/重启 已有服务
rc-service 服务名 start/stop/restart
7.添加服务开机自启
rc-update add httpd
8.网络配置
vim /etc/network/interface
iface eth0 inet static
address 192.168.1.150
netmask 255.255.255.0
gateway 192.168.1.1
9.安装时区
apk add tzdata # 多了一个 zoneinfo 目录,里面有各种时区
# 使用上海时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" /etc/timezone
apache配置文件详解
一、Apache常用目录详解
1) /etc/httpd/conf/httpd.conf (Apache的主配文件)
httpd.conf是Apache的主配文件,整个Apache也不过就是这个配置文件,里面几乎包含了所有的配置。有的distribution都将这个文件拆分成数个小文件分别管理不同的参数。但是主要配置文件还是以这个文件为主。只要找到这个文件名就知道如何设置了。后面会详细解释Apache主配文件的每一行配置
2) /etc/httpd/conf.d/*.conf (include文件)
如果你不想要修改原始配置文件httpd.conf的话,那么可以将你自己的额外参数文件独立出来,注意以.conf结尾放在/etc/httpd/conf.d/目录下。重启Apache的时候,这个配置文件就会被读入主配文件之中了。他的好处就是当你在进行系统升级的时候,几乎不需要改动原本的配置文件,只要将你自己的额外参数文件复制到正确的地点即可,维护起来非常方便。
3) /var/www/html/ (网站根目录)
这个目录就是Apache默认的存放首页的目录(默认是index.html)
二、Apache配置文件详解及优化
ServerRoot "/etc/httpd"
服务器设置的最顶层目录,有点类似于chroot那种感觉。包括logs , modules等的数据都应该要放置在此目录下面(如果这些配置没有声明成绝对路径的话)。
Timeout 60
不论接收或发送,当持续连接等待超过60秒则该次连接就中断,一般来说,此数值在300秒左右即可,不需要修改这个原始值
KeepAlive Off
这里最好把默认值"Off"修改为"On"
这里表示是否允许持续性的连接,也就是一个TCP连接可以具有多个文件资料传送的要求;举例来说,如果你的网页内含有很多图片文件,那么这一次连接就会将所有的数据传送完,而不必每一个图片都需要进行一次TCP连接。
MaxKeepAliveRequests 100
可以将默认的100改成500或更高与上一个设置的值KeepAlive有关,当KeepAlive的值设置为On的时候,这个数值可以决定该次连接能够传输的最大传输数量。为了提高效率则可以改大一点。0代表不限制
KeepAliveTimeout 65
在KeepAlive设置为"On"的情况下,该次连接在最后一次传输后等待延迟的秒数,当超过该秒数的时候该连接中断。保持默认值15即可,如果设置的值太高(等待时间较长)在较忙碌的系统上面将会有较多的Apache程序占用资源,可能有效率方面的问题。
<IfModule prefork.c>
StartServers 8 //启动Apache的时候,唤醒几个进程来处理服务的。Apache使用了进程预派生的技术来处理请求,大大提高了响应速度
MinSpareServers 5 //最小预备使用的进程数量
MaxSpareServers 20 //最大预备使用的进程数量
ServerLimit 4096 //服务器的限制
MaxClients 4096 //最多可以有多少个客户端同时连接到Apache最大的同时连接数量,也就是process不会超过这一数值。这个MaxClients设置值可以控制同时连上www服务器的总连接要求数量,也可以将其看作是最高实时在线人数。不过要注意的是:这个值并非越大越好因为他会消耗物理内存(与process有关),所以如果你设置太高导致超出物理内存,能够容许的范围,那么效率就会大大降低(因为会跑SWAP),此外,MaxClients也在Apache编译的时候就指定最大值了,所以你也无法超出系统最大值,除非你重新编译Apache MaxRequestsPerChild 4000
每个程序能够提供的最大传输次数要求。举例来说:如果有个用户连上服务器之后,要求数百个网页,当他的要求数量超过这个值的时候则该程序会被丢弃,另外切换一个新程序。这个设置可以有效地管理每个process在系统上存活的时间。根据观察所得,新程序的效果较好。
</IfModule>
<IfModule worker.c>
StartServers 8
MaxClients 4000
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 75
MaxRequestsPerChild 0
</IfModule>
上面的prefork和worker其实就是两个与服务器连接资源有关的设置项目。默认的项目配置对于一般中小型网站来说已经很够用了,不过如果网站的流量比较大,也可以修订一下里面的数值。这两个模块都是用在提供用户连接资源,设置的数值越大代表系统会启动越多的程序来提供Apache的服务,反映速度就比较快
Include conf.d/*.conf
加载的配置文件
ServerAdmin root@localhost
系统管理员的邮箱,当网站出现问题的时候,错误信息会显示的联系邮箱
DocumentRoot "/var/www/html"
上面这一行的配置指定了放置首页的目录
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Directory指定后面的路径是系统中的绝对路径
这个设置是针对www服务器的默认环境而来的,因为是针对"/"的设置,建议保留上面的默认值
<Directory "/var/www/html"> 使用Directory指定了一个绝对路径的目录
Options -Indexes FollowSymLinks
</Directory>
Options(目录参数)
此设置值表示在这个目录内能够让Apache进行的操作,也就是针对Apache的程序的权限设置。
主要的参数值有:
Indexes:如果在此目录下找不到首页文件(默认为index.html)时,就显示整个目录下的文件名,至于首页文件名则与DirectoryIndex设置的值有关,建议注释掉Indexes
FollowSymLinks:这是Fllow Symolic Links的缩写,字面意义是让连接文件可以生效。我们知道首页的目录是在/var/www/html,既然是WWW的根目录,理论上就像被chroot一般。一般说来说被chroot的程序无法离开其目录,也就是说,默认的情况下,你在/var/www/html下面的连接文件只要链接到非此目录的其他地方,则该连接文件默认是失效的。但是使用这个设置可以让链接有效的离开本目录
AllowOverride None
允许覆盖参数功能, 表示是否允许额外配置文件.htaccess的某些参数覆盖。
我们可以在httpd.conf内设置好所有的权限,不过这样一来,若用户自己的个人网页想要修改权限时将会对管理员造成困扰。因此,Apache默认可以让用户以目录下的.htaccess文件内覆盖
常见的有以下几种:
ALL:全部的权限均可以覆盖
AuthConfig:仅有网页认证(帐号与密码)可以覆盖
Indexes:仅允许Indexes方面的覆盖
Limits:允许用户利用Allow、Deny与Order管理可浏览的权限
None:不可覆盖,也就是让.htaccess文件失效
使用.htaccess会严重影响到Apache的性能,如果不是特殊需要,建议关闭
apache 2.2以前的目前权限控制
# Controls who can get stuff from this server.
Order allow,deny
Allow from all
能否登陆浏览的权限
Apache配置文件权限操作:
Order deny,allow 可以理解为拒绝所有,开放特定,白名单
Order allow,deny 可以理解为开放所有,拒绝特定,黑名单
当allow与deny中有重复的规则出现,则最后一条的配置起到了决定性的作用,举个例子来说,我们要允许所有人访问除了192.168.1.1
Order allow,deny
allow from all
deny 192.168.1.1 黑名单
以上这个例子很明显是允许所有拒绝特定的配置
第二行定义了允许的规则,开放所有
第三行定义了拒绝的规则,拒绝了一个IP,这个IP包含在第二行的all当中,所以它的权限就默认由最后一行配置决定,最后一行是deny,所以192.168.1.1被成功被拒之门外
接下来举一个只允许1.1访问的例子
Order deny,all
deny from all
allow 192.168.1.1 白名单
这个例子的第一行声明了它是拒绝所有而允许特定
第二行拒绝了所有访问
第三行配置了一个允许的IP,这个IP当然也是包含在第二行的all之中,出现了重复定义,所以它的规则默认按照最后一条执行,最后一条是放行,所以成功被释放
apache 2.4版本以后的目录权限控制:
举例说明
仅允许IP:192.168.0.1 访问
Require all granted
Require ip 192.168.0.1
仅禁止IP:192.168.0.1访问
Require all granted
Require not ip 192.168.0.1
允许所有访问
Require all granted
拒绝所有访问
Require all denied
DirectoryIndex index.php index.html
网站默认的首页文件的名称
如果客户端在地址栏中只输入到目录,例如http://localhost/时,那么Apache将会拿哪一个文件作为首页来显示呢?这个文件的文件名就是在这里定义的了,如果上面的文件全部存在的话,就会按照设置的顺序显示排在最前面的首页,这个与之前在Option中谈到的Indexes有关。
Alias /icons/ "/var/www/icons/"
设置目录的别名
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
这个Alias很有趣,可以制作出类似于链接文件的东西。当你输入http://localhost/icons时,其实你的/var/www/html/中并没有icons那个目录,不过由于Alias别名的关系,会让该网址直接链接到/var/www/icons/下,因为设置了一个新的可浏览的目录,所以多了个
NameVirtualHost *:80 开启虚拟主机的功能,这里的*号意味着监听每一个IP的80端口
<VirtualHost *:80> 这里一定要注意,这个标签后面的IP定义一定要和上面NameVirtualHost定义的一致
ServerAdmin webmaster@dummy-host.example.com 指定了管理员的邮箱
DocumentRoot /www/docs/dummy-host.example.com 这一行是必须的配置,它指定这个虚拟主机的网页存放目录
ServerName dummy-host.example.com 必须要有的配置,这里需要定义一个能被DNS或Hosts解析的完整域名
</VirtualHost>
上面一块是一个虚拟主机的配置实例
在虚拟主机之上还能设置很多的功能,不过最精简的配置是需要有 ServerName和DocumentRoot这两个配置。
在添加了虚拟主机的配置之后需要把中心主机的信息也单独写成一个虚拟机的配置,不然中心主机名的服务就不知道丢到哪里去了,这一步骤在Apache帮助文档中称做:取消中心主机
当然,如果你想有多个域名都指向到同一个虚拟主机是可以通过在
注意点一:DNS指向问题,如果你设置了别名,多个域名指向同一个虚拟主机,那么一定要保证DNS能正常解析的到
注意点二:
你可以把其他一些指令放入
大部分指令都可以放入这些
如果您想了解一个特定的指令是否可以这样运用,请查看帮助手册中指令的作用域。
主服务器(main server)范围内的配置指令(在所有
注意点三:虚拟主机名的问题
当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的
如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。
顺序展示:客户端发起一个访问域名的请求—>DNS解析到目标主机
—>检查是否开启了虚拟主机的功能—>检查是否能和NameVirtualHost相匹配
—>查找出每个与该IP对应的虚拟主机段配置—>尝试找出与请求的完整域名相同的ServerName或ServerAlias
—>如果找到就使用这个虚拟主机的配置—>如果配置中与中心主机的配置不冲突则优先使用中心主机的配置
如果找不到与之相匹配的完整域名的虚拟主机配置—>使用符合这个IP地址的第一个虚拟主机
综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。
当一个IP地址与NameVirtualHost指令中的配置相符的时候,
主服务器中的DocumentRoot将永远不会被用到。
所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到
apache2.4配置目录权限
访问控制与用户认证
sysin软件与技术分享
多用户Jupyter Notebook的Docker安装部署
多用户Jupyter Notebook的Docker安装部署
1.多用户Jupyter Notebook的构成:
由jupyter-notebook与 jupyterhub两部分组成。
2.下载jupyter-notebook镜像
jupyter-notebook镜像是由Jupyter Docker Stacks 提供。
官方网址:https://github.com/jupyter/docker-stacks
Jupyter Docker Stacks 提供了一组预配置的 Docker 镜像,这些镜像集成了 Jupyter 环境所需的全部组件,使用户能够迅速启动并运行 Jupyter 笔记本。借助这些镜像,数据科学家、机器学习工程师以及从事科学计算的专业人士可以轻松地部署工作环境,无需手动安装和配置各种依赖项。
官方提供了几个镜像:
jupyter/base-notebook
jupyter/minimal-notebook
jupyter/r-notebook
jupyter/scipy-notebook
jupyter/tensorflow-notebook
jupyter/datascience-notebook
jupyter/pyspark-notebook
jupyter/all-spark-notebook
镜像的官方介绍文档:
https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html
我们拉取其中符合自己要求的镜像:
docker pull quay.io/jupyter/datascience-notebook:latest
3.jupyterhub 的安装
(1)建立jupyterhub文件夹
mkdir jupyterhub
cd jupyterhub
(2) 下载jupyterhub的三个必要文件:Dockerfile.jupyterhub、docker-compose.yml、jupyterhub_config.py
具体下载链接查看:https://github.com/jupyterhub/jupyterhub-deploy-docker/tree/main/basic-example
wget https://raw.githubusercontent.com/jupyterhub/jupyterhub-deploy-docker/refs/heads/main/basic-example/Dockerfile.jupyterhub
wget https://raw.githubusercontent.com/jupyterhub/jupyterhub-deploy-docker/refs/heads/main/basic-example/docker-compose.yml
wget https://raw.githubusercontent.com/jupyterhub/jupyterhub-deploy-docker/refs/heads/main/basic-example/jupyterhub_config.py
(3) 修改docker-compose.yml文件中下面这行信息,使用第2步实际拉取的镜像名称与tag替换
DOCKER_NOTEBOOK_IMAGE: quay.io/jupyter/base-notebook:latest
(4)编译本地的jupyterhub
docker compose build
(5) 启动与关闭 jupyterhub
在 jupyterhub文件夹中执行如下命令进行启动 jupyterhub:
docker compose up -d
关闭jupyterhub:
docker compose down
4.如果要增加jupyter-notebook中的各种python库,则直接进入相应jupyter-notebook容器,安装相关python库。并commit保存。
Win11网络共享出现的错误与解决办法
参考文章:
Win10与Win11默认已经禁用SMB1.0,开启了SMB2.0协议,同时组策略禁用了Guest用户登录网络。
因此经常出现如下错误:“你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。
引用的帐户当前已锁定,且可能无法登录。”
解决办法:
1.在共享服务设备上创建一个专门用于网络共享的账号与密码。如果为了安全,可以通过组策略设置该账号只能网络登录,不能本地登录。
2.在客户机“控制面板”-“凭据管理器”,添加一个“Windows凭据”。
这样就可以访问网络共享了。
如果是win11家庭版,输入gpedit.msc提示找不到文件,则将以下代码保存为bat格式运行。
如果是win11家庭版,输入gpedit.msc提示找不到文件,则将以下代码保存为bat格式运行。
@echo off
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
pause