Bagaimana cara memblokir klien berdasarkan alamat IP dari mengakses URL tertentu di server web saya?

9

Bagaimana saya bisa memblokir ipaddress secara permanen yang mengakses halaman rentan yang diketahui seperti /phpMyadmin/? Saya menjalankan server Debian dan saya sering melihat bot, atau peretas memindai server saya mencoba menemukan kerentanan.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Saya telah mengikuti pertanyaan stackoverflow ini: Bagaimana cara mengamankan phpMyAdmin .

Saya mencari untuk mulai memblokir bot dari mengambil bandwidth.

Kucing putih
sumber
4
Ini akan membersihkan file log Anda, tetapi tidak akan membantu dengan keamanan sama sekali. Baik selalu membuat Anda mendapatkan phpmyadmin terbaru, atau mengaksesnya hanya dari localhost (dan memblokir semua lalu lintas lainnya). Untuk mengakses server jarak jauh, terowongan port melalui ssh.
Stefan M
Saya pikir itu akan membantu keamanan karena akan memblokir alamat IP jahat yang mencoba mengakses situs itu.
Whitecat
@ Dipilih 404berarti kode HTTP Page not found. Bagaimana menurut Anda bahwa IP ini menyinggung IP? Berdasarkan output apa yang Anda putuskan untuk memblokir IP ini?
Valentin Bajrami
Saya ingin memblokir ip berdasarkan fakta bahwa mereka akan ke phpMyAdmin. Saya telah mengamankan situs saya dan saya tahu ada orang yang pergi ke halaman itu berbahaya.
Whitecat
1
Mengapa Anda tidak membuat.htpasswd
nicoX

Jawaban:

18

Ini mungkin lebih berat daripada yang Anda cari, tetapi Anda mungkin mempertimbangkan untuk menggunakan fail2ban ( https://www.fail2ban.org ). Itu adalah alat yang dapat memonitor file log Anda dan secara otomatis melarang alamat yang menghasilkan log yang cocok dengan serangkaian pola yang dapat disesuaikan.

Andy Dalton
sumber
5
tbh ini masalah sebenarnya fail2bandirancang untuk mengatasi. Agak berat tetapi kriteria yang diinginkan cukup dinamis sendiri. Semua hal yang dipertimbangkan fail2banadalah seberat yang akan Anda dapatkan saat mencoba menyelesaikan masalah kelas ini menggunakan alat standar.
Bratchley
1
Yah saya kira Anda bisa menulis sugi-root binary cgi, host sebagai / phpmyadmin, yang menambahkan aturan firewall pemanggilnya.
Joshua
7

Jangan. Paling-paling Anda tidak akan mencapai apa pun selain membuat log Anda tidak berantakan; paling buruk Anda akhirnya akan memblokir pengunjung sah yang kebetulan mendapatkan (melalui DHCP) alamat IP yang dulunya milik seseorang yang PC-nya terinfeksi sebagai botnet node.

Masalah sebenarnya di sini adalah kekacauan log, dan itu dapat dipecahkan hanya dengan mengonfigurasi logging Anda untuk menjatuhkan permintaan yang dikenal dengan pemindaian vuln untuk vuln yang situs Anda tidak, dan tidak mau, miliki karena Anda tidak menggunakan yang rentan kerangka kerja yang mereka pindai. Jika Anda khawatir tentang kehilangan total logging (mungkin mereka memberikan bukti yang menunjukkan siapa yang bertanggung jawab atas serangan yang berbeda, atau ketika serangan dimulai, dll.) Maka cukup masukkan beberapa entri log untuk URL sampah dari IP yang diberikan dalam jangka waktu singkat harus bekerja lebih baik.

R .. GitHub BERHENTI MEMBANTU ICE
sumber
6
fail2banlarangan bersifat sementara - X mengenai upaya login yang buruk dalam Y detik, larangan Z menit, dengan XY dan Z yang dapat dikonfigurasi. Menjatuhkan log dari upaya intrusi aktif bagi saya terdengar seperti pilihan yang jauh lebih berbahaya.
Shadur
2
dalam kesempatan 0,1% ini terjadi, pengguna yang sah untuk instance phpmyadmin ini harus bisa hanya mengirim pesan ke OP untuk mendapatkan pemblokiran. Juga, fail2ban dapat menghentikan serangan pemindaian sebelum itu terjadi pada kerentanan yang tidak ditambal atau nol hari di server Anda.
Segfault
1
@Segfault: Mungkin tidak ada pengguna sah /phymyadmin/karena /phymyadmin/tidak ada di server (lihat: 404). Sebaliknya, pengguna yang sah yang dimaksud adalah pengguna situs yang akan diblokir oleh firewall mereka.
R .. GitHub BERHENTI MEMBANTU ICE
1
Yang "terbaik" sebenarnya mencakup tes lebih lanjut yang diblokir termasuk yang mungkin benar-benar berhasil. Bermain-main dengan isi log juga sepertinya cara yang baik untuk kehilangan informasi ketika Anda menyadari Anda telah membuat semacam kesalahan dalam filter Anda. Jika Anda khawatir tentang kekacauan log maka Anda memerlukan platform analitik seperti ELK untuk menyaring semuanya untuk hal-hal yang Anda minati.
Bratchley
2
Masalah lainnya, terkait, adalah meningkatnya penggunaan CGN. Sebuah ISP dapat memiliki ratusan pelanggan berbagi satu alamat IP, membuat pemblokiran IP paling berbahaya, bahkan yang sementara. Anda dapat memiliki pengguna yang sah dan pemindaian aktif dari alamat yang sama secara bersamaan.
Bob
3

temukan phpMyAdmin.conf di salah satu direktori config httpd dan tambahkan deny 73.199.136.112di bagian allow / deny file config dan IP yang diperlukan di bagian 2.4. Saya telah memberikan contoh file konfigurasi lengkap di bawah ini di mana saya memiliki entri secara terbalik, saya memblokir semuanya kecuali segmen IP yang diizinkan untuk mengakses alat ini.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>
terima kasih
sumber
Ini luar biasa. Tetapi masalahnya adalah ada bot konstan dari banyak ip yang berbeda. Saya tidak mungkin mengikuti setiap IP yang berbeda karena saya mendapatkan antara 20-30 ips unik yang berbahaya per hari.
Whitecat
2
Itulah mengapa saya menunjukkan kebalikannya di mana Anda mengizinkan segmen yang ingin Anda akses dan otomatis memblokir sisanya.
thebtm
Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminharus diubah menjadi sesuatu yang lain untuk tujuan keamanan. Alias /secret /usr/share/phpMyAdmind
nicoX
Saya memodifikasi file konfigurasi default yang datang dengan alat ketika Anda menginstalnya dan membuat beberapa alamat IP acak.
thebtm