เซิร์ฟเวอร์ของฉันล่มทุกครั้งที่มีผู้ทดสอบที่น่ารำคาญพยายามค้นหาช่องโหว่ด้านความปลอดภัยในแอปพลิเคชันของฉัน
ฉันเห็นสิ่งนี้ใน errorlog:
17:48:48 +0200] "\x16\x03\x01\x00M\x01\x00\x00I\x03\x03\xDBJA\xC5\xB17\xF6\xDA \xD4\xEEEg0\xE0\xF2\xF2\xC9S\ xE4\xF9v}\x1E\x00\xC8\xC3d\x 80h;= \x1F\xD2\xAF?\x88\x8A\xA2\xCF\x16G\x99\x1D\x91" 400 173 "-" "-"
เซิร์ฟเวอร์ได้รับการกำหนดค่าเหมือนเซิร์ฟเวอร์ nginx + php-fpm ปกติ พอร์ต 80 ถูกเปลี่ยนเส้นทางไปที่ 443 และกำหนดค่า ssl อย่างถูกต้อง
ฉันเพิ่มบรรทัดนี้ด้วย:
ถ้า ($request_method !~ ^(GET|HEAD|POST|OPTIONS|DELETE|PUT|PATCH)$) { ส่งคืน 405; }
(ในการกำหนดค่าเซิร์ฟเวอร์ทั้งสอง)
นี่เป็นคำขอเดียวที่ "กำลังทดสอบ" ซึ่งให้ผลลัพธ์เป็น 400 คำขออื่นๆ ทั้งหมดให้ผลลัพธ์เป็น 301 หรือ 404
ฉันพบปัญหาที่คล้ายกันซึ่งการกำหนดค่าส่วน ssl ของ nginx ไม่ถูกต้อง ฉันตรวจสอบการกำหนดค่าแล้ว แต่ดูเหมือนไม่เป็นไร
ฉันมีปัญหาเดียวกันบนเซิร์ฟเวอร์อื่นที่มีการกำหนดค่าคล้ายกันและบนเซิร์ฟเวอร์ที่มีการกำหนดค่า nginx -> apache_mpm_prefork_fpm
แนวคิดนี้คืออะไรและจะป้องกันเซิร์ฟเวอร์จากการหยุดทำงานได้อย่างไร
วิธีทำซ้ำคำขอทดสอบดังกล่าว (ฉันลองในบุรุษไปรษณีย์ แต่ได้ผลลัพธ์ที่แตกต่างออกไป)
ขอบคุณมาก.
แก้ไข
ฉันพบวิธีสร้างบันทึกนั้นอีกครั้ง:
https://ชื่อเซิร์ฟเวอร์:80.
แต่ฉันคิดไม่ออกว่าจะบล็อกคำขอประเภทนี้ได้อย่างไร
ฉันลองใช้ $scheme แต่คำขอถูกเข้ารหัส ฉันพยายามเพิ่ม ssl ในการกำหนดค่า แต่ไม่มีอะไรเปลี่ยนแปลง
ต้องมีเหตุผลว่าทำไมไซต์ที่ทดสอบ / ระเบิดเหล่านั้นจึงพยายามส่งคำขอ https ไปยังพอร์ต 80