Score:0

Mod_Security ป้องกันการดุร้ายสำหรับ Joomla

ธง vn

ฉันพยายามค้นหา/สร้างกฎ Mod_Security เพื่อตรวจหาและบล็อกการเข้าสู่ระบบที่ล้มเหลวหลายครั้งใน Joomla เวอร์ชันล่าสุด ฉันพบคำตอบตั้งแต่เดือนมีนาคม 2558 ที่นี่: https://serverfault.com/a/646608/960638 แต่ในการทดสอบของฉันเอง ไม่พบการเข้าสู่ระบบล้มเหลว แม้จะเปิดใช้งานการบันทึก แต่ก็ตรวจไม่พบอะไรเลย ฉันสงสัยว่ารหัสล้าสมัย

ฉันพบกฎ ModSec อื่นที่เผยแพร่โดย IT Octopus ที่ https://www.itoctopus.com/a-modsecurity-rule-to-block-brute-force-attacks-on-a-joomla-เว็บไซต์ รหัสอยู่ด้านล่าง ฉันทดสอบบนเซิร์ฟเวอร์แต่ฉันพบว่ามันไวเกินไปและบล็อกฉันหลังจากที่ฉันเข้าสู่ระบบ + ออกจาก Joomla (ด้วย ถูกต้อง ข้อมูลประจำตัว).

<Location /administrator>
    SecDefaultAction phase:2,deny,status:403,log,auditlog
    SecRule IP:bf_counter "@eq 5" "id:1000002,phase:2,log,block,expirevar:IP.bf_counter=3600,msg:'IP address blocked because of a suspected brute force attack on the Joomla website'"
    SecRule ARGS:option "@streq com_login" "id:1000000,phase:2,chain,t:none,log,pass,msg:'Multiple Joomla authentication failures from IP address', setvar:IP.bf_counter=+1"
</Location>

ต่อไป ฉันพบกฎ ModSecurity ที่ http://artefact.io/brute-force-protection-modsecurity/ และเป็นเซิร์ฟเวอร์ที่ฉันใช้มาหลายเดือนแล้ว มันทำงานได้ดีมากจนกระทั่งเมื่อวานนี้เมื่อเราพบจุดบกพร่อง ลูกค้ามีเว็บไซต์ Joomla 10 แห่งและพบว่าเมื่อพวกเขาเข้าสู่ระบบ (ด้วยข้อมูลประจำตัวที่ถูกต้อง) ส่งผลให้ IP ของพวกเขาถูกจำกัด ฉันสามารถทำซ้ำสิ่งนี้ได้ในระหว่างการทดสอบของฉันเอง ดังนั้นโค้ดด้านล่างจึงเป็นโค้ดที่ดีที่สุดที่เราพบ แต่บรรทัด com_login / login ดูเหมือนจะไม่แยกแยะระหว่างการเข้าสู่ระบบที่ล้มเหลวและการเข้าสู่ระบบที่สำเร็จ มันทำงานเพื่อป้องกันการดุร้ายทั่วไป แต่มันไม่ทำงานเมื่อไคลเอ็นต์มีไซต์ Joomla จำนวนมากและเข้าถึงการติดตั้งหลายรายการพร้อมกันอย่างถูกต้องตามกฎหมาย นี่คือรหัส:

# จูมล่าเดรัจฉานฟอร์ซ
SecAction "เฟส:1,pass,setvar:TX.max_requests=6,setvar:TX.requests_ttl=180,setvar:TX.block_ttl=900,initcol:ip=%{REMOTE_ADDR},nolog,id:5001000"
<LocationMatch "/administrator/index.php">
SecAction "เฟส:2,เชน,โนล็อก,id:5001022"
SecRule REQUEST_METHOD "^POST$" "เชน"
SecRule ARGS_POST_NAMES "^ชื่อผู้ใช้$" "เชน"
SecRule ARGS_POST_NAMES "^passwd$" "เชน"
SecRule ARGS_POST:ตัวเลือก "^com_login$" "เชน"
SecRule ARGS_POST:งาน "^login$" "chain"
SecAction "setvar:ip.request_count=+1,expirevar:ip.request_count=%{TX.requests_ttl}"

SecRule IP:request_count "@ge %{TX.max_requests}" "phase:2,drop,setvar:ip.blocked=1,expirevar:ip.blocked=%{TX.block_ttl},log,msg:'Joomla กำลังดุร้าย . การบล็อกเป็นเวลา %{TX.block_ttl} วินาที',id:5001023"

</LocationMatch>

ในที่สุด ฉันอ่านบางโพสต์ที่แนะนำ "ส่วนหัว P3P จะถูกส่งกลับหลังจากเข้าสู่ระบบสำเร็จ" และสิ่งนี้สามารถใช้ในกฎ ModSecurity มันถูกแนะนำโดย @godzillante ที่นี่: https://serverfault.com/a/646608/960638

มันใช้ ModSecurity เฟส 5 (วิเคราะห์ไฟล์บันทึก) ดังนั้นฉันไม่แน่ใจว่านี่เป็นข้อเสียหรือไม่ และที่สำคัญกว่านั้น ในการทดสอบของฉัน ฉันไม่สามารถทำให้มันทำงานได้ แม้จะเปิดใช้การบันทึก แต่ตรวจไม่พบการเข้าสู่ระบบที่ล้มเหลวและไม่ได้จำกัดการเข้าถึง นี่คือรหัส:

ขั้นตอน SecAction:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000144
<ตำแหน่งที่ตรงกัน "/administrator/index.php">
    SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000145,msg:'ที่อยู่ IP ถูกบล็อกเป็นเวลา 5 นาที มีการพยายามเข้าสู่ระบบมากกว่า 5 ครั้งใน 3 นาที'"
    SecRule RESPONSE_HEADERS:P3P "streq 0" "เฟส:5,t:ไม่มี,nolog,pass,setvar:ip.bf_counter=0,id:5000146"
    SecRule RESPONSE_HEADERS:P3P "!streq 0" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000147"
    SecRule ip:bf_counter "@gt 5" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>

วัตถุประสงค์ของฉันที่นี่คือการปรับปรุงโค้ด "Joomla Brute Force" (ด้านบน) เพราะมันบล็อกการเดรัจฉานที่กำลังท่วมท้น แต่โชคไม่ดีที่มันยังบล็อกผู้ใช้เมื่อพวกเขาเข้าสู่ระบบ Joomla อย่างถูกกฎหมายเป็นจำนวนมาก ฉันต้องการรหัสที่สามารถบอกความแตกต่างระหว่างการเข้าสู่ระบบล้มเหลวและการเข้าสู่ระบบ Joomla ที่สำเร็จ ฉันได้ดำเนินการเรื่องนี้มาระยะหนึ่งแล้ว ดังนั้นฉันจึงติดต่อกับชุมชนที่นี่ ขอบคุณล่วงหน้า!

djdomi avatar
za flag
เช่นเดียวกับสิ่งพื้นฐาน - เพิ่มการรับรองความถูกต้องพื้นฐานสำหรับ /administrator และ จำกัด ip acces i..e เป็น vpn :)
Peter avatar
vn flag
นั่นเป็นคำแนะนำที่ดีสำหรับเจ้าของเว็บไซต์ แต่ฉันถามจากมุมมองของผู้ดูแลเซิร์ฟเวอร์ ฉันต้องการโซลูชันที่มีประสิทธิภาพในการทำงานกับเซิร์ฟเวอร์จำนวนมากและเว็บไซต์จำนวนมาก ขอขอบคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา