云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

2019-04-22 08:53:08作者:浦洪稿源:云网牛站

ParseDMARC是一个开源的,自托管的DMARC报告分析器,在本教程中,我们将在Ubuntu 18.04/16.04服务器上设置ParseDMARC,以便我们分析DMARC报告。条件是:假设已为你的域名创建了DMARC DNS记录、为了生成可视化数据,ParseDMARC依赖于Elasticsearch和Kibana、安装后它们将使用大约2G RAM,并需要更多RAM来处理数据,所以你需要一台至少有3G RAM的服务器。

 

在Ubuntu 18.04或Ubuntu 16.04上安装ParseDMARC

ParseDMARC是一个Python程序,可以从PyPI(Python Package Index)软件库安装,首先,我们需要在Ubuntu 18.04/16.04上安装Python软件包安装程序,在以下命令中,我们安装python3-pip包,因为ParseDMARC只能使用Python 3(在CentOS 7/Ubuntu 16.04/Debian 9/macOS上安装Python 3.6的方法),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报告,则需要安装另外两个开源程序:Elasticsearch和Kibana,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退出):

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

我们还需要为Kibaba做同样的事情:

sudo systemctl start kibana

sudo systemctl enable kibana

检查状态:

systemctl status kibana

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

 

为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

现在,可以访问dmarc.yourdomain.com上的Kibana仪表板,单击Explore on my own按钮:

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

 

启用HTTPS

要通过域名访问Kibana仪表板来加密HTTP流量,我们可以通过安装Let's Encrypt的免费TLS证书来启用HTTPS,运行以下命令在Ubuntu 18.04、16.04服务器上安装Let的加密客户端(certbot):

sudo apt install certbot

参考:使用Certbot:在Linux上安装letsencrypt的最简单方法

如果你使用Nginx,那么你还需要安装Certbot Nginx插件:

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d dmarc.yourdomain.com

注:请注意修改成自己的数据。

现在应该获取并自动安装证书:

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

 

限制对Kibana仪表板的访问

默认情况下,Kibana不提供用户身份验证,仅允许受信任的用户访问Kibana仪表板,我们可以在Nginx中启用HTTP基本身份验证,首先,我们需要安装apache2-utils包,它提供了htpasswd密码文件创建工具:

sudo apt install apache2-utils

然后运行以下命令以创建管理员用户,需要设置密码:

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

现在,你在Web浏览器中重新加载Kibana仪表板,系统将要求你输入用户名和密码:

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

 

配置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 = dmarc@yourdomain.com

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 = dmarc@yourdomain.com

password = your_password_here

from = dmarc@yourdomain.com

# send results to this address

to = admin@yourdomain.com

保存并关闭文件。

 

将ParseDMARC作为系统服务运行

我们可以用parsedmarc -c /etc/parsedmarc.ini手动运行ParseDMARC,但在后台运行ParseDMARC作为systemd服务会更方便,使用以下命令为ParseDMARC创建systemd服务单元文件:

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

保存并关闭文件,此systemd服务将作为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

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

ParseDMARC将开始从报告电子邮件地址中提取DMARC报告,并将它们发送到Elasticsearch进行分析,如果有大量DMARC报告电子邮件,请耐心等待ParseDMARC完成其工作。

 

在Kibana中导入ParseDMARC对象

要将Kibana仪表板与ParseDMARC一起使用,首先需要导入ParseDMARC对象,可以使用以下命令在本地Linux或Mac计算机上下载它:

wget https://raw.githubusercontent.com/domainaware/parsedmarc/master/kibana/kibana_saved_objects.json

如果使用Windows,则只需复制https链接并将其粘贴到浏览器地址栏中即可,然后在Kibana仪表板中,单击左侧面板中的最后一个图标(管理),接下来,选择Saved Objects并单击Import按钮以导入你下载的ParseDMARC对象:

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

 

分析Kibana中的DMARC报告

一旦ParseDMARC systemd服务完成阅读电子邮件,DMARC报告数据将显示在Kibana中,我认为最有用的报告是DMARC摘要,可以通过转到“保存的对象” - >“DMARC摘要”进行检查,然后单击“视图仪表板”按钮,使用DMARC摘要可以做的最有用的事情是识别DMARC检查失败的合法来源。

1、筛选结果以仅显示未通过DMARC的邮件。

2、然后,可以看到消息处置(接收电子邮件服务器如何处理它们:什么都不做,放入垃圾邮件文件夹,或拒绝它们)。

3、向下滚动以查看SPF对齐和DKIM对齐详细信息,以确定某些合法来源无法通过DMARC检查的原因。

如果发件人不包含DKIM签名或没有反向DNS记录,那么它显然是垃圾邮件:

在Ubuntu 18.04/16.04上设置ParseDMARC以分析DMARC报告

令我惊讶的是,一些邮箱提供商在转发我的合法电子邮件时在DKIM签名中使用自己的域名,其他邮箱提供商在DKIM签名中使用我的域名,但仍然无法与DKIM对齐,要进一步调查原因,可以查看单独的取证报告。

 

结论

以上就是本文的详细操作方法了,我希望本教程帮助你在Ubuntu 18.04和Ubuntu 16.04上设置ParseDMARC来分析DMARC报告。

 

相关主题

在ubuntu中安装ELK Stack(Elasticsearch,Logstash和Kibana)

精选文章
热门文章