Giới thiệu về ParseDMARC #
DMARC là một tiêu chuẩn để chặn spammer khỏi việc sử dụng domain của người sở hữu mà không được sự cho phép của họ mà ta hay gọi nó là spoofing. Thực tế, khi sử dụng mail, bất kỳ ai cũng có thể giả mạo địa chỉ tại trường “From” trong mail gửi đi một cách dễ dàng. DMARC sẽ đảm bảo những mail giả mạo này sẽ bị chặn trước khi chúng đến được mailbox của người nhận và hơn thế nữa, chỉ những mail hợp lệ mới được chấp nhận vào hệ thống. ParseDMARC là một công cụ mã nguồn mở giúp người quản trị theo dõi và xuất báo cáo dựa trên dữ liệu về DMARC hiện tại trên Mail Server.
Chuẩn bị môi trường #
Do ParseDMARC sử dụng dữ liệu được thu thập và phân tích bởi Elasticsearch và Kibana nên cấu hình tối thiểu là:
- CPU 4 core
- 4GB RAM
- 10GB dung lượng trống
- Ubuntu Server 20.04
- User có quyền sudo
Cài đặt ParseDMARC #
Trước hết cần cài đặt python3-pip và geoipupdate:
sudo apt install python3-pip geoipupdate |
Sau đó cài đặt ParseDMARC:
sudo -H pip3 install -U parsedmarc |
Sau khi cài xong, bạn có thể xác nhận lại rằng quá trình cài đặt đã thành công:
parsedmarc --help |
Cài đặt Elasticsearch và Kibana #
ParseDMARC là một chương trình dựa trên các câu lệnh. Chính vì vậy mà việc đọc các thông tin xuất ra sẽ rất khó khăn. Do đó, để thuận tiện cho việc theo dõi thông tin và đọc báo cáo, mình sẽ sử dụng Elasticsearch và Kibana. Trước hết, bạn hãy cài 2 công cụ này như sau:
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 |
Sau đó, bạn hãy bật dịch vụ Elasticsearch và kích hoạt khởi động cùng hệ thống:
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch |
Tương tự bạn cũng bật với Kibana:
sudo systemctl start kibana sudo systemctl enable kibana |
Cài đặt Reverse Proxy sử dụng Nginx cho Elasticsearch #
Elastic Web Server sẽ lắng nghe tại 127.0.0.1:5601 nên ban cần sử dụng Nginx để cho phép người dùng từ xa có thể truy cập vào. Trước hết cài đặt Nginx như sau:
sudo apt install nginx |
Tạo file cấu hình cho Elastic:
sudo nano /etc/nginx/conf.d/elastic.conf |
Thêm đoạn cấu hình sau vào file:
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 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; } } |
Lưu lại file cấu hình và kiểm tra cú pháp xem các cấu đã đúng hay chưa:
sudo nginx -t |
Thực hiện làm mới Nginx với cấu hình mới trên:
sudo systemctl reload nginx |
Kích hoạt HTTPS #
Để sử dụng HTTPS cho Elastic Web Server, bạn cần tạo ssl sử dụng Let’s Encrypt. Do vậy, thực hiện cài đặt như sau:
sudo apt install certbot sudo apt install python3-certbot-nginx |
Sau khi cài đặt xong, bạn hãy thực hiện tạo chứng chỉ ssl cho Nginx theo câu lệnh sau:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d dmarc.yourdomain.com |
Giới hạn truy cập vào Elastic Web #
Mặc định, Elastic Web không cung cấp cơ chế xác thức người dùng. Chính vì thế, bạn cần cấu hình thêm phương thức xác thực để tăng bảo mật. Thực hiện cài đặt gói cần thiết như bên dưới:
sudo apt install apache2-utils |
Sau đó, thực hiện tạo người dùng admin như bên dưới:
sudo htpasswd -c /etc/nginx/htpasswd admin |
Tiếp tục chỉnh sửa file cấu hình Elastic của Nginx:
sudo nano /etc/nginx/conf.d/elastic.conf |
Thêm các cấu hình sau vào phần listen 443 ssl:
auth_basic "Login required"; auth_basic_user_file /etc/nginx/htpasswd; |
Làm mới lại Nginx để cập nhật cấu hình mới:
sudo systemctl reload nginx |
Như vậy, khi bạn truy cập vào Elastic Web sẽ phải nhập tài khoản và mật khẩu tương ứng đã tạo trước đó.
Cấu hình ParseDMARC #
Để ParseDMARC có thể gửi dữ liệu tới Elasticsearch, bạn cần tạo file cấu hình như sau:
sudo nano /etc/parsedmarc.ini |
Thêm đoạn cấu hình sau:
[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 |
Lưu lại file cấu hình trên.
Tạo service cho ParseDMARC #
Để tiện cho việc tự động bật ParseDMARC cùng hệ thống, bạn cần phải tạo một service để thực thi bởi systemd. Thực hiện tạo file cấu hình service như bên dưới:
sudo nano /etc/systemd/system/parsedmarc.service |
Thêm đoạn cấu hình sau:
[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 |
Lưu lại file cấu hình trên, Systemd sẽ chạy service trên với người dùng parsedmarc nên bạn cần phải tạo user này như sau:
sudo adduser --system --no-create-home --group parsedmarc |
Tiếp theo cần chỉnh sửa quyền của file cấu hình:
sudo chown parsedmarc /etc/parsedmarc.ini sudo chmod 600 /etc/parsedmarc.ini sudo setfacl -R -m "u:parsedmarc:rwx" /usr/share/elasticsearch/modules/ingest-geoip/ |
Cuối cùng là chạy dịch vụ và bật khởi động cùng hệ thống cho dịch vụ parsedmarc:
sudo systemctl start parsedmarc sudo systemctl enable parsedmarc |
Nhập khung phân tích ParseDMARC vào Kibana #
Để có thể sử dụng Kibana cho việc hiển thị thông tin của ParseDMARC, bạn cần nhập vào khung phân tích của ParseDMARC lên Kibana. Trước hết, bạn tải về khung phân tích đường dẫn bên dưới bên dưới:
https://raw.githubusercontent.com/domainaware/parsedmarc/master/kibana/export.ndjson |
Sau đó, bạn hãy truy cập vào Kibana:
Chọn Add your data:
Tiếp theo chọn Saved Objects rồi chọn Import để tải lên khung phân tích tải về trước đó:
Như vậy là Kibana đã có thể hiển thị thông tin DMARC của Mail Server bằng cách điều hướng theo Saved Objects => DMARC Summary
Kết luận #
Ở trên mình đã hướng dẫn bạn cách cài ParseDMARC kết hợp với Elasticsearch và Kibana để thu thập, thống kê, hiển thị thông tin DMARC của Mail Server. Cuối cùng, bất kì thắc mắc và lỗi nào phát sinh trong quá trình cài đặt, bạn hãy bình luận bên dưới để mình hỗ trợ nhé.
Nguồn bài viết: https://www.linuxbabe.com/