首页
关于
Search
1
2022最新WPS政府/教育版合集
3,278 阅读
2
欢迎使用 Typecho
3,088 阅读
3
thinkphp 做301重定向跳转
2,548 阅读
4
IDE 注册教程
2,380 阅读
5
nginx反向代理设置泛目录解析
2,368 阅读
源码
教程
HTML
JAVASCRIPT
PHP
MYSQL
系统
LINUX
WINDOWS
填坑
工具
登录
/
注册
Search
标签搜索
系统工具
内网穿透
PHPDesktop
TaurusCoders
累计撰写
52
篇文章
累计收到
1
条评论
首页
栏目
源码
教程
HTML
JAVASCRIPT
PHP
MYSQL
系统
LINUX
WINDOWS
填坑
工具
页面
关于
搜索到
18
篇与
LINUX
的结果
2024-12-06
安装minio
一、安装minio Centos wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230227181045.0.0.x86_64.rpm -O minio.rpm sudo dnf install minio.rpm 1 2 Debian wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230227181045.0.0_amd64.deb -O minio.deb sudo dpkg -i minio.deb 1 2 二、编辑 vi /etc/systemd/system/minio.service文件 ########看情况,用不到的话就注释这三行############## # User=minio-user # Group=minio-user # ProtectProc=invisible 1 2 3 4 修改后需要重新加载设置使其生效。 systemctl daemon-reload 1 创建存储文件夹 mkdir /root/minioData 1 三、编辑环境变量文件 vi /etc/default/minio # 编辑配置文件 MINIO_VOLUMES="/root/minioData" MINIO_OPTS="--console-address :9001 --address :9000" MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin 1 2 3 4 5 重新启动并查看状态 systemctl start minio && systemctl status minio 1 四、显示正常后,设置开机启动 systemctl enable minio 1 五、配置minio的客户端 mc 1、下载mc 免费下载:mc 2、配置mc 直接移动到和mino同位置的/usr/local/bin/下就行了 然后 chmod +x 赋予权限就完成了。。 chmod +x mc mv mc /usr/local/bin/ 1 2 但是还要给mc配置一个alias别名,不然无法创建bucket。alias的别名为服务器地址。 mc alias set myminio http://192.168.110.119:9000 minioadmin minioadmin 1 查看别名 mc alias list 1 安装结束! ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_45738379/article/details/135391687
2024年12月06日
194 阅读
0 评论
0 点赞
2024-10-23
nginx动态设置ip黑名单
为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP ,我们将拒绝提供服务。并且可以设置封禁失效时间环境准备linux version: centos7 / ubuntu 等redis version: 5.0.5nginx version: nginx-openresty设计方案实现 IP 黑名单的功能有很多途径:1、在操作系统层面,配置 iptables,来拦截指定 IP 的网络请求。优点:简单直接,在服务器物理层面上进行拦截缺点:每次需要手动上服务器修改配置文件,操作繁琐且不灵活2、在 Web 服务器层面,通过 Nginx 自身的 deny 选项或者 lua 插件配置 IP 黑名单。优点:可动态实现封禁 ip,通过设置封禁时间可以做到分布式封禁缺点:需要了解 Lua 脚本和 Nginx 配置,有一定的学习成本3、在应用层面,在处理请求之前检查客户端的 IP 地址是否在黑名单中。优点:通过编写代码来实现,相对简单且易于维护。缺点:代码可能会变得冗长,而且在高并发情况下可能影响性能。为了方便管理和共享黑名单,通过 nginx + lua + redis 的架构实现 IP 黑名单的功能图片配置 nginx.conf在需要进行限制的 server 的 location 中添加如下配置:location / { # 如果该location 下存在静态资源文件可以做一个判断 #if ($request_uri ~ .*\.(html|htm|jpg|js|css)) { # access_by_lua_file /usr/local/lua/access_limit.lua; #} access_by_lua_file /usr/local/lua/access_limit.lua; # 加上了这条配置,则会根据 access_limit.lua 的规则进行限流 alias /usr/local/web/; index index.html index.htm;}配置 lua 脚本/usr/local/lua/access_limit.lua-- 可以实现自动将访问频次过高的IP地址加入黑名单封禁一段时间--连接池超时回收毫秒local pool_max_idle_time = 10000--连接池大小local pool_size = 100--redis 连接超时时间local redis_connection_timeout = 100--redis hostlocal redis_host = "your redis host ip"--redis portlocal redis_port = "your redis port"--redis authlocal redis_auth = "your redis authpassword";--封禁IP时间(秒)local ip_block_time= 120--指定ip访问频率时间段(秒)local ip_time_out = 1--指定ip访问频率计数最大值(次)local ip_max_count = 3-- 错误日志记录local function errlog(msg, ex) ngx.log(ngx.ERR, msg, ex)end-- 释放连接池local function close_redis(red) if not red then return end local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) if not ok then ngx.say("redis connct err:",err) return red:close() endend--连接redislocal redis = require "resty.redis"local client = redis:new()local ok, err = client:connect(redis_host, redis_port)-- 连接失败返回服务器错误if not ok then close_redis(client) ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)end--设置超时时间client:set_timeout(redis_connection_timeout)-- 优化验证密码操作 代表连接在连接池使用的次数,如果为0代表未使用,不为0代表复用 在只有为0时才进行密码校验local connCount, err = client:get_reused_times()-- 新建连接,需要认证密码if 0 == connCount then local ok, err = client:auth(redis_auth) if not ok then errlog("failed to auth: ", err) return end --从连接池中获取连接,无需再次认证密码elseif err then errlog("failed to get reused times: ", err) returnend-- 获取请求iplocal function getIp() local clientIP = ngx.req.get_headers()["X-Real-IP"] if clientIP == nil then clientIP = ngx.req.get_headers()["x_forwarded_for"] end if clientIP == nil then clientIP = ngx.var.remote_addr end return clientIPendlocal cliendIp = getIp();local incrKey = "limit:count:"..cliendIplocal blockKey = "limit:block:"..cliendIp--查询ip是否被禁止访问,如果存在则返回403错误代码local is_block,err = client:get(blockKey)if tonumber(is_block) == 1 then ngx.exit(ngx.HTTP_FORBIDDEN) close_redis(client)endlocal ip_count, err = client:incr(incrKey)if tonumber(ip_count) == 1 then client:expire(incrKey,ip_time_out)end--如果超过单位时间限制的访问次数,则添加限制访问标识,限制时间为ip_block_timeif tonumber(ip_count) > tonumber(ip_max_count) then client:set(blockKey,1) client:expire(blockKey,ip_block_time)endclose_redis(client)总结以上,便是 Nginx+Lua+Redis 实现的 IP 黑名单功能,具有如下优点:配置简单轻量,对服务器性能影响小。多台服务器可以通过共享 Redis 实例共享黑名单。动态配置,可以手工或者通过某种自动化的方式设置 Redis 中的黑名单扩展1、IP 黑名单的应用场景IP 黑名单在实际应用中具有广泛的应用场景,主要用于保护服务器和应用免受恶意攻击、爬虫或滥用行为的影响。下面列举几个常见的应用场景:防止恶意访问: 黑名单可以阻止那些试图通过暴力破解密码、SQL 注入、XSS 攻击等方式进行非法访问的 IP 地址。防止爬虫和数据滥用: 黑名单可以限制那些频繁访问网站并抓取大量数据的爬虫,以减轻服务器负载和保护数据安全。防止 DDOS 攻击: 黑名单可以封禁那些发起大规模DDoS攻击的IP地址,保护服务器的稳定性和安全性。限制访问频率: 黑名单可以限制某个IP在特定时间段内的访问次数,防止恶意用户进行暴力破解、刷票等行为。2、高级功能和改进除了基本的 IP 黑名单功能外,还可以进行一些高级功能和改进,以提升安全性和用户体验:异常检测和自动封禁: 通过分析访问日志和行为模式,可以实现异常检测功能,并自动将异常行为的 IP 地址封禁,提高安全性。白名单机制: 除了黑名单,还可以引入白名单机制,允许某些 IP 地址绕过黑名单限制,确保合法用户的正常访问。验证码验证: 对于频繁访问或异常行为的 IP,可以要求其进行验证码验证,以进一步防止恶意行为。数据统计和分析: 将黑名单相关的数据进行统计和分析,例如记录封禁 IP 的次数、持续时间等信息,以便后续优化和调整策略。通过不断改进和优化 IP 黑名单功能,可以更好地保护服务器和应用的安全。
2024年10月23日
458 阅读
0 评论
1 点赞
2023-12-23
php-beast加解密教程
php-beast 非常易用 效率又高的php代码保护扩展,介绍一下 windows 和linux上安装和使用的问题 ,以及如何处理常见解密问题1)Windows版本加密处理https://github.com/imaben/php-beast-binarieswindows下 可以直接在这里下载dll根据自己的php版本 还有是不是线程安全的 来选择下载对应的 放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置extension=php_beast_x86_nts.dll但是秘钥是一样的 编译的话很多时候 会失败 或者出现lib版本不匹配问题老版本 我用vs编译过 dll收到版本限制比较麻烦处理官方提供的版本很稳定 直接二进制修改对应秘钥部分就可以了【1】处理aes的部分 ida分析到 变了对应的位置static uint8_t key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c,};根据文件偏移 用ue二进制编辑 找到对应位置 修改 保存即可【2】处理des部分ida逆向分析出秘钥变量的位置 和源码里面static char key[8] = { 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e,};正好对应上 用ue二进制编辑 修改保存测试通过 其他加密方式就不处理了 [3] encrypt_file_header_sign 修改 encrypt_file_header_sign 修改ida分析到 头 信息 位置 这个数据应该是在加密的文件最前面来标示文件是否被加密了 尽量特别一点我的版本 在76760这个位置长度是8 2)Linux 版本加密处理 编译前需要修改秘钥 新版本的加密方式比较多 需要修改的地方也比较多老版本的是在key.c中修改 新版 修改是在header.c中aes_algo_lib.cdes_algo_handler.cheader.c编译步骤如下120 wget https://github.com/liexusong/php-beast/archive/master.zip121 unzip master.zip122 cd php-beast-master/124 phpize125 ./configure --with-php-config=/apps/php/bin/php-config报错 找不到 php-config找一下自己的 配置在哪里130 find / -name "php-config"确定配置文件位置131 ./configure --with-php-config=/usr/local/php/bin/php-config132 sudo make && make install133 sudo make test134 php -m发现没成功 重新试一遍135 ./configure --with-php-config=/usr/local/php/bin/php-config136 sudo make && make install后面也要加sudo root权限137 sudo make && sudo make install138 php -m140 sudo make test成功添加到php配置文件种141 php -i|grep ini142 gedit /usr/local/php/etc/php.ini添加 extension="beast.so"146 php -i|grep extension153 service php-fpm restart重启php 开始加密测试154 cd tools/161 php encode_file.php --encrypt DES --oldfile 1.php --newfile 22.php162 php 22.php163 cat 221.php 加密后生成 2.php 加密后运行测试正常 3)php-beast解密 [1]修改过的密钥的 很难解密未知密钥只能暴力破解 分析 加密的文件头部 判断是 哪一种类型加密 三种加密类型 大多数是aes des的 base64的应该没人用 分析出加密类型 对文件主体进行破解分析 -----------------------分析说明 B----------------------------- #define INT_SIZE (sizeof(int)) x64上占4个字节 php_stream_write(output_stream,encrypt_file_header_sign, encrypt_file_header_length); php_stream_write(output_stream, (const char *)&dumplen, INT_SIZE); 长度 php_stream_write(output_stream, (const char *)&expireval, INT_SIZE); 过期时间 php_stream_write(output_stream, (const char *)&dumptype, INT_SIZE); 加密类型 des=1 BEAST_ENCRYPT_TYPE_DES = 1, dumptype默认des 值为1 BEAST_ENCRYPT_TYPE_AES, BEAST_ENCRYPT_TYPE_BASE64, 使用beast_encode_file()函数加密文件,函数原型如下:beast_encode_file(string $input_file, string $output_file, int expire_timestamp, int encrypt_type)。$input_file: 要加密的文件$output_file: 输出的加密文件路径$expire_timestamp: 文件过期时间戳$encrypt_type: 加密使用的算法(支持:BEAST_ENCRYPT_TYPE_DES、BEAST_ENCRYPT_TYPE_AES) -----------------------分析说明 E----------------------------- 【2】默认密钥加密的 ,未修改过的最多 大多数保护代码的三方为了安装容易 都会使用默认的密钥加密方式,否则一个服务器部署多个版本php-beast 会增加难度 易用性降低 默认密钥 如下 自己解密主体就好了 des_key = "11" aes_key=2b,懒人也可以 用免费的工具 解密默认的php-beast加密的文件 点击 传送门phpbeast-beast解密decode-在线工具
2023年12月23日
544 阅读
0 评论
0 点赞
2023-07-07
使用.htaccess文件实现指定域名访问指定二级目录
现在很多主机商都不支持虚拟目录设定,比如:手机站是m.xxxx.cn,手机站放在PC网站的二级目录下面即www.xxxx.cn/m这样可以访问。但是主机绑定m.xxxx.cn以后,默认访问的是PC站的页面内容,现在我们要实现,只要在浏览器输入m.xxxx.cn或者是www.xxxx.cn/m,回车以后都访问/m目录下面的内容,并且域名跳转到手机二级域名m.xxxx.cn。这就需要利用.htaccess文件(前提你的空间服务器必须支持apache的rewrite功能,只有这样才能使用.htaccess)。如果你的空间是Linux服务器一般默认都开启了的。准备工作就不用多说了,域名解析并绑定到空间,域名解析一般2小时左右全国就生效了,等生效以后再测试。首先在本地建个txt文件,复制下面的代码修改替换你要绑的域名和目录,并传到网站主目录下再改成为.htaccess。例如:下面是以 m.aaa.com 和 bbb.cn 为例的.htaccess代码。<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /</IfModule>1234绑定m.aaa.com 到 m 子目录RewriteCond %{HTTP_HOST} ^m\.aaa\.com$ [NC]RewriteCond %{REQUEST_URI} !^/m/ RewriteRule ^(.*)$ m/$1?Rewrite [L,QSA]123可以绑定多个 只需重复上三行代码并更改一下域名、目录名就好了#绑定bbb.cn 到 seo 子目录<IfModule mod_rewrite.c> RewriteCond %{HTTP_HOST} ^www\.bbb\.cn$ [NC] RewriteCond %{REQUEST_URI} !^/seo/ RewriteRule ^(.*)$ seo/$1?Rewrite [L,QSA]</IfModule>123456如果你以完成上面的步骤,你的子域名应该可以访问了,但你会发现在浏览器上访问主域名+绑定的域名目录(即www.aaa.com/m)也可以访问,可这并不是我们想要的,接下来我们完成最后一步。在每一个绑定的目录中,如m目录中 也增加一个.htaccess 文件。#.htaccess代码如下:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #只许绑定的域名访问 RewriteCond %{HTTP_HOST} !^m\.aaa\.com$ [NC] RewriteRule (.*) http://m.aaa.com/$1 [L,R=301] #对绑定目录下与同名的目录的处理(添加下面代码以后,如果报错,可以注释) RewriteCond %{REQUEST_URI} ^\/m\/ [NC] RewriteCond %{QUERY_STRING} !^(.*)?Rewrite RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]</IfModule>123456789101112注意:如果你的网站根目录已存在.htaccess文件;比如 WordPress 修改过固定链接,那么目录会有一个.htaccess 文件里面如有:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ./index.php [L]</IfModule>1234567改为:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^m\.9pinw\.com$ [NC] RewriteCond %{REQUEST_URI} !^/m/ RewriteRule ^(.*)$ m/$1?Rewrite [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ./index.php [L]</IfModule>
2023年07月07日
375 阅读
0 评论
0 点赞
2022-07-05
centos 设置时区并同步时间
设置时区cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime安装时间同步工具yum install ntp ntpdate -y执行同步时间service ntpd stop ntpdate us.pool.ntp.org service ntpd start date
2022年07月05日
678 阅读
0 评论
0 点赞
2022-06-14
nginx 设置详细日志记录
nginx 日志记录详细请求信息nginx.confworker_processes auto; worker_rlimit_nofile 51200; events { worker_connections 51200; multi_accept on; } http { include mime.types; #include luawaf.conf; include proxy.conf; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $request_time'; log_format log_json '{ "timestamp": "$time_local", ' '"remote_addr": "$remote_addr", ' '"referer": "$http_referer", ' '"request": "$request", ' '"status": $status, ' '"bytes": $body_bytes_sent, ' '"agent": "$http_user_agent", ' '"x_forwarded": "$http_x_forwarded_for", ' '"up_addr": "$upstream_addr",' '"up_host": "$upstream_http_host",' '"up_resp_time": "$upstream_response_time",' '"request_time": "$request_time"' ' }'; log_format main_all '[$time_local] client=$remote_addr ' 'request="$request" request_length=$request_length ' 'http_referer="$http_referer" ' 'bytes_sent=$bytes_sent ' 'body_bytes_sent=$body_bytes_sent ' 'user_agent="$http_user_agent" ' 'upstream_addr=$upstream_addr ' 'upstream_status=$upstream_status ' 'cookie="$http_cookie" ' 'request_body="$request_body" ' 'document_root="$document_root" ' 'fastcgi_script_name="$fastcgi_script_name" ' 'request_filename="$request_filename" ' 'request_time=$request_time ' 'upstream_response_time=$upstream_response_time ' 'upstream_connect_time=$upstream_connect_time ' 'upstream_header_time=$upstream_header_time '; log_format main_json escape=json '{ ' '"time_local": "$time_local", ' '"remote_addr": "$remote_addr", ' '"request": "$request", ' '"request_length": "$request_length", ' '"http_referer": "$http_referer", ' '"bytes_sent": "$bytes_sent", ' '"body_bytes_sent": "$body_bytes_sent", ' '"http_user_agent": "$http_user_agent", ' '"upstream_addr": "$upstream_addr", ' '"upstream_status": "$upstream_status", ' '"http_cookie": "$http_cookie", ' '"request_body": "$request_body", ' '"document_root": "$document_root", ' '"fastcgi_script_name": "$fastcgi_script_name", ' '"request_filename": "$request_filename", ' '"request_time": "$request_time", ' '"upstream_response_time": "$upstream_response_time", ' '"upstream_connect_time": "$upstream_connect_time", ' '"upstream_header_time": "$upstream_header_time"' ' },'; server_names_hash_bucket_size 512; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server_tokens off; access_log off; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /nginx_status { allow 127.0.0.1; deny all; stub_status on; access_log off; } } include vhost/*.conf; #加载vhost目录下的虚拟主机配置文件 }参数说明:$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符串$uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html"。$document_uri #同 $uri$document_root #当前请求的文档根目录或别名$host #优先级:HTTP请求行的主机名>"HOST"请求头字段>符合请求的服务器名.请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称$hostname #主机名$https #如果开启了SSL安全模式,值为"on",否则为空字符串。$binary_remote_addr #客户端地址的二进制形式,固定长度为4个字节$body_bytes_sent #传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的"%B"参数保持兼容$bytes_sent #传输给客户端的字节数$connection #TCP连接的序列号$connection_requests #TCP连接当前的请求数量$content_length #"Content-Length" 请求头字段$content_type #"Content-Type" 请求头字段$cookie_name #cookie名称$limit_rate #用于设置响应的速度限制$msec #当前的Unix时间戳$nginx_version #nginx版本$pid #工作进程的PID$pipe #如果请求来自管道通信,值为"p",否则为"."$proxy_protocol_addr #获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串$realpath_root #当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径$remote_addr #客户端地址$remote_port #客户端端口$remote_user #用于HTTP基础认证服务的用户名$request #代表客户端的请求地址$request_body #客户端的请求主体:此变量可在location中使用,将请求主体通过proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass传递给下一级的代理服务器$request_body_file #将客户端请求主体保存在临时文件中。文件处理结束后,此文件需删除。如果需要之一开启此功能,需要设置client_body_in_file_only。如果将次文件传 递给后端的代理服务器,需要禁用request body,即设置proxy_pass_request_body off,fastcgi_pass_request_body off,uwsgi_pass_request_body off,or scgi_pass_request_body off$request_completion #如果请求成功,值为"OK",如果请求未完成或者请求不是一个范围请求的最后一部分,则为空$request_filename #当前连接请求的文件路径,由root或alias指令与URI请求生成$request_length #请求的长度 (包括请求的地址,http请求头和请求主体)$request_method #HTTP请求方法,通常为"GET"或"POST"$request_time #处理客户端请求使用的时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。$request_uri #这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI,不包含主机名,例如:"/cnphp/test.php?arg=freemouse"$scheme #请求使用的Web协议,"http" 或 "https"$server_addr #服务器端地址,需要注意的是:为了避免访问linux系统内核,应将ip地址提前设置在配置文件中$server_name #服务器名$server_port #服务器端口$server_protocol #服务器的HTTP版本,通常为 "HTTP/1.0" 或 "HTTP/1.1"$status #HTTP响应代码$time_iso8601 #服务器时间的ISO 8610格式$time_local #服务器时间(LOG Format 格式)$cookie_NAME #客户端请求Header头中的cookie变量,前缀"$cookie_"加上cookie名称的变量,该变量的值即为cookie名称的值$http_NAME #匹配任意请求头字段;变量名中的后半部分NAME可以替换成任意请求头字段,如在配置文件中需要获取http请求头:"Accept-Language",$http_accept_language即可$http_cookie$http_host #请求地址,即浏览器中你输入的地址(IP或域名)$http_referer #url跳转来源,用来记录从那个页面链接访问过来的$http_user_agent #用户终端浏览器等信息$http_x_forwarded_for$sent_http_NAME #可以设置任意http响应头字段;变量名中的后半部分NAME可以替换成任意响应头字段,如需要设置响应头Content-length,$sent_http_content_length即可$sent_http_cache_control$sent_http_connection$sent_http_content_type$sent_http_keep_alive$sent_http_last_modified$sent_http_location$sent_http_transfer_encoding
2022年06月14日
1,061 阅读
0 评论
0 点赞
2022-04-09
Centos7 安装杀毒软件clamav
一、自动安装yum install clamav病毒库默认地址是/var/lib/clamav二、编译安装1.下载wget http://www.clamav.net/downloads/production/clamav-0.101.2.tar.gz2.创建clamav用户和存放病毒库目录clamav用户和用户组groupadd clamav && useradd -g clamav clamav && id clamav日志存放目录mkdir -p /usr/local/clamav/logs touch /usr/local/clamav/logs/clamd.log touch /usr/local/clamav/logs/freshclam.log chown clamav.clamav /usr/local/clamav/logs/clamd.log chown clamav.clamav /usr/local/clamav/logs/freshclam.log病毒存放目录mkdir -p /usr/local/clamav/updata chown -R root.clamav /usr/local/clamav/ chown -R clamav.clamav /usr/local/clamav/updata/3.解压安装包tar xf clamav-0.101.2.tar.gz4.安装依赖yum install gcc openssl openssl-devel -y5.编译安装cd clamav-0.100.0/ ./configure --prefix=/usr/local/clamav --with-pcre make && make install echo $?6.配置clamavcd /usr/local/clamav/etc cp clamd.conf.sample clamd.conf cp freshclam.conf.sample freshclam.confvim clamd.confExample 注释掉这一行.添加下面三行:LogFile /usr/local/clamav/logs/clamd.logPidFile /usr/local/clamav/updata/clamd.pidDatabaseDirectory /usr/local/clamav/updatavim freshclam.confExample 注释掉这一行.添加下面三行DatabaseDirectory /usr/local/clamav/updataUpdateLogFile /usr/local/clamav/logs/freshclam.logPidFile /usr/local/clamav/updata/freshclam.pid7.启动clamavchown -R clamav.clamav /usr/local/clamav/ systemctl start clamav-freshclam.service systemctl enable clamav-freshclam.service systemctl status clamav-freshclam.service8.更新病毒库先停止freshclamsystemctl stop clamav-freshclam.service再更新/usr/local/clamav/bin/freshclam如果更新不成功还可以,也无法下载的话就用本机电脑浏览器下载cvd文件再上传到服务器cd /usr/local/clamav/share/clamav wget http://database.clamav.net/main.cvd wget http://database.clamav.net/daily.cvd wget http://database.clamav.net/bytecode.cvd更新完成启动systemctl start clamav-freshclam.service systemctl status clamav-freshclam.service创建软链接ln -s /usr/local/clamav/bin/clamscan /usr/local/sbin/clamscan9.扫描杀毒clamscan:通用,不依赖服务,命令参数较多,执行速度稍慢;用clamscan扫描,不需要开始服务就能使用;-r 递归扫描子目录-i 只显示发现的病毒文件--no-summary 不显示统计信息 扫描参数:-r/--recursive[=yes/no] 所有文件--log=FILE/-l FILE 增加扫描报告--move [路径] 移动病毒文件至..--remove [路径] 删除病毒文件--quiet 只输出错误消息--infected/-i 只输出感染文件--suppress-ok-results/-o 跳过扫描OK的文件--bell 扫描到病毒文件发出警报声音--unzip(unrar) 解压压缩文件扫描clamscan -r --bell -i / #扫描所有文件并且显示有问题的文件的扫描结果clamscan -r --bell -i / #只显示找到的病毒信息clamscan --no-summary -ri /tmp #扫描homeclamscan --infected --remove --recursive /home
2022年04月09日
805 阅读
0 评论
0 点赞
2022-01-05
Multipass 使用详解
Multipass 的基础学习使用起来很简洁直观,在整体操作上和 docker 类似,如果想在自己电脑上快速搭建一个 Linux 系统用于学习的话,选择使用 Multipass 还是非常方便的
2022年01月05日
2,120 阅读
0 评论
0 点赞
2021-07-31
win10安装kali完整子系统
安装kali-linux准备到设置中开启开发人员模式控制面板—卸载—开启或关闭windows功能中开启子系统安装应用商店搜索kali linux,下载下载完成后启动kali-linux此时可先配置root用户登录,步骤看下文下文子系统迁移下载LxRunLinehttps://github.com查看子系统.\LxRunOffline.exe list创建文件并授予权限icacls E:\Kali-Linux /grant "STARS:(OI)(CI)(F)"迁移系统.\LxRunOffline.exe move -n kali-linux -d E:\Kali-Linux查看是否迁移成功.\LxRunOffline.exe get-dir -n kali-linux配置桌面使用root用户登录命令行输入kali config --default-user root重启服务net stop LxssManager net start LxssManager启动kali/或命令行输入kali修改密码passwd root下载vimapt-get install vim配置源vim /etc/apt/sources.list #中科大 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 #清华大学 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free #浙大 deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free更新apt-get update apt-get upgrade下载桌面apt-get install kali-desktop-xfce #apt-get install xorg #apt-get install xfce4 apt-get install xrdp配置远程桌面vim /etc/xrdp/xrdp.ini 将两处3389端口改为3390重启服务service xrdp restart连接win+R,输入mstsc127.0.0.1:3390完整版apt-get install kali-linux-everything出现弹窗一路回车
2021年07月31日
730 阅读
0 评论
1 点赞
2021-03-18
nginx 跨域设置
很多人都会遇到 Nginx 跨域的问题, 而我遇到的问题是:客户端在 www.a.com服务端在 www.b.comNginx 在 www.c.com此时需要对 Nginx 进行跨域配置才可以访问 www.c.com 的获取客户端 www.a.com 来请求 www.b.com 的数据, 我的 Nginx 配置如下(重要部分):location / { add_header 'Access-Control-Allow-Origin' $http_origin; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } root html; proxy_pass http://xxx:8000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 5; }别忘了把配置中 proxy_pass 对应的 http://xxx:8000/ 地址换成你的服务地址, 当然了, 你的客户端请求的地址不可以是你的服务地址, 而是 Nginx 的地址, 这样就可以达到解决跨域的问题。
2021年03月18日
828 阅读
0 评论
0 点赞
2020-06-17
nginx反向代理设置泛目录解析
二级目录出租,用nginx反向代理设置实例:打开站点的nginx配置文件加入下面代码location /二级目录名称(英文)/ { proxy_pass http://47.105.130.185/二级目录名称(同上)/; proxy_set_header Host $host;#向代理目标主机目录发送主机名称 proxy_set_header X-Real-IP $remote_addr;#向代理目标主机发送客户端真实ip proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }需要注意的是如果出租目录站点没备案,而代理目标主机是备案主机,那么proxy_set_header Host $host;这句话必须去掉,否则会被备案页面拦截。
2020年06月17日
2,368 阅读
0 评论
0 点赞
2020-05-10
内网穿透工具
最近没什么事情,看了一些关于内网穿透的文章,因我本身已是做微信开发相关的工作,对这部分关注的比较多,现分享给大家。首先说下内网穿透的原理。NAPT原理在NAT网关上会有一张映射表,表上记录了内网向公网哪个IP和端口发起了请求,然后如果内网有主机向公网设备发起了请求,内网主机的请求数据包传输到了NAT网关上,那么NAT网关会修改该数据包的源IP地址和源端口为NAT网关自身的IP地址和任意一个不冲突的自身未使用的端口,并且把这个修改记录到那张映射表上。最后把修改之后的数据包发送到请求的目标主机,等目标主机发回了响应包之后,再根据响应包里面的目的IP地址和目的端口去映射表里面找到该转发给哪个内网主机。这样就实现了内网主机在没有公网IP的情况下,通过NAPT技术借助路由器唯一的一个公网IP来访问公网设备。 具体原理参照下图:更加具体的原理性介绍可以看下这篇文档:内网穿透工具的原理与开发实战我了解的内网穿透工具NgrokNatapp小米球Sunny-NgrokechositeSsh、autosshLanproxySpikefrpfcn花生壳前5个都是基于国外的ngrok来进行二次开发的。1、Ngrokngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地协助服务端程序测试。参考博客:10分钟教你搭建自己的ngrok服务器2、Natappnatapp是 基于ngrok的国内收费内网穿透工具,类似花生壳,有免费版本,比花生壳好。免费版本:提供http,https,tcp全隧道穿透,随机域名/TCP端口,不定时强制更换域名/端口,自定义本地端口参考文章:NATAPP1分钟快速新手图文教程3、小米球小米球是基于ngrok二次开发的内网穿透工具,支持多协议、多隧道、多端口同时映射(http、https、tcp等等...),同时支持多种系统win、linux、linux_arm、mac等。具体的使用直接参考官网。4、Sunny-NgrokSunny-Ngrok同样是ngrok二次开发的内网穿透工具,支持http,https协议,同时支持更丰富的系统和语言:linux、win、mac、openwrt、 python、php等。教程:Sunny-Ngrok使用教程5、echositeechosite同样ngrok二次开发的内网穿透工具,支持多种协议,以前是全部免费的,现在推出了收费版和免费版,可根据自己的需要去选择。参考教程:EchoSite---让内网穿透变得简单6、Ssh、autosshssh 配合autossh工具使用,因为autossh会容错,自动重新启动SSH会话和隧道。autossh是一个程序,用于启动ssh的副本并进行监控,在死亡或停止传输流量时根据需要重新启动它。 这个想法来自rstunnel(Reliable SSH Tunnel),但是在C中实现。作者的观点是,它不像匆匆忙忙的工作那么容易。使用端口转发环路或远程回显服务进行连接监视。在遇到连接拒绝等快速故障时,关闭连接尝试的速度。在OpenBSD,Linux,Solaris,Mac OS X,Cygwin和AIX上编译和测试; 应该在其他BSD上工作。免费软件。使用教程:SSH内网穿透7、Lanproxylanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面...)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。参考教程:业余草推荐一款局域网(内网)穿透工具lanproxy8、SpikeSpike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于ReactPHP,采用IO多路复用模型。采用Php实现。参考教程:使用 PHP 实现的的内网穿透工具 “Spike”9、Frpfrp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。教程:一款很好用的内网穿透工具--FRP、使用frp实现内网穿透10、FcnFCN[free connect]是一款傻瓜式的一键接入私有网络的工具, fcn利用公共服务器以及数据加密技术实现:在免公网IP环境下,在任意联网机器上透明接入服务端所在局域网网段。支持多种系统,有免费版和付费版。教程:内网穿透工具FCN介绍上面便是我所知道的内网穿透工具,其中ngrok相关的我基本都用过还有frp,都差不多。大部分都可以免费去使用,但是我不建议大家把这些免费的穿透工具去放到比较重要的云服务器中去使用,容易被攻击。我的小伙伴,开始你的穿透之旅吧。
2020年05月10日
864 阅读
0 评论
0 点赞
2020-05-10
搭建自己的内网穿透ngrok服务器
内网穿透想必开发过微信的同志都很了解,大部分人选择网上寻找各种现成的,比如ngrok官网、ittun-ngrok、sunny-ngrok或者花生壳之类的。但是世界上没有免费的午餐,要不就是收费,要不就是免费但是偶尔会出现连接失败的问题(当然大多数时间是没有问题的)。偶然,正在测试微信的某些功能,但是正在使用的ittun-ngrok连接失败了。导致测试无法进行,最终萌生出自己搭建一个ngrok服务器的想法。原文链接:https://blog.csdn.net/yjc_1111/java/article/details/79353718
2020年05月10日
1,312 阅读
0 评论
0 点赞
2020-05-10
内网穿透
一,官网注册natapp.cn/ 这个我不用说了,进官网注册就行二,购买隧道(免费/收费都有)我们这里可以选择免费隧道,免费的需要实名认证,我这里是用了9元一个月的隧道(个人建议买这个)配置信息先和我保持一致即可。三,下载客户端natapp.cn/#download 下载对应的即可下载后,解压,然后把解压出来的文件放到一个目录里。然后命令行里:cd /Users/qcl/packages/natapp 进入到你放置natapp文件的目录里。 再输入ls,查看natapp软件是否存在。mac运行下面两步进入到目录后输入下面命令行 chmod a+x natapp 是为所有用户开启执行命令 (如果不加这一步 也可以直接用sudo+第二步运行软件)然后输入 ./natapp 这一步是运行命令win用户直接双击.exe文件即可这里提示我们认证错误,错误是因为authtoker没有配置,所以我们需要在命令行里运行下面命令./natapp -authtoken=你的authtoken值 复制代码而这个authtoken值,我们可以到管理后台去找如箭头所指,就是我们想要的authtoken 然后命令行里运行运行上面命令行时会出现下面结果这就代表我们成功把外网 http://a11*********98.natapp.cc -> 127.0.0.1:8080 映射到我们本地的服务器了,这时候我们通过外网网址,就可以访问我们本地服务器了。 但是。。。。。。natapp提供给我们的网址,不能直接访问,这时我们就要去做另外一个配置了。绑定本站二级域名或自主域名后进行访问之所以这么做,也是为了安全。 下面我们就继续来讲怎么绑定本站二级域名或自主域名。如果你有自己的备案域名,可以参考官方文档 natapp.cn/article/bei…如果你没有自己的备案域名,就需要再去注册一个二级域名了。我这里拿自己的微信号,注册一个二级域名。 注册完二级域名后,再去修改隧道配置点击配置选中二级域名修改成功后,我们的域名就会变成我们的二级域名然后再次在命令行里运行可以看到我们的域名已经变了到这里我们就配置成功了,去验证下手机微信访问这时候我们就可以愉快的实现内网穿透了这样外网就能轻松的访问到我们本地电脑的服务器了。 做微信开发时,就可以愉快的在我们本地做调试了。作者:编程小石头链接:https://juejin.im/post/5cad5e675188251b1b2f5517来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2020年05月10日
1,392 阅读
0 评论
0 点赞
2020-03-18
七牛云空间批量删除文件
由于业务转行之前存储在七牛云其中一个bucket的资源文件都不需要了,需要批量删除。但是文件管理中批量删除最多50个,这个bucket里有好几百万的文件,50个50个删除太笨了!!!!!因此请教了大神之后总结下面的方法做个记录供以后使用。首先安装七牛云的qshell命令行工具,源码地址:https://github.com/qiniu/qshell/。下载对应系统的安装文件按教程安装。安装完成后使用以下命令先导出文件列表:$ qshell listbucket2 --max-retry -1 yourBucketName --readable -o dfileList.txt大概10分钟导出完成后使用以下命令删除:$ qshell batchdelete yourBucketName -i qiniufile.txt --success-list success.txt --failure-list failure.txt好了大功告成,收工
2020年03月18日
1,269 阅读
0 评论
0 点赞
1
2