Saya memiliki server dengan apache dan saya baru saja menginstal mod_security2 karena saya sering diserang oleh ini:
Versi apache saya adalah apache v2.2.3 dan saya menggunakan mod_security2.c
Ini adalah entri dari log kesalahan:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Berikut adalah kesalahan dari access_log:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
Saya mencoba mengkonfigurasi mod_security2 seperti ini:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Masalahnya di mod_security2 adalah bahwa SecFilterSelective tidak dapat digunakan, itu memberi saya kesalahan. Sebagai gantinya saya menggunakan aturan seperti ini:
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Bahkan ini tidak berhasil. Saya tidak tahu harus berbuat apa lagi. Adakah yang punya saran?
Perbarui 1
Saya melihat bahwa tidak ada yang bisa menyelesaikan masalah ini menggunakan mod_security. Sejauh ini menggunakan ip-tables sepertinya pilihan terbaik untuk melakukan ini, tetapi saya pikir file akan menjadi sangat besar karena perubahan ip serveral kali sehari.
Saya datang dengan 2 solusi lain, dapatkah seseorang mengomentari mereka tentang menjadi baik atau tidak.
Solusi pertama yang muncul di pikiran saya adalah mengecualikan serangan ini dari log kesalahan apache saya. Ini akan membuat saya lebih mudah untuk menemukan kesalahan mendesak lainnya saat terjadi dan tidak perlu meludah melalui log yang panjang.
Pilihan kedua lebih baik menurut saya, dan itu adalah memblokir host yang tidak dikirim dengan cara yang benar. Dalam contoh ini, serangan w00tw00t dikirim tanpa nama host, jadi saya pikir saya dapat memblokir host yang tidak dalam bentuk yang benar.
Perbarui 2
Setelah menjawab, saya sampai pada kesimpulan berikut.
Agar log kustom untuk apache akan menggunakan beberapa sumber daya yang tidak perlu, dan jika memang ada masalah, Anda mungkin ingin melihat log lengkap tanpa ada yang hilang.
Lebih baik mengabaikan klik dan berkonsentrasi pada cara yang lebih baik untuk menganalisis log kesalahan Anda. Menggunakan filter untuk log Anda pendekatan yang bagus untuk ini.
Pikiran akhir tentang subjek
Serangan yang disebutkan di atas tidak akan mencapai mesin Anda jika Anda setidaknya memiliki sistem yang terbaru sehingga pada dasarnya tidak ada kekhawatiran.
Mungkin sulit untuk menyaring semua serangan palsu dari yang asli setelah beberapa saat, karena log kesalahan dan log akses menjadi sangat besar.
Mencegah hal ini terjadi dengan cara apa pun akan membebani Anda sumber daya dan merupakan praktik yang baik untuk tidak menyia-nyiakan sumber daya Anda pada hal-hal yang tidak penting.
Solusi yang saya gunakan sekarang adalah Linux logwatch . Ini mengirimkan saya ringkasan log dan mereka disaring dan dikelompokkan. Dengan cara ini Anda dapat dengan mudah memisahkan yang penting dari yang tidak penting.
Terima kasih semua atas bantuannya, dan saya harap posting ini dapat membantu orang lain juga.
sumber
Memfilter IP bukan ide yang bagus, imho. Mengapa tidak mencoba memfilter string yang Anda tahu?
Maksudku:
sumber
Saya juga mulai melihat jenis pesan ini di file log saya. Salah satu cara untuk mencegah jenis serangan ini adalah dengan mensetup fail2ban ( http://www.fail2ban.org/ ) dan mengatur filter khusus untuk membuat daftar hitam alamat ip ini dalam aturan iptables Anda.
Inilah contoh filter yang akan memblokir alamat ip yang terkait dengan pembuatan pesan-pesan itu
[Sel 16 Agustus 02:35:23 2011] [kesalahan] [klien] File tidak ada: /var/www/skraps/w00tw00t.at.blackhats.romanian.anti-sec :) === apache w00t w00t messages jail - regex dan filter === Penjara
Saring
sumber
w00tw00t.at.blackhats.romanian.anti-sec adalah upaya peretasan dan menggunakan spoof IP sehingga pencarian seperti VisualRoute akan melaporkan China, Polandia, Denmark dll menurut IP yang diperbantukan pada waktu itu. Jadi pengaturan IP Tolak atau Nama Host yang dapat diatasi hampir tidak mungkin karena akan berubah dalam satu jam.
sumber
Saya pribadi menulis skrip Python untuk menambahkan aturan IPtables secara otomatis.
Berikut versi yang sedikit disingkat tanpa masuk dan sampah lainnya:
sumber
Saya percaya alasan mod_security tidak bekerja untuk Anda adalah karena Apache belum dapat menguraikan permintaan sendiri, mereka di luar spesifikasi. Saya tidak yakin Anda memiliki masalah di sini - apache sedang mencatat hal-hal aneh yang terjadi di internet, jika tidak mencatatnya, Anda tidak akan menyadari bahwa ini terjadi. Sumber daya yang diperlukan untuk mencatat permintaan mungkin minimal. Saya mengerti ini membuat frustasi bahwa seseorang mengisi log Anda - tetapi akan lebih membuat frustasi jika Anda menonaktifkan logging hanya untuk menemukan Anda benar-benar membutuhkannya. Seperti seseorang membobol server web Anda dan Anda perlu log untuk menunjukkan bagaimana mereka membobolnya.
Salah satu solusinya adalah mengatur ErrorLogging melalui syslog, dan kemudian menggunakan rsyslog atau syslog-ng Anda bisa secara khusus menyaring dan membuang pelanggaran RFC ini tentang w00tw00t. Atau Anda juga bisa memfilternya menjadi file log terpisah sehingga ErrorLog utama Anda mudah dibaca. Rsyslog sangat kuat dan fleksibel dalam hal ini.
Jadi di httpd.conf Anda mungkin melakukannya:
kemudian di rsyslog.conf Anda mungkin memiliki:
Ketahuilah, pendekatan ini sebenarnya akan menggunakan sumber daya berkali-kali lebih banyak daripada yang sebelumnya digunakan untuk masuk langsung ke file. Jika server web Anda sangat sibuk, ini bisa menjadi masalah.
Praktik terbaiknya adalah mengirimkan semua log ke server logging jarak jauh sesegera mungkin dan ini akan bermanfaat jika Anda pernah membobolnya karena jauh lebih sulit untuk menghapus jejak audit dari apa yang telah dilakukan.
Pemblokiran IPTables adalah sebuah ide, tetapi Anda mungkin berakhir dengan daftar blok iptables yang sangat besar yang dapat memiliki implikasi kinerja dalam dirinya sendiri. Apakah ada pola dalam alamat IP, atau apakah itu berasal dari botnet besar yang didistribusikan? Diperlukan X% duplikat sebelum Anda mendapatkan manfaat dari iptables.
sumber
Anda mengatakan di Pembaruan 2:
Dari balasan saya sebelumnya, kami mengetahui bahwa Apache mengembalikan pesan kesalahan karena kueri HTML 1.1 yang dibentuk dengan buruk. Semua webservers yang mendukung HTTP / 1.1 mungkin harus mengembalikan kesalahan ketika mereka menerima pesan ini (saya belum mengecek RFC - mungkin RFC2616 memberitahu kami).
Memiliki w00tw00t.at.ISC.SANS.DFind: di server Anda di mana tidak berarti "Anda berada dalam masalah" ... Jika Anda membuat w00tw00t.at.ISC.SANS.DFind: cari file di DocumentRoot Anda atau bahkan DefaultDocumentRoot tidak masalah ... pemindai mengirim permintaan HTTP / 1.1 yang rusak dan apache mengatakan "tidak, itu permintaan yang buruk ... selamat tinggal". Data di w00tw00t.at.ISC.SANS.DFind: file tidak akan dilayani.
Menggunakan mod_security untuk kasus ini tidak diperlukan kecuali Anda benar-benar ingin (tidak ada gunanya?) ... dalam hal ini, Anda dapat melihat menambalnya secara manual (tautan dalam jawaban lain).
Hal lain yang mungkin bisa Anda lihat adalah fitur RBL di mod_security. Mungkin ada RBL online di mana ada yang menyediakan IP w00tw00t (atau IP jahat lainnya yang dikenal). Namun ini berarti mod_security melakukan pencarian DNS untuk setiap permintaan.
sumber
Bagaimana kalau menambahkan aturan ke modsecurity? Sesuatu seperti ini:
sumber
Saya melihat bahwa sebagian besar solusi sudah dibahas di atas namun saya ingin menunjukkan bahwa tidak semua klien mengirim permintaan HTTP / 1.1 tanpa serangan nama host ditujukan langsung ke server Anda. Ada banyak upaya berbeda untuk sidik jari dan / atau mengeksploitasi sistem jaringan sebelum server Anda yaitu menggunakan:
untuk menargetkan router Linksys dll. Jadi kadang-kadang membantu untuk memperluas fokus Anda dan membagi upaya pertahanan Anda antara semua sistem dengan bagian yang sama yaitu: mengimplementasikan aturan router, mengimplementasikan aturan firewall (mudah-mudahan jaringan Anda memiliki satu), mengimplementasikan server firewall / tabel IP aturan dan layanan terkait yaitu mod_security, fail2ban dan sebagainya.
sumber
bagaimana dengan ini ?
bekerja dengan baik untuk saya.
sumber
Jika Anda menggunakan
hiawatha
server web sebagaireverse proxy
pindaian ini secara otomatis dijatuhkan sebagai sampah &client
dilarang. Ini juga menyaringXSS
&CSRF
mengeksploitasi.sumber