-
在Ubuntu18.04和16.04上设置ParseDMARC以分析DMARC报告
ParseDMARC是一个开源的、自托管的DMARC报告分析器。对于那些不知道的人来说,DMARC是一种电子邮件安全标准,可以保护你的域名免受电子邮件欺骗,还可以识别收到的欺骗电子邮件,以保护最终用户。在上一篇文章中,我们讨论了如何为您的域名创建DMARC DNS记录,在本教程中,我们将在Ubuntu 18.04/16.04服务器上设置ParseDMARC,以便分析DMARC报告。 先决条件 假设您已经为您的域名创建了DMARC DNS记录。 为了生成可视化数据,ParseDMARC依赖于Elasticsearch和Kibana,这两种工具都需要大量内存。安装后,它们将使用大约2G内存,需要更多内存来处理数据。所以你需要一台至少有3G内存的服务器。你可以点击这个特殊链接在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只能与python3一起工作。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允许用户在Elasticsearch中使用图表和图形可视化数据。 我们可以使用以下命令从官方存储库安装Elasticsearch和Kibana。Elasticsearch是用Java编程语言编写的,因此我们还在最后一个命令中安装了默认的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 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 ; 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的Kibana仪表板。你的地盘。通用域名格式。点击“探索我自己”按钮。  ; 启用HTTPS 要在通过域名访问Kibana dashboard时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu 18.04、16.04服务器上安装Let's Encrypt client(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 现在应获得证书并自动安装。 限制对Kibana仪表板的访问 默认情况下,Kibana不提供用户身份验证。为了只允许受信任的用户访问Kibana dashboard,我们可以在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 = [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-c/etc/ParseDMARC手动运行ParseDMARC。ini(暂时不要运行这个命令),但是在后台作为systemd服务运行ParseDMARC更方便。使用以下命令为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完成其工作。 如果parsedmarc服务未处于活动状态(正在运行),则可以运行以下命令查看问题所在。 sudo journalctl -eu parsedmarc 在Kibana中导入ParseDMARC对象 要将Kibana仪表板与ParseDMARC一起使用,首先需要导入ParseDMARC对象。您可以使用以下命令将其下载到本地Linux或Mac计算机上。 wget 如果使用Windows,只需复制https链接并将其粘贴到浏览器地址栏即可下载数据。 然后在Elastic主页中,单击Kibana以访问Kibana仪表板。 然后在Kibana仪表板中,单击添加数据按钮。 接下来,选择Saved Objects并单击Import按钮导入您下载的ParseDMARC对象。 分析Kibana的DMARC报告 一旦ParseDMARC systemd服务读取完电子邮件,DMARC报告数据将显示在Kibana中。我认为最有用的报告是DMARC摘要。您可以通过转到“已保存对象”进行检查->;DMARC摘要,然后单击查看仪表板按钮。使用DMARC摘要可以做的最有用的事情是识别未通过DMARC检查的合法来源。 过滤结果以仅显示未通过DMARC的邮件。 然后,您可以看到消息处理(接收电子邮件的服务器如何处理它们:不做任何事情、放入垃圾邮件文件夹或拒绝它们)。 向下滚动查看SPF校准和DKIM校准详细信息,以确定某些合法来源未能通过DMARC检查的原因。 如果发送方没有DKIM签名或没有反向DNS记录,那么这显然是垃圾邮件。 令我惊讶的是,一些邮箱提供商在转发我的合法电子邮件时,在DKIM签名中使用了自己的域名。其他邮箱提供商在DKIM签名中使用我的域名,但DKIM对齐仍然失败。要进一步调查原因,您可以查看个人法医报告。 结论 我希望本教程能帮助您在Ubuntu18.04和Ubuntu16.04上设置ParseDMARC来分析DMARC报告。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
在Ubuntu20.04上设置ParseDMARC以分析DMARC报告
ParseDMARC是一个开源的、自托管的DMARC报告分析器。对于那些不知道的人来说,DMARC是一种电子邮件安全标准,可以保护你的域名免受电子邮件欺骗,还可以识别收到的欺骗电子邮件,以保护最终用户。在上一篇文章中,我们讨论了如何为您的域名创建DMARC DNS记录,并使用名为PostMark的第三方工具分析DMARC报告。在本教程中,我们将在Ubuntu20.04服务器上设置ParseDMARC,这样我们就可以分析DMARC报告,而无需与第三方共享数据。 先决条件 假设您已经为您的域名创建了DMARC DNS记录。 为了生成可视化数据,ParseDMARC依赖于Elasticsearch和Kibana,这两种工具都需要大量内存。安装后,它们将使用大约2G内存,需要更多内存来处理数据。所以你需要一台至少有3G内存的服务器。还建议您使用至少有4个CPU核的服务器。 你可以点击这个特殊链接在DigitalOcean上获得100美元的免费积分。(仅限新用户使用)。如果您已经是DigitalOcean用户,那么您可以单击此特殊链接在Vultr上获得50美元的免费积分(仅限新用户)。一旦你在DigitalOcean或Vultr上拥有了一个帐户,请在你的服务器上安装Ubuntu20.04,并按照以下说明操作。 在Ubuntu 20.04服务器上安装ParseDMARC ParseDMARC是一个Python程序,可以从PyPI(Python包索引)软件库安装。首先,我们需要在Ubuntu 20.04上安装Python软件包安装程序。在下面的命令中,我们安装python3 pip包,因为ParseDMARC只能与python3一起工作。geoipupdate包用于更新MaxMind GeoIP数据库。 sudo apt install python3-pip geoipupdate 然后使用以下命令安装最新稳定版本的ParseDMARC。 sudo -H pip3 install -U parsedmarc 要检查有关parsedmarc包的信息,可以运行 pip3 show -f parsedmarc 要查看命令行选项,请运行 parsedmarc --help 在Ubuntu 20.04上安装Elasticsearch和Kibana ParseDMARC是一个命令行程序,它产生难以读取的输出。如果希望在基于web的界面中看到可视化的DMARC报告,则需要安装另外两个开源程序:Elasticsearch和Kibana。Elasticsearch是一个搜索和分析引擎,Kibana允许用户在Elasticsearch中使用图表和图形可视化数据。 我们可以使用以下命令从官方存储库安装Elasticsearch和Kibana。Elasticsearch是用Java编程语言编写的,因此我们还在最后一个命令中安装了默认的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 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 我们可以看到,它现在已经启用并运行,并且使用1.3G内存。(提示:如果此命令没有立即退出,请按Q键使其退出。) 我们也需要为Kibaba做同样的事情。 sudo systemctl start kibana sudo systemctl enable kibana 检查状态。 systemctl status kibana 为弹性体设置Nginx反向代理 弹性web服务器监听127.0.0.1:5601。我们可以使用Nginx设置反向代理,以允许远程访问,并保护弹性web界面。运行以下命令从Ubuntu20.04存储库安装Nginx。 sudo apt install nginx 为Elastic创建Nginx虚拟主机文件。 sudo nano /etc/nginx/conf.d/elastic.conf 将以下行放入文件中。根据需要替换占位符,您应该为子域创建DNS a记录。 server { listen 80; 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 ; 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访问弹性web界面。你的地盘。通用域名格式。点击“探索我自己”按钮。  ; 启用HTTPS 为了在通过域名访问弹性web界面时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(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 现在应获得证书并自动安装。 限制对弹性Web界面的访问 默认情况下,Elastic不提供用户身份验证。为了只允许受信任的用户访问Elastic,我们可以在Nginx中启用HTTP基本身份验证。首先,我们需要安装apache2 utils包,它提供了htpasswd密码文件创建工具。 sudo apt install apache2-utils 然后运行以下命令创建管理员用户。你需要设置密码。 sudo htpasswd -c /etc/nginx/htpasswd admin 接下来,编辑弹性虚拟主机文件。 sudo nano /etc/nginx/conf.d/elastic.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浏览器中重新加载Elastic,系统将要求您输入用户名和密码。 配置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-c/etc/ParseDMARC手动运行ParseDMARC。ini(暂时不要运行这个命令),但是在后台作为systemd服务运行ParseDMARC更方便。使用以下命令为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完成其工作。 如果parsedmarc服务未处于活动状态(正在运行),则可以运行以下命令查看问题所在。 sudo journalctl -eu parsedmarc 在Kibana中导入ParseDMARC对象 要将Kibana仪表板与ParseDMARC一起使用,首先需要导入ParseDMARC对象。您可以使用以下命令将其下载到本地Linux或Mac计算机上。 wget 如果使用Windows,只需复制https链接并将其粘贴到浏览器地址栏即可下载数据。 然后在Elastic主页中,单击Kibana以访问Kibana仪表板。 然后在Kibana仪表板中,单击添加数据按钮。 接下来,选择Saved Objects并单击Import按钮导入您下载的ParseDMARC对象。 分析Kibana的DMARC报告 一旦ParseDMARC systemd服务读取完电子邮件,DMARC报告数据将显示在Kibana中。我认为最有用的报告是DMARC摘要。您可以通过转到“已保存对象”进行检查->;DMARC总结。使用DMARC摘要可以做的最有用的事情是识别未通过DMARC检查的合法来源。 过滤结果以仅显示未通过DMARC的邮件。 然后您可以看到消息处理(接收电子邮件的服务器如何处理它们:不做任何事情、隔离或拒绝它们)。 向下滚动查看SPF校准和DKIM校准详细信息,以确定某些合法来源未能通过DMARC检查的原因。 如果发送方没有DKIM签名或没有反向DNS记录,那么这显然是垃圾邮件。 令我惊讶的是,一些邮箱提供商在转发我的合法电子邮件时,在DKIM签名中使用了自己的域名。其他邮箱提供商在DKIM签名中使用我的域名,但DKIM对齐仍然失败。要进一步调查原因,您可以查看个人法医报告。 结论 我希望本教程能帮助您在Ubuntu20.04上设置ParseDMARC来分析DMARC报告。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?