Integrasi Abusix XARF dengan CSF

XARF (eXtended Abuse Reporting Format) adalah sebuah format standar yang digunakan untuk berbagi laporan mengenai aktivitas abuse atau penyalahgunaan di internet seperti spam, bruteforce, atau serangan siber lainnya.

Format XARF kini sudah menjadi standar industri untuk memberikan informasi yang terstruktur tentang incident abuse, sehingga memudahkan organisasi atau pihak penerima laporan untuk menangani dan merespon aktivitas abuse tersebut.

Dengan menggunakan CSF, Anda dapat membuat laporan X-ARF dan mengirimkannya via SMTP ke Abusix secara otomatis. Anda perlu membuat akun melalui XARF - Abusix.

Kemudian buat Data Channels.

xarf abusix

XARF via SMTP

Install package sendmail, Jika server terinstall WHM/cPanel seharusnya perintah sendmail sudah ada.

yum -y install sendmail

Kemudian buat akun email, misal [email protected] lalu setting forwarder ke SMTP Address. (Opsional)

forward smtp address

Install CSF lalu edit file /etc/csf/csf.conf.

X_ARF = "1"
X_ARF_FROM = ""
X_ARF_TO = "[email protected]"
Pada bagian X_ARF_TO, Anda juga bisa mengisikan langsung SMTP Address yang didapat dari Data Channel Abusix.

Restart CSF+LFD untuk menerapkan perubahan.

csf -ra

Apabila berhasil, contoh email abuse yang akan masuk ke email [email protected] seperti berikut.

email abuse

Lalu akan otomatis diforward ke SMTP Address Abusix.

XARF via API

Untuk report melalui API caranya hampir mirip dengan integrasi AbuseIPDB di CSF, yaitu menggunakan script.

Buat file /usr/local/csf/bin/xarf_block.sh, lalu tambahkan script berikut.

#!/bin/bash

# Set your Abusix XARF API key here.
key="f4635bfa5be867bcd3543064934716df3506bf8dbfe9daaedd896331b465851f0e3049daa6add6d2"

# Set the URL you want to make the POST request to
url="https://datachannels.abusix.com/data/xarf"

# Create temp file
temp_file=$(mktemp /tmp/json.XXXXXX)

# Rename arguments for readability.
ip=$1
ports=$2
inOut=$3
message=$6
logs=$7
trigger=$8
tanggal=$(date -u +"%Y-%m-%dT%H:%M:%SZ")

# Payload
payload=$(echo -n "$logs" | base64)

# Set the data you want to send in the POST request
data=$(printf '{
  "Version": "3",
  "ReporterInfo": {
    "ReporterOrg": "ExampleOrg",
    "ReporterOrgDomain": "example.com",
    "ReporterOrgEmail": "[email protected]",
    "ReporterContactEmail": "[email protected]",
    "ReporterContactName": "Mr. Example",
    "ReporterContactPhone": "+ 01 000 1234567"
  },
  "Disclosure": true,
  "Report": {
    "ReportClass": "Activity",
    "ReportType": "WebCrawler",
    "Date": "%s",
    "SourceIp": "%s",
    "SourcePort": 443,
    "Ongoing": true,
    "Samples": [
      {
        "ContentType": "text/plain",
        "Base64Encoded": true,
        "Description": "The requested page does not exist or is forbidden",
        "Payload": "%s"
      }
    ]
  }
}' "$tanggal" "$ip" "$payload")

# Save to file
echo -n "$data" > "$temp_file"

# Make the POST request using curl
response=$(curl -X POST -H "Content-Type: application/json" -H "x-api-key: $key" -d @"$temp_file" "$url")

# Delete file
rm -f "$temp_file"

# debug
# echo "Response: $response" >> /root/respon.log

Ubah key sesuai dengan ysng diperoleh dari Data Channel Abusix, kemudian sesuaikan bagian ReporterInfo dengan nama dan contact Anda sebagai pelapor.

Selanjutnya edit file /etc/csf/csf.conf lalu sesuaikan BLOCK_REPORT dengan path script.

BLOCK_REPORT = "/usr/local/csf/bin/xarf_block.sh"

Restart CSF+LFD untuk menerapkan perubahan.

csf -ra

Referensi: