Coder Social home page Coder Social logo

teaweb / build Goto Github PK

View Code? Open in Web Editor NEW
764.0 764.0 179.0 101.95 MB

TeaWeb-可视化的Web代理服务。DEMO: http://teaos.cn:7777

License: MIT License

Go 66.33% Shell 0.23% Dockerfile 0.02% JavaScript 15.61% CSS 1.56% Makefile 0.04% HTML 16.10% Batchfile 0.01% Roff 0.01% PHP 0.01% Less 0.08%
api fastcgi golang http2 log monitor proxy server statistics visualization waf web

build's People

Contributors

dependabot[bot] avatar iwind avatar teaweb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

build's Issues

dashboard 异常

你安装的TeaWeb版本:0.1.4.1

你的操作系统:ubuntu16

你的问题简介:dashboard 异常

问题详细描述: /Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/teaweb/actions/default/agents/board/index.go:116
[2019/05/29 11:19:06] Error: context deadline exceeded

test

你安装的TeaWeb版本:

你的操作系统:

你的问题简介:

问题详细描述:

agent手工安装优化

建议增加手工安装agent的自动发现机制,减少agent端配置文件的修改。agent通过ip首次上线后由管理员确认后就可以加入集群,然后再生成认证密钥。

设置代理服务器GZIP设置的优化建议

建议增加gzip 的配置,一般只对html 类的信息gzip,png,gif,jpg都无需gzip,压锁不了多少Kb,但是却及占CPU。

参考APACHE2.4的相关配置

DeflateCompressionLevel 6 SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json #对指定的内容进行压缩,压缩方式为默认的一个方法 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩 SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz。。。的文件进行压缩 SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等 AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩 AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对php类型的文件进行压缩 BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的 BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的问题,所以不开启压缩 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成 Netscape ,但是事实上它没有问题

飞猪提的意见

功能需求1:
描述:由于大多数的WAF存在一定的误杀率(正则匹配无法避免)会影响一定的功能的正常使用。
解决方式:1、大部分WAF的做法是存在一定的URL白名单。不进行WAF检查。
2、可定制WAF防护返回页面,为判断人机区别,增加验证码绕过功能。

功能需求2:
描述:防止爆破功能,大多数WAF必备的功能,针对某些包含用户登录、密码重置、短信发送等应用,设定独立的放爆破规则
解决方式:增加防爆破规则集,针对指定URL有频次限制,有的时候是爆破密码,有的时候是爆破用户名,比如密码123456,尝试不同的username进行正确的登陆。

功能需求3:
描述:网站攻击经常发生,一般流量异常,都是存在一些攻击行为,如何快速识别和剁掉异常流量
解决方式:1、增加防DDoS、Dos识别,通过自动学习或者规则判断,自动剁掉异常流量
2、增加非正常爬虫识别,正常爬虫一般都会有相对固定的IP地址池,有自己的UserAgent,非正常爬虫一般可能是竞争对手公司、黑客窃取数据、非法大数据信息采集等。这种非正常手段爬取网站数据的应该主动屏蔽(验证码可以相对识别非正常流量是人还是机器人)。

功能需求4:第三方软硬防火墙接口调用功能
解决方式:增加接口调用功能,由于WAF工作在7层(工作负载相对较大),希望能够增加API调用功能,可以调用第三方API进行前置防火墙的接口调用,直接通过2、3层防火墙剁掉攻击者IP。

Agent数据源Ping在Linux和Windows不能正常工作

你安装的TeaWeb版本:
0.1.6.1

你的操作系统:
CentOS, Windows

你的问题简介:
Agent数据源Ping在Linux和Windows不能正常工作

问题详细描述:
可能是因为udp权限问题。需要研究是否优先通过系统提供的ping命令来执行。

没有安装MongoDB的时候CPU占用偏高

你安装的TeaWeb版本:
0.1.6.1

你的操作系统:
Linux

你的问题简介:
没有安装MongoDB时,CPU有时占用30%以上。

问题详细描述:
估计的问题可能有:
1、不停地尝试新连接
2、在监控回报数据等地方一直长时间尝试连接,导致CPU时间被占用。

v0.1.5版本too many open files

你安装的TeaWeb版本:v0.1.5

你的操作系统:centos7

你的问题简介:管理页面宕机,网站无法正常打卡

问题详细描述:页面打开后显示
open /opt/teaweb-v0.1.5/web/views/@default/dashboard/index.html: too many open files

解决方式是增加在进程启动时增加了ulimit

centos7,修改相关参数,不清楚直接在/etc/init.d/teaweb 中修改ulimit -n 设置是否有效。
vi /etc/systemd/system.conf
DefaultLimitNOFILE=1024000 #这里需要修改
DefaultLimitNPROC=1024000 #这里也需要修改

重启后,查看ulimit
[yl@TeaWeb ~]$ ps -aux |grep teaweb
root 10663 2.3 2.6 259764 108208 ? Sl 09:08 2:39 /opt/teaweb/bin/teaweb
root 10677 0.1 0.4 119468 18328 ? Sl 09:08 0:09 /opt/teaweb-v0.1.5.1/plugins/agent.tea
yl 10940 0.0 0.0 112708 976 pts/0 S+ 11:01 0:00 grep --color=auto teaweb
[yl@TeaWeb ~]$ cat /proc/10663/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 1024000 1024000 processes
Max open files 65536 65536 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 15708 15708 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

没有修改ulimit,ulimit 是1024 或者4096

win7 安装angent service失败

你安装的TeaWeb版本:0.1.6.1

你的操作系统:win7

你的问题简介:安装service失败

问题详细描述:安装service报错。createing A system shutdown is in process。利用管理员身份启动一样。

建议增加备份周期选择

你安装的TeaWeb版本:
0.16.2
你的操作系统:
win2012r2
你的问题简介:
建议增加备份周期选择
问题详细描述:
设置中备份选项目前是一天一次,建议修改为可自定义备份周期选择,按照天、周、月等,备份策略更加灵活。

建议路径规则里配置缓存可以配置有效期

你安装的TeaWeb版本:
v0.1.5
你的操作系统:

你的问题简介:
建议路径规则里配置缓存可以配置有效期
问题详细描述:
建议路径规则里配置缓存可以配置有效期
每个路径的缓存时间可能不一样,这样的话就多个路径规则要新建多个缓存规则,感觉很麻烦.
个人觉得 缓存规则可以配置缓存介质,内存 文件 Redis等, 有效期在路径规则里设置.

Vic提的意见:路径规则支持shutdown page

你安装的TeaWeb版本:
*

你的操作系统:
*

你的问题简介:
希望在路径规则里面增加一个关闭时候的页面的设置,这样可以单独设置某个路径规则的关闭状态。

问题详细描述:

v0.0.8 登录有问题

如果输入错的用户名和密码,会提示不正确。
如果输入对的。点登录后一直让重新输入
测试环境centos 7
用的二进制的版本
[root@builder-centos7 teaweb-v0.0.8]# cat logs/teaweb.log
2019/02/14 17:24:15 kill previous process 9965
2019/02/14 17:24:15 [plugin]load plugins
2019/02/14 17:24:15 [plugin][loader]load plugin 'agent.tea'
2019/02/14 17:24:15 load sessions from files /root/teaweb-v0.0.8/tmp
2019/02/14 17:24:15 start http server on 0.0.0.0:7777
2019/02/14 17:25:21 server selection timeout
/Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/teaweb/actions/default/api/agent/push.go:142
2019/02/14 17:25:21 server selection timeout
/Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/teaweb/actions/default/api/agent/push.go:142
2019/02/14 17:25:21 server selection timeout
/Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/teaweb/actions/default/api/agent/push.go:142
2019/02/14 17:25:24 server selection timeout

访问日志也没有看到有。只有这个。

centos7下HTTPS修改界面空白

你安装的TeaWeb版本:v0.1.5

你的操作系统:CentOS7

你的问题简介:进入代理-默认的静态网站-设置-HTTPS,点击修改,页面空白

问题详细描述:以为是linux权限问题,不管用root还是用普通账户,目录也改了chown,都是一样的结果。

对历史记录提供日志筛选功能

你安装的TeaWeb版本:0.1.4.1

你的操作系统:centos7

你的问题简介:对历史记录提供日志筛选功能

问题详细描述:目前日志筛选功能只能在实时日志里面使用,历史日志只能使用IP筛选功能

建议服务端支持主动探测客户端agent是否在线

你安装的TeaWeb版本:0.1.6.1

你的操作系统:windows 2008 R2

你的问题简介:客户端关机agent已经离线,但是服务端还显示在线。

问题详细描述:服务端支持主动探测客户端agent是否在线

完善的权限管理

你安装的TeaWeb版本:0.1.5.2

你的操作系统:centos

你的问题简介:完善的权限管理

问题详细描述:
目前只能使用单个账号,没有较完善的权限管理功能
例如只想开放出日志查看权限给开发
还有就是公用账号涉及到https证书安全的问题

大yi巴狼建议

你安装的TeaWeb版本:
v0.1.7

1、代理的后端服务器 > 健康检查 >错误次数阀值设定后,确实是下线了,但是没有有效的通过 “通知” 功能,将结果通过webhook或其他方式发送到指定人。应用的场景:服务器宕机 或 服务异常 通知给管理员,这个用的还是比较多的。
2、如果后期有多级权限,高级权限(目前是管理员)可以增加一个清理日志的功能。我这里添加了3个代理,日志文件夹有900M。
比如按天清理或按ip清理,因为一些攻击者可能暴力跑url产生了大量日志,占用磁盘空间。
3、可在 代理服务 > 日志(选项卡) > 实时 今日 昨日 历史 (子集选项卡 )
在子集里面再加一个 “删除”选项。
按ip删除 或 按url删除 (比如包含wwwroot.zip的) ,这些删除后再使用 已经有的 “路径规则”-安全ip黑名单功能拦截恶意ip.

这样可以有针对性的清洗日志。

关于代理转发路径问题

比如配置代理转发的前缀匹配为/demo,我请求的路径是/demo/aaa。我希望发给后端服务器的请求地址是/aaa,目前请求URI配置为${requestURI}实际上是全路径/demo/aaa,不是我想要的,看是否增加一个变量来表示,我觉得这个需求应该是非常有必要,目前ngnix那边配置location,传到后端的话,就是会排除前缀的。

提个建议

能否定位非开发环境的场景,考虑性能方向。这样就可以代替haproxy 了。线上跑跑。
如果能有个WAF ,就prefect了

开启https并上传证书后报错

检查相对路径teaweb/configs/ssl.oq83bY0WtT2BJGgY.cer 文件存在
但重启后控制台报错

teaweb    | 2019/05/03 06:25:15 open configs/ssl.oq83bY0WtT2BJGgY.cer: no such file or directory
teaweb    |             /Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/iwind/TeaGo/server.go:338

关于客户端访问代理次数限制

你安装的TeaWeb版本:
0.1.7.1
你的操作系统:
Linux
你的问题简介:
目前代理有总的访问次数限制,但没有对同一个客户端的访问限制。
问题详细描述:
目前代理有总的访问次数限制,但没有对同一个客户端的访问进行限制。在常规业务中经常会出现某个客户端过渡的请求情况,可能是合法的请求也可能是非法的攻击请求。希望可以增加对同一个客户端的请求次数进行限制,限流保护后端服务。

ACME更新Letsencrypt证书问题

你安装的TeaWeb版本:v0.1.6.1

你的操作系统:CentOS7

你的问题简介:https,ACME方式获取Letsencrypt证书,自动更新的问题。

问题详细描述:似乎更新证书需要自助修改_acme-challenge的txt记录,由于无法自助修改,所以自动更新报错,手动点更新证书仍然报错。
acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Incorrect TXT record

使用 acme.sh管理并更新证书,需要设置正确的aliyun的accesskey,每次更新似乎都有删除旧记录,添加新的纪录的过程。
acme.sh的方式收到的邮件

尊敬的用户 @aliyun.com :
您对域名
*.com进行了解析记录的删除操作。

所以,看看是不是要为了自动更新,设置accesskey等信息。

captcha 验证

你安装的TeaWeb版本:
最新版本
你的操作系统:
linux

你的问题简介:
可以加个 captcha 验证 不通过的IP。 直接 丢到 ipset 给iptables drop

问题详细描述:
添加个 captcha 来防止 http flood 攻击

任务执行结果是否能监控

有些场景下需要对任务的执行结果进行监控,来确保知道当前任务是否正确执行的。

可能的思路:

  1. 根据 stderr 是否有输出来判断
  2. 根据输出的内容来判断,比如是否匹配 done
  3. 是否可以自定义固定的标签,比如 ok, success, fail
  4. 是否可以在某些固定的执行节点加入代码,比如:
sh build-index.sh
wget "http://192.168.1.100:7777/api/task/report?taskId=12345"

欢迎大家发表自己的意见。

Mac版本 跑不起来

GOPATH设置生效后 执行:

[xuyukun@MacOS ]teaweb-v0.0.4 $bin/teaweb start
2018/12/07 12:06:36 open /Users/xuyukun/teaweb-v0.0.4/src/main/resources/regexes.yaml: no such file or directory
		Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/tealogs/access_log.go:146
2018/12/07 12:06:36 open /Users/xuyukun/teaweb-v0.0.4/src/main/resources/GeoLite2-City/GeoLite2-City.mmdb: no such file or directory
		Users/liuxiangchao/Documents/Projects/pp/apps/TeaWebGit/build/src/github.com/TeaWeb/code/tealogs/access_log.go:151
2018/12/07 12:06:36 [FATAL]'mongo.conf' not found

建议WAF功能增强

功能需求1:
描述:由于大多数的WAF存在一定的误杀率(正则匹配无法避免)会影响一定的功能的正常使用。
解决方式:1、大部分WAF的做法是存在一定的URL白名单。不进行WAF检查。
2、可定制WAF防护返回页面,为判断人机区别,增加验证码绕过功能。

功能需求2:
描述:防止爆破功能,大多数WAF必备的功能,针对某些包含用户登录、密码重置、短信发送等应用,设定独立的放爆破规则
解决方式:增加防爆破规则集,针对指定URL有频次限制,有的时候是爆破密码,有的时候是爆破用户名,比如密码123456,尝试不同的username进行正确的登陆。

功能需求3:
描述:网站攻击经常发生,一般流量异常,都是存在一些攻击行为,如何快速识别和剁掉异常流量
解决方式:1、增加防DDoS、Dos识别,通过自动学习或者规则判断,自动剁掉异常流量
2、增加非正常爬虫识别,正常爬虫一般都会有相对固定的IP地址池,有自己的UserAgent,非正常爬虫一般可能是竞争对手公司、黑客窃取数据、非法大数据信息采集等。这种非正常手段爬取网站数据的应该主动屏蔽(验证码可以相对识别非正常流量是人还是机器人)。

功能需求4:第三方软硬防火墙接口调用功能
解决方式:增加接口调用功能,由于WAF工作在7层(工作负载相对较大),希望能够增加API调用功能,可以调用第三方API进行前置防火墙的接口调用,直接通过2、3层防火墙剁掉攻击者IP。

监控项建议

监控项里面的刷新间隔,以后是否考虑Cron 这种格式,

guohao提的监控相关问题

一、阈值设置 多个,
(1)同个参数 设 多个级别 ,第二个条件满足了,会触发通知,但信息中 级别 填的是第一个的级别
image

(2)设 多个参数 的阈值 ,除了第一个设置 有效,从第二个开始后面的 都触发不到通知
二、agent 有时报 error:fork/exec agents/source.xxx.script: text file busy

一些关于 Docker 的问题

  1. 不应该将启动脚本写成 run.sh,应当使用 Docker Compose 代替。
  2. 可以使用 Docker Hub 自带的 Build 功能,注册账号配置好之后自动 Build 并同步到 Registry,大家不需要再次 Build,直接 docker pull 即可;同时也可以节省你服务器的带宽。
  3. 因为「2」,所以可以直接删掉 build.sh
  4. 使用 CentOS 之类的镜像作为基础镜像会让你的应用镜像出奇的大(几百 MiB),建议使用 Alpine。
  5. Dockerfile 的 MAINTAINER 字段已经废弃。
  6. 若使用 RUN 的多行形式,请使用以下两种格式任选其一:
    RUN set -xe; \
    	echo foo; \
    	echo bar;
    
    RUN echo foo \
    	&& echo bar \
    	&& echo more
    
    亦可结合使用 set -xe&&,这是最普遍的写法。注意 set -xe 中的 -e,如果不使用该参数,将会导致多条脚本运行过程中出现错误依旧会继续执行,导致构建出的镜像异常。更多信息:https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/
  7. 不应该将 MongoDB 和你的应用捆绑在同一个镜像,这是一个 Anti-pattern,应当使用 Docker Compose。
  8. 由于你的 teaweb.sh 是个长期运行的进程,因此不应当使用 ENTRYPOINT,使用 CMD 指定容器启动时的默认命令更加合适。若坚持使用 ENTRYPOINT,请确保 bin/teaweb 是 Daemon 运行且 teaweb.sh 末尾添加 exec $@

服务器和代理客户机时间不同步

你安装的TeaWeb版本:0.1.6.1

你的操作系统:windows 2008R2

你的问题简介:服务器时间不对,客户端时间正确。逻辑好像不太对

问题详细描述:客户端提交的数据存储日志时按照服务端时间存储,貌似应该记录客户机时间。

【特性需求】支持图表模板私有开关

你安装的TeaWeb版本:0.1.7.2

你的操作系统:windows2012 datacenter

你的问题简介:建议支持图表模板私有

问题详细描述:目前图表新建完了以后,每个代理都可以使用。有的图表筛选过滤只适合当前的代理,建议设置私有开关。

提议增加iostat数据源

你安装的TeaWeb版本:
v0.1.6.1

你的操作系统:
All

你的问题简介:
提议增加iostat数据源,用来监控磁盘读写性能

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.