yearning_sql审核平台搭建
Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案。提供基于Inception的SQL检测及执行。
GitHub:https://github.com/cookieY/Yearning
文档:http://guide.yearning.io/used/
1. 安装nginx,mysql,python3.6,node8.5
yum install -y nginx
解压node,做软链接即可
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm --force --nodeps
yum install mysql-server
启动及查看mysql初始密码:systemctl start mysqld && grep 'temporary password' /var/log/mysqld.log
修改mysql密码: mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'; #5.7对密码复杂度有要求 下载python3.6:wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
解压安装: tar xzf Python-3.6.3.tgz && cd Python-3.6.3
./configure --prefix=/usr/local/python3 --with-ssl && make && make install
查看是否安装成功及当前python版本:echo $?
python -V
备份文件:cp /usr/bin/python /usr/bin/python2.7.5
ln -fs /usr/local/python3/bin/python3.6 /usr/bin/python
ln -fs /usr/local/python3/bin/pip3 /usr/bin/pip
修改yum文件为之前备份的python:vim /usr/bin/yum /usr/libexec/urlgrabber-ext-down第一行修改为#!/usr/bin/python2.7.5 #不修改yum安装文件会报错
2. 下载安装inception
git clone https://github.com/cookieY/Yearning.git
cd Yearning/install && tar xzf inception.tar && cd inception
cat ./bin/inc.cnf
[inception]
general_log=1
general_log_file=inception.log
port=6669 #inception端口 socket=/tmp/inc.socket
character-set-client-handshake=0
character-set-server=utf8
inception_support_charset=utf8mb4
inception_enable_nullable=1 #此处改为1,否则执行sql为NULL的会报错
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_enable_blob_type=1
inception_check_column_default_value=1
inception_support_charset=utf8
inception_osc_on=OFF
inception_check_column_default_value=OFF
inception_check_column_comment=OFF
inception_check_table_comment=OFF
inception_enable_identifer_keyword=ON
inception_remote_backup_host = 127.0.0.1 #备份库IP
inception_remote_backup_port = 3306 #备份库端口
inception_remote_system_user = root #备份库用户
inception_remote_system_password = Zhletou@2019 #备份库密码
启动inception nohup ./bin/Inception --defaults-file=./bin/inc.cnf &
检查是否启动成功:mysql -u root -P 6669 -h 127.0.0.1
inception get variables; #输出配置的变量则启动OK
3. 配置安装yearning
cd Yearning/src
cp deploy.conf.template ./deploy.conf
cat deploy.conf
db = Yearning
address = 192.168.0.203
port = 3306
username = yearning
password = yearning [host]
ipaddress = 192.168.0.203:80 #后续访问yearning的地址和端口
安装python依赖包
pip install -r requirements.txt
python3.6 错误: ModuleNotFoundError:No module named "Crypto"
pip install pycryptodome
创建数据库:create database yearning charset utf8;
授权: grant all privileges on *.* to yearning@'%' identified by
'yearning'
导入配置sql:mysql -uyearning -pyearning yearning <
Yearning/install/yearning-docker-compose/init-sql/install.sql #后续如果不小心删除了权限组,导致管理员无法配置,需要重新导入sql,重新配置,所以建议备份其数据库
替换连接数据库文件:find / -name connections.py 进入到文件目录进行替换 #可百度或者找官网的文件
找到 connections.py 1108行
ifint(self.server_version.split('.',1)[0]) >=5:self.client_flag|= CLIENT.MULTI_RESULTS更改为try:ifint(self.server_version.split('.',1)[0]) >=5:self.client_flag |= CLIENT.MULTI_RESULTSexcept:
ifself.server_version.split('.',1)[0] >='Inception2':self.client_flag |= CLIENT.MULTI_RESULTS
找到 cursors.py 345行ifself._resultand(self._result.has_nextornotself._result.warning_count):return更改为ifself._result:return
cd Yearning/webpage
npm install
如执行npm install 报错可执行npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
npm run build
启动:nohup python manage.py runserver 0.0.0.0:8000 &
3. 配置nginx
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
#server_name 192.168.0.203;
server_name yearning.server.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
root /Yearning/Yearning/webpage/dist;
index index.html index.htm;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
4. 启动nginx
systemctl start nginx && systemctl enable nginx
http://yearning.server.com即可访问
5. 配置inception,邮件及钉钉
登录yaerning 默认用户及密码:admin/Yearning_admin
设置-->配置inception #配置项为inc.cnf里面配置的用户及密码 注:要备份数据,执行的数据库必须开启二进制日志及server-id不能为0和1
cat /etc/my.cnf
user=mysql
server-id=3546346
log-bin=/home/data/mysql/data
binlog-format=ROW
binlog_row_image=full
附上inception参数
vim /etc/inc.cnf [inception] general_log=1 #这个参数就是原生的MySQL的参数,用来记录在Inception服务上执行过哪些语句,用来定位一些问题等 general_log_file=/usr/local/inception/data/inception.log #设置general log写入的文件路径 port=6669 #Inception的服务端口 socket=/usr/local/inception/data/inc.socket #Inception的套接字文件存放位置 character-set-server=utf8 #mysql原生参数 #Inception 审核规则 inception_check_autoincrement_datatype=1 #当建表时自增列的类型不为int或者bigint时报错 inception_check_autoincrement_init_value=1 #当建表时自增列的值指定的不为1,则报错 inception_check_autoincrement_name=1 #建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示 inception_check_column_comment=1 #建表时,列没有注释时报错 inception_check_column_default_value=0 #检查在建表、修改列、新增列时,新的列属性是不是要有默认值 inception_check_dml_limit=1 #在DML语句中使用了LIMIT时,是不是要报错 inception_check_dml_orderby=1 #在DML语句中使用了Order By时,是不是要报错 inception_check_dml_where=1 #在DML语句中没有WHERE条件时,是不是要报错 inception_check_identifier=1 #打开与关闭Inception对SQL语句中各种名字的检查,如果设置为ON,则如果发现名字中存在除数字、字母、下划线之外的字符时,会报Identifier "invalidname" is invalid, valid options: [a-z,A-Z,0-9,_]. inception_check_index_prefix=1 #是不是要检查索引名字前缀为"idx_",检查唯一索引前缀是不是"uniq_" inception_check_insert_field=1 #是不是要检查插入语句中的列链表的存在性 inception_check_primary_key=1 #建表时,如果没有主键,则报错 inception_check_table_comment=0 #建表时,表没有注释时报错 inception_check_timestamp_default=0 #建表时,如果没有为timestamp类型指定默认值,则报错 inception_enable_autoincrement_unsigned=1 #自增列是不是要为无符号型 inception_enable_blob_type=0 #检查是不是支持BLOB字段,包括建表、修改列、新增列操作 默认开启 inception_enable_column_charset=0 #允许列自己设置字符集 inception_enable_enum_set_bit=0 #是不是支持enum,set,bit数据类型 inception_enable_foreign_key=0 #是不是支持外键 inception_enable_identifer_keyword=0 #检查在SQL语句中,是不是有标识符被写成MySQL的关键字,默认值为报警。 inception_enable_not_innodb=0 #建表指定的存储引擎不为Innodb,不报错 inception_enable_nullable=0 #创建或者新增列时如果列为NULL,不报错 inception_enable_orderby_rand=0 #order by rand时是不是报错 inception_enable_partition_table=0 #是不是支持分区表 inception_enable_select_star=0 #Select*时是不是要报错 inception_enable_sql_statistic=1 #设置是不是支持统计Inception执行过的语句中,各种语句分别占多大比例,如果打开这个参数,则每次执行的情况都会在备份数据库实例中的inception库的statistic表中以一录存储这次操作的统计情况,每次操作对应一条记录,这条记录中含有的信息是各种类型的语句执行次数情况。 inception_max_char_length=16 #当char类型的长度大于这个值时,就提示将其转换为VARCHAR inception_max_key_parts=5 #一个索引中,列的最大个数,超过这个数目则报错 inception_max_keys=16 #一个表中,最大的索引数目,超过这个数则报错 inception_max_update_rows=10000 #在一个修改语句中,预计影响的最大行数,超过这个数就报错 inception_merge_alter_table=1 #在多个改同一个表的语句出现是,报错,提示合成一个 #inception 支持 OSC 参数 inception_osc_bin_dir=/user/bin #用于指定pt-online-schema-change脚本的位置,不可修改,在配置文件中设置 inception_osc_check_interval=5 #对应OSC参数--check-interval,意义是Sleep time between checks for --max-lag. inception_osc_chunk_size=1000 #对应OSC参数--chunk-size inception_osc_chunk_size_limit=4 #对应OSC参数--chunk-size-limit inception_osc_chunk_time=0.1 #对应OSC参数--chunk-time inception_osc_critical_thread_connected=1000 #对应参数--critical-load中的thread_connected部分 inception_osc_critical_thread_running=80 #对应参数--critical-load中的thread_running部分 inception_osc_drop_new_table=1 #对应参数--[no]drop-new-table inception_osc_drop_old_table=1 #对应参数--[no]drop-old-table inception_osc_max_lag=3 #对应参数--max-lag inception_osc_max_thread_connected=1000 #对应参数--max-load中的thread_connected部分 inception_osc_max_thread_running=80 #对应参数--max-load中的thread_running部分 inception_osc_min_table_size=0 # 这个参数实际上是一个OSC的开关,如果设置为0,则全部ALTER语句都走OSC,如果设置为非0,则当这个表占用空间大小大于这个值时才使用OSC方式。单位为M,这个表大小的计算方式是通过语句:"select (DATA_LENGTH + INDEX_LENGTH)/1024/1024 from information_schema.tables where table_schema = 'dbname' and table_name = 'tablename'"来实现的 inception_osc_on=0 #一个全局的OSC开关,默认是打开的,如果想要关闭则设置为OFF,这样就会直接修改 inception_osc_print_none=1 #用来设置在Inception返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,如果设置为1,就不打印,如果设置为0,就打印。而如果出现错误了,则都会打印 inception_osc_print_sql=1 #对应参数--print #备份服务器信息,注意改成你的机器.用于回滚。 inception_remote_system_password=P@ssw0rd inception_remote_system_user=incep_rw inception_remote_backup_port=3306 inception_remote_backup_host=10.10.3.70 inception_support_charset=utf8 #表示在建表或者建库时支持的字符集,如果需要多个,则用逗号分隔,影响的范围是建表、设置会话字符集、修改表字符集属性等
yearning_sql审核平台搭建的更多相关文章
- Yearning + Inception SQL审核平台搭建
Yearning 安装: 安装Nginxyum install nginx -y 按照顺序安装MySQLmysql-community-common-5.7.22-1.el6.x86_64.rpmmy ...
- Docker Yearning + Inception SQL审核平台搭建
[一]安装[1.1]系统环境系统环境:CentOS Linux release 7.6.1708 (Core)系统内存:4G系统内核:1Python:3.6.4关闭iptables and selin ...
- Yearning和inception搭建MySQL审核平台
前言 采用开源Yearning和inception开源软件,搭建用于MYSQL审核及线上MYSQL语句更新的审核平台. 功能说明 Yearning: 基于Vue.js与Django的整套mysql-s ...
- 基于Inception搭建MySQL SQL审核平台Yearing
基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...
- Gerrit代码审核服务器搭建全过程
Gerrit代码审核服务器搭建全过程 转载请标明出处:http://blog.csdn.net/ganshuyu/article/details/8978614 环境:Ubuntu12.xx 1.建立 ...
- SQL审核平台-Yearning安装部署实践
相关文档: https://guide.yearning.io/ yearning简介 http://python.yearning.io/install/ yearning安装 Yearning ...
- SQL审核平台Yearning部署
SQL审核平台Yearning部署 Yearning优势: Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的S ...
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...
- hadoop伪分布式平台搭建(centos 6.3)
最近要写一个数据量较大的程序,所以想搭建一个hbase平台试试.搭建hbase伪分布式平台,需要先搭建hadoop平台.本文主要介绍伪分布式平台搭建过程. 目录: 一.前言 二.环境搭建 三.命令测试 ...
随机推荐
- HCIE-SEC笔记-EVENG模拟器安装
EVEng模拟器安装: 准备:Vmware 16.0 EVEng EVE-NG-Win-Client-Pack.exe [抓包,内置wireshark,内置vnc,用来打开windows系统] Win ...
- Xray学习
Xray 目前支持的漏洞检测类型包括: XSS漏洞检测 (key: xss) SQL 注入检测 (key: sqldet) 命令/代码注入检测 (key: cmd-injection) 目录枚举 (k ...
- 聊一聊Redis的离线分析
背景 Redis 或许是我们大部分场景都会用到的一个利器,虽然是利器,用的姿势不对的话,终究还是会整出幺蛾子的. 比较常见的问题,不外乎内存暴增,慢查询等情况. 那么对于内存问题,可以借助redis自 ...
- 用ffmpeg对视频进行处理
下载安装配置教程:传送门 关键步骤Windows: 官网 合并音频和视频 with open('video/x111.mp4','wb') as f: f.write(data_30080) with ...
- linux下can调试工具canutils安装与使用
0. 编译环境所需要的工具 libsocketcan-0.0.11.tar.bz2 canutils-4.0.6.tar.bz2 下载路径 https://public.pengutronix.de ...
- 如何使用Shell写一个显示目录结构的命令?
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 在Linux中使用Shell写一个显示目录结构的命令,快速寻找目录结构. 1.代码 #!/usr/bin/env bash ...
- 电脑UEFI启动是什么?
UEFI 当EFI发展到1.1的时候,英特尔决定把EFI公之于众,于是后续的2.0吸引了众多公司加入,EFI也不再属于英特尔,而是属于了Unified EFI Form的国际组织,EFI在2.0后也遂 ...
- 154寻找旋转排序数组中的最小值II
title: 寻找旋转排序数组中的最小值II 题目描述 题目链接:寻找旋转排序数组中的最小值II 解题思路 和上题同理:数组特点有 nums[mid] < nums[right],最小值肯定在m ...
- HAVING,多表查询思路,可视化软件navicat,多表查询练习题,
HAVING "where"是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之 前起作用,且"where"后面不能写&quo ...
- netty系列之:netty中常用的字符串编码解码器
目录 简介 netty中的字符串编码解码器 不同平台的换行符 字符串编码的实现 总结 简介 字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串string太过简单,不能附加更 ...