在Ubuntu 18.04、16.04上設置ParseDMARC來分析DMARC報告

ParseDMARC是一個開源的,自託管的DMARC報告分析器。 對於那些不知道的人,DMARC是一種電子郵件安全標準,可以保護您的域名免受電子郵件欺騙,還可以識別傳入的欺騙電子郵件以保護最終用戶。 在上一篇文章中,我們討論了如何為您的域名創建DMARC DNS記錄,在本教程中,我們將在Ubuntu 18.04 / 16.04服務器上設置ParseDMARC,以便我們可以分析DMARC報告。

先決條件

假定您已經為域名創建了DMARC DNS記錄。

為了生成可視化數據,ParseDMARC依賴於Elasticsearch和Kibana,兩者都佔用大量RAM。 安裝後,它們將使用大約2G的RAM,並且需要更多的RAM來處理數據。 因此,您需要一台至少具有3G RAM的服務器。 您可以單擊此特殊鏈接,以在DigitalOcean上獲得$ 100的免費信用。 (僅適用於新用戶)。 如果您已經是DigitalOcean用戶,則可以單擊此特殊鏈接以在Vultr上獲得$ 50的免費信用(僅適用於新用戶)。 在DigitalOcean或Vultr上擁有帳戶後,請在服務器上安裝Ubuntu 18.04或16.04,然後按照以下說明進行操作。

在Ubuntu 18.04或Ubuntu 16.04上安裝ParseDMARC

ParseDMARC是一個Python程序,可以從PyPI(Python軟件包索引)軟件存儲庫中安裝。 首先,我們需要在Ubuntu 18.04 / 16.04上安裝Python軟件包安裝程序。 在以下命令中,我們安裝了 python3-pip 軟件包,因為ParseDMARC只能與Python 3一起使用。 geoipupdate 軟件包用於更新MaxMind GeoIP數據庫。

sudo apt install python3-pip geoipupdate

然後使用以下命令安裝最新穩定版本的ParseDMARC。

sudo -H pip3 install -U parsedmarc

查看有關 parsedmarc 包,您可以運行

pip3 show -f parsedmarc

要查看命令行選項,請運行

parsedmarc --help

在Ubuntu 18.04 / 16.04上安裝Elasticsearch和Kibana

ParseDMARC是一個命令行程序,它產生難以讀取的輸出。 如果要在基於Web的界面中查看可視化的DMARC報告,則需要安裝其他兩個開源程序: ElasticsearchKibana。 Elasticsearch是一個搜索和分析引擎,Kibana允許用戶在Elasicsearch中使用圖表將數據可視化。

我們可以使用以下命令從官方存儲庫安裝Elasticsearch和Kibana。 Elasticsearch是用Java編程語言編寫的,因此我們還安裝了 default-jre-headless (Java運行時環境)包中的最後一個命令。

sudo apt-get install -y apt-transport-https

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

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

sudo apt-get update

sudo apt-get install -y default-jre-headless elasticsearch kibana

默認情況下,Elasticsearch systemd服務被禁用。 您可以使用以下命令啟動並啟用它。

sudo systemctl start elasticsearch

sudo systemctl enable elasticsearch

然後檢查狀態。

systemctl status elasticsearch

我們可以看到它現在已啟用並正在運行。 (提示:如果此命令沒有立即退出,請按Q退出。)

我們還需要對Kibaba做同樣的事情。

sudo systemctl start kibana

sudo systemctl enable kibana

檢查狀態。

systemctl status kibana

Parsedmarc Kibana

為Kibana設置Nginx反向代理

Kibana Web服務器監聽 127.0.0.1:5601。 我們可以使用Nginx設置反向代理,以允許遠程訪問並保護Kibana Web界面。 運行以下命令從Ubuntu 18.04、16.04存儲庫安裝Nginx。

sudo apt install nginx

為Kibana創建一個Nginx虛擬主機文件。

sudo nano /etc/nginx/conf.d/kibana.conf

將以下行放入文件中。 根據需要替換佔位符,並且您應該為子域創建DNS A記錄。

server {
      listen 80;
      server_name dmarc.yourdomain.com;

      access_log /var/log/nginx/dmarc.access;
      error_log /var/log/nginx/dmarc.error;

      add_header X-Frame-Options SAMEORIGIN; 
      add_header X-Content-Type-Options nosniff;

      location / {
         proxy_pass http://127.0.0.1:5601;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

保存並關閉文件。 然後測試Nginx配置。

sudo nginx -t

如果測試成功,請重新加載Nginx以使更改生效。

sudo systemctl reload nginx

現在,您可以在以下位置訪問Kibana儀錶板 dmarc.yourdomain.com。 點擊 Explore on my own 按鈕。

dmarc報告分析器開源

啟用HTTPS

為了在您通過域名訪問Kibana儀錶板時對HTTP流量進行加密,我們可以通過安裝由Let’s Encrypt發行的免費TLS證書來啟用HTTPS。 運行以下命令在Ubuntu 18.04、16.04服務器上安裝Let’s Encrypt客戶端(certbot)。

sudo apt install certbot

如果使用Nginx,則還需要安裝Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下來,運行以下命令以獲取並安裝TLS證書。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d dmarc.yourdomain.com

現在應該獲得證書並自動安裝。

自託管dmarc分析儀

限制訪問Kibana儀錶板

默認情況下,Kibana不提供用戶身份驗證。 為了僅允許受信任的用戶訪問Kibana儀錶板,我們可以在Nginx中啟用HTTP基本身份驗證。 首先,我們需要安裝 apache2-utils 提供以下內容的軟件包 htpasswd 密碼文件創建工具。

sudo apt install apache2-utils

然後運行以下命令來創建 admin 用戶。 您將需要設置密碼。

sudo htpasswd -c /etc/nginx/htpasswd admin

接下來,編輯Kibana虛擬主機文件。

sudo nano /etc/nginx/conf.d/kibana.conf

將以下兩行添加到 listen 443 ssl 服務器塊。

auth_basic "Login required";
auth_basic_user_file /etc/nginx/htpasswd;

保存並關閉文件。 然後測試Nginx配置。

sudo nginx -t

如果測試成功,請重新加載Nginx以使更改生效。

sudo systemctl reload nginx

現在,您在網絡瀏覽器中重新加載了Kibana儀錶板,然後將要求您輸入用戶名和密碼。

kibana HTTP基本認證

配置ParseDMARC

為了使用ParseDMARC並將數據發送到Elastisearch,我們需要創建一個配置文件。

sudo nano /etc/parsedmarc.ini

將以下行放入文件中。 如有必要,請更換臨時持有人。

[general]
# Save aggregate and forensic reports to Elasticsearch
save_aggregate = True
save_forensic = True

[imap]
# Log into the DMARC report email address and download data.
host = mail.yourdomain.com
port = 993
ssl = True
user = [email protected]
password = your_password_here
watch = True

[elasticsearch]
# Send data to Elastichsearch, which listens on port 9200.
hosts = 127.0.0.1:9200
ssl = False

[smtp]
# For sending email
host = mail.yourdomain.com
port = 587
ssl = True
user = [email protected]
password = your_password_here
from = [email protected]

# send results to this address
to = [email protected]

保存並關閉文件。

將ParseDMARC作為系統服務運行

我們可以手動運行ParseDMARC parsedmarc -c /etc/parsedmarc.ini (暫時不要運行此命令),但是在後台將ParseDMARC作為systemd服務運行更為方便。 使用以下命令為ParseDMARC創建系統服務單元文件。

sudo nano /etc/systemd/system/parsedmarc.service

將以下行放入文件中。

[Unit]
Description=parsedmarc mailbox watcher
Documentation=https://domainaware.github.io/parsedmarc/
Wants=network-online.target
After=network.target network-online.target elasticsearch.service

[Service]
ExecStart=/usr/local/bin/parsedmarc -c /etc/parsedmarc.ini
User=parsedmarc
Group=parsedmarc
Restart=always
RestartSec=5m

[Install]
WantedBy=multi-user.target

保存並關閉文件。 該系統服務將以 parsedmarc 用戶,因此我們需要使用以下命令創建用戶。

sudo adduser --system --no-create-home --group parsedmarc

我們還需要保護 /etc/parsedmarc.ini 文件,因此只有root和 parsedmarc 群組用戶可以閱讀。

sudo chown parsedmarc /etc/parsedmarc.ini

sudo chmod 600 /etc/parsedmarc.ini

ParseDMARC將需要將MaxMind GeoIP數據庫下載到 /usr/share/elasticsearch/modules/ingest-geoip 目錄,所以 parsedmarc 用戶需要具有寫權限。

sudo setfacl -R -m "u:parsedmarc:rwx" /usr/share/elasticsearch/modules/ingest-geoip/

現在,我們可以啟動並啟用parsedmarc systemd服務。

sudo systemctl start parsedmarc

sudo systemctl enable parsedmarc

檢查狀態。

systemctl status parsedmarc

parsedmarc系統服務

ParseDMARC將開始從報告電子郵件地址獲取DMARC報告,並將其發送到Elasticsearch進行分析。 如果您有很多DMARC報告電子郵件,請耐心等待ParseDMARC完成其工作。

如果 parsedmarc 服務未處於活動狀態(正在運行),您可以運行以下命令查看問題所在。

sudo journalctl -eu parsedmarc

在Kibana中導入ParseDMARC對象

要將Kibana儀錶板與ParseDMARC一起使用,首先需要導入ParseDMARC對象。 您可以使用以下命令將其下載到本地Linux或Mac計算機上。

wget https://raw.githubusercontent.com/domainaware/parsedmarc/master/kibana/export.ndjson

如果您使用Windows,則只需複製https鏈接並將其粘貼到瀏覽器地址欄中即可下載數據。

然後在Elastic Home頁面中,單擊Kibana以訪問Kibana儀錶板。

彈性kibana儀錶板

然後在Kibana儀錶板中,單擊 Add your data 按鈕。

在Kibana儀錶板中添加數據

接下來,選擇 Saved Objects 然後點擊 Import 按鈕導入您下載的ParseDMARC對象。 導入parsedmarc kibana對象

分析Kibana中的DMARC報告

一旦ParseDMARC systemd服務完成電子郵件的閱讀,DMARC報告數據將顯示在Kibana中。 我認為最有用的報告是DMARC摘要。 您可以通過以下方式進行檢查 Saved Objects -> DMARC Summary 然後點擊 view Dashboard 按鈕。 您可以使用DMARC摘要進行的最有用的操作是識別未通過DMARC檢查的合法來源。

  1. 篩選結果以僅顯示未通過DMARC的消息。
  2. 然後,您可以查看郵件的處理方式(接收電子郵件服務器如何處理它們:什麼也不做,放入垃圾郵件文件夾或拒絕它們)。
  3. 向下滾動以查看SPF對齊方式和DKIM對齊方式詳細信息,以確定某些合法源未能通過DMARC檢查的原因。

如果發件人不包括DKIM簽名或沒有反向DNS記錄,則顯然是垃圾郵件。

DKIM對齊詳細信息

讓我感到驚訝的是,某些郵箱提供商在轉發我的合法電子郵件時會在DKIM簽名中使用他們自己的域名。 其他郵箱提供商在DKIM簽名中使用我的域名,但DKIM對齊仍然失敗。 要進一步調查原因,您可以檢查各個取證報告。

結論

我希望本教程可以幫助您在Ubuntu 18.04和Ubuntu 16.04上設置ParseDMARC來分析DMARC報告。 與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂

Sidebar