启用开发者模式 设置--> 更新和安全--> 针对开发人员--> 勾选“开发人员模式” 安装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 |
# !/bin/bash # 脚本用于nginx错误URL访问检测 # 若指定时间内来源IP地址错误URL超出合理范围, 则视为URL嗅探源并通过防火墙阻止访问 # 说明: 函数内部变量使用小写字母, 脚本头部变量使用大写字母 # 变量引用:${}可以拼接字符且兼容unix,$不可以拼接字符 # sh -x ngx_err_block.sh 进行跟踪调试 # 清理3分钟前的旧日志文件, 保留iptables备份的".lst"文件 for TYPE in {log,run} do find /data/shell/ -type f -name "*ngx*.$TYPE" -mmin +6 -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_NGXBLOCK" PORTS="80,443" GREP_VWORD="127.0.0.1|^$" 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 1 -j $CHAIN_NM fi # 规则链存在, 判断链中条目数量是否超过200条 chain_sum=$(${BINGIPTAB} --line-numbers -nvL ${CHAIN_NM} | tail -n 1 | cut -d' ' -f 1) # 规则链存在但是列表为空, 则赋值为0 if [ "$chain_sum" = "num" ]; then chain_sum=0 fi if [ $chain_sum -gt 200 ]; then # 如果链中规则数量大于200条, 则删除末行规则 $BINGIPTAB -D $CHAIN_NM $chain_sum 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 # 插入新规则到链首行, 多次被block的IP将阻止15min内访问, 不指定日期则截止至 2038-01-19 $BINGIPTAB -I $CHAIN_TME 1 -s $IPADDR -p tcp -m multiport --dports $PORTS \ -m time --timestart $(date +%H:%M) --timestop $(date -d '+15 min' +%H:%M) \ --datestop $(date +%Y-%m-%dT23:59:59) --kerneltz -j DROP else # 如果要阻止的IP地址不在现有规则中, 插入新规则到链首行 # 首次被block的IP将阻止10min内访问, 不指定日期则截止至 2038-01-19 $BINGIPTAB -I $CHAIN_TME 1 -s $IPADDR -p tcp -m multiport --dports $PORTS \ -m time --timestart $(date +%H:%M) --timestop $(date -d '+10 min' +%H:%M) \ --datestop $(date +%Y-%m-%dT23:59:59) --kerneltz -j DROP fi # 保存防火墙规则列表, 如果主判断为真且有多个IP地址被添加到规则中, 则以下命令会多次执行 "${BINGIPTAB}-save" > $IPTABLST fi } # 执行第一次NGINX访问错误信息汇总 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 # 执行第三次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 |