Perintah Htaccess tertentu memblokir pekerjaan cron linux saya

Saya memiliki pekerjaan cron linux berikut yang ditambahkan melalui panel kontrol hosting saya untuk menggantikan pekerjaan cron internal wordpress

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

Namun, perintah tertentu di dalam file .htaccess memblokir tugas cron saya agar tidak berjalan setiap jam. Setelah menghabiskan beberapa waktu meneliti, saya mengonfirmasi bahwa perintah tersebut berasal dari perintah tambahan yang saya tambahkan untuk melindungi situs saya dari eksploitasi string kueri.

# 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

Saya tahu jika saya menghapus perintah ini saja, maka semuanya akan baik-baik saja. Namun, perintah ini dapat membantu saya mengurangi eksploitasi string kueri yang saya dapatkan dari situs lain. Bisakah Anda semua membantu saya mengidentifikasi bagian perintah mana yang menjadi penyebabnya?


person Tang Cs    schedule 02.07.2015    source sumber


Jawaban (2)


Kemungkinan besar kondisi pertama, itu memblokir permintaan dari wget:

RewriteCond %{HTTP_USER_AGENT} (havij|libwww-perl|wget|...
person sendmoreinfo    schedule 03.07.2015
comment
Terima kasih. Saya pikir itu bisa menjadi penyebab utama yang menghentikan menjalankan tugas cron linux saya. Tapi, saya belum mencobanya. Saya mendapat saran lain dari situs lain yang mengajari saya cara menggunakan PHP daripada wget - person Tang Cs; 04.07.2015
comment
Dengan hanya mengganti wget dengan direktif PHP, saya tidak perlu mengubah apa pun pada file htaccess saya. Jadi, itu menyelesaikan semua masalah saya! - person Tang Cs; 04.07.2015
comment
Anda juga dapat memaksa wget untuk menggunakan string agen pengguna yang berbeda, sehingga melewati aturan penulisan ulang. - person sendmoreinfo; 05.07.2015

Pekerjaan cron linux saya berfungsi sekarang. Saya mengganti arahan wget dengan PHP, yang saya dapatkan dari situs lain. Tapi, saya punya pertanyaan lain di sini... Sebenarnya, saya memiliki dua pekerjaan cron yang saya atur agar dijalankan pada interval yang berbeda (masing-masing sekali per jam dan sekali per tiga jam). Jika saya tidak mengganti pekerjaan cron internal wordpress dengan cron linux, mereka seharusnya dapat berjalan pada interval yang berbeda. Tapi, setelah saya menggantinya dengan tugas cron linux, saya kira saya hanya bisa memilih salah satu interval untuk menjalankan kedua tugas cron secara bersamaan. Dan saya juga menemukan bahwa tidak peduli berapa interval yang saya atur untuk menjalankan fungsi tertentu dalam skrip php saya (tentu saja dikodekan dalam file plugin saya), mereka akan mengikuti interval yang saya atur dalam arahan linux cron. Jadi, apakah saya harus menggabungkan kedua pekerjaan cron dan hanya menggunakan satu interval karena tampaknya cron linux hanya mengizinkan untuk mengatur satu interval untuk arahan itu?

person Tang Cs    schedule 04.07.2015
comment
Bisakah Anda memposting baris perintah sebenarnya yang Anda gunakan sehingga orang lain (misalnya saya!) dengan masalah yang sama dapat mengetahui apa yang sebenarnya harus dilakukan? - person Ed Morton; 05.09.2016