Skip to content

Commit 00ef051

Browse files
committed
hihttps first commit
0 parents  commit 00ef051

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+57043
-0
lines changed

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
TARGET=hihttps
2+
3+
all:
4+
cd src; make
5+
/bin/cp -rf ./src/$(TARGET) ./
6+
7+
8+
clean:
9+
rm -f $(TARGET)
10+
cd src; make clean

README.TXT

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
一、HiHTTPS是一款高性能Web安全SSL防火墙
2+
[开源版提供基础防护功能]
3+
1. 恶意Web漏洞扫描
4+
2. 数据库SQL注入
5+
3. 跨站脚本攻击(XSS)
6+
4. URL黑白名单
7+
5. 危险文件上传检测
8+
6. 非法URL/文件访问
9+
7. 支持HTTP1.1所有的SSL Web服务器
10+
8. HTTP错误检测、可以扩展的日志
11+
9. 兼容OWASP的ModSecurity正则规则
12+
10.epoll模型单核3万+并发连接请求
13+
14+
[专业版提供高级防护功能]
15+
1. 超10万+高并发请求
16+
2. CC & DDOS
17+
3. 密码暴力破解
18+
4. 机器人/爬虫
19+
5. 精准IP/URL等访问控制
20+
6. 支持HTTP 2.0
21+
7. 人工智能防御未知攻击(目标)
22+
8. Web管理界面
23+
9. 支持独立硬件部署,保护后端多台服务器
24+
10. 支持云虚拟化部署,保护云端多台服务器
25+
......(更多定制需求请加QQ/微信:4108863)
26+
27+
二、安装步骤
28+
1. 安装OpenSSL和libpcre开发库
29+
CentOS :
30+
yum install openssl openssl-devel
31+
yum install -y pcre pcre-devel
32+
33+
Debian/Ubuntu:
34+
sudo apt-get install openssl libssl-dev
35+
apt-get install libpcre3 libpcre3-dev
36+
37+
2.编译
38+
解压到任意目录,make即可,完成后生成可执行文件hihttps.
39+
40+
3.规则
41+
规则放在和hihttps同一级的rules目录即可,注意后缀是.conf或者.rule,更多规则请在
42+
https://github.com/SpiderLabs/owasp-modsecurity-crs/下载,根据需求配置。
43+
具体请看rules/main.conf详细说明。
44+
45+
4.运行
46+
通常是hihttps前端运行443(https)端口,后端反向代理80端口。
47+
首先保证Web服务器80端口运行正常,443端口没占用(或者端口在config.cfg里改变配置)
48+
./hihttps默认读取当前目录下的confg.cfg文件, 或者./hihttps --config /dir/config.cfg
49+
具体请看config.cfg详细说明, 如果成功打印加载了rules目录下的规则,代表运行成功。
50+
51+
5.测试
52+
rules/main.rule默认加载了一条SQL语句检测规则,可以访问https://ip/select.html?testsql=delete * from test
53+
或者用WEB漏洞扫描器nikto运行:./nikto -host ip -ssl -port 443 -C all
54+
如果产生了报警记录,则代表正常!相关图片在doc目录。
55+
56+
57+
6.需要更多高级防护和web管理功能,请加QQ/微信:4108863
58+
59+
60+
61+

config.cfg

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# 前端SSL绑定的端口,默认443,注意不要冲突了
2+
frontend = {
3+
host = "*"
4+
port = "443"
5+
}
6+
7+
backend = "[127.0.0.1]:80" # 后端默认反向连接80端口
8+
9+
10+
workers = 1 # CPU 数量
11+
daemon = off # 关闭后台模式,方便调试
12+
13+
#证书文件,建议设置绝对路径
14+
pem-file = "server.pem"
15+
16+
17+
# 为了安全,请设置运行的用户组和权限,默认nobody,请确认系统存在有nobody。
18+
# user and group
19+
user = "nobody"
20+
group = "nobody"
21+
22+
23+
24+

doc/1.make.png

19.6 KB
Loading

doc/2.run.png

57.5 KB
Loading

doc/3.scan.png

311 KB
Loading

doc/4.attack.png

90.4 KB
Loading

doc/5.web_index.png

62 KB
Loading

doc/6.web_log.png

49.9 KB
Loading
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
# ------------------------------------------------------------------------
2+
# OWASP ModSecurity Core Rule Set ver.3.1.0
3+
# Copyright (c) 2006-2018 Trustwave and contributors. All rights reserved.
4+
#
5+
# The OWASP ModSecurity Core Rule Set is distributed under
6+
# Apache Software License (ASL) version 2
7+
# Please see the enclosed LICENSE file for full details.
8+
# ------------------------------------------------------------------------
9+
10+
#
11+
# -= Paranoia Level 0 (empty) =- (apply unconditionally)
12+
#
13+
14+
15+
16+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 1" "id:913011,phase:1,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
17+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 1" "id:913012,phase:2,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
18+
#
19+
# -= Paranoia Level 1 (default) =- (apply only when tx.executing_paranoia_level is sufficiently high: 1 or higher)
20+
#
21+
22+
#
23+
# -=[ Vulnerability Scanner Checks ]=-
24+
#
25+
# These rules inspect the default User-Agent and Header values sent by
26+
# various commercial and open source vuln scanners.
27+
#
28+
# The following rules contain User-Agent lists:
29+
# 913100 - security scanners (data file scanners-user-agents.data)
30+
# 913101 - scripting/generic HTTP clients (data file scripting-user-agents.data)
31+
# 913102 - web crawlers/bots (data file crawlers-user-agents.data)
32+
#
33+
34+
35+
36+
SecRule REQUEST_HEADERS:User-Agent "@pmFromFile scanners-user-agents.data" \
37+
"id:913100,\
38+
phase:2,\
39+
block,\
40+
capture,\
41+
t:none,t:lowercase,\
42+
43+
44+
msg:'Found User-Agent associated with security scanner',\
45+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
46+
tag:'application-multi',\
47+
tag:'language-multi',\
48+
tag:'platform-multi',\
49+
tag:'attack-reputation-scanner',\
50+
tag:'OWASP_CRS/AUTOMATION/SECURITY_SCANNER',\
51+
tag:'WASCTC/WASC-21',\
52+
tag:'OWASP_TOP_10/A7',\
53+
tag:'PCI/6.5.10',\
54+
ver:'OWASP_CRS/3.1.0',\
55+
severity:'CRITICAL',\
56+
setvar:'tx.msg=%{rule.msg}',\
57+
setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
58+
setvar:'tx.%{rule.id}-OWASP_CRS/AUTOMATION/SECURITY_SCANNER-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}',\
59+
setvar:'ip.reput_block_flag=1',\
60+
setvar:'ip.reput_block_reason=%{rule.msg}',\
61+
expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"
62+
63+
SecRule REQUEST_HEADERS_NAMES|REQUEST_HEADERS "@pmf scanners-headers.data" \
64+
"id:913110,\
65+
phase:2,\
66+
block,\
67+
capture,\
68+
t:none,t:lowercase,\
69+
msg:'Found request header associated with security scanner',\
70+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
71+
tag:'application-multi',\
72+
tag:'language-multi',\
73+
tag:'platform-multi',\
74+
tag:'attack-reputation-scanner',\
75+
tag:'OWASP_CRS/AUTOMATION/SECURITY_SCANNER',\
76+
tag:'WASCTC/WASC-21',\
77+
tag:'OWASP_TOP_10/A7',\
78+
tag:'PCI/6.5.10',\
79+
ver:'OWASP_CRS/3.1.0',\
80+
severity:'CRITICAL',\
81+
setvar:'tx.msg=%{rule.msg}',\
82+
setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
83+
setvar:'tx.%{rule.id}-OWASP_CRS/AUTOMATION/SECURITY_SCANNER-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}',\
84+
setvar:'ip.reput_block_flag=1',\
85+
setvar:'ip.reput_block_reason=%{rule.msg}',\
86+
expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"
87+
88+
89+
90+
SecRule REQUEST_HEADERS|REQUEST_FILENAME|ARGS "@pmf scanners-urls.data" \
91+
"id:913120,\
92+
phase:2,\
93+
block,\
94+
capture,\
95+
t:none,t:lowercase,\
96+
msg:'Found request filename/argument associated with security scanner',\
97+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
98+
tag:'application-multi',\
99+
tag:'language-multi',\
100+
tag:'platform-multi',\
101+
tag:'attack-reputation-scanner',\
102+
tag:'OWASP_CRS/AUTOMATION/SECURITY_SCANNER',\
103+
tag:'WASCTC/WASC-21',\
104+
tag:'OWASP_TOP_10/A7',\
105+
tag:'PCI/6.5.10',\
106+
ver:'OWASP_CRS/3.1.0',\
107+
severity:'CRITICAL',\
108+
setvar:'tx.msg=%{rule.msg}',\
109+
setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
110+
setvar:'tx.%{rule.id}-OWASP_CRS/AUTOMATION/SECURITY_SCANNER-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}',\
111+
setvar:'ip.reput_block_flag=1',\
112+
setvar:'ip.reput_block_reason=%{rule.msg}',\
113+
expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"
114+
115+
116+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 2" "id:913013,phase:1,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
117+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 2" "id:913014,phase:2,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
118+
#
119+
# -= Paranoia Level 2 =- (apply only when tx.executing_paranoia_level is sufficiently high: 2 or higher)
120+
#
121+
122+
123+
#
124+
# -=[ Scripting/Generic User-Agents ]=-
125+
#
126+
# This rule detects user-agents associated with various HTTP client libraries
127+
# and scripting languages. Detection suggests attempted access by some
128+
# automated tool.
129+
#
130+
# This rule is a sibling of rule 913100.
131+
#
132+
SecRule REQUEST_HEADERS:User-Agent "@pmFromFile scripting-user-agents.data" \
133+
"id:913101,\
134+
phase:2,\
135+
block,\
136+
capture,\
137+
t:none,t:lowercase,\
138+
msg:'Found User-Agent associated with scripting/generic HTTP client',\
139+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
140+
tag:'application-multi',\
141+
tag:'language-multi',\
142+
tag:'platform-multi',\
143+
tag:'attack-reputation-scripting',\
144+
tag:'OWASP_CRS/AUTOMATION/SCRIPTING',\
145+
tag:'WASCTC/WASC-21',\
146+
tag:'OWASP_TOP_10/A7',\
147+
tag:'PCI/6.5.10',\
148+
tag:'paranoia-level/2',\
149+
ver:'OWASP_CRS/3.1.0',\
150+
severity:'CRITICAL',\
151+
setvar:'tx.msg=%{rule.msg}',\
152+
setvar:'tx.anomaly_score_pl2=+%{tx.critical_anomaly_score}',\
153+
setvar:'tx.%{rule.id}-OWASP_CRS/AUTOMATION/SCRIPTING-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}',\
154+
setvar:'ip.reput_block_flag=1',\
155+
setvar:'ip.reput_block_reason=%{rule.msg}',\
156+
expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"
157+
158+
159+
160+
#
161+
# -=[ Crawler User-Agents ]=-
162+
#
163+
# This rule detects user-agents associated with various crawlers, SEO tools,
164+
# and bots, which have been reported to potentially misbehave.
165+
# These crawlers can have legitimate uses when used with authorization.
166+
#
167+
# This rule is a sibling of rule 913100.
168+
#
169+
SecRule REQUEST_HEADERS:User-Agent "@pmFromFile crawlers-user-agents.data" \
170+
"id:913102,\
171+
phase:2,\
172+
block,\
173+
capture,\
174+
t:none,t:lowercase,\
175+
msg:'Found User-Agent associated with web crawler/bot',\
176+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
177+
tag:'application-multi',\
178+
tag:'language-multi',\
179+
tag:'platform-multi',\
180+
tag:'attack-reputation-crawler',\
181+
tag:'OWASP_CRS/AUTOMATION/CRAWLER',\
182+
tag:'WASCTC/WASC-21',\
183+
tag:'OWASP_TOP_10/A7',\
184+
tag:'PCI/6.5.10',\
185+
tag:'paranoia-level/2',\
186+
ver:'OWASP_CRS/3.1.0',\
187+
severity:'CRITICAL',\
188+
setvar:'tx.msg=%{rule.msg}',\
189+
setvar:'tx.anomaly_score_pl2=+%{tx.critical_anomaly_score}',\
190+
setvar:'tx.%{rule.id}-OWASP_CRS/AUTOMATION/CRAWLER-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}',\
191+
setvar:'ip.reput_block_flag=1',\
192+
setvar:'ip.reput_block_reason=%{rule.msg}',\
193+
expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"
194+
195+
196+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 3" "id:913015,phase:1,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
197+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 3" "id:913016,phase:2,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
198+
#
199+
# -= Paranoia Level 3 =- (apply only when tx.executing_paranoia_level is sufficiently high: 3 or higher)
200+
#
201+
202+
203+
204+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 4" "id:913017,phase:1,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
205+
SecRule TX:EXECUTING_PARANOIA_LEVEL "@lt 4" "id:913018,phase:2,pass,nolog,skipAfter:END-REQUEST-913-SCANNER-DETECTION"
206+
#
207+
# -= Paranoia Level 4 =- (apply only when tx.executing_paranoia_level is sufficiently high: 4 or higher)
208+
#
209+
210+
211+
212+
#
213+
# -= Paranoia Levels Finished =-
214+
#
215+
SecMarker "END-REQUEST-913-SCANNER-DETECTION"

0 commit comments

Comments
 (0)