Score:0

การบล็อกเมธอด HTTP ไม่ทำงานบนโดเมนย่อย

ธง bf
Tom

ฉันทำการบล็อกเมธอดอื่นที่ไม่ใช่ GET, POST และ OPTIONS ใน apache.conf และเมื่อฉันพยายามเรียกใช้เซิร์ฟเวอร์ผ่าน IP การบล็อกก็ใช้ได้

แต่เมื่อกำหนดค่าการบล็อกเดียวกันบนโดเมนย่อย (ผ่านเว็บไซต์ที่มี) การบล็อกนี้จะไม่เกิดขึ้น ฉันทำอะไรผิดไปหรือเปล่า?

apache2.conf

<Directory /var/www/>
    Options None
    AllowOverride None
    Require all granted

    <LimitExcept GET POST OPTIONS>
        Require all denied
    </LimitExcept>
</Directory>

sites-available/subdomain.example.com.conf

<VirtualHost *:80>
    ServerName subdomain.example.com
    ServerAlias subdomain.example.com
    DocumentRoot /var/www/html/subdomain.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

    RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on

    SSLCertificateFile      /certs/example.crt
    SSLCertificateKeyFile   /certs/example.key
    SSLCertificateChainFile /certs/example-intermediary.crt

    Protocols h2 http/1.1

    Header always set Strict-Transport-Security "max-age=31536000"

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

    <Directory /var/www/html/subdomain.example.com>
        Options None
        AllowOverride None
        Require all granted

        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>

    ServerName subdomain.example.com
    ServerAlias subdomain.example.com
    DocumentRoot /var/www/html/subdomain.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

การล็อกนี้ไม่ทำงาน เนื่องจากเมื่อดำเนินการคำขอด้วย PUT, DELETE, LOCK ฯลฯ เนื้อหาของหน้าจะถูกส่งกลับตามปกติ

Gerard H. Pille avatar
in flag
"AllowOverride None" บน /var/www อาจจะ?
Tom avatar
bf flag
Tom
@ GerardH.Pille ฉันตั้งค่านี้เนื่องจากคำแนะนำ CIS (4.4) >"ตรวจสอบให้แน่ใจว่าปิดใช้งาน OverRide สำหรับไดเร็กทอรีทั้งหมด" - "ค้นหาไฟล์กำหนดค่า Apache (httpd.conf และไฟล์การกำหนดค่าที่รวมอยู่) เพื่อค้นหาคำสั่ง AllowOverride ตั้งค่าสำหรับคำสั่ง AllowOverride ทั้งหมดเป็น None "
Gerard H. Pille avatar
in flag
ฉันเห่าต้นไม้ผิดตัว allowoverride จัดการคำสั่ง .htaccess เท่านั้น เนื้อหาของหน้าไม่ได้มาจากแคชใด ๆ ?
Tom avatar
bf flag
Tom
ไม่มีแคช ในบันทึกของ Apache จะแสดงคำขอที่ทำด้วยวิธีอื่นๆ
Gerard H. Pille avatar
in flag
ไม่มีลิงก์สัญลักษณ์ภายใต้ /var/www ? ใช้บันทึกแยกต่างหากสำหรับโฮสต์เสมือนนี้ ลอง "ต้องการผู้ใช้ที่ถูกต้อง" เพื่อดูว่าคุณถึงขีดจำกัดยกเว้นหรือไม่
Score:2
ธง ru

คุณควรหยุดใช้วิธีเก่าที่ซับซ้อนในการจำกัดวิธีการ

โหลด mod_allowmehtods.so และกำหนดสิ่งที่คุณต้องการอนุญาตแทนในรูปแบบที่เรียบง่าย

LoadModule allowmethods_module modules/mod_allowmethods.so
    
<ไดเร็กทอรี /var/www> 
#คำแนะนำอื่นๆ
AllowMethods รับตัวเลือกการโพสต์ 
</ไดเร็กทอรี>

เว้นแต่คุณจะแทนที่สิ่งนี้ในไดเร็กทอรีย่อยด้วยสิ่งอื่น สิ่งนี้จะทำงานได้ทั่วทั้งเซิร์ฟเวอร์ ลองและแจ้งให้เราทราบ

Gerard H. Pille avatar
in flag
แปลกที่เอกสารประกอบ ( http://httpd.apache.org/docs/current/mod/core.html ) ไม่ได้กล่าวถึงค่าเสื่อมราคา
ezra-s avatar
ru flag
@GerardH.Pille จริงอยู่ ฉันก้าวไปข้างหน้าอย่างแน่นอน คุ้มค่ากับการถกเถียงใน ASF อย่างแน่นอน mod_allowmethods นั้นง่ายกว่ามากและช่วยให้หยุดใช้ Limit LimitExcept ซึ่งอาจทำให้เกิดความสับสนได้ อนุญาตให้ฉันแก้ไขความคิดเห็นของฉัน ขอบคุณที่ชี้ให้เห็น!

โพสต์คำตอบ

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