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退出):
我们还需要为Kibaba做同样的事情: sudo systemctl start kibana sudo systemctl enable kibana 检查状态: systemctl status 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 现在,可以访问dmarc.yourdomain.com上的Kibana仪表板,单击Explore on my own按钮:
启用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 注:请注意修改成自己的数据。 现在应该获取并自动安装证书:
限制对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仪表板,系统将要求你输入用户名和密码:
配置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
ParseDMARC将开始从报告电子邮件地址中提取DMARC报告,并将它们发送到Elasticsearch进行分析,如果有大量DMARC报告电子邮件,请耐心等待ParseDMARC完成其工作。
在Kibana中导入ParseDMARC对象 要将Kibana仪表板与ParseDMARC一起使用,首先需要导入ParseDMARC对象,可以在本地Linux或Mac计算机上下载kibana_saved_objects.json。 如果使用Windows,则只需复制https链接并将其粘贴到浏览器地址栏中即可,然后在Kibana仪表板中,单击左侧面板中的最后一个图标(管理),接下来,选择Saved Objects并单击Import按钮以导入你下载的ParseDMARC对象:
分析Kibana中的DMARC报告 一旦ParseDMARC systemd服务完成阅读电子邮件,DMARC报告数据将显示在Kibana中,我认为最有用的报告是DMARC摘要,可以通过转到“保存的对象” - >“DMARC摘要”进行检查,然后单击“视图仪表板”按钮,使用DMARC摘要可以做的最有用的事情是识别DMARC检查失败的合法来源。 1、筛选结果以仅显示未通过DMARC的邮件。 2、然后,可以看到消息处置(接收电子邮件服务器如何处理它们:什么都不做,放入垃圾邮件文件夹,或拒绝它们)。 3、向下滚动以查看SPF对齐和DKIM对齐详细信息,以确定某些合法来源无法通过DMARC检查的原因。 如果发件人不包含DKIM签名或没有反向DNS记录,那么它显然是垃圾邮件:
令我惊讶的是,一些邮箱提供商在转发我的合法电子邮件时在DKIM签名中使用自己的域名,其他邮箱提供商在DKIM签名中使用我的域名,但仍然无法与DKIM对齐,要进一步调查原因,可以查看单独的取证报告。
结论 以上就是本文的详细操作方法了,我希望本教程帮助你在Ubuntu 18.04和Ubuntu 16.04上设置ParseDMARC来分析DMARC报告。
相关主题 |