广告

本站里的文章大部分经过自行整理与测试

2017年2月26日星期日

VirtualBox - Bridged 模式


1. 除了 VirtualBox platform package,
也下载 Oracle VM VirtualBox Extension Pack

https://www.virtualbox.org/wiki/Downloads

2. 安装 VirtualBox 后, 设置

VirtualBox - Preferences

2.1) Extensions - Oracle VM VirtualBox Extension Pack
2.2) Network - Host-only Networks - Host-only Ethernet Adapter

3. VirtualBox - 某虚拟机

3.1) Settings - Network

Adapter 1 - Enable Network Adapter
修改 NAT 为 Bridged Adapter

3.2) 启动虚拟机后,
可以设置里面的网络为静态 IP

Windows
Local Area Connection Properties -
Intel(R) PRO/1000 MT Network Connection - Internet Protocol Version 4 (TCP/IPv4)

Linux
http://jasonmun.blogspot.my/2017/01/linux-network-settings-ip.html

2017年2月24日星期五

Windows 10 - BASH on Ubuntu


1. 开发人员模式

Settings - Update & Security > For Developers - Developer Mode

2. 打开 BASH 功能

Control Panel - Programs and Features - Turn Windows Features On or Off 
- Windows Subsystem for Linux (Beta) - OK

重启后, 就可选 BASH 来用

Windows - PhotoShop 各版本下载


PhotoShop 全系列精简版下载 ( CC/CS6/CS5/CS4/CS3/CS2/CS )

http://jsj08.lofter.com/post/1cbc18fe_6994bb4

CC 从中文转英文

Adobe Photoshop CC (64 Bit)\Locales\zh_CN\Support Files\tw10428.dat

将以上文件改名即可

2017年2月23日星期四

Linux - Microsoft Office 2010 安装


本来是想安装 Microsoft Office 2013, 
但成功安装后, 出现黑屏, 根本无法使用, 
所以转安装 Microsoft Office 2010

1. 安装好 CrossOver

http://jasonmun.blogspot.my/2017/02/crossover.html

2. 去下载 Microsoft Office 2010

3. 在 CrossOver 按 Install Windows Software, 会出现如图

3.1) Select Application - 选择 Microsoft Office 2010
3.2) Select Installer - 选择安装源 (就是第 2 步)
3.3) Select Bottle
3.4) Install & Finish - 开始安装


4. 有关 KMS Activate 的问题

Bottles - Microsoft Office 2010

Run Command... - Open - Command: 输入 regedit

4.1) 加入 KeyManagementServiceName 和 KeyManagementServicePort

[HKEY_LOCAL_MACHINE\Software\Microsoft\OfficeSoftwareProtectionPlatform]

Edit -> New -> Key: String Value

KeyManagementServiceName: (license server 主机名)
KeyManagementServicePort: (license server 端口预设为 1688)

保持 regedit 开启 和 去开启 Microsoft Office 2010

4.2) 修改 VLRenewalSchedule 的值

[HKEY_USERS\S-1-5-20\Software\Microsoft\OfficeSoftwareProtectionPlatform]

Edit -> New -> Key: Binary Value

VLRenewalSchedule: 输入 1

5. 移除 Ubuntu - Libre Office

$ apt remove libreoffice-core libreoffice-style-* libreoffice-l10n-en-*

2017年2月22日星期三

Linux - CrossOver + QQ 8.1 安装

1. 安装好 CrossOver


2. 下载 Deepin 版 QQ


3. 解压, 移动..

将以上里面的 data.tar.xz >> opt/cxoffice/support/apps.com.qq.im
解压出来, 放到 /opt/cxoffice/support

$ mv opt/cxoffice/support/apps.com.qq.im /opt/cxoffice/support

4. CrossOver - QQ

运行 CrossOver 就可看到 QQ 在 CrossOver 列表中,
点击下 QQ 即可运行

Linux - Logwatch 看与邮寄 Log

$ su

1. 安装

$ yum install logwatch

2. 设置文件

$ cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf

$ gedit /etc/logwatch/conf/logwatch.conf

LogDir = /var/log logwatch
TmpDir = /var/cache/logwatch
#Save = /tmp/logwatch           开启此项, 处理结果将保存在/tmp/logwatch, 不邮寄或显示
MailTo = user@mail.com        多个邮箱逗号隔开
MailFrom = Logwatch             当你收到邮件时, 显示是谁发给你的
Range = All                             处理什么时候的日志, 可选项 All, Yesterday, Today
Detail = High                           日志详细度, 可选项 Low, Med, High, 或是数字 0-10
Print = No                                可选项, Yes 会被打印到系统标准输出, No 则会发到邮箱中

Server = All                             监控所有服务 all
Service = "-httpd"                    排除不监控的服务
Service = "-sshd"

3. 运行

$ /usr/bin/perl /usr/share/logwatch/scripts/logwatch.pl

4. 运行

4.1) crontab 定期运行

* 00 * * * /usr/bin/perl /usr/share/logwatch/scripts/logwatch.pl > /dev/null 2>&1

4.2) 命令输入

–service < name>: 服务名,有对应的解析脚本,可以在 /usr/share/logwatch/scripts/services 中找到
–detail < level>: 报告的详细度, 可选项: High, Med, Low, 数字 0-10
–print: 打印打标准输出
–logfile < name>: 指日志文件名
–save < filename>: 保存到文件

–archives: 使用压缩的文件, 轮转的文件, 例如 messages.1、messages.1.gz
–range < range>: 日期范围, Yesterday, Today, All
–debug < level>: 调试级别: High, Med, Low
–splithosts: 为每个主机创建一份报告
–mailto < addr>: 收件人地址
–multiemail: 将报告发送给多个邮件地址

$ logwatch –service All –detail High –range All –print
$ logwatch –service cron –detail High

$ logwatch --range today --print --mailto user@email.com
$ /usr/share/logwatch/scripts/logwatch.pl --mailto user@email.com

Linux - cockpit 服务管理工具


$ su

1. 安装

$ yum install cockpit

2. 启动

$ systemctl start cockpit
$ systemctl enable cockpit

3. 打开防火壁端口

$ firewall-cmd --get-active-zones

$ firewall-cmd --add-service=cockpit --permanent --zone=public

$ firewall-cmd --reload
$ firewall-cmd --list-all --zone=public

4. 浏览

http://127.0.0.1:9090

2017年2月21日星期二

CrossOver


CrossOver 其实就是 Wine 的升级版软件, 但它并非是免费的.
它可以安装 Adobe PhotoShop CS3, QQ, Microsoft Office 2013 等等
还有游戏..

先下载 CrossOver 16 (有 deb / rpm 版本)
来安装
https://www.codeweavers.com/products/crossover-linux/download

用搜索引擎搜索 'winewrapper.exe so' 来寻找 winewrapper.exe.so 
放去 /opt/cxoffice/lib/wine

$ su
$ cp winewrapper.exe.so /opt/cxoffice/lib/wine/

$ cd /opt/cxoffice/lib/wine
$ chown root:root winewrapper.exe.so
$ chmod 644 winewrapper.exe.so

在 CrossOver 下安装其它软件如 Microsoft Office 2010 后,
打开时应该不会出现还能用多少天的提示了

2017年2月17日星期五

RedHat / CentOS 更新内核

http://elrepo.org/tiki/tiki-index.php

$ su

1. ELrepo 公钥

$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2. ELrepo 安装

# RHEL 7 / CentOS 7
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

# RHEL 6 / CentOS 6
$ rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

3. 安装内核 ( lt: 3.10  / ml: 4.10 )

$ yum –enablerepo=elrepo-kernel install kernel-ml

http://elrepo.org/linux/kernel/el6/x86_64/RPMS/

4. 更新 grub 2

$ grub2-mkconfig -o /boot/grub2/grub.cfg

2017年2月9日星期四

Gnome Shell Extension - Easy Screen Cast

Easy Screen Cast

在 Gnome 只要点击 Start recording 一下, 就能进行视频 / 音频截取

$ git clone https://github.com/EasyScreenCast/EasyScreenCast
$ mv EasyScreenCast ~/.local/share/gnome-shell/extensions/EasyScreenCast@iacopodeenosee.gmail.com

2017年2月8日星期三

MySQL - 数据备份与恢复

备份

[options]: -h主机名 -P端口 -u用户名 -p密码

1. 备份 MySQL 数据库
$ mysqldump [options] 数据库名 > backup.sql

$ mysqldump [options] -database 数据库名 > backup.sql

2. 备份 MySQL 数据库 + 删除表 ( --add-drop-table )
$ mysqldump --add-drop-table [options] -database 数据库名 > backup.sql

3. 直接将 MySQL 数据库 压缩备份 ( gzip )
$ mysqldump [options] -database 数据库名 | gzip > backup.sql.gz

4. 备份 MySQL 数据库里的表
$ mysqldump [options] 数据库名 表名1 表名2 > backup.sql

5. 同时备份多个 MySQL 数据库
$ mysqldump [options] -databases 数据库名1 数据库名2 数据库名3 > multi_backup.sql

6. 备份数据库结构 ( --no-data )
$ mysqldump --no-data [options] -databases 数据库名1 数据库名2 数据库名3 > struct.sql

7. 备份所有数据库 ( --all-databases )
$ mysqldump [options] --all-databases > all_backup.sql

恢复

1. 还原 MySQL 数据库

$ mysql 
[options] 数据库名 < backup.sql

2. 还原压缩的 MySQL 数据库

$ gunzip < backup.sql.gz | mysql 
[options] 数据库名

3. 将数据库转移到新服务器

$ mysqldump 
[options] 数据库名 | mysql --host=*.*.*.* -C 数据库名

4. 
在 mysqldump 中使用 --master-data 和 --single-transaction

--master-data=2 : 会记录 binlog 文件和 position 的信息
--single-transaction : 会将隔离级别设置成 repeatable-commited

5. 导入数据库

常用 source 命令, 用 use 进入到某个数据库, mysql> source C:\test.sql

6. 查看 binlog 日志

$ mysqlbinlog 日志名 | more

7. general_log - 记录数据库的任何操作

- 查看 general_log 的状态和位置 : show variables like "general_log%",

- 开启 general_log : set global general_log=on



增量备份

1. 首先做一次完整备份

$ mysqldump [options] --single-transaction --master-data=2 数据库名 > backup.sql

在 backup.sql 文件中可看到

-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;

是指备份后所有的更改将会保存到 bin-log.000002 二进制文件中

2. 在 数据库名 库的 t_student 表中增加两条记录, 然后执行 flush logs 命令

这时将会产生一个新的二进制日志文件 bin-log.000003,
bin-log.000002 则保存了全备份过后的所有更改,
既增加的记录操作也保存于 bin-log.00002

3. 再 数据库名 库中的 a 表中增加 2 条记录, 然后误删除 a 和 t_student 表

以上操作也记录在 bin-log.000003


恢复数据 + binlog 日志

1. 首先导入全备数据


$ mysql [options] < backup.sql

2. 恢复 binlog 日志 bin-log.000002

$ mysqlbinlog bin-log.000002 | mysql [options]

$ mysql [options] < bin-log.000002

3. 恢复 binlog 日志 bin-log.000003

general_log 中找到误删除的时间点,
然后更加对应的时间点到 bin-log.000003 中找到相应的 position 点,
需要恢复到误删除的前面一个 position 点

可以用如下参数来控制 binlog 的区间

开始点 --start-position
结束点 --stop-position
开始时间 --start-date 
结束时间 --stop-date

找到恢复点后, 既可以开始恢复

$ mysqlbinlog --start-position=208 bin-log.000003 | mysql [options]

MariaDB / MySQL - Binary Logs 设置

1. 准备存 bin-log 的地方

$ mkdir -p /var/log/mariadb/bin-log

2. 编辑 /etc/my.cnf (my.ini)

[mysqld]

log_bin=/var/log/mariadb/bin-log


expire_logs_days = 7


3. 启动 MariaDB

$ systemctl start mariadb

4. 查看数据库关于 Binary Log 设置

检查 Binary Logs 是否开启

$ mysql -h主机名 -P端口 -u用户名 -p密码

MariaDB> show variables like 'log_bin';

MariaDB> show binary logs;
MariaDB> show master logs;

重设
MariaDB> reset master;
(在slave上, 用 reset slave, 之前应 stop slave, 之后再 start slave)

清理
MariaDB> purge binary logs to 'log-bin.000001';
MariaDB> purge binary logs before '2011-05-28 12:05:38';

5. 查看 Binary Log

MariaDB> show master status;
MariaDB> show binlog events;

MariaDB> quit;

$ cd /var/log/mariadb/bin-log

全备份

$ mysqlbinlog log-bin.000001 > tmp.log

部分备份

# --start-datetime / --stop-datetime
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' --stop-datetime='2016-07-15 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-datetime='2016-07-15 00:00:00log-bin.000001 > tmp.log

# --start-position / --stop-position
$ mysqlbinlog --start-position='10001' --stop-position='10002' log-bin.000001 > tmp.log
$ mysqlbinlog --start-position='10001' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-position='10002log-bin.000001 > tmp.log

6. 关闭与开启 Binary Logs

关闭
MariaDB> SET sql_log_bin=0;
MariaDB> flush logs;

恢复
$ mysql -h主机名 -P端口 -u用户名 -p密码 < tmp.log

开启
MariaDB> SET sql_log_bin=1;

2017年2月7日星期二

MySQL - MyISAM / InnoDB 比较

MyISAM
优点: 适合大量的 select, 可以全文索引
缺点: 不支持事务, 不支持外键, 并发量较小, 不适合大量 update

InnoDB
优点: 支持事务, 支持外键, 并发量较大, 适合大量 insert / update
缺点: 不适合大量的 select

MySQL 与 MariaDB 区别


MySQL 之父 Widenius 先生离开了Sun之后, 觉得依靠 Sun / Oracle 来发展 MySQL,
实在很不靠谱, 于是决定另开分支, 这个分支的名字叫做 MariaDB

MariaDB 能够快速的查询和处理数据, 且占用资源相对是少于 MySQL 数据库的,
而且在运行速度, 以及支持对 Unicode 的排序问题优于 MySQL 数据库

https://downloads.mariadb.org/mariadb/repositories/#mirror=utm

MySQL - 解决乱码问题

$ gedit /etc/my.cnf

[mysql]

default-character-set=utf8

[mysqld]

default-storage-engine=INNODB

character_set_server=utf8

Linux - MySQL 安装


1. 下载 / 解压 / 移动

$ cd Downloads
$ wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
$ tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

$ su
$ mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql

2. 复制与修改设置文件

$ cd /usr/local/mysql/support-files

$ cp my-default.cnf /etc/my.cnf
$ cp mysql.server /etc/init.d/mysql

$ gedit /etc/init.d/mysql

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

3. 权限设置

$ groupadd mysql
$ useradd -r -g mysql mysql
$ passwd mysql

$ chown -R mysql:mysql /usr/local/mysql/

$ mkdir -p /usr/local/mysql/data

4. 初始化

$ cd /usr/local/mysql/bin

$ ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5. 加密数据库

$ ./mysql_ssl_rsa-setup --datadir=/usr/local/mysql/data

6. 启动

$ systemctl enable mysql
$ systemctl start mysql

7. 设置 path 环境变量

$ gedit /etc/profile

export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH

8. 打开防火壁端口 3306

9. 修改 root 密码

./mysqld_safe --user=mysql
http://jasonmun.blogspot.my/2016/12/mysql-root.html

2017年2月6日星期一

Tor 原理与使用方法


Tor 匿名在线服务
https://www.torproject.org

Tor 原理

Tor 客户端 会先从 Tor 目录服务器读取能连接的节点清单,
然后随机选择 3 个节点,
前 2 个节点即入口与中间节点会加密, 最后的出口节点会解密看到内容
如果看的是 https, 就连出口节点也不能看到内容
过一段时间, 节点会重选

Tor 正确使用方法 (为了不泄漏 IP)

1. 不启动或安装任何浏览器插件如 Flash, RealPlayer, Quicktime 等
2. 不用 torrent 软件于 Tor 网络
3. 当用着 Tor 网络, 不要打开 doc / pdf 文件
4. 可以在虚拟机上如 Ubuntu 用 Tor 网络, 以确保没有软件泄漏 IP
5. 用 Tor 的 bridge 模式
6. 用 Tor Browser 

Tor Network Settings 
- My Internet Service Provider (ISP) blocks connections to the Tor network 
- Connect with provided bridges 
- Transport type: obfs4 (recommended)

Windows - Deep Web (Tor + IIS) 匿名网站服务


在这里, 我们以安装与启动了 IIS 为前提
(其实不一定要 IIS, 只要是 Web Server, 用端口 80 即可)

如果更换了以下设置的端口, 也可以隐藏其它服务如 SSH / FTP 等

1. 下载 Expert Bundle

https://www.torproject.org/download/download.html.en
https://www.torproject.org/dist/torbrowser/6.5/tor-win32-0.2.9.9.zip

2. 弄个 tor 文件夹, 解压 Expert Bundle 于内 ( C:\tor )

3. 用 NotePad 创建文件 torrc

C:\Users\username\AppData\Roaming\tor\torrc

C:\tor\Data\torrc

SocksPort 0
DataDirectory C:\tor\Data

GeoIPFile C:\tor\Data\Tor\geoip
GeoIPv6File C:\tor\Data\Tor\geoip6

HiddenServiceDir C:\tor\Data
HiddenServicePort 80 127.0.0.1:80

Log notice file C:\tor\Data\notice.log

# 以下是 Bridge 的设置

ORPort auto
BridgeRelay 1
Exitpolicy reject *:*

4. 运行 tor.exe (以 administrator 身份运行)

弄个 Shortcut, 运行的 Target 如下
C:\tor\Tor\tor.exe

C:\tor\Tor\tor.exe --defaults-torrc C:\tor\Data\torrc

5. 用 NotePad 打开文件 hostname

C:\tor\Data\hostname

44axhgxws5j3woxi.onion

6. 在客户端安装与启动 Tor Browser

当以上的主机名为网址输入

Linux 版
http://jasonmun.blogspot.my/2017/02/linux-deep-web-tor-apache2.html

Windows - IIS - 用 OWASP 加强防御

1. 运行库

Microsoft Visual C++ 2015 Redistributable Package
https://www.microsoft.com/en-us/download/details.aspx?id=53840
http://www.downxia.com/downinfo/29834.html

Mod Security IIS 版
http://www.modsecurity.org/download.html
https://www.modsecurity.org/tarball/2.9.1/ModSecurityIIS_2.9.1-64b.msi

2. 设置

2.1) applilcationHost.config

C:\Windows\System32\inetsrv\config\applicationHost.config

<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>

2.2) modsecurity.conf

C:\inetpub\wwwroot\owasp_crs\modsecurity.conf

SecRuleEngine On

2.3) web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <ModSecurity enabled="true" configFile="C:\Program Files\ModSecurity IIS\modsecurity_iis.conf" />
    </system.webServer>
</configuration>

2017年2月5日星期日

Linux - Nginx - 用 OWASP 加强防御

1. 安装

# 依赖库
$ yum install openssl openssl-devel pcre pcre-devel zlib zlib-devel
$ yum install apr apr-util-devel apr-devel httpd-devel libxml2 libxml2-devel

# openssl
$ cd /usr/local/src
$ wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz
$ tar zxvf openssl-1.1.0c.tar.gz
$ cd openssl-1.1.0c
$ ./config --prefix=/usr
$ make && make install

# pcre
$ cd /usr/local/src
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
$ tar zxvf pcre-8.40.tar.gz
$ cd pcre-8.40
$ ./configure
$ make && make install

# zlib
$ cd /usr/local/src
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install

# 编译与安装 ModSecurity
$ cd /usr/local/src
$ wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
$ tar zxvf modsecurity-2.9.1.tar.gz
$ cd modsecurity-2.9.1
$ ./autogen.sh
$ ./configure --enable-standalone-module --disable-mlogc
$ make

# 编译与安装 Nginx
$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.10.2.tar.gz
$ tar zxvf nginx-1.10.2.tar.gz
$ cd nginx-1.10.2
$ ./configure --prefix=/usr/local/nginx 
--without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.1.0c --with-pcre=/usr/local/src/pcre-8.40 --with-zlib=/usr/local/src/zlib-1.2.11 --add-module=/usr/local/src/modsecurity-2.9.1/nginx/modsecurity/
$ make
$ make install

$ /usr/local/nginx/sbin/nginx -V

$ cd /usr/local/src/modsecurity-2.9.1
$ cp modsecurity.conf-recommended /usr/local/nginx/modsecurity.conf
$ cp unicode.mapping /usr/local/nginx/unicode.mapping

# 下载 OWASP ModSecurity Core Rule Set (CRS)
$ cd /usr/local/nginx
$ git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
$ cd owasp-modsecurity-crs
$ mv crs-setup.conf.example crs-setup.conf

2. 设置

2.1) 编辑 modsecurity.conf

$ gedit /usr/local/nginx/conf/modsecurity.conf

SecRuleEngine on

#Include owasp-modsecurity-crs/rules/REQUEST-901-INITIALIZATION.conf
#Include owasp-modsecurity-crs/rules/REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf
#Include owasp-modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf
#Include owasp-modsecurity-crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf
#Include owasp-modsecurity-crs/rules/REQUEST-910-IP-REPUTATION.conf
#Include owasp-modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf
#Include owasp-modsecurity-crs/rules/REQUEST-912-DOS-PROTECTION.conf
#Include owasp-modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf
#Include owasp-modsecurity-crs/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf
Include owasp-modsecurity-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf
Include owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf
Include owasp-modsecurity-crs/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf
Include owasp-modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf
Include owasp-modsecurity-crs/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf
#Include owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf
#Include owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
Include owasp-modsecurity-crs/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
Include owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf
Include owasp-modsecurity-crs/rules/RESPONSE-950-DATA-LEAKAGES.conf
Include owasp-modsecurity-crs/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf
Include owasp-modsecurity-crs/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf
#Include owasp-modsecurity-crs/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf
Include owasp-modsecurity-crs/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf
Include owasp-modsecurity-crs/rules/RESPONSE-959-BLOCKING-EVALUATION.conf
Include owasp-modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf

# 注释掉默认的 SecAuditLogType 和 SecAuditLog
SecAuditLogDirMode 0777
SecAuditLogFileMode 0550
SecAuditLogStorageDir /var/log/modsecurity
SecAuditLogType Concurrent

2.2) 编辑 nginx.conf

$ gedit /usr/local/nginx/nginx.conf

server {  
location / {
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;

                proxy_pass http://online;
                proxy_redirect         off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

3. 启动

$ systemctl start nginx

Linux - 加强 Apache2 对 DDOS 的防御

1. 安装

$ su
$ yum install mod_security mod_evasive
$ ls -l /etc/httpd/conf.d

# 编译与安装 ModSecurity
$ cd /usr/local/src
$ wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
$ tar zxvf modsecurity-2.9.1.tar.gz
$ cd modsecurity-2.9.1
$ ./autogen.sh
$ ./configure --enable-standalone-module --disable-mlogc
$ make

$ cd /usr/local/src/modsecurity-2.9.1
$ cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
$ cp unicode.mapping /etc/httpd/conf.d/unicode.mapping

# 下载 OWASP ModSecurity Core Rule Set (CRS)
$ cd /etc/httpd
$ git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
$ cd owasp-modsecurity-crs
$ cp crs-setup.conf.example crs-setup.conf

2. 设置

2.1) 编辑 mod_evasive.conf

$ gedit /etc/httpd/conf.d/mod_evasive.conf

LoadModule evasive20_module modules/mod_evasive24.so

2.2) 编辑 mod_security.conf

$ gedit /etc/httpd/conf.d/mod_security.conf

LoadModule security2_module modules/mod_security2.so

2.3) 编辑 httpd.conf

$ gedit /etc/httpd/conf/httpd.conf

<IfModule security2_module>
    Include owasp-modsecurity-crs/crs-setup.conf
    Include owasp-modsecurity-crs/rules/*.conf
</IfModule>

2.4) 创建 tecmint.conf

$ gedit /etc/httpd/modsecurity.d/tecmint.conf

<IfModule mod_security2.c>
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess On 
    SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
    SecDataDir /tmp
</IfModule>

2.5) 编辑 mod_evasive.conf

$ gedit /etc/httpd/conf.d/mod_evasive.conf

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

3. 重启

$ systemctl restart httpd
$ httpd -M | grep -Ei '(evasive|security)'