პრობლემების მოგვარება
ეს გვერდი PRX-WAF-ის მუშაობისას შეხვედრილ ყველაზე გავრცელებულ პრობლემებს, მათ მიზეზებსა და გადაწყვეტებს მოიცავს.
მონაცემ-ბაზ-კავშირი ვერ ხერხდება
სიმპტომები: PRX-WAF ვერ იწყება "connection refused" ან "authentication failed" შეცდომებით.
გადაწყვეტები:
- PostgreSQL-ის მუშაობის გადამოწმება:
# Docker
docker compose ps postgres
# systemd
sudo systemctl status postgresql- კავშირ-ტესტი:
psql "postgresql://prx_waf:[email protected]:5432/prx_waf"- კავშირ-სტრინგის შემოწმება TOML კონფ-ფაილში:
[storage]
database_url = "postgresql://prx_waf:[email protected]:5432/prx_waf"- მიგრაციების გაშვება მონაცემ-ბაზ-არსებობისას, მაგრამ ცხრილ-არარსებობის შემთხვევაში:
prx-waf -c configs/default.toml migrateწესები არ იტვირთება
სიმპტომები: PRX-WAF იწყება, მაგრამ წესები აქტიური არ არის. შეტევები არ გამოვლინდება.
გადაწყვეტები:
- წეს-სტატისტიკის შემოწმება:
prx-waf rules statsგამოსავლენი 0 წეს-ს აჩვენებს -- წეს-დირექტორია შეიძლება ცარიელი ან არასწორად კონფიგურირებული იყოს.
- წეს-დირექტორიის გზის გადამოწმება კონფ-ფაილში:
[rules]
dir = "rules/"- წეს-ფაილების ვალიდაცია:
python rules/tools/validate.py rules/- YAML სინტაქს-შეცდომების შემოწმება -- ერთი დეფექტური ფაილი ყველა წეს-ჩატვირთვას შეიძლება ხელს უშლიდეს:
# Validate one file at a time to find the problem
python rules/tools/validate.py rules/owasp-crs/sqli.yaml- ჩაშენებული წეს-ების ჩართვის გადამოწმება:
[rules]
enable_builtin_owasp = true
enable_builtin_bot = true
enable_builtin_scanner = trueHot-Reload არ მუშაობს
სიმპტომები: წეს-ფაილები შეიცვალა, მაგრამ ცვლილებები ძალაში არ შევიდა.
გადაწყვეტები:
- Hot-reload-ის ჩართვის გადამოწმება:
[rules]
hot_reload = true
reload_debounce_ms = 500- ხელით გადატვირთვის გამოძახება:
prx-waf rules reload- SIGHUP-ის გაგზავნა:
kill -HUP $(pgrep prx-waf)- ფაილ-სისტემ-ყურების ლიმიტის შემოწმება (Linux):
cat /proc/sys/fs/inotify/max_user_watches
# If too low, increase:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pყალბ-დადებითები
სიმპტომები: ლეგიტიმური მოთხოვნები იბლოკება (403 Forbidden).
გადაწყვეტები:
- დამბლოკავი წეს-ის გამოვლენა უსაფრთხოების მოვლენებიდან:
curl -H "Authorization: Bearer $TOKEN" http://localhost:9527/api/security-eventsმოვლენაში rule_id ველის ძებნა.
- კონკრეტული წეს-ის გამორთვა:
prx-waf rules disable CRS-942100- პარანოიის დონის შემცირება. პარანოიის 2+ დონეზე მუშაობისას 1-ზე დაწევა:
# In your rules config, only load paranoia level 1 rules- წეს-ის log-რეჟიმზე გადართვა ბლოკვის ნაცვლად მონიტორინგისთვის:
წეს-ფაილის რედაქტირება და action: "block"-ის action: "log"-ად შეცვლა, შემდეგ გადატვირთვა:
prx-waf rules reload- IP allowlist-ის დამატება სანდო წყაროებისთვის:
curl -X POST http://localhost:9527/api/rules/ip \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "10.0.0.0/8", "action": "allow"}'TIP
ახალი წეს-ების განასახებისას ჯერ action: log გამოიყენე ყალბ-დადებითების სამონიტოროდ, შემდეგ action: block-ზე გადართვამდე.
SSL სერთიფიკატ-პრობლემები
სიმპტომები: HTTPS კავშირები ვერ ხდება, სერთიფიკატ-შეცდომები ან Let's Encrypt-განახლება ვერ ხდება.
გადაწყვეტები:
სერთიფიკატ-სტატუსის შემოწმება ადმინ UI-ის SSL Certificates სექციაში.
80-ე პორტის ინტერნეტიდან ხელმისაწვდომობის გადამოწმება ACME HTTP-01 challenge-ებისთვის.
სერთიფიკატ-გზების შემოწმება ხელით სერთიფიკატების გამოყენებისას:
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"- სერთიფიკატ-დომენ-შესაბამისობის გადამოწმება:
openssl x509 -in /etc/prx-waf/tls/cert.pem -text -noout | grep -A1 "Subject Alternative Name"Cluster კვანძები ვერ უკავშირდება
სიმპტომები: სამუშაო კვანძები cluster-ს ვერ შეუერთდება. სტატუსი "disconnected" peer-ებს აჩვენებს.
გადაწყვეტები:
- ქსელ-კავშირის გადამოწმება cluster-პორტზე (ნაგულისხმევი: UDP 16851):
# From worker to main
nc -zuv node-a 16851- Firewall-წეს-ების შემოწმება -- cluster-კომუნიკაცია UDP-ს იყენებს:
sudo ufw allow 16851/udp- სერთიფიკატების გადამოწმება -- ყველა კვანძი ერთი CA-ით ხელმოწერილ სერთიფიკატებს უნდა იყენებდეს:
openssl verify -CAfile cluster-ca.pem node-b.pem- Seed-კონფიგურაციის შემოწმება სამუშაო კვანძებზე:
[cluster]
seeds = ["node-a:16851"] # Must resolve to the main node- ლოგ-ების გადახედვა debug-სიხშირით:
prx-waf -c config.toml run 2>&1 | grep -i "cluster\|quic\|peer"მაღალი მეხსიერება-მოხმარება
სიმპტომები: PRX-WAF-ის პროცესი მოსალოდნელზე მეტ მეხსიერებას მოიხმარს.
გადაწყვეტები:
- პასუხ-ქეშ-ზომის შემცირება:
[cache]
max_size_mb = 128 # Reduce from default 256- მონაცემ-ბაზ-კავშირ-პულის შემცირება:
[storage]
max_connections = 10 # Reduce from default 20- სამუშაო ნაკადების შემცირება:
[proxy]
worker_threads = 2 # Reduce from CPU count- მეხსიერება-მოხმარების მონიტორინგი:
ps aux | grep prx-wafCrowdSec კავშირ-პრობლემები
სიმპტომები: CrowdSec ინტეგრაცია "disconnected"-ს აჩვენებს ან გადაწყვეტილებები არ იტვირთება.
გადაწყვეტები:
- LAPI-კავშირ-ტესტი:
prx-waf crowdsec test- API გასაღების გადამოწმება:
# On the CrowdSec machine
cscli bouncers list- LAPI URL-ის შემოწმება:
[crowdsec]
lapi_url = "http://127.0.0.1:8080"
api_key = "your-bouncer-key"- უსაფრთხო fallback-ქმედების დაყენება LAPI-მიუწვდომლობისათვის:
[crowdsec]
fallback_action = "log" # Don't block when LAPI is downშესრულების გამართვა
ნელი პასუხ-დრო
- პასუხ-ქეშ-ის ჩართვა:
[cache]
enabled = true
max_size_mb = 512- სამუშაო ნაკადების გაზრდა:
[proxy]
worker_threads = 8- მონაცემ-ბაზ-კავშირების გაზრდა:
[storage]
max_connections = 50მაღალი CPU-მოხმარება
აქტიური წეს-ების რაოდენობის შემცირება. 3-4 პარანოიის-დონის წეს-ების გამორთვა საჭიროების არარსებობის შემთხვევაში.
გამოუყენებელი გამოვლენ-ფაზების გამორთვა. მაგალითად, CrowdSec-ის გამოუყენებლობისას:
[crowdsec]
enabled = falseდახმარების მიღება
ზემოთ მოყვანილი გადაწყვეტები პრობლემის ვერ მოგვარების შემთხვევაში:
- არსებული პრობლემების შემოწმება: github.com/openprx/prx-waf/issues
- ახალი პრობლემის შეტანა შემდეგით:
- PRX-WAF ვერსია
- ოპერაციული სისტემა და ბირთვ-ვერსია
- კონფ-ფაილი (პაროლ-გასაუქმებლად)
- შესაბამისი ლოგ-გამოსავალი
- გამეორების ნაბიჯები
შემდეგი ნაბიჯები
- კონფ-ცნობარი -- ყველა პარამეტრის გამართვა
- წეს-ძრავა -- წეს-შეფასების გაგება
- Cluster-ის რეჟიმი -- cluster-სპეციფიკური პრობლემ-მოგვარება