Yearning + Inception SQL审计平台的搭建方法是什么?

分类:编程技术 时间:2024-02-20 15:49 浏览:0 评论:0
0
本文介绍了《Yearning + Inception SQL审计平台搭建方法是什么?》的相关知识。在实际案例操作过程中,很多人都会遇到这样的困境。接下来就让小编带领大家学习如何处理这些情况吧!我希望你能仔细阅读并学到一些东西!

向往的安装:

安装Nginx
yum install nginx -y

< strong>按顺序安装MySQL
mysql-community-common-5.7.22-1.el6.x86_64.rpm
mysql-community-libs-5.7.22-1.el6.x86_64 .rpm
mysql-community-client-5.7.22-1.el6.x86_64.rpm
mysql-community-server-5.7.22-1.el6.x86_64.rpm

Python 3.6安装

解压
tar -xvf Python-3.6.4.tar.xz

创建目录
mkdir - p /usr/local/python/3.6.4/lib

编译
cd Python-3.6.4
./configure --enable-shared --prefix=/usr/本地/python/3.6.4 LDFLAGS="-Wl,-rpath /usr/local/python/3.6.4/lib"
make && make install

软链接
cp /usr/bin/python /usr/bin/python2.6.6
ln -fs /usr/local/python /3.6.4/bin/python3.6 /usr/bin/python
ln -fs /usr/local/python/3.6.4/bin/pip3 /usr/bin/pip

yum修改
vi /usr/bin/yum
将头#!/us修改r/bin/python为#!/usr/bin/python2.6.6

Inception安装
Inception是一个集审核、执行、回滚于一体的自动化运维系统,基于MySQL代码修改而成,可以用来审核MySQL的SQL语句非常清晰、详细、准确。它的工作模式和MySQL一模一样,可以直接使用MySQL客户端连接。但不需要验证权限。它是相对于应用程序(上层)的服务器。级审计流程系统等)。连接时需要指定Inception服务器的服务器地址和端口,对应的语句是审核或执行。对于在线 MySQL 服务器来说,它是一个客户端。内部需要实时连接数据库服务器获取所需信息,或者直接在线执行相应语句并获取binlog等。Inception是一个中间服务。 。

依赖包安装
yum install gcc gcc-c++ cmake bison openssl-devel ncurses-devel git

下载源码包
git clone https://github.com/mysql-inception/inception.git(已经闭源,但网上还是可以找到预闭源包)

< strong> 编译安装Inception
mkdir -p /usr/local/inception

mkdir -p /inception/{data,logs}

解压master .zip - d /inception

cd /inception/inception-master
cmake -DWITH_DEBUG=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/inception -DMYSQL_DATADIR=/inception/data -DWITH_SSL=yes - DCMAKE_BUILD_TYPE=RELEASE -DWITH_ZLIB=捆绑 -DMY_MAINTAINER_CXX_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Wno-unused-parameter -Woverloaded-virtual" -DMY_MAINTAINER_C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Wdeclaration-after-statement"

CMake 错误:源“/inception/inception-master/CMakeLists.txt”与用于的源“/opt/inception-master/CMakeLists.txt”不匹配生成缓存

rm -rf CMakeLists.txt,然后执行

make && make install

创建inception配置文件
--编辑参数文件

vim /etc/inc.cnf

[inception]

general_log=1 #该参数为MySQL原生参数,用于记录Inception服务上执行过哪些Statement,用于定位一些问题等。

general_log_file=/usr/local/inception/data/inception.log #设置通用日志的文件路径编写

port=6669 #Inception服务端口

socket=/usr/local/inception/data/inc.socket #Inception的socket文件存储location

character-set-server=utf8 #mysql原生参数

#Inception审核规则

inception_check_autoincrement_datatype=1 #当自增列的类型创建表时不是int或bigint,会报错

inception_check_autoincrement_init_value=1 #创建表时,如果自增列的值没有指定为1,则会报错reports

inception_check_autoincrement_name=1 #创建表时,如果指定自增列的名称不是ID,会报错,解释有意义,给个提示

< p>inception_check_column_comment=1 #建表时,如果该列没有注释,会报错

inception_check_column_default_value=0 #检查建表,修改列,添加新列,如果新的列属性有一个默认值

inception_check_dml_limit=1 #当DML语句中使用LIMIT时,应该e会报错吗?

inception_check_dml_orderby=1 #在DML语句中使用Order By时,是否应该报错?

inception_check_dml_where=1 #当没有WHERE条件时DML语句,应该报错吗?

inception_check_identifier=1 #打开和关闭Inception检查SQL语句中的各种名称。如果设置为ON,如果发现名称中存在数字、字母、下划线以外的字符,会报Identifier“invalidname”无效,有效选项:[a-z,A-Z ,0-9,_ ].

inception_check_index_prefix=1 #检查索引名前缀是否为“idx_”,检查唯一索引前缀是否为“uniq_”

inception_check_insert_field=1 #Do想要在插入语句中检查列列表是否存在?

inception_check_primary_key=1 #建表时,如果没有主键,会报错

inception_check_table_comment=0 #创建表时,如果表没有注释会报错

inception_check_timestamp_default=0 #创建表时,如果没有指定timestamp类型的默认值,则会报错

inception_enable_autoincrement_unsigned =1 #自增列应该为None吗?符号

inception_enable_blob_type=0 #检查是否支持BLOB字段,包括创建表、修改列、添加新列。默认启用操作

inception_enable_column_charset=0 #允许列设置自己的字符集

inception_enable_enum_set_bit= 0 #是否支持enum、set、bit数据类型

< p>inception_enable_foreign_key=0 #是否支持外键

inception_enable_identifer_keyword=0 #检查SQL语句中是否有标识符写成MySQL关键字,默认值为alarm。

inception_enable_not_innodb=0 #如果建表指定的存储引擎不是Innodb,则不会会报错误

inception_enable_nullable=0 #创建或添加列时如果列为NULL,则不会报错

inception_enable_orderby_rand=0 #排序时会报错by rand

inception_enable_partition_table=0 #是否支持分区表

inception_enable_select_star=0 #选择*会报错

inception_enable_sql_statistic=1 #设置是否支持支持统计Inception执行的语句中各种语句的占比。如果打开该参数,则每次执行都会记录在备份数据库实例中的inception库中。统计表将本次操作的统计信息存储在一条记录中。每个操作对应一条记录。该记录包含的信息是各类语句的执行次数。

inception_max_char_length=16 #当char类型的长度大于这个值时,提示转为VARCHAR

inception_max_key_parts=5 #一个索引的最大列数,超过这个数就会报错

inception_max_keys=16 #在一个表中,最大索引数。超过这个数就会报错

inception_max_update_rows=10000 #在修改语句中,影响最大的是预期的行数,超过这个数太大就会报错< /p>

inception_merge_alter_table=1 #当出现多个修改同一个表的语句时,会报错并合并提示

#inception支持OSC参数

< p >inception_osc_bin_dir=/user/bin #用于指定pt-online-schema-change脚本的位置,不可修改,在配置文件中设置

inception_osc_check_interval=5 #对应OSC参数--check-interval,含义是检查--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_ritic_thread_connected=1000 #临界负载中对应参数--thread_connected部分

inception_osc_ritic_thread_running=80 #临界负载中对应参数--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 #对应参数中的thread_running部分 - -max-load

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'”

< p>inception_osc_on =0 #全局OSC开关,默认打开。如果想关闭,则设置为OFF,直接修改

inception_osc_print_none=1 #用于设置在Inception返回的结果集中,是否显示原OSC执行的标准输出信息process应该打印到结果集对应的错误信息列。如果设置为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 #表示建表或建库时支持的字符集。如果需要多个,请用逗号分隔。影响范围为创建表、设置会话字符集、修改表字符集属性等。


启动Inception程序
cd /usr /local/inception/bin

./Inception --defaults-file=/etc/inc .cnf &
[1] 11179
[root@b28-11-92 bin ]# 2023-06-2115:00:31 0 [注意] 欢迎使用 Inception2.1.50
2023-06-21 15:00:31 11179 [注意] 服务器主机名(绑定地址): '*' ;端口:6669
2023-06-21 15:00:31 11179 [注意] IPv6 可用。
2023-06-21 15:00:31 11179 [注意] - '::' 解析为'::';
2023-06-21 15:00:31 11179 [注意] 在 IP: '::' 上创建服务器套接字。

查看Inception流程
ps -ef | grep Inception
root 11179 30011 0 15:00 pts/1 00:00:00 ./Inception --defaults-file=/etc/inc.cnf

测试
mysql -uroot -h227.0.0.1 -P6669
连接成功后,执行inception get变量;
输出所有变量,说明启动已成功

向往安装
git clone https://github.com/cookieY/Yearning.git

登录MySQL创建向往库
创建数据库Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

安装对应的python依赖库
cd Yearning/src
pip install - rrequirements.txt
pip 配置了需要 TLS/SSL 的位置,但是 Python 中的 ssl 模块不可用。
收集 Django==2.1.5(来自 -rrequirements.txt)。 txt(第 1 行))
无法获取 URL https://pypi.python.org/simple/django/:有确认 ssl 证书时出现问题:无法连接到 HTTPS URL,因为 SSL 模块不可用。 - 跳过
找不到满足要求的版本Django==2.1。 5(来自 -rrequirements.txt(第 1 行))(来自版本:)
未找到 Django==2.1.5 的匹配发行版(来自 -rrequirements.txt(第 1 行))

< p>修改安装文件
Python-3.6.4/Modules

vim 设置
#Socket module helper for socket(2)
_socket socketmodule.c timemodule.c

#用于 SSL 支持的套接字模块助手;您必须注释掉上面的其他
#socket 行,并可能编辑 SSL 变量:
SSL=/ usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL - I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/ lib -lssl -lcrypto

重新编译< br/>cd Python-3.6.4
./configure --enable-shared --prefix=/usr/local/python/3.6.4 LDFLAGS="-Wl,-rpath /usr/local/python/ 3.6.4/lib "
make
make install


配置,编辑Yearning/src/deploy.conf文件
[mysql]
db =创建的库名称
address =数据库地址
port =数据库端口
密码=数据库密码
用户名=数据库用户

[主机]
ip地址=服务器ip地址:端口(跨域时非常重要!!如果设置为错误,将无法登录!!)
如果本机地址是192.168.137.13 nginx设置端口为80
那么就应该填写为192.168.137.13:80然后访问平台通过这个地址。

[Inception]
ip = Inception地址
port = Inception端口
user = Inception用户名
password = Inception密码
backupdb =备份数据库地址
backupport = 备份数据库端口
backupuser = 备份数据库用户名
backuppassword = 备份数据库密码

[LDAP] LDAP 相关设置
LDAP_SERVER = LDAP服务地址
LDAP_SCBASE = LDAP dc 设置,例如 dc=xxx,dc=com
LDAP_DOMAIN = LDAP 域名,如 xxx.com

[email] 邮件推送相关设置
/>用户名 = 邮件发送账号,如 xxxx@163.com
密码 = 邮箱发送账号密码
smtp_server = 邮件stmp地址,具体地址请咨询对应的邮箱提供商

初始化数据库
python manage.py makemigrations
python manage.py migrate

如果报错ModuleNotFoundError: No module name 'Crypto'
pip install pycrypto
重新初始化数据库
python manage.py makemigrations

python manage.py migrate

添加初始化用户
echo "from core.models import Account ;Account .objects.create_user(用户名='admin',密码='admin123456',组='admin',is_staff=1)" | python manage.py shell

初始化权限

strong>
echo "from core.models importgrained;grained.objects.get_or_create(username='admin', Permissions= {'ddl':'1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', '查询': '1', 'querycon': [], '用户': '1', 'base': '1', 'dicexport': '0'})" | python manage.py shell

将编译好的静态文件复制到nginx html目录(dist目录是npm run build生成的)
cd Yearning/webpage/dist
cp -rf * /usr/share/nginx /html/

/etc/init.d/nginx restart

启动django
cd Yearning/src

python manage.py runserver 0.0.0.0:8000

访问首页http://192.168.17.77


注意事项:
使用默认帐号:admin 密码:admin123456 登录使用,可能会出现无法登录(无法跳转页面)的情况,这是由于跨域的问题,解决这个问题,可以参考:http://blog.csdn.net/apple9005/article/details/54427902

备注
默认超级管理员只有访问权限每个页面都需要有其他权利自己增加的!详细请参见用户管理说明
由于Inception原生不支持pymysql,需要更改pymysql相关源码
修改$PYTHON_HOME/lib/python3.6/site-packages/pymysql< br/>connections 两个文件:.py 和cursors.py

查找connections.py第786行
if int(self.server_version.split('.', 1)[0]) > = 5:

self.client_flag |= CLIENT.MULTI_RESULTS

更改为:
尝试:

if int(self.server_version.split ('.' , 1)[0]) >= 5:

self.client_flag |= CLIENT.MULTI_RESULTS

例外:

if self.server_version .split('.', 1)[0] >= 'Inception2':

self.client_flag |= CLIENT.MULTI_RESULTS

查找cursors.py

< p> if self._result 且(self._result.has_next 或 not self._result.warning_count):

返回

更改为
if self._result:< /p >

返回

《Yearning + Inception SQL审计平台搭建方法是什么》内容介绍到这里。感谢你为了读书。如果您想了解更多行业资讯,可以关注网站,小编将为大家输出更多优质实用文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Yearning + Inception SQL审计平台的搭建方法是什么?

用户评论