启用开发者模式 设置--> 更新和安全--> 针对开发人员--> 勾选“开发人员模式” 安装Linux Bash组件 鼠标右键(桌面)--> 个性化--> 主题--> 阅读全文
常用软件问题
问题描述 问题解决 微信 Windows 版如何多开 在不登录的情况下,多次快速双击打开微信程序 会弹出多个登录窗口,依次在不同窗口登录即可 Google Chrome浏览器关闭自动更新检查 组策略管 阅读全文
Shell 脚本加密解密
gzexe加密解密 gzexe是Linux系统集成的工具,执行命令即可使用。 # 加密Shell脚本,源文件会改名为backup.sh~ [root@WEB1 ~]# gzexe ~/shell/ba 阅读全文
Windows 注册表优化
彻底隐藏文件 说明:U盘Auto病毒利用这一点,还会加上隐藏文件后缀名。 关闭默认共享 说明:系统默认会开启每个卷的文件共享,如C$、ADMIN$($表示共享目录不可见);一般环境安全审计要求关闭默认 阅读全文
早期的CMD限制手法
XP年代的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@cls @echo off color 5e # 注册表键值需要以管理员身份运行,另外需要复制ee.bat到C:\Windows目录下; # 管理员运行CMD使用命令:runas /user:administrator cmd # 在新的CMD窗口执行卸载:reg delete "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /f reg add "HKLM\SOFTWARE\Microsoft\Command Processor" /t REG_SZ /v AutoRun /d "C:\WINDOWS\ee.bat" /f >nul cls title 开始Dos密码验证... set N=3 :start cls echo 请进行Dos密码验证,谢谢配合! echo. set PW= set /p PW=请输入Dos密码: set /a N-=1 if /i "%PW%"=="desen" goto ok if "%N%"=="0" echo 密码连续错误3次,请联系System Admin & ping 127.1 -n 3 >nul & exit echo 密码错误,您还有%N%机会 & ping 127.1 -n 2 >nul goto start :ok cls title Verified, Welcome to CMD-DOS! cmd /d cd /d %USERPROFILE% |
缺点说明:
- 输入密码明文,Windows的批处理工具不太好使;试过隐藏输入的方法但以BUG告终。
- 运行cmd /d便可绕过AutoRun脚本。
其他说明:可以使用Quick Batch File Compiler软件将批处理脚本封装成exe执行程序,但在CMD AutoRun中无法正常执行、会耗尽系统内存。
最佳做法
通过组策略来实现命令提示符访问权限,在域环境下可以为不同OU下的对象设置不同的域策略;建议下发组策略到用户配置、避免了域环境下管理员维护麻烦;系统帐号权限及文件访问权限合理规划,大大减少系统病毒感染及传播、越权访问文件、机密资料外泄的可能性,当然也可以从网络传输层面去做访问限制。
设置简要步骤:运行gpedit.msc打开组策略编辑器,用户配置-->管理模板-->系统-->阻止访问命令提示符(设置为已启用)
相关注册表键值:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
"DisableCMD"=dword:00000001
对应的策略文件:C:\Windows\System32\GroupPolicy\User\Registry.pol
OpenVPN源码部署
软件下载 服务端及组件: wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz wget https://www. 阅读全文
设置安全外壳(SSH)
设置口令 命令模式 命令语句 用途描述 Router> Router# enable config terminal 从用户模式进入特权模式 进入配置模式 R1(config)# hostnam 阅读全文
OpenConnect Server源码部署
软件下载 服务端:wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.11.8.tar.xz 客户端:ftp://ftp.infradead.org/pu 阅读全文
Web服务器压测工具 for Linux
http_load 软件下载: http://www.acme.com/software/http_load/http_load-09Mar2016.tar.gz 软件介绍: 程序非常小,解压后也不到 阅读全文
Nginx错误日志分析及防护脚本
- 关于iptables定时策略、crontab设置请自行去了解,建议使用"nohup"方式执行crontab任务;
- 对于nginx error日志可以做大小限制进行截断以减少脚本读取日志文件耗时;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# !/bin/bash # 脚本用于nginx错误URL访问检测 # 若指定时间内来源IP地址错误URL超出合理范围, 则视为URL嗅探源并通过防火墙阻止访问 # 说明: 函数内部变量使用小写字母, 脚本头部变量使用大写字母 # 变量引用:${}可以拼接字符且兼容unix,$不可以拼接字符 # sh -x ngx_err_black.sh 进行跟踪调试 # 清理10分钟前的旧日志文件 for TYPE in {log,run} do find /data/shell/ -type f -name "*ngx*.$TYPE" -mmin +10 -exec rm -f {} \; done # 定义程序、日志相关变量, 日志路径可以参考以下示例自行设置 # error_page 400 403 404 500 502 504 /404.html; # location = /404.html { # access_log /data/nginx/log/error_request.log main; # } BINGIPTAB="/sbin/iptables" NGXLOG="/data/nginx/log/error_request.log" NGX00="/data/shell/$(date +%Y%m%d)_ngx00_$.log" NGX30="/data/shell/$(date +%Y%m%d)_ngx30_$.log" NGX60="/data/shell/$(date +%Y%m%d)_ngx60_$.log" IPTABLST="/data/shell/$(date +%Y%m%d)_ngx_$.lst" RUNLOG="/data/shell/$(date +%Y%m%d)_ngx_$.run" CHAIN_NM="IN_NGXTME" PORTS="80,443" GREP_VWORD="crayon-syntax-highlighter|wp-pagenavi|open-social|^$" GREP_VCODE="200|304|503" # 定义函数: 统计一段时间内某个IP地址访问出错的次数 function errsum(){ # 读取IP地址 IPADDR=$(echo ${line} | awk -F" " '{print $2}') # 读取IP首次汇总数据中访问失败的次数, 最小值计 0 NUMS=$(grep -w ${IPADDR} ${NGX00} | awk -F" " '{print $1}') if [ "$NUMS" = "" ]; then NUMS=0 fi # 读取IP此次汇总数据中访问失败的次数 NUME=$(echo ${line} | awk -F" " '{print $1}') # 一段时间内的IP总计访问失败的次数 NUMC=$(expr ${NUME} - ${NUMS}) # 将汇总数据中每个IP访问失败的次数进行记录 echo $IPADDR $NUME $NUMS $NUMC >> $RUNLOG } # 定义函数: 将访问失败过高的IP地址加入防火墙规则 function addrule(){ # 主判断:IP一段时间内访问失败的次数是否大于命令第一个参数值, 如果值为真则执行 # 注意:if [] 内的两个值要么都加"", 要么都不加, 避免报错(integer expression expected) if [ $NUMC -gt $1 ]; then # 检索系统当前防火墙规则中是否存在$CHAIN_NM链 $BINGIPTAB -nL $CHAIN_NM if [ $? -ne 0 ]; then # 如果规则链不存在, 则新建规则链并应用到INPUT链首行 $BINGIPTAB -N $CHAIN_NM $BINGIPTAB -I INPUT 4 -j $CHAIN_NM fi # 规则链存在, 判断链中条目数量是否超过1000条 chain_sum=$(${BINGIPTAB} --line-numbers -nL ${CHAIN_NM} | tail -n 1 | cut -d' ' -f 1) # 规则链存在但是列表为空, 则赋值为0; num 为输出表头 if [ "$chain_sum" = "num" ]; then chain_sum=0 fi if [ $chain_sum -gt 1000 ]; then # 如果链中规则数量大于1000条, 则删除首行规则 $BINGIPTAB -D $CHAIN_NM 1 fi # 检查现有规则中是否存在将要阻止的IP地址 if [ "$(${BINGIPTAB} -nL ${CHAIN_NM} | grep -w ${IPADDR} | grep DROP)" ]; then # 如果要阻止的IP地址已经在现有规则中, 查询行号并删除旧规则, 确保每个IP在链中只有一个条目 # 建议:如果有其他应用检测脚本要调用iptables, 请使用不同的链名称 # 说明:--kerneltz 在 RHEL/CentOS 6.x 中应替换为 --localtz 参数, 检查系统时间和时区设置 chain_num=$(${BINGIPTAB} --line-numbers -nL ${CHAIN_NM} | grep -w $(echo ${IPADDR}) | grep DROP | cut -d' ' -f 1) $BINGIPTAB -D $CHAIN_NM $chain_num # 插入新规则到链首行, 多次被black的IP将阻止15min内访问, 不指定日期则截止至 2038-01-19 $BINGIPTAB -A $CHAIN_NM -s $IPADDR -p tcp -m multiport --dports $PORTS \ -m time --timestart $(date +%H:%M:%S) --timestop $(date -d '+15 min' +%H:%M:%S) \ --datestop $(date +%Y-%m-%dT23:59:59) --kerneltz -j DROP else # 如果要阻止的IP地址不在现有规则中, 插入新规则到链首行 # 首次被black的IP将阻止10min内访问,不指定日期则截止至 2038-01-19 $BINGIPTAB -A $CHAIN_NM -s $IPADDR -p tcp -m multiport --dports $PORTS \ -m time --timestart $(date +%H:%M:%S) --timestop $(date -d '+10 min' +%H:%M:%S) \ --datestop $(date +%Y-%m-%dT23:59:59) --kerneltz -j DROP fi fi } # 执行第一次NGINX访问错误信息汇总, 打印某列数值的和: awk '{sum+=$1} END {print sum}' # grep -a 是为了避免Nginx日志变成bin格式。 grep -ahvE "${GREP_VWORD}" $NGXLOG | cut -d'"' -f 1,3 | awk '{print $1,$7}' | grep -vE "${GREP_VCODE}" | \ awk '{sum[$1]++} END {for (i in sum) {print sum[i],i | "sort -nr -k 1"}}' | awk '{if ($1 > 5) print $0}' > $NGX00 # 执行第二次NGINX访问错误信息汇总 sleep 30 grep -ahvE "${GREP_VWORD}" $NGXLOG | cut -d'"' -f 1,3 | awk '{print $1,$7}' | grep -vE "${GREP_VCODE}" | \ awk '{sum[$1]++} END {for (i in sum) {print sum[i],i | "sort -nr -k 1"}}' | awk '{if ($1 > 5) print $0}' > $NGX30 #检索30秒钟内访问出错次数超过6次的IP地址加入防火墙策略 cat $NGX30 | while read line do errsum addrule 6 done #清空RUNLOG内容避免重复记录被导入 echo > $RUNLOG # 执行第三次NGINX访问错误信息汇总 sleep 30 grep -ahvE "${GREP_VWORD}" $NGXLOG | cut -d'"' -f 1,3 | awk '{print $1,$7}' | grep -vE "${GREP_VCODE}" | \ awk '{sum[$1]++} END {for (i in sum) {print sum[i],i | "sort -nr -k 1"}}' | awk '{if ($1 > 5) print $0}' > $NGX60 #检索60秒钟内访问出错次数超过10次的IP地址加入防火墙策略 cat $NGX60 | while read line do errsum addrule 10 done |