Kate Li (Taiwan)的部落格

首頁

檢測攻擊的基礎日誌服務器part 1:服務器設定

作者 lace 時間 2020-03-14
all

寫在前面的話

在今年年初的時候我有個改進我的基礎設施日誌管理系統的想法。但是到現在,我的日誌管理科技還是僅限於打開終端,連接SSH,然後處理我的基礎設施資產,並對我感興趣的日誌檔進行了跟踪。但是直到我閱讀Jeff Dimmock和Steve Borosh寫的這篇偉大的博客文章之後。我腦子裏的一個小聲音一直嘮叨著要我應該做點什麼。

這個博客文章系列將成為建立集中基礎設施日誌記錄、監控和警報的指南。但是這是個非常廣泛的話題,我不可能涵蓋全部(表示自己很菜),但我還是希望可以給需要的人提供一些幫助。

本系列主要內容:

第1部分:記錄服務器設定

第2部分:日誌聚合

第3部分:Graylog儀錶板101

第4部分:日誌事件警報

在本系列的最後,我們最終會打造下圖所示的日誌記錄設定:

說實話,常規的滲透測試並不需要太多的精力投資在設定基礎設施或日誌管理。但是,如果您參與長期(幾個月/幾年)建立基礎架構的項目,那就應該投入更多時間來設定集中式日誌記錄,我認為有以下原因:

1.監督運營-集中式日誌記錄可以讓你隨時查看正在進行的操作:成功的網路釣魚、有效載荷下載、潜在的事件響應活動、對您的資產的攻擊等等。有了這個監督,你就可以立即對事件做出反應,甚至可以調整你的戰術。例如,你的日誌提醒告訴你,你的有效載荷在過去的8小時內被下載了10次,而你還沒有得到一個shell。

2.報告—良好的日誌會提高報告的質量。

3.提高便利性和效率——監控來自多個基礎設施資產的日誌是很痛苦的一件事。配寘了定制快速統計和警報可以為我節省了大量時間和精力。

4.問責制——你應該知道並掌握你所負責的任務的相關證明。

5.安全——因為互聯網是黑暗和充滿恐懼的。藍色團隊正在監視他們的基礎設施日誌,以瞭解异常情况和惡意活動的迹象,你為什麼不能呢?

設定日誌記錄服務器

Graylog2:

我有幾個理由說明為什麼不使用PLENTY而使用Graylog2作為集中整個系列部落格日誌服務器,

1.它是開源的,每天的日誌量少於5GB。對於一般的pentester/red teamer來說,這已經足够了。

2.記錄功能真的很好。

3.它有很多現成的功能,如果你想要添加功能,它還有很多額外的挿件可供選擇。

4.它支持Slack警報。

我將演示如何正確設定一個全新的Graylog日誌記錄服務器。

1.服務器要求:

Graylog有幾個條件,我將介紹安裝。一個服務器本身,雖然Graylog建立在ElasticSearch之上,僅需要2GB的RAM即可運行。如果你想擁有更好的體驗,我建議使用4GB的RAM,Graylog的檔案蓋了各種作業系統的安裝。我將使用

新的Debian 9系統作為演示。

2.先決條件:

Graylog具有以下依賴關係:

Java(> = 8)

MongoDB(> = 2.4)

Elasticsearch(> = 2.x)

讓我們開始安裝:#Javasudo apt update && sudo apt upgradesudo apt install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen

#Java
sudo apt update && sudo apt upgrade
sudo apt install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen

#mongodb sudo apt key adv--keyserver hkp://keyserver.ubuntu.com:80--recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5echo“deb http://repo.mongodb.org/apt/debian jessie/mongodb org/3.6 main”| sudo tee/etc/apt/sources.list.d/mongodb-org-3.6.listsudo apt get update和sudo apt get install-y dirmngr mongodb org

#MongoDB
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update && sudo apt-get install -y dirmngr mongodb-org

注:如果安裝MongoDB失敗,您可能要安裝libssl1.0.0套裝軟體。請將Debian的jessie-backports添加到您的/etc/apt/sources.list中:

# Jessie backportsdeb http://ftp.debian.org/debian jessie-backports main

# Jessie backports
deb http://ftp.debian.org/debian jessie-backports main
#Elasticsearch

wget-qO-https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt KEY add-

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo“deb https://artifacts.elastic.co/packages/5.x/apt stable main”| sudo tee-a/etc/apt/sources.list.d/elastic-5.x.list

echo“deb https://artifacts.elastic.co/packages/5.x/apt stable main”| sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

sudo apt get update和sudo apt get install elasticsearch

sudo apt-get update && sudo apt-get install elasticsearch

安裝ElasticSearch後,您需要修改ElasticSearch設定檔(/etc/elasticsearch/elasticsearch.yml);取消注釋cluster.name設定並將其命名為graylog。

最後,啟動所有必需的服務以啟動並重新啟動。

sudo systemctl daemon-reload

sudo systemctl daemon-reload
sudo systemctl enable mongod.service elasticsearch.service

sudo systemctl重新啟動mongod.service elasticsearch.service

sudo systemctl restart mongod.service elasticsearch.service

3.格雷洛格2:

Graylog供DEB包RPM儲wget https://packages.graylog2.org/repo/packages/Graylog-2.4-repository_latest.debsudo dpkg-i Graylog-2.4-repository_latest.debsudo apt get updatesudo apt get install Graylog server供

Graylog提供DEB和RPM包存储库。 wget https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.deb sudo dpkg -i graylog-2.4-repository_latest.deb sudo apt-get update sudo apt-get install graylog-server

4.配寘Graylog2:

所有Graylog的配寘都是從單個文件管理的;/etc/graylog/server/server.conf。在我們登入到Graylog的Web管理頁面之前,我們需要更改其中的一些設定。

記住在你要搞事之前,一定要備份設定檔;因為你永遠不知道什麼時候需要重新開始。

sudo cp /etc/graylog/server/server.conf /etc/graylog/server/server.conf.bak

sudo cp /etc/graylog/server/server.conf /etc/graylog/server/server.conf.bak

I)管理員用戶名:

你可以更改管理員的用戶名,默認是“admin”。

root_username = admin

root_username = admin

II)密碼:

您必須為密碼設定金鑰。如果沒有設定,Graylog將拒絕啟動。但這不是你的登入密碼。

首先,使用pwgen實用程式生成加密密碼(至少64個字元長):

pwgen -N 1 -s 96

pwgen -N 1 -s 96 password_secret = GENERATED_SECRET

III)root密碼的sha2:

接下來,您需要生成密碼的SHA2雜湊值,您將在首次登入到Graylog的Web介面時使用該密碼。您可以在首次登入後從儀錶板更改它。

生成管理員帳戶密碼的SHA2雜湊值:

echo -n yourpassword | sha256sum

echo -n yourpassword | sha256sum

將散列粘貼到root_password_sha2設定中:root_password_sha2 = PASSWORD_HASH

root_password_sha2 = PASSWORD_HASH

IV)網絡偵聽埠:

最後,如果您想使用默認9000以外的任何其他埠,則應啟用Web介面並更改其偵聽埠。取消注釋以下行並更改它們以匹配您希望可以訪問的任何埠Graylog的Web介面:

rest_listen_uri = http://0.0.0.0:9000/api/

rest_listen_uri = http://0.0.0.0:9000/api/

Web©UU URI=http://0.0.0.0:9000/API/

web_listen_uri = http://0.0.0.0:9000/api/

然後,您只需啟用並重新啟動Graylog服務即可。

sudo systemctl daemon-reloadsudo systemctl enable graylog-server.servicesudo service graylog-server restart登入到您的Web管理介面http:// [IP_ADDRESS]:9000 /

sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo service graylog-server restart
http:// [IP_ADDRESS]:9000 /

重要提示:下一步是可選的,但我建議不要跳過它。Graylog的Web介面和REST API默認使用HTTP,這意味著您的密碼和其他敏感數據以明文形式發送。下一步包括為您的Graylog安裝生成並添加自簽名HTTPS證書。

IV)安裝自簽名證書:

創建一個資料夾來管理你的證書到它:

sudo mkdir / etc / graylog / server / ssl

sudo mkdir / etc / graylog / server / ssl

cd/etc/graylog/server/ssl

cd / etc / graylog / server / ssl

在其中創建檔案“openssl-graylog.cnf”並填寫下麵的內容;定制它以滿足您的需求:

[req]

[req]

可分辨名稱=請求可分辨名稱

distinguished_name = req_distinguished_name

x509_擴展=v3_請求

x509_extensions = v3_req

提示=否

prompt = no #有关证书颁发者的详细信息

[請求專有名稱]

[req_distinguished_name]

C=美國

C = US

ST=紐約

ST = NY

L=紐約

L = NY

就是這樣。

O = Graylog

或=Graylog

OU = Graylog

CN=logger.graylog.com網站

CN = logger.graylog.com

[v3_要求]

[v3_req]

Keyusage=Keyenzipherment,Dataenciphent

keyUsage = keyEncipherment,dataEncipherment

extendedKeyUsage=服務器身份驗證

extendedKeyUsage = serverAuth

的名稱。

subjectAltName = @alt_names

#證書應包含的IP地址和DNS名稱#IP地址和DNS的IP地址### DNS名稱的###,“###”是連續的數。[alt_names]IP.1 = 127.0.0.1DNS.1 = logger.graylog.com

#证书应包含的IP地址和DNS名称#IP 地址和DNS的 IP地址### DNS名称的 ###,“###”是连续的数。
[alt_names]
IP.1 = 127.0.0.1
DNS.1 = logger.graylog.com
注: 请确保将配置文件中的'IP.1 = 127.0.0.1'值更改为Graylog服务器的IP地址。

1..PKCS 5MUTION=38053(-PKCS5-PLIN.PEM)

SUDO Openssl Req-X509-days 365-nodes-Newkey RSA:2048-conging opensl-graylog.cnf-keyout PKCS5-plain.pem-out graylog.crt

sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 -config openssl-graylog.cnf -keyout pkcs5-plain.pem -out graylog.crt

將您的PKCS#5私密金鑰到未加密的PKCS#8私密金鑰(graylog。鍵):

sudo openssl pkcs8 -in pkcs5-plain.pem -topk8 -nocrypt -out graylog.key

sudo openssl pkcs8 -in pkcs5-plain.pem -topk8 -nocrypt -out graylog.key

當使用HTTPS的Graylog REST API,X.509證書(graylog,CRT在這種情況下)必須信任由JVM信任存儲,否則通信將失敗。由於我們不想與官方信任存儲庫混淆,囙此我們將製作一份與我們的Graylog證書一起使用的副本。

sudo cp -a / usr / lib / jvm / java-8-openjdk-amd64 / jre / lib / security / cacerts / etc / graylog / server / ssl /sudo keytool -importcert -keystore / etc / graylog / server / ssl / cacerts -storepass changeit -alias graylog-self-signed -file /etc/ graylog/server/ssl/graylog.crt

sudo cp -a / usr / lib / jvm / java-8-openjdk-amd64 / jre / lib / security / cacerts / etc / graylog / server / ssl /
sudo keytool -importcert -keystore / etc / graylog / server / ssl / cacerts -storepass changeit -alias graylog-self-signed -file /etc/graylog/server/ssl/graylog.crt

證書現在應該可以使用了。編輯Graylog的設定檔(/etc/graylog/server/server.conf)並找到並更改下麵的設定:

#REST API設定

#REST API设置

Rest=Enable=U TLS=TRUE

rest_enable_tls = true

證書檔案的其餘部分=/etc/graylog/server/ssl/graylog.crt

rest_tls_cert_file = /etc/graylog/server/ssl/graylog.crt

脂肪鍵檔案的其餘部分=/etc/graylog/server/ssl/graylog.key

rest_tls_key_file = /etc/graylog/server/ssl/graylog.key

#Web介面設定

#Web界面设置

web_enable_tls=true


web_enable_tls = true

web=/etc/graylog/server/ssl/graylog.crt

web_tls_cert_file = / etc / graylog / server /ssl/graylog.crt

Web===/etc/graylog/server/ssl/graylog.key

web_tls_key_file = /etc/graylog/server/ssl/graylog.key

注:對於運行Graylog行程的系統用戶,證書和金鑰檔案需要可讀(644許可權對兩個檔案均可正常工作)。

我們完成了!只需重新啟動Graylog,並且您應該能够通過https:// [IP_ADDRESS]登入到您的管理控制台:9000 /

https:// [IP_ADDRESS]登录到您的管理控制台:9000 /

sudo服務graylog服務器重新啟動

sudo service graylog-server restart

如果您有任何登入問題,請參閱Graylog2的HTTPS安裝檔案和Graylog的日誌檔(/var/log/graylog-server/server.log)以進行故障排除。

自動化:

如果您完整安裝一遍,會發現安裝Graylog可能有點麻煩,所以我編寫了一個腳本來自動執行上述所有安裝步驟。

保護Graylog:

您應該瞭解將來自攻擊基礎架構的所有日誌集中在一個地方的風險。您聚合的日誌越多,日誌服務器攜帶的風險就越高;一個妥協可能會暴露你的整個操作。

下錶顯示了Graylog的默認偵聽埠:

一些簡單的防火牆規則可以保護您的Graylog安裝,特別是如果您使用VPN服務器來控制對攻擊基礎架構的管理埠的訪問時,可以發揮很大的作用。

以下是一些iptables規則示例,您可以將其應用於您的Graylog服務器以限制其攻擊面。

#默認策略

#默认策略

-P輸入下降


-P INPUT DROP

-P正向下降


-P FORWARD DROP

-P輸出接受

-P OUTPUT ACCEPT

#允許建立連接

#允许建立连接

-輸入-m狀態——狀態相關,已建立-j接受

-A INPUT -m状态--state RELATED,ESTABLISHED -j ACCEPT

#允許來自本地環回介面的流量

#允许来自本地环回接口的流量

輸入-i lo-j接受


-A INPUT -i lo - j ACCEPT

#僅允許來自特定IP地址的SSH連接,例如VPN

#仅允许来自特定IP地址的SSH连接,例如VPN

輸入-S[vpn \ u address]/32-p tcp-m tcp----dport 22-j accept


-A INPUT -s [ VPN_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 22 -j ACCEPT

#僅允許從特定IP地址連接到Graylog管理,例如VPN

#仅允许从特定IP地址连接到Graylog管理,例如VPN

輸入-S[vpn \ u address]/32-p tcp-m tcp---dport 9000-j accept


-A INPUT -s [ VPN_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 9000 -j ACCEPT

#僅允許來自攻擊基礎架構資產的Rsyslog通信(1行每個資產)

#仅允许来自攻击基础架构资产的Rsyslog通信(1行每个资产)
-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT

輸入-S[Asset \ \ u address]/32-p tcp-m tcp---dport 5140-j accept


-A INPUT -s [ ASSET_IP_ADDRESS] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT

輸入-S[Asset \ \ u address]/32-p tcp-m tcp---dport 5140-j accept


-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT

輸入-S[Asset \ \ u address]/32-p tcp-m tcp---dport 5140-j accept


-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 - p tcp -m tcp --dport 5140 -j ACCEPT

注意:上述規則集的最後一部分將在下一篇文章中詳細介紹。

結論:

我們的日誌記錄服務器已啟動並正在運行,下一篇文章將介紹如何從各種基礎架構資產中設定日誌的匯總。

參考文獻

https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki

https://bluescreenofjeff.com/2017-08-08-attack-infrastructure-log-aggregation-and-monitoring/

https://www.contextis.com/blog/logging-like-a-lumberjack

http://docs.graylog.org/en/2.4/index.html

http://docs.graylog.org/en/2.4/pages/configuration/server.conf.html

http://docs.graylog.org/en/2.4/pages/configuration/file_location.html#default-file-location

https://ashleyhindle.com/how-to-setup-graylog2-and-get-logs-into-it/

https://dodizzle.wordpress.com/2011/10/14/3-ways-to-push-data-to-graylog2/