Dalam versi CrowdSec 1.x, diimplementasikan API lokal yang dapat diakses oleh klien aplikasi dan pengguna melalui baris perintah, termasuk ke mesin jarak jauh.
Apa yang dapat dia lakukan?
API lokal kami melakukan beberapa hal. Pertama-tama, ini memungkinkan bouncer untuk bekerja sepenuhnya, yang melindungi ketenangan server atau mesin Anda. Dan juga melalui API itulah akuntansi dan pemantauan keputusan yang dibuat oleh sistem dilakukan.
Apa solusinya? Pertama-tama, ini memblokir berdasarkan alamat IP atau seluruh rentang alamat, jika serangannya sangat besar. Itu juga dapat memperhitungkan nama pengguna atau parameter lain yang ingin Anda konfigurasi. Agar ini berfungsi, bouncer hanya perlu membuat kunci API kami di sisi server CrowdSec.
Melalui API, Anda dapat mengelola solusi dan skenario, pemberitahuan push dari sistem ke administrator, mengkonfigurasi peringatan, dan sebagainya. Sebagaimana mestinya, API adalah satu-satunya titik masuk bagi administrator ke infrastruktur sistem. Dalam versi CrowdSec sebelumnya, banyak hal, bouncer yang sama, dikonfigurasi secara manual "di tempat", yang sangat tidak nyaman.
Mulai menggunakan API
Mari asumsikan bahwa CrowdSec diinstal dan Anda memiliki klien baris perintah (CLI). Langkah Anda selanjutnya adalah otentikasi API.
Untuk melakukan ini, Anda perlu membuat kunci bouncer. Sebagian besar bouncer yang ditawarkan di hub CrowdSec memiliki skrip instalasi siap pakai yang akan melakukannya untuk Anda, tetapi jika Anda ingin menginstal semuanya secara manual, maka untuk mendapatkan kuncinya, masukkan:
cscli bouncers add BouncerdeTest
Setelah menerima kunci, Anda perlu mengumpulkan bouncer config:
Jika Anda perlu mendaftarkan mesin, Anda dapat melakukannya dengan dua cara berbeda. Cara termudah adalah dengan menggunakan perintah berikut:
cscli machines add MachinedeTest βauto
Tindakan ini akan menghasilkan login dan kata sandi untuk Anda dalam file konfigurasi yaml yang kemudian dapat Anda gunakan.
Ini berfungsi jika Anda bekerja secara lokal di komputer yang sama. Jika Anda menggunakan mesin jarak jauh, Anda perlu mendaftarkan server API Anda sebagai berikut:
cscli lapi register -u <api_url>
Setelah itu, Anda perlu memeriksa apakah mesin telah ditambahkan di server lokal tempat kami menerapkan API. Ini dapat dilakukan dengan baris berikut:
cscli machines validate MachinedeTest
Untuk menampilkan daftar mobil yang terdaftar, cukup jalankan perintah:
Menggunakan API dengan bouncer
Sekarang, permintaan HTTP sederhana sudah cukup untuk terhubung melalui API. Ini cukup untuk pekerjaan lokal. Jika kita berbicara tentang mesin jarak jauh, sebaiknya aktifkan HTTPS.
Terkait panggilan API dari bouncer, Anda memiliki 2 metode yang tersedia:
Mode Permintaan (getDecisions)
Mode Permintaan memungkinkan bouncer mengirim permintaan API untuk mendapatkan informasi tentang keputusan yang dibuat pada rentang IP tertentu, alamat IP tertentu, nama pengguna, dan seterusnya. Lebih lanjut.
Berikut ini cara memanggil API (menggunakan Curl) untuk meminta informasi tentang IP yang diblokir:
curl -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03" http://localhost:8080/v1/decisions?ip=98.65.32.47
Seperti yang Anda lihat, kami meneruskan kunci API dan memanggil parameter? Ip untuk menentukan alamat IP yang informasinya ingin kami terima.
Kita akan mendapatkan respon balasan dalam format JSON, misalnya:
[{"duration":"2h25m47.212560128s","id":1023,"origin":"cscli","scenario":"manual 'ban' from '939972095cf1459c8b22cc608eff85daEb4yoi2wiTD7Y3fA'","scope":"Ip","type":"ban","value":"1.2.3.4"}]
Anda juga dapat menggunakan parameter? Range untuk menentukan jangkauan jaringan, atau, jika Anda lebih suka, gunakan pasangan parameter scope + value untuk meminta informasi tentang nama pengguna tertentu, ID sesi, dan seterusnya.
curl -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03" http://localhost:8080/v1/decisions?scope=username&value=korben
Ada pilihan lain. Ini adalah
mode Streaming (getDecisionsStream)
Mode streaming bekerja sedikit berbeda, lebih sederhana karena memungkinkan bouncer untuk mengambil solusi yang ada atau baru secara berkala.
Saat bouncer berjalan, Anda bisa mendapatkan solusi aktif serta solusi yang baru saja dihapus dengan memanggil API dengan parameter? Startup "true", misalnya:
curl -s -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03" http://localhost:8080/v1/decisions/stream?startup=true
Dengan menyetel parameter? Startup ke false, Anda hanya akan menerima solusi baru yang diterima setelah bouncer diluncurkan.
{ "deleted": null, "new": [ { "duration": "3h59m57.641708614s", "id": 2410, "origin": "cscli", "scenario": "manual 'ban' from '939972095cf1459c8b22cc608eff85daEb4yoi2wiTD7Y3fA'", "scope": "Ip", "type": "ban", "value": "3.3.3.4" } ] }
Jika tidak ada solusi yang ditambahkan, respons akan mengembalikan "null":
{ "deleted": null, "new": null }
Gunakan API melalui Watcher (cscli atau agen CrowdSec)
Seperti yang disebutkan dalam pendahuluan, Anda perlu memberikan ID dan kata sandi komputer kepada API. Menggunakan fungsi API tertentu (POST / DELETE) atau (GET) sebagian besar dilakukan melalui antarmuka baris perintah atau agen CrowdSec, tetapi tidak ada yang mencegah Anda untuk bekerja dengannya secara langsung.
Misalnya, untuk menghapus satu atau lebih solusi untuk IP tertentu, lakukan hal berikut: Setelah menjalankan perintah ini, Anda akan menerima baris sebagai tanggapan yang memberi tahu Anda berapa banyak solusi yang telah dihapus. Bagi mereka yang ingin mempelajari lebih dalam tentang kode sumber, repositori CrowdSec di Github memiliki kode yang ditulis dalam Go yang menunjukkan kepada Anda cara menghubungkan dan menggunakan API.
curl -X DELETE "https://localhost:8080/v1/decisions?ip=98.65.32.47" -H "accept: application/json"
Semua metode API tersedia di sini.
Total
Seperti yang Anda lihat, API CrowdSec lokal cukup mudah dipelajari dan digunakan bersama dengan penjaga. Yang terakhir ini ditulis dalam Go dan dapat disesuaikan dengan kebutuhan spesifik Anda. Penjaga siap dapat diunduh di sini . Kami juga telah menulis bouncer khusus untuk bekerja dengan Nginx, WordPress, HAProxy, iptables, nftables, atau bahkan firewall cloud Amazon (AWS) dan Google (Network FW dan Cloud Armor). Sumber mereka juga dapat ditemukan di Github . Kami juga memiliki penjaga untuk LUA dan PHP .
Dan, tentu saja, Anda dapat menemukan semua informasi tambahan, sumber, tautan berguna, dan manual yang belum dipublikasikan di HabrΓ© di situs web resmi CrowdSec .