پرش به مطلب اصلی

ارسال لاگ

هنگامی‌که و‌ب‌سایت و یا اپلیکیشن شما از شبکه توزیع محتوای ابر آروان استفاده می‌کند، ابر آروان میان بازدیدکنندگان‌تان و سرورهای اصلی که وب‌سرورهای شما در آن‌ها قرار دارند به‌عنوان واسطه حضور دارد. درخواست‌هایی که بازدیدکننده‌های شما می‌فرستند ابتدا به سرورهای آروان می‌رسند و سپس اگر نیاز باشد به سمت سرورهای اصلی شما ارسال می‌شوند.

درخواست‌های بازدیدکنندگان شامل اطلاعات ارزشمندی هستند که برخی‌شان را به‌شکل تجمیع‌شده در پنل کاربری ابر آروان می‌توانید ببینید. اما این درخواست‌ها اطلاعات با ارزش دیگری نیز دارند که ممکن است برای شما به‌عنوان دارنده‌ی وب‌سایت و یا دامنه مفید باشد. اطلاعاتی مانند:

  • درخواست برای کدام مسیر از وب‌سایت شما ارسال شده است؟
  • درخواست‌دهنده از چه مرورگر و سیستم‌عاملی استفاده می‌کند؟
  • IP درخواست‌دهنده چیست؟
  • پاسخی که ابر آروان به درخواست مورد نظر داده، چه بوده؟ (Hit/Miss)

با استفاده از دریافت لحظه‌ای این داده‌ها که به آن‌ها لاگ می‌گوییم، می‌توانید تحلیل‌های بی‌شماری روی رفتار بازدیدکننده‌ها و هم‌چنین شناسایی بازدیدکننده‌های با رفتار مخرب، انجام دهید؛ مثل:

  • شناسایی بات‌های مخرب
  • شناسایی خزنده‌های وب (Crawler) غیرمجاز
  • تحلیل لحظه‌ای رفتار وب‌سرور
  • شناسایی لحظه‌ای حملات

قابلیت ارسال لاگ

سیستم تجمیع و پردازش لاگ، بخشی حیاتی از CDN ابر آروان است؛ به‌گونه‌ای که قسمت‌های مختلفی از سرویس‌دهی ابر آروان به‌شکل مستقیم به این سرویس زیرساختی وابسته است. کاربران CDN ابر آروان می‌توانند با انجام تنظیماتی آسان در پنل کاربری، لاگ‌ درخواست‌های خود را به‌شکل Near Real Time دریافت کنند. شما می‌توانید با ایجاد یک "ارسال لاگ" جدید، لاگ درخواست‌های HTTP، خطاها و سرویس‌های DNS و WAF دامنه‌ی خود را برای سرویس‌های مدیریت لاگ مانند syslog ،loggly ،datadog و هم‌چنین فضای ابری آروان و سایر سرویس‌های استورج مبتنی بر S3 ارسال کنید.

برای فعال‌سازی این قابلیت ابتدا وارد پنل کاربری شوید و از منوی شبکه توزیع محتوا دامنه‌ی موردنظرتان را انتخاب کنید و وارد بخش ارسال لاگ از منوی مانیتورینگ و گزارش شوید.

روی ارسال لاگ جدید کلیک کنید.

س‍پس نوع لاگ مورد نیاز خود را برای دریافت انتخاب کنید.

فیلدهایی که با فرمت JSON ارسال می‌شوند در ادامه نشان داده شده است. می‌توانید با غیر فعال کردن هر کدام، آن را از لاگ دریافتی حذف کنید. برای مثال مقادیر قابل ارسال روی لاگ HTTP در تصویر قابل مشاهده است:

در جدول زیر اطلاعات هر پارامتر بیان شده است:

  • WAF Events

    توضیحاتفیلد ارسالی
    Cloud security product nameProduct
    Timestamp of logTimestamp
    Client real IP addressRemote Address
    HTTP request host nameDomain
    Cloud security raw logData
  • DNS Requests

    توضیحاتفیلد ارسالی
    Timestamp of DNS logTimestamp
    Unique ID of DNS requestUUID
    DNS record of queryRecord
    DNS record type in request queryType
    Client real IP addressIP
    Client real country nameCountry
    Client IP AS numberAS Number
    Status code user received in responseResponse Status Code
    Process time of requestProcess Time
  • HTTP Requests

    توضیحاتفیلد ارسالی
    (... ,HTTP Request Method (GET, POSTMethod
    (HTTP request scheme (HTTP or HTTPSScheme
    HTTP request host headerDomain Name
    HTTP request referrer headerReferer
    Real IP address of visitorIP Address
    HTTP request user agent headerUser Agent
    Country of visitor's IP based on maxmind geoIP databaseCountry
    AS number of visitor's IPAS Number
    Content type of HTTP requestContent Type
    Response status code for HTTP requestResponse Status Code
    Server port that request was sent toServer Port
    Sum of bytes send to visitorBytes Sent
    Byte received from upstreamBytes Received
    Time of read request from upstreamUpstream Time
    (... ,Cache status of response (HIT, BYPASS, MISSCache Status
    Unique identifier of HTTP requestRequest ID
    URI address in HTTP requestURI
    Query string key-values in urlQuery String
  • Errors

    توضیحاتفیلد ارسالی
    IP of the clientClient IP
    The protocol of the upstreamUpstream Protocol
    The URI of the upstreamUpstream URI
    The port of the upstreamUpstream Port
    The IP of the upstreamUpstream IP
    HTTP request host headerDomain Name
    The version of the HTTP protocolHTTP Version
    HTTP request method (GET, POST, ...)Request Method
    URI Address in the HTTP requestRequest URI
    Real timestamp of the logReal Timestamp
    The error messageError Message
    The ID of the pop sitePop Site
    The ID of the requestRequest ID
  • Event Logs

    توضیحاتفیلد ارسالی
    HTTP Requset Host HeaderDomain Name
    JA3 Fingerprint hash is a fingerprinting alghorithm to identify SSL/TLS client applications based on their handshake characteristicsJA3 Fingerprint
    The timestamp of the original requestTimestamp
    HTTP Request method (GET,POST, …)Method
    HTTP Request Schema (HTTP or HTTPS)Scheme
    Visitor's true IP AddressIP Address
    Country of visitor’s IP based on maxmind geoip databaseCountry
    Response Status code for http requestResponse Status Code
    Upstream Server IPServerIP
    Server port that sent toServer Port
    URI address in HTTP requestURI
    Query String key-values in URIQuery String
    Firewall Detailed Log (Action, BypassFeatures, RuleMatched, KnownBotDetected, HostnameAndTLSMismatch, GlobalAllowlistMatched, GlobalDenylistMatched, UserFirewallIsDisabled)Firewall
    Proxy Detailed Log (InvalidHost, CDNLoopBlocked, OperationalEndpointMatched, ReadBody, Redirect, SecureLinkVerified, PageRuleMatched, LoadConfigResult, ErrorPage, ErrorPageStatus)Proxy
    DNS Detailed Log (ResolverCacheFirstTimeUpdate , ResolverCacheBackgroundUpdate)DNS
    RateLimit Detailed Log (Enabled, UserRlimitIsDisabled, RunningCheckPhase, RunningUpdatePhase, IsNearThreshold, RateLimitRuleMatched, RateLimitAction)RateLimit
    DDoS Challenge Detailed Log (UserChallengeIsDisabled, IgnoreRuleMatched, ChallengeMode, Action, FinalChallengeDecision)DDoS Challenge
    WAF Detailed Log (WAFDeclined, WAFLog, WAFStatus, WAFRuleMatched)WAF

در مرحله‌ی بعد مقصدی را که می‌خواهید لاگ‌هایتان را روی آن دریافت کنید انتخاب کنید:

برای نمونه ما از فضای ابری آروان استفاده می‌کنیم .

در این مرحله ابتدا باید یک نام برای پروفایل لاگ فورواردینگ ارسالی خود وارد کرده، سپس بازه‌ی زمانی ارسال لاگ و هم‌چنین نرخ نمونه‌برداری را بسته به نیاز خود تنظیم کنید.

  • نرخ نمونه برداری بیان‌گر این است که چه مقدار از لاگ‌ها برای شما ارسال شود. برای نمونه اگر نرخ نمونه‌برداری ۵۰ درصد برای درخواست‌های HTTP تعیین شود، از هر ۱۰۰۰ درخواست تنها لاگ ۵۰۰ درخواست برای شما ارسال می‌شود.

در قسمت تنظیمات باید اطلاعات دسترسی به API فضای ابری آروان و در آخر مقدار بافر را بسته به نیاز خود وارد کنید.

  • مقدار بافر مشخص می‌کند که چه مقدار لاگ ارسالی برای شما در سرویس آبجکت استورج ذخیره شود. برای مثال فرض کنید که شما مقدار بافر خود را روی ۱۰۰ تنظیم کرده‌اید. حال اگر درخواست شماره ۱۰۱ لاگ شود ابتدا اولین درخواست حذف شده و به جای درخواست شماره ۱۰۱ قرار می‌گیرد تا مقدار بافر حفظ شود و در نهایت شما در لاگ خود از درخواست دوم تا ۱۰۱ را خواهید داشت.

در نهایت روی دکمه‌ی ذخیره کلیک کنید.

ساخت Log Forwarder با استفاده از API

۱- HTTP Requests همراه با همه‌ی پارامترها روی ArvanS3

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/log-forwarders' \  --header 'authority: napi.arvancloud.ir' \  --header 'accept: application/json, text/plain, */*' \  --header 'authorization: APIKEY 1 2 3 4' \  --header 'cache-control: no-cache' \  --header 'content-type: application/json;charset=UTF-8' \  --header 'pragma: no-cache' \  --data-raw '{"name":"API Log","description":"","type":"access","connection_type":"arvan_s3","data_format":{"method":true,"scheme":true,"domain":true,"referer":true,"ip":true,"ua":true,"country":true,"asn":true,"content_type":true,"status":true,"server_port":true,"bytes_sent":true,"bytes_received":true,"upstream_time":true,"cache":true,"request_id":true,"uri":true,"query_string":true},"settings":{"sample_rate":"100","s3_endpoint":"https://s3.ir-thr-at1.arvanstorage.ir","access_key":"Arvan_Access_KEY","secret_key":"Arvan_Secret_KEY","bucket_name":"exampleBucket","object_size":"100000","flush_interval":"60"},"status":true}'     

۲- WAF Events همراه با همه‌ی پارامترها روی ArvanS3

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/log-forwarders' \  --header 'authority: napi.arvancloud.ir' \  --header 'accept: application/json, text/plain, */*' \  --header 'authorization: APIKEY 1 2 3 4' \  --header 'cache-control: no-cache' \  --header 'content-type: application/json;charset=UTF-8' \  --header 'dnt: 1' \  --header 'pragma: no-cache' \  --data-raw '{"name":"WAF Events Test","description":"","type":"waf","connection_type":"arvan_s3","data_format":{"product":true,"timestamp":true,"remote_address":true,"domain":true,"data":true},"settings":{"sample_rate":"100","s3_endpoint":"https://s3.ir-thr-at1.arvanstorage.ir","access_key":"Arvan_Access_KEY","secret_key":"Arvan_Secret_KEY","bucket_name":"arvanpro","object_size":"100000","flush_interval":"60"},"status":true}'     

۳- DNS Request همراه با همه‌ی پارامترها روی ArvanS3

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/log-forwarders' \  --header 'authority: napi.arvancloud.ir' \  --header 'accept: application/json, text/plain, */*' \  --header 'accept-language: fa' \  --header 'authorization: APIKEY 1 2 3 4' \  --header 'cache-control: no-cache' \  --header 'content-type: application/json;charset=UTF-8' \  --header 'dnt: 1' \  --header 'pragma: no-cache' \  --data-raw '{"name":"DNS Request Test","description":"","type":"dns","connection_type":"arvan_s3","data_format":{"timestamp":true,"uuid":true,"record":true,"type":true,"ip":true,"country":true,"asn":true,"response_code":true,"process_time":true},"settings":{"sample_rate":"100","s3_endpoint":"https://s3.ir-thr-at1.arvanstorage.ir  ","access_key":"Arvan_Access_KEY","secret_key":"Arvan_Secret_KEY","bucket_name",object_size":"100000","flush_interval":"60"},"status":true}'     

تنظیمات سمت وب‌سرور اصلی

برای این‌که بتوانید به‌شکل داینامیک داده‌های لاگ را روی وب‌سرور خود دریافت، تبدیل و منتقل کنید، می‌توانید از ابزارهایی مثل Logstash و Rsyslog استفاده کنید. هم چنین باید در نظر داشته باشید که سرورهای ارسال لاگ آروان اجازه‌ی دسترسی به Log Serverهای شما را داشته و Whitelist باشند. برای این‌ کار، کافی است در فایروال خود IPهای زیر را Whitelist کنید:

93.115.150.117
93.115.150.118
93.115.150.119
93.115.150.120
93.115.150.121
93.115.150.122
93.115.150.123
94.101.183.192/27
94.101.190.224/28

نصب Logstash

این ابزار شناخته‌شده‌ترین پلتفرم تحلیل لاگ جهان است. به کمک آن می‌توانید داده‌ها را از منابع مختلفی جمع‌آوری و پردازش کنید. برای شروع لازم است بدانید بسته به سیستم‌عامل شما، روش‌های مختلفی برای نصب Logstash وجود دارد. ما در این مقاله آن را روی اوبونتو نسخه‌ی ۱۶.۰۴ با برنامه‌ی مدیریت بسته‌ی apt نصب می‌کنیم.

پیش از نصب، مطمین شوید Java نسخه ۸ یا ۱۱ نصب باشد.

برای نصب Java از دستور زیر استفاده کنید:

sudo apt-get update

sudo apt-get install default-jre

شما به کلید امضا (Signing Key) الستیک (Elastic) نیاز دارید تا بسته‌ی دانلود شده تایید شود (اگر از پیش بسته‌هایی از Elastic نصب کرده‌اید از این مرحله رد شوید):

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

در این مرحله باید مخزن را به‌روز کنید و Logstash را نصب کنید:

sudo apt-get update

sudo apt-get install logstash

پیکربندی Logstash

پیکربندی شما عمومن سه بخش دارد: ورودی‌ها، فیلترها و خروجی‌ها. ساختار پیکربندی Logstash به‌شکل زیر است:

#/etc/logstash/conf.d/

- apache.conf

- haproxy.conf

- syslog.conf

شما می‌توانید فایل پیکربندی مجزایی برای هر یک از بخش‌ها داشته باشید. هر یک از این فایل‌ها شامل ورودی‌ها، فیلترها و خروجی‌های مورد نیاز است:

input {

tcp {
port => 5140
codec => json
}

}

filter {

grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:Junk}: %{GREEDYDATA:request}"}
}

json { source => "request" }

}

output {

stdout { codec => rubydebug }

elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "logs-%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}

}

ارسال لاگ به Loggly

CDN ابر آروان این امکان را در اختیارتان قرار می‌دهد تا خروجی لاگ‌های دامنه‌تان را به ابزارهای Third-Party مانند Loggly ارسال کنید. برای راهنمایی در خصوص فعال‌سازی و استفاده از این ابزار می‌توانید از مقاله‌ی مدیریت گزارش‌های ارسال لاگ ابر آروان در Loggly کمک بگیرید.