PRX-WAF
PRX-WAF არის ვებ აპლიკაციის ფაიერვოლი, აგებული როგორც 7-crate Rust სამუშაო სივრცე Cloudflare-ის Pingora პროქსი ფრეიმვორკის თავზე. ის ამოწმებს HTTP ტრაფიკს 17-ფაზიანი გამოვლენის პაიპლაინით და მხარს უჭერს YAML, ModSecurity და JSON წესების ფორმატებს.
არქიტექტურა
Section titled “არქიტექტურა”PRX-WAF ორგანიზებულია როგორც Rust სამუშაო სივრცე შვიდი crate-ით:
| Crate | როლი |
|---|---|
prx-waf-core | Pingora ინტეგრაცია, მოთხოვნა/პასუხის სასიცოცხლო ციკლი, ფაზების ორკესტრაცია |
prx-waf-rules | წესების ანალიზი (YAML, ModSecurity, JSON), წესების ძრავა |
prx-waf-detection | გამოვლენის ლოგიკა ყველა 17 ფაზისთვის |
prx-waf-admin | Vue 3 ადმინის დაფა და მართვის API |
prx-waf-notification | შეტყობინებების მიწოდება (ვებჰუკი, Telegram, ელფოსტა) |
prx-waf-cluster | QUIC-ზე დაფუძნებული კლასტერის სინქრონიზაცია |
prx-waf-cli | ბრძანების ხაზის ინტერფეისი |
17-ფაზიანი გამოვლენის პაიპლაინი
Section titled “17-ფაზიანი გამოვლენის პაიპლაინი”ყოველი HTTP მოთხოვნა გადის ამ ფაზებს თანმიმდევრობით. ნებისმიერ ფაზაში თანხვედრას შეუძლია დამუშავების შეწყვეტა კონფიგურირებული ქმედებით.
| ფაზა | სახელი | აღწერა |
|---|---|---|
| 1 | IP ნებართვების სია | სანდო IP-ებიდან მოთხოვნების დაშვება (ყველა შემდგომი ფაზის გვერდის ავლა) |
| 2 | IP შავი სია | ცნობილი ცუდი IP-ებიდან მოთხოვნების დაბლოკვა |
| 3 | URL ნებართვების სია | სანდო URL გზებზე მოთხოვნების დაშვება |
| 4 | URL შავი სია | აკრძალულ URL გზებზე მოთხოვნების დაბლოკვა |
| 5 | CC/DDoS | მოთხოვნის ლიმიტი და კავშირის წყალდიდობის გამოვლენა |
| 6 | სკანერის გამოვლენა | ავტომატური მოწყვლადობის სკანერების იდენტიფიცირება (Nikto, sqlmap და ა.შ.) |
| 7 | ბოტის გამოვლენა | ბოტებისა და ადამიანების განსხვავება (თითის ანაბეჭდი, გამოწვევა) |
| 8 | SQL ინექცია | SQLi პეილოადების გამოვლენა პარამეტრებში, ჰედერებსა და სხეულში |
| 9 | XSS | ჯვარ-საიტ სკრიპტინგის პეილოადების გამოვლენა |
| 10 | RCE | დისტანციური კოდის შესრულების მცდელობების გამოვლენა (ბრძანების ინექცია, SSRF) |
| 11 | დირექტორიის გადალახვა | გზის გადალახვის მცდელობების გამოვლენა (../, კოდირებული ვარიანტები) |
| 12 | მორგებული წესები (Rhai) | მომხმარებლის მიერ განსაზღვრული გამოვლენის ლოგიკა Rhai სკრიპტირების ენაზე |
| 13 | OWASP CRS | OWASP Core Rule Set-ის თავსებადობის ფენა |
| 14 | სენსიტიური მონაცემები | სენსიტიური მონაცემების გამოვლენა პასუხებში (საკრედიტო ბარათები, SSN-ები, API გასაღებები) |
| 15 | ანტი-ჰოტლინკინგი | თქვენი რესურსების არაავტორიზებული ჩაშენების თავიდან აცილება |
| 16 | CrowdSec | CrowdSec-ის საზოგადოების ბლოკირების სიებთან ინტეგრაცია |
| 17 | GeoIP | ტრაფიკის დაბლოკვა ან დაშვება ქვეყნის/რეგიონის მიხედვით |
წესების ფორმატები
Section titled “წესების ფორმატები”PRX-WAF მხარს უჭერს სამ წესების ფორმატს, რაც გუნდებს საშუალებას აძლევს გამოიყენონ თავიანთი სასურველი სინტაქსი ან იმპორტირონ არსებული წესების ნაკრებები:
YAML წესები
Section titled “YAML წესები”- id: sql-injection-union phase: 8 description: "Detect UNION-based SQL injection" match: field: args pattern: "(?i)union\\s+(all\\s+)?select" action: block severity: criticalModSecurity წესები
Section titled “ModSecurity წესები”SecRule ARGS "@rx (?i)union\s+(all\s+)?select" \ "id:1001,phase:2,deny,status:403,msg:'SQL Injection'"JSON წესები
Section titled “JSON წესები”{ "id": "xss-script-tag", "phase": 9, "match": {"field": "args", "pattern": "<script[^>]*>"}, "action": "block"}PRX-WAF მოყვება 50+ წესების ფაილი, რომლებიც მოიცავს გავრცელებულ შეტევის შაბლონებს ყველა გამოვლენის ფაზაში.
რეაგირების ქმედებები
Section titled “რეაგირების ქმედებები”წესის თანხვედრისას, PRX-WAF-ს შეუძლია ერთ-ერთი ქმედების მიღება:
| ქმედება | აღწერა |
|---|---|
block | 403 პასუხის დაბრუნება და მოთხოვნის შეწყვეტა |
allow | მოთხოვნის ექსპლიციტური დაშვება (დარჩენილი ფაზების გამოტოვება) |
log | თანხვედრის ლოგირება, მაგრამ მოთხოვნის გაგრძელების დაშვება |
redirect | კლიენტის გადამისამართება მითითებულ URL-ზე |
ქმედებები კონფიგურირებულია წესზე და შეიძლება გადაიფაროს გლობალური პოლიტიკით.
შეტყობინებების სისტემა
Section titled “შეტყობინებების სისტემა”PRX-WAF უშვებს რეალურ დროში შეტყობინებებს საფრთხეების აღმოჩენისას:
| არხი | კონფიგურაცია |
|---|---|
| ვებჰუკი | HTTP POST JSON პეილოადით ნებისმიერ ბოლო წერტილზე |
| Telegram | Bot API ჩატის ID-ით |
| ელფოსტა | SMTP კონფიგურირებადი გამომგზავნით/მიმღებით |
შეტყობინებები მოიცავს თანხვედრილ წესს, მოთხოვნის დეტალებს (IP, URL, ჰედერები), სიმძიმესა და მიღებულ ქმედებას.
რეალურ დროში სტრიმები
Section titled “რეალურ დროში სტრიმები”PRX-WAF მხარს უჭერს WebSocket რეალურ დროში სტრიმებს ცოცხალი მონიტორინგისთვის:
- ცოცხალი მოთხოვნების ჟურნალი გამოვლენის შედეგებით
- შეტევის სიხშირის მეტრიკები
- ყველაზე დაბლოკილი IP-ები და შეტევის ტიპები
ადმინის დაფა უკავშირდება ამ სტრიმებს უსაფრთხოების რეალურ დროში მიმოხილვისთვის.
QUIC კლასტერი
Section titled “QUIC კლასტერი”მრავალ-კვანძიანი გაშლებისთვის, PRX-WAF კვანძები სინქრონიზებენ მდგომარეობას QUIC-ით:
- საზიარო IP ბლოკირების სიები და მოთხოვნის ლიმიტის მრიცხველები
- წესების განახლებების გავრცელება კვანძებს შორის
- თანმიმდევრული GeoIP და CrowdSec მონაცემები
ადმინის დაფა
Section titled “ადმინის დაფა”Vue 3 ადმინის დაფა უზრუნველყოფს:
- რეალურ დროში ტრაფიკისა და საფრთხეების ვიზუალიზაცია
- წესების მართვა (შექმნა, რედაქტირება, ჩართვა/გამორთვა)
- IP ნებართვების/შავი სიების მართვა
- გამოვლენის ფაზების კონფიგურაცია
- შეტყობინებების არხის დაყენება
- კლასტერის კვანძების სტატუსი
გაშვება
Section titled “გაშვება”# ყველა crate-ის აშენებაcargo build --release
# კონფიგურაციით გაშვება./target/release/prx-waf --config /etc/prx-waf/config.yaml
# CLI: წესის ტესტირება სანიმუშო მოთხოვნაზე./target/release/prx-waf-cli test-rule --rule rules/sqli.yaml --request sample.http