自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Mod_Security和Mod_evasive模塊保護(hù)Apache

譯文
安全 網(wǎng)站安全
mod_security和mod_evasive是兩種非常重要的工具,它們可以用來保護(hù)Web服務(wù)器遠(yuǎn)離蠻力攻擊或分布式拒絕服務(wù)(DDoS)攻擊。mod_security是一種面向Web應(yīng)用程序的開源入侵檢測(cè)和預(yù)防引擎,它與Web服務(wù)器無縫地整合起來。

對(duì)于從事主機(jī)托管行業(yè)的人士來說,或者如果你托管自己的服務(wù)器,并將服務(wù)器暴露在互聯(lián)網(wǎng)面前,那么保護(hù)系統(tǒng)遠(yuǎn)離攻擊者肯定是重中之重。

mod_security和mod_evasive是兩種非常重要的工具,它們可以用來保護(hù)Web服務(wù)器遠(yuǎn)離蠻力攻擊或分布式拒絕服務(wù)(DDoS)攻擊。mod_security是一種面向Web應(yīng)用程序的開源入侵檢測(cè)和預(yù)防引擎,它與Web服務(wù)器無縫地整合起來。

顧名思義,mod_evasive提供了規(guī)避功能;另外在遭到攻擊時(shí),還能充當(dāng)保護(hù)傘,保護(hù)Web服務(wù)器遠(yuǎn)離這種威脅。

安裝Mod_Security和Mod_Evasive來保護(hù)Apache

安裝Mod_Security和Mod_Evasive來保護(hù)Apache

我們?cè)诒疚闹袑⒂懻撊绾卧赗HEL/CentOS 6和7以及Fedora 21-15上安裝、配置這兩個(gè)模塊,并讓它們與Apache協(xié)同運(yùn)行。此外,我們會(huì)模擬攻擊,以便證實(shí)服務(wù)器作出相應(yīng)的反應(yīng)。

本文假設(shè)你已在系統(tǒng)上安裝了LAMP服務(wù)器。要是還沒有安裝,請(qǐng)?jiān)陂_始下一步之前參閱這篇文章《在RHEL/CentOS 7中安裝LAMP架構(gòu)》:http://www.tecmint.com/install-lamp-in-centos-7/。

如果你在運(yùn)行RHEL/CentOS 7或Fedora 21,還需要將iptables設(shè)置為默認(rèn)防火墻前端,而不是將firewalld設(shè)置為默認(rèn)防火墻前端。我們這么做是為了在RHEL/CentOS 7/6和dora 21中都使用同一個(gè)工具。

第一步:將Iptables防火墻安裝到RHEL/CentOS 7和Fedora 21上

想開始入手,先停止并禁用firewalld:

# systemctl stop firewalld

# systemctl disable firewalld

Iptables防火墻

禁用Firewalld服務(wù)

然后,在啟用iptables之前,安裝iptables-services程序包:

# yum update && yum install iptables-services

# systemctl enable iptables

# systemctl start iptables

# systemctl status iptables

使用Mod_Security和Mod_evasive模塊保護(hù)Apache

安裝Iptables防火墻#p#

第二步:安裝Mod_Security和Mod_evasive

除了已經(jīng)部署到位的LAMP架構(gòu)外,你還要啟用RHEL/CentOS 7/6中的EPEL軟件庫(kù),那樣才能安裝這兩個(gè)程序包。Fedora用戶不需要啟用任何軟件庫(kù),因?yàn)閑pel早已是Fedora項(xiàng)目的一部分。

# yum update && yum install mod_security mod_evasive

安裝完畢后,你可以在/etc/httpd/conf.d中找到這兩個(gè)工具的配置文件。

# ls -l /etc/httpd/conf.d

mod_security和mod_evasive的配置

mod_security和mod_evasive的配置

現(xiàn)在,為了將這兩個(gè)模塊與Apache整合起來,并且在Apache啟動(dòng)時(shí)讓它裝入這兩個(gè)模塊,就要確保下面幾行分別出現(xiàn)在mod_evasive.conf和mod_security.conf的頂層部分:

LoadModule evasive20_module modules/mod_evasive24.so

LoadModule security2_module modules/mod_security2.so

請(qǐng)注意:modules/mod_security2.so和modules/mod_evasive24.so是相對(duì)路徑,從/etc/httpd目錄到模塊的源文件。你可以列出/etc/httpd/modules目錄的內(nèi)容對(duì)此加以證實(shí)(需要的話,還可以更改):

# cd /etc/httpd/modules

# pwd

# ls -l | grep -Ei '(evasive|security)'

證實(shí)mod_security和mod_evasive模塊

證實(shí)mod_security和mod_evasive模塊

然后重啟Apache,證實(shí)它裝入了mod_evasive和mod_security:

# service httpd restart   [On RHEL/CentOS 6 and Fedora 20-18]

# systemctl restart httpd [On RHEL/CentOS 7 and Fedora 21]

[Dump a list of loaded Static and Shared Modules]

# httpd -M | grep -Ei '(evasive|security)'

檢查已裝入的mod_security和mod_evasive模塊

檢查已裝入的mod_security和mod_evasive模塊#p#

第三步:安裝核心規(guī)則集和配置Mod_Security

簡(jiǎn)單地說,核心規(guī)則集(又叫CRS)為Web服務(wù)器提供了在某些情況下如何運(yùn)行的指令。開發(fā)mod_security的公司提供了一套免費(fèi)的CRS,名為OWASP(開放式Web應(yīng)用安全項(xiàng)目)ModSecurity CRS,可以下載并安裝,具體如下所示。

1. 將OWASP CRS下載到一個(gè)專門為此而建立的目錄。

# mkdir /etc/httpd/crs-tecmint

# cd /etc/httpd/crs-tecmint

# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master

下載mod_security核心規(guī)則

下載mod_security核心規(guī)則

2. 解壓CRS文件,將目錄名稱改成便于我們使用的一個(gè)名稱。

# tar xzf master

# mv SpiderLabs-owasp-modsecurity-crs-ebe8790 owasp-modsecurity-crs

抽取mod_security核心規(guī)則

抽取mod_security核心規(guī)則

3. 現(xiàn)在可以配置mod_security了。將擁有規(guī)則的樣本文件(owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example)拷貝到?jīng)]有.example擴(kuò)展名的另一個(gè)文件中。

# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf

并告訴Apache使用這個(gè)文件以及模塊,為此只要在Web服務(wù)器的主配置文件/etc/httpd/conf/httpd.conf文件中插入下面幾行。如果你選擇在另一個(gè)目錄中解壓tarball,就需要編輯Include指令后面的路徑:

Include crs-tecmint/owasp-modsecurity-crs/modsecurity_crs_10_setup.conf

Include crs-tecmint/owasp-modsecurity-crs/base_rules/*.conf

 

最后,我們建議:應(yīng)該在/etc/httpd/modsecurity.d目錄里面創(chuàng)建自己的配置文件,我們將把定制的指令放在該文件(我們?cè)谙旅娴睦訉⑽募麨閠ecmint.conf)里面,而不是直接改動(dòng)CRS文件。這么一來,新版本發(fā)布后,更容易升級(jí)CRS。

SecRuleEngine On

SecRequestBodyAccess On

SecResponseBodyAccess On

SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream

SecDataDir /tmp

 

你可以參閱SpiderLabs的ModSecurity GitHub軟件庫(kù)(https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Configuration_Directives),了解mod_security配置指令的完整的解釋性指南。#p#

第四步:配置Mod_Evasive

mod_evasive使用/etc/httpd/conf.d/mod_evasive.conf中的指令來配置。與mod_security不同,由于在程序包升級(jí)期間沒有規(guī)則要更新,我們不需要單獨(dú)的文件來添加定制的指令。

默認(rèn)的mod_evasive.conf文件啟用了下列指令(請(qǐng)注意該文件添加了大量注釋,于是我們?nèi)コ俗⑨專攸c(diǎn)突出下列配置指令):

DOSHashTableSize 3097

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

 

指令解釋:

•DOSHashTableSize:該指令指定了用來根據(jù)每個(gè)IP地址跟蹤活動(dòng)的哈希表的大小。增加這個(gè)值可以更快速地查詢客戶機(jī)在過去訪問過的網(wǎng)站,但要是該值設(shè)得過高,可能會(huì)影響總體性能。

•DOSPageCount:訪客在DOSPageInterval間隔期間內(nèi)對(duì)某個(gè)特定URI(比如,Apache服務(wù)的任何文件)提出的合法的相同請(qǐng)求數(shù)量。

•DOSSiteCount:類似于DOSPageCount,不過是指在DOSSiteInterval間隔期間內(nèi)對(duì)整個(gè)網(wǎng)站能提出多少整體請(qǐng)求。

•DOSBlockingPeriod:如果訪客超過了DOSSPageCount或DOSSiteCount設(shè)置的限值,其源IP地址在DOSBlockingPeriod時(shí)間段內(nèi)將被列入黑名單。在DOSBlockingPeriod期間,來自該IP地址的任何請(qǐng)求將遇到403禁止錯(cuò)誤。

可以隨意嘗試這些值,以便你的Web服務(wù)器能夠處理所需要的流量數(shù)量和類型。

只是有一個(gè)小地方需要注意:要是這些值沒有設(shè)置好,有可能最后阻攔合法訪客。

你可能還應(yīng)該考慮其他有用的指令:

DOSEmailNotify

如果你已經(jīng)在運(yùn)行一臺(tái)郵件服務(wù)器,可以通過Apache發(fā)送警告信息。請(qǐng)注意:如果SELinux被設(shè)置成執(zhí)行,你需要為apache用戶授予SELinux許可權(quán)限,以便發(fā)送電子郵件。為此,你可以運(yùn)行下面這個(gè)命令:

# setsebool -P httpd_can_sendmail 1

下一步,將該指令連同其他指令一并添加到mod_evasive.conf文件中:

DOSEmailNotify you@yourdomain.com

如果該值已設(shè)置好,而且你的郵件服務(wù)器正常運(yùn)行,一旦某個(gè)IP地址被列入黑名單,電子郵件就會(huì)被發(fā)送到指定的地址。

DOSSystemCommand

這需要有效的系統(tǒng)命令作為變量,

DOSSystemCommand

該指令指定了IP地址被列入黑名單后所執(zhí)行的命令。它常常與添加防火墻規(guī)則以阻止今后從該IP地址來進(jìn)行連接的外殼腳本結(jié)合使用。

編寫在防火墻層面處理IP黑名單機(jī)制的外殼腳本

某個(gè)IP地址被列入黑名單后,我們就要阻止今后來自它的連接。我們要使用執(zhí)行這項(xiàng)任務(wù)的下列外殼腳本。在/usr/local/bin中創(chuàng)建一個(gè)名為scripts-tecmint的目錄(名稱可以隨意取),并在該目錄中創(chuàng)建一個(gè)名為ban_ip.sh的文件。

#!/bin/sh

# IP that will be blocked, as detected by mod_evasive

IP=$1

# Full path to iptables

IPTABLES="/sbin/iptables"

# mod_evasive lock directory

MOD_EVASIVE_LOGDIR=/var/log/mod_evasive

# Add the following firewall rule (block all traffic coming from $IP)

$IPTABLES -I INPUT -s $IP -j DROP

# Remove lock file for future checks

rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP"

我們的DOSSystemCommand指令應(yīng)該如下所示:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

在上面這行中,%s代表被mod_evasive檢測(cè)出來的冒犯性的IP。

將apache用戶添加到sudoers文件

請(qǐng)注意:除非你為用戶apache授予無需終端和密碼即可運(yùn)行腳本(只有這個(gè)腳本!)的權(quán)限,否則這一切根本不管用。如往常一樣,你只要鍵入visudo作為根用戶,即可訪問/etc/sudoers文件,然后添加下面兩行,如下圖所示:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh

Defaults:apache !requiretty

添加Apache用戶到Sudoers

添加Apache用戶到Sudoers

重要提示:作為一項(xiàng)默認(rèn)的安全策略,你只能在終端中運(yùn)行sudo。由于在這里我們需要使用不帶tty的sudo,我們只好注釋掉下圖中高亮顯示的那一行:

#Defaults requiretty

為Sudo禁用tty

為Sudo禁用tty

最后,重啟Web服務(wù)器:

# service httpd restart   [On RHEL/CentOS 6 and Fedora 20-18]

# systemctl restart httpd [On RHEL/CentOS 7 and Fedora 21]

#p#

第五步:在Apache上模擬DDoS攻擊

你可以使用幾個(gè)工具在自己的服務(wù)器上模擬外部攻擊。只要在谷歌搜索引擎上輸入“tools for simulating ddos attacks”,即可找到其中的幾個(gè)工具。

請(qǐng)注意:你要對(duì)模擬的結(jié)果完全負(fù)責(zé)。想對(duì)不在自己的網(wǎng)絡(luò)上托管運(yùn)行的服務(wù)器發(fā)動(dòng)模擬攻擊,勸你莫?jiǎng)舆@個(gè)念頭。

如果你想對(duì)別人托管的虛擬專用服務(wù)器(VPS)進(jìn)行同樣的模擬攻擊,就需要以適當(dāng)?shù)姆绞教嵝阎鳈C(jī)托管提供商,或者獲得許可,以便這種洪水流量可以通過其網(wǎng)絡(luò)來傳輸。我們Tecmint.com絕對(duì)不對(duì)你的行為負(fù)責(zé)!

此外,只從一個(gè)主機(jī)發(fā)動(dòng)模擬的拒絕服務(wù)攻擊并不代表是現(xiàn)實(shí)的攻擊。想模擬這種攻擊,你就需要同時(shí)從幾個(gè)客戶機(jī)向你的服務(wù)器發(fā)動(dòng)攻擊。

我們的測(cè)試環(huán)境包括一臺(tái)CentOS 7服務(wù)器 [IP 192.168.0.17]和一個(gè)Windows主機(jī)[IP 192.168.0.103],我們將從該主機(jī)發(fā)動(dòng)攻擊:

證實(shí)主機(jī)的IP地址

證實(shí)主機(jī)的IP地址

請(qǐng)播放下列視頻,按照概述的步驟來操作,以模擬簡(jiǎn)單的拒絕服務(wù)攻擊:

然后,冒犯性的IP地址被iptables阻攔:

被阻攔的攻擊IP地址

被阻攔的攻擊IP地址

結(jié)束語

mod_security和mod_evasive被啟用后,模擬的攻擊導(dǎo)致處理器和內(nèi)存暫時(shí)出現(xiàn)使用高峰,不過只持續(xù)了幾秒,隨后源IP地址被列入黑名單,并被防火墻阻攔。要是沒有這些工具,模擬攻擊勢(shì)必會(huì)很快擊 垮服務(wù)器,導(dǎo)致服務(wù)器在攻擊持續(xù)時(shí)段內(nèi)無法使用。

要是你打算使用(或者過去用過)這些工具,我們很高興。我們總是期盼你也使用這些工具,歡迎留言交流。

原文地址:http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-fedora/

責(zé)任編輯:藍(lán)雨淚 來源: 51CTO.com
相關(guān)推薦

2014-09-29 09:01:33

2021-02-04 12:06:03

HTTPDRust服務(wù)器

2009-06-10 13:43:05

mod_jk整合Apa

2010-05-31 18:35:22

訪問SVN

2009-07-23 15:49:21

mod_aspdotnApache支持ASP

2023-11-22 08:41:49

CSS前端

2021-08-30 15:23:03

prometheus局限性cortex

2009-07-23 15:23:53

Apache支持ASPmod_aspdotn

2009-10-28 10:24:26

2010-02-01 11:12:27

mod_python模

2012-03-14 11:30:45

ibmdw

2023-12-27 19:52:08

Go模塊命令

2015-10-12 09:13:02

PHPFastCGI mod_php

2010-02-26 09:03:10

mod_python模

2022-08-08 08:48:15

Go版本偽版本

2021-03-01 18:48:21

Go管理工具

2010-05-31 19:02:17

訪問SVN

2010-03-24 18:22:21

mod_python

2013-10-14 15:35:46

CentOSLNMPCentmin Mod

2011-03-11 17:14:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)