Rinneの大図書館 - 工具搭建
type: channel
link: https://blog.hyui.xyz/index.php/category/%E5%B7%A5%E5%85%B7/
items: 记一次windows安装mysql8.4.4的安装过程
items: 用Python3实现一个简单的P2P文件和消息传输小工具
items: 使用树莓派4B安装ELK Stack来收集和分析服务器日志
items: GrayLog日志收集系统搭建并对接Nginx日志
items: Docker-Web虚拟化环境使用
items: 手动安装LNMP运行环境
items: Linux防火墙攻略(iptables与firewalld)
items: Aria2+onedrivecmd的配置和使用方法
items: Endlessh的正确食用方法:防止那些坏家伙连接你的SSH
items: 教程:如何搭建属于自己的DNS

记一次windows安装mysql8.4.4的安装过程
type: item
date: 2025-06-13T03:57:00+00:00
description: CVE-2024-21176 是Oracle官方披露的安全漏洞（具体细节未公开），影响MySQL 5.7及更低版本。MySQL 5.7的生命周期已于2023年10月31日结束，官方不再提供免费安全补丁。即使5.7.44是5.7系列的最终版本，也未包含对此漏洞的修复。由于官方未提供针对5.7.44的直接补丁，只能通过更新到mysql8来进行修复。本文记录一次windows安装mysql8.4.4的过程，先在mysql官网上下载mysql8.4.4的windows安装包（https://downloads.mysql.com/archives/community/），这里我选择使用zip格式的压缩包文件。解压文件到D盘，得到目录D:\mysql-8.4.4-winx64，在D:\mysql-8.4.4-winx64中创建data和log目录。mkdir "D:\mysql-8.4.4-winx64\data_8_4" mkdir "D:\mysql-8.4.4-winx64\log" icacls "D:\mysql-8.4.4-winx64\data_8_4" /grant Everyone:F /T icacls "D:\mysql-8.4.4-winx64\log" /grant Everyone:F /T在D:\mysql-8.4.4-winx64中新建my.ini，编辑文件内容。[mysqld] basedir=D:/mysql-8.4.4-winx64 datadir=D:/mysql-8.4.4-winx64/data_8_4 port=3307 server-id=2 bind-address=0.0.0.0 # 正确的认证策略设置（使用逗号分隔） authentication_policy = 'caching_sha2_password,,' max_connections=200 character-set-server=utf8mb4 default-storage-engine=INNODBCMD进入D:\mysql-8.4.4-winx64\bin目录下，执行以下命令.\mysqld --defaults-file=D:\mysql-8.4.4-winx64\my.ini --initialize --console如果一切正常，会得到以下回显2025-06-13T03:15:54.664650Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start. 2025-06-13T03:15:54.668011Z 0 [System] [MY-013169] [Server] D:\mysql-8.4.4-winx64\bin\mysqld.exe (mysqld 8.4.4) initializing of server in progress as process 4172 2025-06-13T03:15:54.690289Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-06-13T03:15:55.053355Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2025-06-13T03:15:56.784160Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: e_zdxfwjb0A_ 2025-06-13T03:15:58.748588Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.如果报错提示缺少DLL文件，去微软官网下载VC++2015的版本库进行安装（https://www.microsoft.com/en-us/download/details.aspx?id=53587）若还是无法显示回显，则需要输出报错日志，根据日志实际情况进行调整。.\mysqld --defaults-file=D:\mysql-8.4.4-winx64\my.ini --initialize --console --log-error=D:\mysql-8.4.4-winx64\log\init.log数据库初始化成功后，创建MySQL84服务并进行启动。.\mysqld --install MySQL84 --defaults-file="D:\m…

用Python3实现一个简单的P2P文件和消息传输小工具
type: item
date: 2025-05-24T07:22:00+00:00
description: 信令服务器搭建信令服务器搭建需要一个具有公网IP的服务器(VPS)，信令服务器的功能包括以下几点：节点注册 (/register/{peer_id}): 允许一个 P2P 节点（peer）注册其 ID 和它打算用于 P2P 通信的端口。服务器会自动记录请求来源的公网 IP 地址。节点查询 (/query/{peer_id}): 允许一个节点查询另一个已注册节点的信息（公网 IP 和 P2P 端口）。列出所有节点 (/list_peers): 显示当前所有已注册的节点信息（主要用于调试）。节点注销 (/unregister/{peer_id}): 允许节点从服务器注销。from fastapi import FastAPI, Request, HTTPException from pydantic import BaseModel # 用于数据验证和序列化 import uvicorn # ASGI 服务器 import time # 用于记录时间戳 from typing import Dict, Any, Optional # 初始化 FastAPI 应用 app = FastAPI( title="Simple P2P Signaling Server", description="A basic signaling server for P2P peer discovery.", version="0.1.0" ) # 使用 Pydantic 定义请求体模型 class PeerRegisterInfo(BaseModel): p2p_port: int # Peer 宣称其用于 P2P UDP 通信的本地端口 # 使用 Pydantic 定义响应体模型 class PeerDetailsResponse(BaseModel): peer_id: str public_ip: str # 服务器看到的该 Peer 的公网 IP p2p_port: int # Peer 注册的 P2P 端口 registered_at: float # 注册时的时间戳 # 简单的内存数据库来存储 Peer 信息 # 格式: { "peer_id": {"public_ip": "x.x.x.x", "p2p_port": 12345, "registered_at": timestamp} } peers_db: Dict[str, Dict[str, Any]] = {} @app.get("/") async def read_root(): """ 根路径，确认服务器正在运行。 """ return {"message": "P2P Signaling Server is running. Access /docs for API documentation."} @app.post("/register/{peer_id}", status_code=201, response_model=PeerDetailsResponse) async def register_peer(peer_id: str, peer_info: PeerRegisterInfo, request: Request): """ 注册或更新一个 Peer 的信息。 - `peer_id`: Peer 的唯一标识符。 - `peer_info`: 包含 `p2p_port`，即 Peer 用于 P2P 通信的端口。 服务器会自动从请求中获取 Peer 的公网 IP (`request.client.host`)。 """ client_host = request.client.host # 这是 FastAPI 服务器看到的客户端 IP 地址 # 注意: 如果服务器在反向代理后，需要配置代理以传递正确的客户端IP current_time = time.time() peers_db[peer_id] = { "public_ip": client_host, "p2p_port": peer_info.p2p_port, "registered_at": current_time } print(f"[INFO] Peer registered/updated: {peer_id} -> IP: {client_host}, P2P Port: {peer_info.p2p_port}") return PeerDetailsResponse( peer_id=peer_id, public_ip=client_host, p2p_port=peer_info.p2p_port, registered_at=current_time ) @app.g…

使用树莓派4B安装ELK Stack来收集和分析服务器日志
type: item
date: 2025-04-30T10:15:00+00:00
description: 介绍ELK Stack：它由 Elasticsearch、Kibana、Beats 和 Logstash（也称为 ELK Stack）等组成。可靠、安全地从任何来源、任何格式获取数据，然后进行搜索、分析和可视化。ELK Stack是由三个开源工具组成的强大日志管理和分析平台，它们分别是Elasticsearch、Logstash和Kibana。这三个关键组件共同构成了一个完整的日志处理流程，从收集到存储，直到可视化展示，每个环节都是紧密相连的。ELK Stack官网前期准备树莓派4B一台(内存至少为4G)、TF内存卡(至少64G)、树莓派电源(5V3A)。系统采用树莓派官方的Raspberry Pi OS系统，刷机过程不多赘述。下载安装包首先，我们需要下载Elasticsearch、Logstash和Kibana的安装包,因树莓派是aarch64架构，可以下载aarch64版的deb包,本教程以7.17.21版本为例，为了更直观的展示，以下操作我均以root用户进行安装操作。wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.21-arm64.deb wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.21-arm64.deb wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.21-arm64.deb下载完成后得到以下三个文件。root@yuiit:~# ls elasticsearch-7.17.21-arm64.deb kibana-7.17.21-arm64.deb logstash-7.17.21-arm64.deb安装操作用apt-get安装这三个安装包。cd ~ apt install ./elasticsearch-7.17.21-arm64.deb apt install ./kibana-7.17.21-arm64.deb apt install ./logstash-7.17.21-arm64.deb调整配置Elasticsearch配置编辑elasticsearch的配置文件。先修改/etc/elasticsearch/jvm.options配置文件，修改里面的-Xms4g和-Xmx4g项，我使用的树莓派4B为4G内存版，所以我计划将这个参数改为1g。nano /etc/elasticsearch/jvm.options ------ ## 取消这两项的注释，并修改为以下内容 -Xms1g -Xmx1g ------编辑/etc/elasticsearch/elasticsearch.yml配置文件，在配置文件底部添加以下项。nano /etc/elasticsearch/elasticsearch.yml ------ cluster.name: my-pi-cluster node.name: pi-node network.host: 0.0.0.0 discovery.type: single-node xpack.security.enabled: true ------启动elasticsearch。systemctl start elasticsearch.service # 查看启动日志，启动过程需要一些时间，需要耐心等待 tail -fn 50 /var/log/elasticsearch/gc.log # 启动完成后日志会显示程序运行在9200端口，查看9200端口是否正在监听 root@yuiit:~# lsof -i:9200 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 23118 elasticsearch 297u IPv6 165173 0t0 TCP *:9200 (LISTEN)elasticsearch启动完成后需要配置用户名密码，可使用elasticsearch-setup-passwords进行用户名密码的初始化。cd /usr/share/elasticsearch/bin ./elasticsearch-setup-passwords interactive这时会提示如下回显，输入y以进行确认，然后为各个用户设置密码，这里我们统一都设置为[Aa123456.]。Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_sys…

GrayLog日志收集系统搭建并对接Nginx日志
type: item
date: 2022-03-11T01:48:00+00:00
description: GrayLog是目前主流的日志管理软件之一，用户可使用该软件查看和分析实时日志，今天以Docker的方式部署一个GrayLog系统试试看。安装环境docker的安装方式不多赘述，之前的教程有Docker-Web虚拟化环境使用。根据官方文档，GrayLog的必要环境为以下几点： Java(>=8) Elasticsearch(6.x或7.x) MongoDB(4.0、4.2或4.4)我们去DockerHub找对应版本并进行安装：docker pull mongo:4.2 docker pull elasticsearch:6.8.19 docker pull graylog/graylog:4.1启动环境启动容器docker run -idt --name mongo mongo:4.2 docker run -idt --name elasticsearch elasticsearch:6.8.19 docker run --link mongo --link elasticsearch -p 9000:9000 -p 12201:12201 -p 1514:1514 -p 5555:5555 -p 5140-5180:5140-5180 -p 5140-5180:5140-5180/udp -e GRAYLOG_HTTP_EXTERNAL_URI="http://127.0.0.1:9000/" -e GRAYLOG_PASSWORD_SECRET=<接口token> -e GRAYLOG_ROOT_PASSWORD_SHA2=<admin密码> --name graylog -itd graylog/graylog:4.1其中admin密码生成和token生成需要用到以下命令# 生成token pwgen -N 1 -s 96 # admin密码生成 echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1调试打开docker日志调试容器docker logs -f -t --tail 100 graylog访问http://IP:9000，输入用户名密码登录系统对接Nginx编辑Nginx配置文件vim /etc/nginx/nginx.conf # 在http中添加以下内容 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr", ' '"remote_user": "$remote_user", ' '"body_bytes_sent": $body_bytes_sent, ' '"request_time": $request_time, ' '"status": $status, ' '"request": "$request", ' '"request_method": "$request_method", ' '"host": "$host",' '"upstream_cache_status": "$upstream_cache_status",' '"upstream_addr": "$upstream_addr",' '"http_x_forwarded_for": "$http_x_forwarded_for",' '"http_referrer": "$http_referer", ' '"http_user_agent": "$http_user_agent" }'; access_log syslog:server=127.0.0.1:5141,facility=local0,tag=nginx,severity=info graylog2_json;用tcpdump查看是否有数据推送tcpdump udp -n -vv port 5141 -i lo -X打开GrayLog->System->InputsSelect Input中选择Raw/Plaintext UDP，Launch new input，勾选Global，port为Nginx中配置的5141，填写完成后Save保存，Network IO出现数…

Docker-Web虚拟化环境使用
type: item
date: 2020-10-19T12:07:00+00:00
description: Docker-Web环境搭建安装Docker容器yum install -y yum-utils # 设置稳定存储库 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 启用nightly存储库 yum-config-manager --enable docker-ce-nightly # 安装Docker引擎 yum install docker-ce docker-ce-cli containerd.io启动/停止Docker# 对docker进行启停操作 ## 启动 systemctl start docker ## 停止 systemctl stop docker ## 开机启动 systemctl enable docker ## 禁止开机启动 systemctl disable docker ## 查看状态 systemctl status docker安装portainerdocker search portainer # 拉取镜像 docker pull portainer/portainer-ce镜像下载完成[root@hyui ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE portainer/portainer-ce latest a0a227bf03dd 5 weeks ago 196MB启动portainerdocker run \ --name portainer \ -d -p 9000:9000 \ -v "/var/run/docker.sock:/var/run/docker.sock" \ portainer/portainer-ce访问http://{IP}:9000，通过Web界面对Docker进行控制。关于firewalld防火墙Docker需要在firewalld之后启动，因为firewalld运行在IPTABLES之上，firewalld在重启时会从IPTABLES中移除DOCKER规则解决方法：Docker容器使用host网络模式启动关闭firewalld防火墙改用iptables关闭CentOS7的firewalld和iptables，改用主机商提供的防火墙(如果有的话)

手动安装LNMP运行环境
type: item
date: 2020-06-22T13:45:02+00:00
description: LNMP安装安装Nginx下载Nginx预编译包https://nginx.org/en/download.html解压压缩包[root@Hyui-VM ~]# mkdir nginx [root@Hyui-VM ~]# mv nginx-1.19.0.tar.gz ./nginx [root@Hyui-VM ~]# cd nginx/ [root@Hyui-VM nginx]# tar -zxvf nginx-1.19.0.tar.gz [root@Hyui-VM nginx]# ls nginx-1.19.0 nginx-1.19.0.tar.gz [root@Hyui-VM nginx]# cd nginx-1.19.0 [root@Hyui-VM nginx-1.19.0]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src安装依赖软件yum install gcc gcc-c++ cyrus-sasl-md5 openssl openssl-devel -y编译安装# 将ssl模块也编译入nginx ./configure --prefix=/usr/local/nginx/ --with-http_ssl_module make && make install运行Nginx./sbin/nginx ps -aux | grep nginx root 17033 0.0 0.0 45976 1120 ? Ss 16:30 0:00 nginx: master process ./sbin/nginx nobody 17034 0.0 0.0 46416 2112 ? S 16:30 0:00 nginx: worker process root 17060 0.0 0.0 112812 972 pts/1 S+ 16:33 0:00 grep --color=auto nginx将Nginx放入systemdvim /usr/lib/systemd/system/nginx.service [Unit] Description=Nginx # 描述Nginx信息 Documentation=http://nginx.org/ After=network.target remote-fs.target nss-lookup.target # 表明依赖服务 [Service] Type=forking # 启动时关系的定义 PIDFile=/usr/local/nginx/logs/nginx.pid # PID文件 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动Nginx使用的命令 ExecReload=/bin/kill -s HUP $MAINPID # 重启Nginx命令 ExecStop=/bin/kill -s QUIT $MAINPID # 停止Nginx命令 PrivateTmp=true # 给服务分配独立的临时空间 [Install] WantedBy=multi-user.target安装PHP下载预编译包https://www.php.net/downloads添加www用户groupadd www useradd -s /sbin/nologin -g www -M www解压预编译包mkdir php mv php-7.2.31.tar.gz php tar -zxvf php-7.2.31.tar.gz安装依赖软件yum install gcc autoconf gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel systemd-devel openjpeg-devel开始编译mkdir /usr/local/php7.2 ./configure --prefix=/usr/local/php7.2 --with-config-file-path=/usr/local/php7.2/etc --with-zlib-dir --with-freetype-dir --enable-mbstring --w…

Linux防火墙攻略(iptables与firewalld)
type: item
date: 2020-06-03T07:44:00+00:00
description: 防火墙Linux使用的防火墙系统包括两部分: netfilter和iptables，netfilter/iptables框架可以实现数据包过滤、地址转换和数据包管理功能。默认的iptables规则表有：fileter表(过滤规则表)、nat表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表)。每个规则表中都有多个数据链：INPUT(入站数据过滤)、OUTPUT(出站数据过滤)、FORWARD(转发数据过滤)、PREROUTING(路由前过滤)、POSTROUTING(路由后过滤)。图中防火墙会对数据包进行判断决策：如果是外部主机发送数据包给防火墙主机，则会经过PREROUTING和INPUT链；如果是本机发送数据包给外部主机，则经过OUTPUT和POSTROUTING链；如果防火墙为路由，则负责转发数据，经过PREROUTING、FORWARD和POSTOUTING链。iptables语法格式用法格式：iptables [-t 表名] {-A|-D|-I|-F|-L|-Z|-P} 链名 rule-specification选项-t指定需要维护的防火墙规则表-A追加防火墙规则-D删除防火墙规则-I插入防火墙规则-F清空防火墙规则-L列出防火墙规则-R替换防火墙规则-Z清空防火墙数据表统计信息-P设置链默认规则匹配参数(均可使用!取反)-p匹配协议-s匹配源地址-d匹配目标地址-i匹配入站网卡接口-o匹配出站网卡接口--sport匹配源端口--dport匹配目标端口--src-range匹配源地址范围--dst-range匹配目标地址范围--limit匹配数据表速率--mac-source匹配源MAC地址--sports匹配源端口--dports匹配目标端口--state匹配状态--string匹配应用层字串触发动作ACCEPT允许数据包通过DROP丢弃数据包REJECT拒绝数据包通过LOG将数据包记录syslog日志DNAT目标地址转换ANAT源地址转换MASQUERADE地址欺骗REDIRECT重定向命令使用方法# 查看filter表中所有规则 [root@Hyui-VM ~]# iptables -nL # 查看nat表中所有规则 [root@Hyui-VM ~]# iptables -t nat -nL # 清空filter表中所有规则 [root@Hyui-VM ~]# iptables -F # 在filter表中添加一条入站规则，丢弃223.5.5.5主机发送给防火墙本机的所有数据包 [root@Hyui-VM ~]# iptables -A INPUT -s 223.5.5.5 -j DROP # 在filter表中添加一条入站规则，拒绝223.5.5.5对主机的ping行为 [root@Hyui-VM ~]# iptables -I INPUT -s 223.5.5.5 -p icmp -j REJECT # 查看所有规则并显示编号 [root@Hyui-VM ~]# iptables -nL --line-number # 删除表中的INPUT链第一个规则 [root@Hyui-VM ~]# iptables -D INPUT 1 # 替换表中第二条规则，拒绝192.168.31.254之外的任何主机连接本机 [root@Hyui-VM ~]# iptables -R INPUT 2 ! -s 192.168.31.254 -j REJECT # 修改filter表中INPUT链的默认规则为接收数据包 [root@Hyui-VM ~]# iptables -t filter -P INPUT ACCEPT # 放行SSH和DNS要用到的端口 [root@Hyui-VM ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@Hyui-VM ~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT防火墙的备份和还原# 将备份信息重定向至/etc/sysconfig/iptables [root@Hyui-VM ~]# iptables-save > /etc/sysconfig/iptables # 将备份信息重定向至./firewall.bak [root@Hyui-VM ~]# iptables-save > firewall.bak # 还原备份信息 [root@Hyui-VM ~]# iptables-restore < firewall.bakfirewalldfirewall-cmd命令firewall-cmd通过zones管理防火墙规则，一般public为默认zone用…

Aria2+onedrivecmd的配置和使用方法
type: item
date: 2019-04-18T14:51:00+00:00
description: 系统环境使用CentOS7用yum安装aria2yum update -y yum install aria2在/root目录下创建一个.aria2目录mkdir /root/.aria2并且创建aria2.session和aria2.log和aria2.conf文件在里面cd /root/.aria2 touch aria2.session touch aria2.log touch aria2.conf chmod 744 ./*其中aria2.conf是配置文件 需要进行编辑vim aria2.conf示例配置：## 关于文件保存 # 文件的保存路径，默认:为当前启动位置 dir=/down # 启用磁盘缓存, 0为禁用缓存 #disk-cache=32M # file-allocation=none # 断点续传 continue=true ## 关于下载连接 # 最大同时下载任务数, 默认:5 max-concurrent-downloads=10 # 同一服务器连接数, 默认:1 max-connection-per-server=5 min-split-size=10M # 单个任务最大线程数, 默认:5 split=5 disable-ipv6=false input-file=/root/.aria2/aria2.session save-session=/root/.aria2/aria2.session save-session-interval=60 ## RPC设置 # 启用RPC enable-rpc=true # 允许所有来源 rpc-allow-origin-all=true # 允许非外部访问 rpc-listen-all=true # RPC监听端口, 端口被占用时可以修改, 默认:6800 rpc-listen-port=6800 # 设置的RPC授权令牌 rpc-secret=PASSWORD ## BT下载设置 # 允许进行.torrent的BT种子下载 follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 listen-port=51413 # 单个种子最大连接数 #bt-max-peers=55 enable-dht=true enable-peer-exchange=true # 客户端伪装 peer-id-prefix=-TR2770- user-agent=Transmission/2.77 seed-ratio=0.1 #一直保留会话 force-save=true bt-seed-unverified=true其中需要改的是RPC授权令牌(将PASSWORD改为自己设定的密码)，这个一会要用得到，改完要记住运行aria2setsid aria2c --conf-path=/root/.aria2/aria2.conf 设置开机启动请自己实现 不多赘述然后安装webui-aria2cd git clone https://github.com/ziahamza/webui-aria2.git cd webui-aria2 chmod +x ./*运行webui-aria2需要nodejs环境yum install nodejs然后修改node-server.js这个文件其中有一段是var http = require("http"), url = require("url"), path = require("path"), fs = require("fs"); port = process.argv[2] || 8888;8888端口是这个程序要占用的端口可以修改为其他端口 例如8999然后运行setsid node ./node-server.js出现running on http://localhost:8888就是运行成功了浏览器进入http://你的IP:8888就可以看到aria2了进入设定->连线设定->密码令牌 输入之前设置好的RPC令牌就可以使用了aria2想要更快更稳的速度可以添加Tracker(可以在github上搜到可供使用的Tracker)添加Tracker可以在aria2.conf文件中的最后一行添加bt-tracker=之后添加Tracker 每个Tracker之间用,隔开文件下载好以后我想把下载好的文件上传到onedrive怎办?可以用onedrivecmd安装onedrivecmd#如果你用的Python pip install onedrivecmd #如果你用的python3 pip3 install onedrivecmd不能用pip的请查找pip安装教程onedrivecmd安…

Endlessh的正确食用方法:防止那些坏家伙连接你的SSH
type: item
date: 2019-03-25T09:47:00+00:00
description: SSH最近出了个新的玩法，使用Endlessh，对于猜ssh密码的人，能够缓慢的随机的无限的发送SSH banner，可以锁定数小时甚至数天，可以将真正的SSH服务放在另一个端口上，在SSH被暴破时并不会打扰到真正的服务器。那么如何配置这个Endlessh呢？本教程使用ArchLinux系统环境我们可以去github上下载到pacman -S git git clone https://github.com/skeeto/endlessh.git cd endlessh/ 用ls查看目录里的文件发现里面的文件[root@archlinux endlessh]# ls Dockerfile Makefile README.md UNLICENSE endlessh.c util 我们可以通过docker或者make来安装这个程序(本次使用make)#安装make pacman -S make 我们需要安装gccpacman -S gcc 然后makemake 此时目录中有这些文件[root@archlinux endlessh]# ls Dockerfile Makefile README.md UNLICENSE endlessh endlessh.c util 在/etc中创建一个目录/etc/endlessh然后创建config文件(config文件是配置文件)mkdir /etc/endlessh touch /etc/endlessh/config然后编辑config文件vim /etc/endlessh/configgithub中的作者给出了示例配置文件(可以参考)# 监听新ssh连接端口，有防火墙的请在防火墙中打开2222端口 Port 2222 # 随机SSH banner每行之间的毫秒数 Delay 10000 # 每行随机长度的最大值 MaxLineLength 32 # 一次接受的最大连接数 MaxClients 4096 # 日志详细级别(0:少 1:标准 2:多) # 0 = Quiet # 1 = Standard, useful log messages # 2 = Very noisy debugging information LogLevel 0 编辑完成后运行这个程序./endlessh -f config 要保持后台运行可以使用setsidsetsid ./endlessh -f config endlessh默认情况下并不会输出日志消息 可以通过运行./endlessh -v >endlessh.log 2>endlessh.err来将日志和错误日志生成在endlessh.log里和endlessh.err里如果运行后报错返回Address family not supported by protocol请查看grub配置文件中是否禁用了IPV6，如果禁用了请取消禁用

教程:如何搭建属于自己的DNS
type: item
date: 2019-01-19T12:19:00+00:00
description: 前一段时间发现路由器里面可以自定义DNS，就想如果把纯净的DNS放入路由器里会不会直接访问谷歌和pixiv之类的。教程开始我们制作私人DNS有两种方法：1.dnsmasq2.overture制作环境使用CentOS71.dnsmasq首先我们先更新源yum -y update然后安装dnsmasqyum install dnsmasq -ydnsmasq的配置文件在/etc/dnsmasq.conf中，编辑这个文件vim /etc/dnsmasq.conf里面的东西很多，需要添加的就以下几种#这个是你指定的hosts文件，dnsmasq会使用你指定的hosts(有的时候hosts比较好的可以直接连YouTube) addn-hosts=/etc/hosts #这个是你自定义的上游DNS(第一个是阿里云的DNS，第二个是教育网的DNS) server=223.5.5.5 server=202.38.93.153 #listen-address这个配置不可以有，一定要删掉 #如果看到listen-address=127.0.0.1这个可以注释掉或者删掉dnsmasq的基本指令#开启 sudo service dnsmasq start #关闭 sudo service dnsmasq stop #重启 sudo service dnsmasq restart开启以后查看53端口netstat -tunlp | grep 53如果显示结果为tcp 0 0 0.0.0.0:53 0.0.0.0:* LIST EN 2346/dnsmasq udp 0 0 0.0.0.0:53 0.0.0.0:* 2346/dnsmasqdnsmasq正在运行了dnsmasq有个很大的缺点，虽然操作比较简单，但是dnsmasq是从上游DNS的53端口获取流量，而无法确定上游DNS的53端口的流量是否已经遭到了污染，如果你一套稳定而且很棒的hosts可以用dnsmasq。2.overture和dnsmasq不同的是，overture可以从上游DNS的非标准端口(非53端口)接收流量，不过需要上游DNS的支持。overture不仅可以用在VPS中，也可以用在树莓派甚至Androidoverture可以在GITHUB上找到点此进入根据你的架构下载对应的版本cd ~ wget [要下载文件的网址] 我下载的是overture-linux-amd64.zipmkdir overture && mv overture-linux-amd64.zip overture chmod 774 overture解压zip文件cd overture unzip overture-linux-amd64.zip chmod 774 ./* 会有这些文件[root@hyui overture]# ls config.json domain_primary_sample hosts_sample ip_network_primary_sample overture-linux-amd64.zip domain_alternative_sample ip_network_alternative_sample overture-linux-amd64 修改config.jsonvim config.json 其中需要修改一些地方"PrimaryDNS": [ //你的主DNS信息，使用了DNSPOD { "Name": "DNSPod", "Address": "119.29.29.29:53", "Protocol": "udp", "SOCKS5Address": "", "Timeout": 6, "EDNSClientSubnet": { "Policy": "auto", "ExternalIP": "", "NoCookie": true } } ], "AlternativeDNS": [ //你的备用DNS信息，这个是外国DNS，为了防止对53端口的投毒，可以使用443端口(前提是他们支持443或其他端口) { "Name": "Opendns", "Address": "208.67.220.220:443", "Protocol": "tcp", "SOCKS5Address": "", "Timeout": 6, "EDNSClientSubnet": { "Policy": "disable", "ExternalIP": "", "NoCookie": true } } ],关于EDNSClientSubnet的说明，作者给出的是EDNSClientSubnet: Used to improve DNS accuracy. Please check RFC7…