ارسال لاگ
هنگامیکه وبسایت و یا اپلیکیشن شما از شبکه توزیع محتوای ابر آروان استفاده میکند، ابر آروان میان بازدیدکنندگانتان و سرورهای اصلی که وبسرورهای شما در آنها قرار دارند بهعنوان واسطه حضور دارد. درخواستهایی که بازدیدکنندههای شما میفرستند ابتدا به سرورهای آروان میرسند و سپس اگر نیاز باشد به سمت سرورهای اصلی شما ارسال میشوند.
درخواستهای بازدیدکنندگان شامل اطلاعات ارزشمندی هستند که برخیشان را بهشکل تجمیعشده در پنل کاربری ابر آروان میتوانید ببینید. اما این درخواستها اطلاعات با ارزش دیگری نیز دارند که ممکن است برای شما بهعنوان دارندهی وبسایت و یا دامنه مفید باشد. اطلاعاتی مانند:
- درخواست برای کدام مسیر از وبسایت شما ارسال شده است؟
- درخواستدهنده از چه مرورگر و سیستمعاملی استفاده میکند؟
- IP درخواستدهنده چیست؟
- پاسخی که ابر آروان به درخواست مورد نظر داده، چه بوده؟ (Hit/Miss)
با استفاده از دریافت لحظهای این دادهها که به آنها لاگ میگوییم، میتوانید تحلیلهای بیشماری روی رفتار بازدیدکنندهها و همچنین شناسایی بازدیدکنندههای با رفتار مخرب، انجام دهید؛ مثل:
- شناسایی باتهای مخرب
- شناسایی خزندههای وب (Crawler) غیرمجاز
- تحلیل لحظهای رفتار وبسرور
- شناسایی لحظهای حملات
قابلیت ارسال لاگ
سیستم تجمیع و پردازش لاگ، بخشی حیاتی از CDN ابر آروان است؛ بهگونهای که قسمتهای مختلفی از سرویسدهی ابر آروان بهشکل مستقیم به این سرویس زیرساختی وابسته است. کاربران CDN ابر آروان میتوانند با انجام تنظیماتی آسان در پنل کاربری، لاگ درخواستهای خود را بهشکل Near Real Time دریافت کنند. شما میتوانید با ایجاد یک "ارسال لاگ" جدید، لاگ درخواستهای HTTP، خطاها و سرویسهای DNS و WAF دامنهی خود را برای سرویسهای مدیریت لاگ مانند syslog ،loggly ،datadog و همچنین فضای ابری آروان و سایر سرویسهای استورج مبتنی بر S3 ارسال کنید.
برای فعالسازی این قابلیت ابتدا وارد پنل کاربری شوید و از منوی شبکه توزیع محتوا دامنهی موردنظرتان را انتخاب کنید و وارد بخش ارسال لاگ از منوی مانیتورینگ و گزارش شوید.
روی ارسال لاگ جدید کلیک کنید.
سپس نوع لاگ مورد نیاز خود را برای دریافت انتخاب کنید.
فیلدهایی که با فرمت JSON ارسال میشوند در ادامه نشان داده شده است. میتوانید با غیر فعال کردن هر کدام، آن را از لاگ دریافتی حذف کنید. برای مثال مقادیر قابل ارسال روی لاگ HTTP در تصویر قابل مشاهده است:
در جدول زیر اطلاعات هر پارامتر بیان شده است:
-
WAF Events
توضیحات فیلد ارسالی Cloud security product name Product Timestamp of log Timestamp Client real IP address Remote Address HTTP request host name Domain Cloud security raw log Data -
DNS Requests
توضیحات فیلد ارسالی Timestamp of DNS log Timestamp Unique ID of DNS request UUID DNS record of query Record DNS record type in request query Type Client real IP address IP Client real country name Country Client IP AS number AS Number Status code user received in response Response Status Code Process time of request Process Time -
HTTP Requests
توضیحات فیلد ارسالی (... ,HTTP Request Method (GET, POST Method (HTTP request scheme (HTTP or HTTPS Scheme HTTP request host header Domain Name HTTP request referrer header Referer Real IP address of visitor IP Address HTTP request user agent header User Agent Country of visitor's IP based on maxmind geoIP database Country AS number of visitor's IP AS Number Content type of HTTP request Content Type Response status code for HTTP request Response Status Code Server port that request was sent to Server Port Sum of bytes send to visitor Bytes Sent Byte received from upstream Bytes Received Time of read request from upstream Upstream Time (... ,Cache status of response (HIT, BYPASS, MISS Cache Status Unique identifier of HTTP request Request ID URI address in HTTP request URI Query string key-values in url Query String -
Errors
توضیحات فیلد ارسالی IP of the client Client IP The protocol of the upstream Upstream Protocol The URI of the upstream Upstream URI The port of the upstream Upstream Port The IP of the upstream Upstream IP HTTP request host header Domain Name The version of the HTTP protocol HTTP Version HTTP request method (GET, POST, ...) Request Method URI Address in the HTTP request Request URI Real timestamp of the log Real Timestamp The error message Error Message The ID of the pop site Pop Site The ID of the request Request ID -
Event Logs
توضیحات فیلد ارسالی HTTP Requset Host Header Domain Name JA3 Fingerprint hash is a fingerprinting alghorithm to identify SSL/TLS client applications based on their handshake characteristics JA3 Fingerprint The timestamp of the original request Timestamp HTTP Request method (GET,POST, …) Method HTTP Request Schema (HTTP or HTTPS) Scheme Visitor's true IP Address IP Address Country of visitor’s IP based on maxmind geoip database Country Response Status code for http request Response Status Code Upstream Server IP ServerIP Server port that sent to Server Port URI address in HTTP request URI Query String key-values in URI Query 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/28
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 کمک بگیرید.