คำสั่ง Htaccess บางอย่างกำลังบล็อกงาน cron linux ของฉัน

ฉันได้เพิ่มงาน linux cron ต่อไปนี้ผ่านแผงควบคุมการโฮสต์ของฉันเพื่อแทนที่งาน cron ภายในของ wordpress

wget -q -O - http://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

อย่างไรก็ตาม คำสั่งบางอย่างภายในไฟล์ .htaccess กำลังบล็อกงาน cron ของฉันไม่ให้ทำงานทุกชั่วโมง หลังจากใช้เวลาค้นคว้ามาระยะหนึ่งแล้ว ฉันยืนยันว่าคำสั่งเหล่านั้นมาจากคำสั่งเพิ่มเติมเหล่านี้ที่ฉันเพิ่มไว้เพื่อปกป้องไซต์ของฉันจากการใช้ประโยชน์จากสตริงข้อความค้นหา

# BEGIN QUERY STRING EXPLOITS
# The libwww-perl User Agent is forbidden - Many bad bots use libwww-perl modules, but some good bots use it too.
# Good sites such as W3C use it for their W3C-LinkChecker.
# Add or remove user agents temporarily or permanently from the first User Agent filter below.
# If you want a list of bad bots / User Agents to block then scroll to the end of this file.
RewriteCond %{HTTP_USER_AGENT} (havij|libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]
RewriteCond %{REQUEST_URI} owssvr\.dll [NC,OR]
RewriteCond %{HTTP_REFERER} (%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_REFERER} \.opendirviewer\. [NC,OR]
RewriteCond %{HTTP_REFERER} users\.skynet\.be.* [NC,OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*embed.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^e]*e)+mbed.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*object.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^o]*o)+bject.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} ^.*(\(|\)|<|>|%3c|%3e).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\x00|\x04|\x08|\x0d|\x1b|\x20|\x3c|\x3e|\x7f).* [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} \-[sdcr].*(allow_url_include|allow_url_fopen|safe_mode|disable_functions|auto_prepend_file) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]
# END QUERY STRING EXPLOITS

ฉันรู้ว่าถ้าฉันลบคำสั่งเหล่านี้ไป ทุกอย่างคงจะไม่เป็นไร แต่คำสั่งเหล่านี้สามารถช่วยฉันลดการใช้ประโยชน์จากสตริงข้อความค้นหาที่ฉันได้รับจากไซต์อื่นได้ พวกคุณทุกคนช่วยฉันระบุได้ไหมว่าส่วนไหนของคำสั่งที่เป็นตัวการ?


person Tang Cs    schedule 02.07.2015    source แหล่งที่มา


คำตอบ (2)


เงื่อนไขแรกน่าจะเป็นเพราะกำลังบล็อกคำขอจาก wget:

RewriteCond %{HTTP_USER_AGENT} (havij|libwww-perl|wget|...
person sendmoreinfo    schedule 03.07.2015
comment
ขอบคุณ. ฉันคิดว่านั่นอาจเป็นสาเหตุหลักที่ทำให้งาน linux cron ของฉันหยุดทำงาน แต่ฉันไม่ได้ลองสิ่งนั้น ฉันได้รับคำแนะนำเพิ่มเติมจากไซต์อื่นที่สอนให้ฉันใช้ PHP แทนที่จะใช้ wget - person Tang Cs; 04.07.2015
comment
เพียงแทนที่ wget ด้วยคำสั่ง PHP ฉันไม่จำเป็นต้องเปลี่ยนแปลงอะไรในไฟล์ htaccess ของฉัน นั่นจะช่วยแก้ปัญหาของฉันทั้งหมด! - person Tang Cs; 04.07.2015
comment
คุณยังสามารถบังคับให้ wget ใช้สตริงตัวแทนผู้ใช้อื่นได้ ดังนั้นจึงข้ามกฎการเขียนซ้ำ - person sendmoreinfo; 05.07.2015

งาน cron linux ของฉันใช้งานได้แล้ว ฉันแทนที่คำสั่ง wget ด้วย PHP ซึ่งฉันได้รับจากไซต์อื่น แต่ฉันมีคำถามอื่นที่นี่ ... จริงๆแล้วฉันมีงาน cron สองงานซึ่งฉันกำหนดให้ทำงานในช่วงเวลาที่แตกต่างกัน (หนึ่งครั้งต่อชั่วโมงและหนึ่งครั้งต่อสามชั่วโมงตามลำดับ) หากฉันไม่แทนที่งาน cron ภายในของ wordpress ด้วย linux cron งานเหล่านั้นควรจะสามารถทำงานในช่วงเวลาที่ต่างกันได้ แต่หลังจากที่ฉันแทนที่มันด้วยงาน cron ของ linux ฉันคิดว่าฉันจะสามารถเลือกได้เพียงช่วงเวลาเดียวเพื่อรันงาน cron ทั้งสองในเวลาเดียวกัน และฉันก็พบว่าไม่ว่าฉันจะตั้งค่าช่วงเวลาใดเพื่อเรียกใช้ฟังก์ชันเฉพาะในสคริปต์ php ของฉัน (แน่นอนว่าเข้ารหัสในไฟล์ปลั๊กอินของฉัน) ฟังก์ชันเหล่านั้นจะเป็นไปตามช่วงเวลาที่ฉันตั้งไว้ในคำสั่ง cron ของ linux ดังนั้น ฉันต้องรวมงาน cron ทั้งสองเข้าด้วยกันและใช้เพียงช่วงเวลาเดียวเท่านั้น เนื่องจากดูเหมือนว่า linux cron อนุญาตให้ตั้งค่าช่วงเวลาเดียวสำหรับคำสั่งนั้นหรือไม่

person Tang Cs    schedule 04.07.2015
comment
คุณช่วยโพสต์บรรทัดคำสั่งจริงที่คุณใช้เพื่อให้ผู้อื่น (เช่นฉัน!) ที่มีปัญหาเดียวกันเพื่อดูว่าต้องทำอย่างไร - person Ed Morton; 05.09.2016