Author Archives: safetohost

在WHM面板上定义Comodo ModSecurity规则

在WHM面板上定义Comodo ModSecurity规则

什么是Modesecurity?

简而言之,我们可以说  ModSecurity:这是一个用于网站和服务器安全性的开源防火墙系统。Web应用程序防火墙(即WAF  Mod Security  )嵌入在Web服务器中,并充当入侵检测和阻止您使用或编写的Web应用程序。

Mod Security的另一个优势是其实时数据分析。从连接到Web服务器的那一刻起,您就可以在应用程序或传出数据上执行所需的控件,并且可以编写规则,以便立即采取措施进行攻击检测和预防。

在cPanel中添加mod_security规则非常容易。它附带一个规则集(OWASP ModSecurity Core规则集),但您也可以添加其他规则集。

对于第三方规则集,您将需要一个yaml文件。例如,Comodo WAF的规则集yaml文件为https://waf.comodo.com/doc/meta_comodo_apache.yaml

如何在WHM中添加mod_security规则/供应商

1.以root用户身份连接到WHM安装

2.导航到安全中心-> ModSecurity™供应商->管理供应商,然后单击添加供应商按钮

3.在此处输入yaml文件URL,然后单击加载按钮。

4.将加载有关新规则集的信息。单击“ 保存”按钮以安装规则集。该消息将确认安装:“成功:您已成功将“ COMODO ModSecurity Apache Rule Set”添加到供应商配置列表。”

WHM-Panelde-Comodo-ModSecurity-Kuralı

Comodo ModSecurity LiteSpeed 规则 – https://waf.comodo.com/doc/meta_comodo_litespeed.yaml

之后的ModSecurity 供应商当您返回到ModSecurity Comodo’Litspeed防火墙时,或者您可以看到将其添加到Apache。

 

宝塔面板下nginx屏蔽恶意蜘蛛抓取

宝塔面板下nginx屏蔽恶意蜘蛛抓取

宝塔面板下nginx屏蔽恶意蜘蛛抓取

做跨境网站经常会遇到一个问题就是服务器没有多少流量,甚至没有开始推广的情况下,服务器的负载异常的高。经过排查客户访问日志发现其实有很多没必要的搜索引擎(蜘蛛)一直在爬取你网站内容导致。

尤其以 semrush ,ahrefs,seznam,HuaWei 这几家搜索引擎爬取的特别厉害,且不遵循国际 robots.txt 协议。小编遇过严重时服务器平均负载高达 80% 这将导致了服务器崩溃,导致了正常客户无法访问网站,以至于订单流失。

鉴于目前国内使用宝塔面板的用户占有率比较大,今天分享 宝塔面板 使用 Nginx 前端的情况下 屏蔽恶意蜘蛛的网站内容抓取。

操作方法如下:

1、登录宝塔操作面板 – 文件管理器 -进入指定目录:

/www/server/nginx/conf

新建文本,并命名为

agent_deny.conf

紧接着填入以下代码:

#禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {

return 403;

}

#禁止指定UA及UA为空的访问

if ($http_user_agent ~* "FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|Bytespider|Ezooms|Aspiegel|JikeSpider|SemrushBot|^$" ) {

return 403;

}

#禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {

return 403;

}

2、填入代码后将需要屏蔽恶意搜索引擎爬取的网站 调取你刚填写的 agent_deny.conf 实现 拦截

宝塔后台(左侧导航栏) – 网站 – (指定域名)- 设置 – 配置文件

填入以下内容:

 root /www/wwwroot/www.safetohost.com;
#屏蔽恶意搜索引擎
include agent_deny.conf;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则

保存文件后,在看网站的访问日志会发现 带有指定 user-agent 协议头的 访问 已全部返回 403 错误.

如果你的网站需要使用到 火车头 采集数据的情况下,若是使用上方的代码 会被认为是 被禁用的爬虫,这时需要使用下方的代码(针对需要使用火车头采集器的用户)。

#禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {

return 403;

}

#禁止指定UA访问。UA为空的可以访问,比如火车头可以正常发布。

if ($http_user_agent ~ "FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|YandexBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|Bytespider|Ezooms|Aspiegel|JikeSpider|SemrushBot" ) {

return 403;

}

#禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {

return 403;

}

如果使用的 APACHE 处理端 则需要通过 .htaccess 实现恶意搜索引擎的拦截,上方的规则无法使用。

操作方法:

文件管理器 – 需要屏蔽的网站 – 编辑 .htaccess

填入以下代码:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]
RewriteRule ^(.*)$ - [F]

保存文件即可完成

附上无用的 UA 集,用户可根据自身需求增添相关UA

FeedDemon             内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy            sql注入
Java                  内容采集
Jullo                 内容采集
Feedly                内容采集
UniversalFeedParser   内容采集
ApacheBench           cc攻击器
Swiftbot              无用爬虫
YandexBot             无用爬虫
AhrefsBot             无用爬虫
YisouSpider           无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
jikeSpider            无用爬虫
MJ12bot               无用爬虫
ZmEu phpmyadmin       漏洞扫描
WinHttp               采集cc攻击
EasouSpider           无用爬虫
HttpClient            tcp攻击
Microsoft URL Control 扫描
YYSpider              无用爬虫
jaunty                wordpress爆破扫描器
oBot                  无用爬虫
Python-urllib         内容采集
Indy Library          扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot           无用爬虫

当你网站被CC 攻击时 ,也可以使用以上的方法 ,进行精准的拦截(比单纯的屏蔽IP更有效)但存在一定的误封需要客户自行排查。

Ubuntu 安装ssh服务以及开启root用户ssh登录

Ubuntu 安装ssh服务以及开启root用户ssh登录

一、安装ssh服务
安装ssh服务

sudo apt-get update
sudo apt-get install openssh-server

安装完成后启动ssh服务

sudo service ssh start

二、开启root用户ssh登录

修改配置文件: /etc/ssh/sshd_config

找到

# Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes

更改为

# Authentication:
LoginGraceTime 120
#PermitRootLogin prohibit-password
PermitRootLogin yes
StrictModes yes

重启ssh服务

sudo service ssh restart
云途主机-VPS 系统重启操作方法

云途主机-VPS 系统重启操作方法

云途主机-VPS 系统重启操作方法

  1.  登录云途主机的产品管理中心,billing.hostslb.com ,选择产品/服务
  2. 选中需要重启的机器

  1. 进入产品管理界面后往下移动,找到 Reboot 选项,鼠标点击重启,当系统完成重启后会有提示。

当系统提示完成后,静待5-10分钟等系统各项功能组件重启完成即可。

WonderShaper – 限制Linux网络带宽的工具

WonderShaper – 限制Linux网络带宽的工具

Wondershaper是一个小型bash脚本,可以限制Linux中的网络带宽 。 它使用tc命令行程序作为配置流量控制的后端。它是控制Linux服务器带宽的便捷工具。

它允许您设置最大下载速率和/或最大上载速率。此外,它还允许您清除已设置的限制,并可以从命令行显示接口的当前状态。您可以将其作为systemd下的服务持久运行,而不是使用CLI选项。

在本文中,我们将展示如何安装和使用wondershaper来限制Linux系统上的网络带宽。

如何在Linux系统中安装Wondershaper

首先,首先使用您的Linux发行包管理器从默认的指令库中安装wondershaper ,如图所示。

$ sudo apt install wondersharper  [On Debian/Ubuntu]
$ sudo yum install wondersharper  [On CentOS/RHEL]
$ sudo dnf install wondersharper  [On Fedora 22+]

或者,要提取和安装最新更新,您需要将Wondershaper的GitHub存储库克隆到您的系统,移动到本地存储库并使用以下命令进行安装。请注意,您应该安装git命令行工具:

$ cd bin
$ git clone https://github.com/magnific0/wondershaper.git
$ cd wondershaper
$ sudo make install

在开始使用wondershaper之前,首先应使用ifconfig或ip命令检查连接到计算机的所有网络接口。

这将帮助您了解要对其进行带宽使用的界面,例如,处于活动状态的无线接口wlp1s0

$ ifconfig 
OR
$ ip addr

检查Linux中的网络接口

如何使用Wondershaper限制Linux中的网络带宽

要为接口定义以Kbps为单位的最大下载速率,请使用选项-a (定义接口)和-d (定义Kbps)运行以下命令,即下载速率将设置为4Mbps

$ wondershaper -a wlp1s0 -d 4048

要为接口设置以Kbps为单位的最大上载速率,请使用-u选项,如下所示。

$ wondershaper -a wlp1s0 -u 1048

例如,您也可以使用单个命令一次设置下载和上载。

$ wondershaper -a wlp1s0 -d 4048 -u 1048

-s选项允许您查看接口的当前状态。

$ wondershaper -sa wlp1s0 

检查网络接口状态

例如,您还可以使用iPerf – 网络吞吐量工具来测试奇迹记录器带宽的减少。

您可以使用-c标志清除为接口设置的下载或上载限制。

$ wondershaper -ca wlp1s0

也可以将wondershaper作为服务运行,您可以在其中定义用于在配置文件中整形带宽的参数。这使得Wondershaper能够在启动时启动并在系统启动时始终限制带宽使用,如下一节所述。

如何在Systemd下持续运行Wondershaper

在此模式下,您需要在位于/etc/conf.d/wondershaper的wondershaper配置文件中设置接口,上载和下载速率。您可以使用您喜欢的CLI编辑器打开此文件进行编辑,如图所示。

$ sudo vim /etc/conf.d/wondershaper 

定义必要的参数如下。

[wondershaper]
# Adapter
IFACE="wlp1s0"

# Download rate in Kbps
DSPEED="4048"

# Upload rate in Kbps
USPEED="512"

保存文件并关闭它。

接下来,使用systemctl命令启动奇迹时间服务,使其在系统引导时自动启动并查看其状态。

$ sudo systemctl start wondershaper
$ sudo systemctl enable wondershaper
$ sudo systemctl status wondershaper

如果您更改配置文件中参数的值,则需要重新启动wonderservice以使更改生效。

$ sudo systemctl restart wondershaper

要停止奇妙的服务,请使用以下命令。

$ sudo systemctl stop wondershaper

有关更多帮助,请参阅Wondershaper Github存储库: https://github.com/magnific0/wondershaper

Cloudflare中firewall的编写方法

Cloudflare中firewall的编写方法

firewall,也就是我们所说的防火墙规则。我们可以先看下效果

如图所示,在2.13号一天,防火墙为我们拦截了上亿条的恶意请求。免费套餐有5条的额度,对于一般用户我觉得已经足够了,如果你的网站结构过于复杂,还请你升级套餐,以寻求更多规则额度。

​ 我们可以找到的官方文档如下:https://developers.cloudflare.com/firewall/cf-firewall-rules/,请先观看此文档,再看本文。如果你看完文档的话,你会发现拦截恶意请求其实很简单(当然需要你对http请求有一定了解)。看不懂也没关系,本文将大致讲解一下常用字段。防火墙支持的字段比一般编程语言更多,基于应用层+网络层。

基础字段

  • AS Num​ 通常缩写为asn,指的是某一个IP管理系统所分配到的IP,如果你看到大量恶意请求来自同一个asn,那就可以对这个asn直接做处理,亦或者你想屏蔽某IDC机房,也可以直接查到他的asn号。 可以用在线工具来查询 asn,例如 ipip.net https://tools.ipip.net/as.php;也可以下载一个离线库来查询某IP的asn信息,例如 https://iptoasn.com/
  • Cookie​ 服务端用来标识用户身份的手段,如果不了解,就不用做处理。
  • Country​ 访客IP对应的国家,可以用来做访客区域限制。
  • Hostname​ 访问的主机名,也就是域名。因为CF是域名接入,子域名也会走这一段,如果你需要针对某子域名写规则,则需要用到这个字段。
  • IP Address​ 访客IP地址。
  • Referer​ 页面来源,详情可以看 百度百科,可以做防盗链,也可以限制API不被滥用。
  • Request Method​ 页面请求方式,GET、POST、HEAD等这些。我们都知道,POST请求是不被缓存的,所以可能会被坏人利用这一手段来进行CC攻击。所对应的防御手段就是在不需要使用其他请求方式的时候只开启GET。
  • SSL/HTTPS​ 是否启用SSL。
  • URI Full​ 页面完整地址。获取到的是这个 https://www.baidu.com/s?ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9
  • URI​ 页面地址。如果上面的URL,只能获取到 /s?ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9 ,也就是去掉了协议+主机名。
  • URI PATH​ 页面路径。上面基础再去掉请求参数,获取到 /s
  • URI Query String​ 请求参数。获取到的就是 ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9
  • HTTP Version​ HTTP版本。不常用。
  • User Agent​ 用户代理,缩写为UA。可以用来屏蔽掉非正常用户。这里我用来屏蔽一些程序访问,例如 (http.user_agent contains "curl") or (http.user_agent contains "requests") or (http.user_agent contains "python") or (http.user_agent contains "php") or (http.user_agent contains "java") or (http.user_agent contains "urllib") or (http.user_agent contains "Java") or (http.user_agent contains "Ruby") or (http.user_agent contains "Go-http-client") or (not http.user_agent contains "/")
  • X-Forwarded-For​ XFF头,使用了代理或者CDN后常添加到这里。详见百度百科
  • Known Bots​ 已知爬虫。这里是CF已知的搜索引擎爬虫,我们可以用它来给搜索引擎爬虫加白。
  • Threat Score​ 风险指数、安全分数。可选为0-100,0为最低。越大表示该IP风险越高。

基本逻辑

可以看这里 https://developers.cloudflare.com/firewall/cf-firewall-rules/fields-and-expressions/,基本类同于程序语法。

相应动作

ActionDescription
BypassAllows user to dynamically disable Cloudflare security features for a requestAvailable to all plansMatching requests exempt from evaluation by a user-defined list containing one or more of the following Cloudflare Firewall products/features:User-agent BlockingBrowser Integrity CheckHotlinking ProtectionSecurity Level (IP Reputation)Rate LimitingZone Lockdown (PRO, BIZ, ENT)WAF Managed Rules (PRO, BIZ, ENT)Requests which match the Bypass action are still subject to evaluation (and thus a challenge or block) within Firewall Rules, based on the order of execution.To stop a bypassed request from further evaluation within Firewall Rules, you must create a new rule using the same expression and the Allow action immediately below the Bypass rule.//让请求不受某条规则的限制
AllowMatching requests are exempt from challenge and block actions triggered by other Firewall Rules content.The scope of the Allow action is limited to Firewall Rules; matching requests are not exempt from action by other Cloudflare Firewall products, such as IP Access Rules, WAF, etc.Matched requests will be mitigated if they are part of a DDoS attack.//允许该请求
Challenge (Captcha)Useful for ensuring that the visitor accessing the site is human, not automatedThe client that made the request must pass a Captcha Challenge.If successful, Cloudflare accepts the matched request; otherwise, it is blocked.//输入验证码
JS ChallengeUseful for ensuring that bots and spam cannot access the requested resource; browsers, however, are free to satisfy the challenge automatically.The client that made the request must pass a Cloudflare Javascript Challenge before proceeding.If successful, Cloudflare accepts the matched request; otherwise, it is blocked.//五秒盾
BlockMatching requests are denied access to the site.//直接阻止访问

完整可以看这里 <https://developers.cloudflare.com/firewall/cf-firewall-rules/actions/ >。

开始实战

​ 下面介绍我是如何写的,由于博客是纯静态的,所以我并不担心会出现服务器被入侵的问题。所以我编写的规则大部分是针对恶意(非真实)用户的拦截。

  • 屏蔽掉自动化/程序访问,这里我直接选择block(http.user_agent contains "curl") or (http.user_agent contains "requests") or (http.user_agent contains "python") or (http.user_agent contains "php") or (http.user_agent contains "java") or (http.user_agent contains "urllib") or (http.user_agent contains "Java") or (http.user_agent contains "Ruby") or (http.user_agent contains "Go-http-client") or (not http.user_agent contains "/")
  • 验证可能存在风险的请求,选择Challenge (Captcha)(由于我的博客不需要接收传参,也不需要其他类型请求。如果你不是纯静态,请加白名单!!!)(http.request.full_uri contains "?") or (http.request.method ne "GET") or (cf.threat_score gt 10)
  • 放行已知蜘蛛,选择Allow(cf.client.bot)
通过WHM面板启用allow_url_fopen

通过WHM面板启用allow_url_fopen

PHP是开发人员用来构建网站的脚本语言。“ url_fopen”是指PHP指令,允许从外部来源包含文件。通过启用allow_url_fopen,将为服务器上托管的所有域带来安全风险。
-转到WHM面板
-搜索MultiPHP INI编辑器
-选择编辑器模式,然后在编辑 PHP版本的INI设置中选择php版本
-搜索allow_url_fopen,将其设置为On,如下所示:
注意:如果您的网站不需要’allow_url_fopen ‘您可以简单地将该指令设置为’ Off ‘。
Allow_url_fopen:开启
然后保存更改,然后重新启动Apache服务器以使更改生效。

希望本文对您有所帮助!