Parsing ELK 7.5 pengaturan untuk analisis log Mikrotik

Sudah lama menjadi ide untuk melihat apa yang dapat Anda lakukan dengan ELK dan sumber-sumber log dan statistik yang diimprovisasi. Pada halaman Habr, saya berencana untuk menunjukkan contoh praktis tentang bagaimana, menggunakan mini-server rumah, Anda dapat membuat, misalnya, honeypot dengan sistem analisis log berdasarkan pada tumpukan ELK. Pada artikel ini saya akan memberi tahu Anda tentang contoh paling sederhana menganalisis log firewall menggunakan tumpukan ELK. Di masa depan saya ingin menggambarkan pengaturan lingkungan untuk menganalisis lalu lintas Netflow dan dump pcap oleh Zeek.



Jika Anda memiliki alamat IP publik dan perangkat yang kurang lebih pintar sebagai gateway / firewall, Anda dapat mengatur honeypot pasif dengan mengatur permintaan masuk untuk port TCP dan UDP yang "lezat". Ada contoh mengkonfigurasi router Mikrotik di bawah kucing, tetapi jika Anda memiliki router vendor yang berbeda (atau sistem keamanan lainnya), Anda hanya perlu mencari tahu sedikit format data dan pengaturan khusus vendor, dan Anda akan mendapatkan hasil yang sama.

Penafian


Artikel ini tidak berpura-pura menjadi asli, artikel ini tidak membahas masalah toleransi kesalahan layanan, keamanan, praktik terbaik, dll. Penting untuk mempertimbangkan materi ini sebagai materi akademik, sangat cocok untuk berkenalan dengan fungsionalitas dasar tumpukan ELK dan mekanisme analisis log dari perangkat jaringan. Namun, itu mungkin menarik untuk pemula juga.

Proyek ini diluncurkan dari file docker-compose, dan sangat mudah untuk menggunakan lingkungan Anda yang serupa, bahkan jika Anda memiliki router vendor yang berbeda, Anda hanya perlu memahami sedikit tentang format data dan pengaturan khusus vendor. Untuk selebihnya, saya mencoba menjelaskan sebanyak mungkin semua nuansa yang terkait dengan mengkonfigurasi pipa Logstash dan pemetaan Elasticsearch dalam versi ELK saat ini. Semua komponen sistem ini di-host di github , termasuk konfigurasi layanan. Pada akhir artikel, saya akan melakukan bagian Pemecahan Masalah, yang akan menjelaskan langkah-langkah untuk mendiagnosis masalah populer pendatang baru di bisnis ini.

Pendahuluan


Di server itu sendiri, saya telah menginstal sistem virtualisasi Proxmox, di dalamnya di wadah Docker mesin KVM diluncurkan. Diasumsikan bahwa Anda tahu cara kerja buruh pelabuhan dan buruh pelabuhan, karena ada cukup contoh konfigurasi tentang penggunaan Internet. Saya tidak akan menyentuh masalah menginstal Docker, saya akan menulis sedikit tentang docker-compose.

Gagasan untuk meluncurkan honeypot muncul dalam proses mempelajari Elasticsearch, Logstash dan Kibana. Dalam karir profesional saya, saya tidak pernah terlibat dalam administrasi dan umumnya menggunakan tumpukan ini, tetapi saya memiliki proyek hobi, berkat itu saya telah mengembangkan minat besar dalam mengeksplorasi kemungkinan yang ditawarkan oleh mesin pencari Elasticsearch dan Kibana, yang dengannya Anda dapat menganalisis dan memvisualisasikan data.

Saya bukan server NUC mini terbaru dengan RAM 8GB hanya cukup untuk memulai tumpukan ELK dengan satu simpul elastis. Dalam lingkungan produksi, ini, tentu saja, tidak direkomendasikan, tetapi tepat untuk pelatihan. Mengenai masalah keamanan, ada komentar di akhir artikel.

Internet penuh dengan instruksi untuk menginstal dan mengkonfigurasi tumpukan ELK untuk tugas-tugas serupa (misalnya, menganalisis serangan brute force pada ssh menggunakan Logstash versi 2 , menganalisis log Suricata menggunakan Filebeat versi 6 ), tetapi dalam kebanyakan kasus, karena perhatian tidak dibayarkan ke rincian, untuk itu 90 persen dari materi akan untuk versi 1 hingga 6 (pada saat penulisan, versi ELK saat ini adalah 7.5.0). Ini penting, karena dari versi 6 Elasticsearch memutuskan untuk menghapus entitas tipe pemetaan, sehingga mengubah sintaks kueri dan struktur peta. Memetakan template di Elastic umumnya merupakan objek yang sangat penting, dan agar nantinya tidak ada masalah dengan pengambilan sampel data dan visualisasi, saya menyarankan Anda untuk tidak terlibat dalam copy-paste dan mencoba memahami apa yang Anda lakukan. Selanjutnya saya akan mencoba menjelaskan dengan jelas apa arti operasi dan konfigurasi yang dijelaskan.

Pengaturan router


Untuk jaringan rumah, saya menggunakan Mikrotik sebagai router, jadi contohnya adalah untuknya. Tetapi hampir semua sistem dapat dikonfigurasi untuk mengirim syslog ke server jauh, baik itu router, server, atau sistem keamanan lain yang dapat login.

Mengirim pesan syslog ke server jauh


Di Mikrotik, untuk mengkonfigurasi logging ke server jauh melalui CLI, cukup masukkan beberapa perintah:

/system logging action add remote=192.168.88.130 remote-port=5145 src-address=192.168.88.1 name=logstash target=remote /system logging add action=logstash topics=info 

Mengkonfigurasi aturan firewall dengan logging


Kami hanya tertarik pada data tertentu (nama host, alamat ip, nama pengguna, url dll.), Dari mana Anda bisa mendapatkan visualisasi atau seleksi yang indah. Dalam kasus paling sederhana, untuk mendapatkan informasi tentang pemindaian port dan upaya akses, Anda perlu mengkonfigurasi komponen firewall untuk mencatat pemicu aturan. Di Mikrotik, saya membuat aturan di tabel NAT, bukan Filter, karena di masa depan saya akan menempatkan chanipots yang akan meniru pekerjaan layanan, ini akan memungkinkan saya untuk menyelidiki lebih banyak informasi tentang perilaku botnet, tetapi ini adalah skenario yang lebih maju dan bukan tentang saat ini.

Perhatian! Dalam konfigurasi di bawah ini, port TCP standar dari layanan SSH (22) dilingkarkan ke jaringan lokal. Jika Anda menggunakan SSH untuk mengakses router dari luar dan pengaturan memiliki port 22 ( layanan ip cetak di CLI dan layanan ip> di Winbox), Anda harus menugaskan kembali port untuk manajemen SSH, atau jangan masukkan aturan terakhir dalam tabel.
Juga, tergantung pada nama antarmuka WAN (jika jembatan WAN tidak digunakan), Anda perlu mengubah parameter dalam-antarmuka ke yang sesuai.

 /ip firewall nat add action=netmap chain=dstnat comment="HONEYPOT RDP" dst-port=3389 in-interface=bridge-wan log=yes log-prefix=honeypot_rdp protocol=tcp to-addresses=192.168.88.201 to-ports=3389 add action=netmap chain=dstnat comment="HONEYPOT ELASTIC" dst-port=9200 in-interface=bridge-wan log=yes log-prefix=honeypot_elastic protocol=tcp to-addresses=192.168.88.201 to-ports=9211 add action=netmap chain=dstnat comment=" HONEYPOT TELNET" dst-port=23 in-interface=bridge-wan log=yes log-prefix=honeypot_telnet protocol=tcp to-addresses=192.168.88.201 to-ports=2325 add action=netmap chain=dstnat comment="HONEYPOT DNS" dst-port=53 in-interface=bridge-wan log=yes log-prefix=honeypot_dns protocol=udp to-addresses=192.168.88.201 to-ports=9953 add action=netmap chain=dstnat comment="HONEYPOT FTP" dst-port=21 in-interface=bridge-wan log=yes log-prefix=honeypot_ftp protocol=tcp to-addresses=192.168.88.201 to-ports=9921 add action=netmap chain=dstnat comment="HONEYPOT SMTP" dst-port=25 in-interface=bridge-wan log=yes log-prefix=honeypot_smtp protocol=tcp to-addresses=192.168.88.201 to-ports=9925 add action=netmap chain=dstnat comment="HONEYPOT SMB" dst-port=445 in-interface=bridge-wan log=yes log-prefix=honeypot_smb protocol=tcp to-addresses=192.168.88.201 to-ports=9445 add action=netmap chain=dstnat comment="HONEYPOT MQTT" dst-port=1883 in-interface=bridge-wan log=yes log-prefix=honeypot_mqtt protocol=tcp to-addresses=192.168.88.201 to-ports=9883 add action=netmap chain=dstnat comment="HONEYPOT SIP" dst-port=5060 in-interface=bridge-wan log=yes log-prefix=honeypot_sip protocol=tcp to-addresses=192.168.88.201 to-ports=9060 add action=dst-nat chain=dstnat comment="HONEYPOT SSH" dst-port=22 in-interface=bridge-wan log=yes log-prefix=honeypot_ssh protocol=tcp to-addresses=192.168.88.201 to-ports=9922 



Di Winbox, hal yang sama dikonfigurasi di tab IP> Firewall> NAT .

Sekarang router akan mengarahkan paket yang diterima ke alamat lokal 192.168.88.201 dan port khusus. Saat ini tidak ada yang mendengarkan port ini, sehingga koneksi akan terputus. Di masa depan, di buruh pelabuhan, Anda dapat menjalankan honeypot, yang ada banyak untuk setiap layanan. Jika ini tidak direncanakan, maka alih-alih aturan NAT, Anda harus menulis aturan dengan tindakan drop di rantai Filter.

Mulai ELK dengan komposisi buruh pelabuhan


Selanjutnya, Anda dapat mulai mengonfigurasi komponen yang akan memproses log. Saya menyarankan Anda untuk segera berlatih dan mengkloning repositori untuk melihat file konfigurasi sepenuhnya. Semua konfigurasi yang dijelaskan dapat dilihat di sana, dalam teks artikel saya hanya akan menyalin sebagian dari konfigurasi.

 ❯❯ git clone https://github.com/mekhanme/elk-mikrot.git 



Dalam lingkungan pengujian atau pengembangan, paling mudah menjalankan wadah buruh pelabuhan menggunakan komposisi buruh pelabuhan. Dalam proyek ini, saya menggunakan file pembuatan docker dari versi terbaru 3.7 saat ini, itu membutuhkan mesin docker versi 18.06.0+, jadi ada baiknya memperbarui docker , serta menulis docker .

 ❯❯ curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ❯❯ chmod +x /usr/local/bin/docker-compose 

Karena dalam versi terbaru dari docker-compose, parameter mem_limit telah terpotong dan deploy ditambahkan, yang hanya berjalan dalam mode swarm ( docker stack deploy ), meluncurkan konfigurasi docker-compose up dengan batas yang menyebabkan kesalahan. Karena saya tidak menggunakan segerombolan, dan saya ingin memiliki batas sumber daya, saya harus memulainya dengan opsi --compatibility , yang mengubah batas dari buruh pelabuhan-membuat versi baru ke setara non-las.

Uji coba semua wadah (di latar belakang -d):

 ❯❯ docker-compose --compatibility up -d 

Anda harus menunggu sampai semua gambar diunduh, dan setelah peluncuran selesai, Anda dapat memeriksa status wadah dengan perintah:

 ❯❯ docker-compose --compatibility ps 

Karena kenyataan bahwa semua kontainer akan berada di jaringan yang sama (jika Anda tidak secara eksplisit menentukan jaringan, sebuah jembatan baru dibuat, yang sesuai dalam skenario ini) dan docker-compose.yml berisi parameter container_name untuk semua kontainer , kontainer tersebut sudah memiliki konektivitas melalui DNS bawaan buruh pelabuhan Akibatnya, tidak perlu mendaftarkan alamat IP dalam konfigurasi wadah. Dalam konfigurasi Logstash, subnet 192.168.88.0/24 terdaftar sebagai lokal, selanjutnya dalam konfigurasi akan ada penjelasan yang lebih rinci, yang dengannya Anda dapat membelokkan contoh konfigurasi sebelum memulai.

Konfigurasikan Layanan ELK


Selanjutnya akan ada penjelasan tentang cara mengkonfigurasi fungsionalitas komponen ELK, serta beberapa tindakan lain yang perlu dilakukan pada Elasticsearch.

Untuk menentukan koordinat geografis berdasarkan alamat IP, Anda harus mengunduh database GeoLite2 gratis dari MaxMind:

 ❯❯ cd elk-mikrot && mkdir logstash/geoip_db ❯❯ curl -O https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip && unzip GeoLite2-City-CSV.zip -d logstash/geoip_db && rm -f GeoLite2-City-CSV.zip ❯❯ curl -O https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN-CSV.zip && unzip GeoLite2-ASN-CSV.zip -d logstash/geoip_db && rm -f GeoLite2-ASN-CSV.zip 

Pengaturan logstash


File konfigurasi utama adalah logstash.yml , di mana saya mendaftarkan opsi untuk memuat ulang konfigurasi secara otomatis, pengaturan lainnya untuk lingkungan pengujian tidak signifikan. Konfigurasi pemrosesan data (log) di Logstash dijelaskan dalam file conf yang terpisah, biasanya disimpan dalam direktori pipa . Dalam skema, ketika beberapa saluran pipa digunakan, file pipelines.yml menjelaskan saluran pipa yang diaktifkan. Pipeline adalah rangkaian tindakan pada data yang tidak terstruktur untuk menerima data dengan struktur spesifik pada output. Skema dengan pipelines.yml yang dikonfigurasi secara terpisah adalah opsional, Anda dapat melakukannya tanpa mengunduh semua konfigurasi dari direktori pipa yang terpasang, namun, dengan file pipelines.yml yang spesifik, konfigurasinya lebih fleksibel, karena Anda dapat menghidupkan dan mematikan file conf dari direktori pipa. konfigurasi yang diperlukan. Selain itu, memuat ulang konfigurasi hanya berfungsi dalam skema beberapa saluran pipa.

 ❯❯ cat logstash/config/pipelines.yml - pipeline.id: logstash-mikrot path.config: "pipeline/logstash-mikrot.conf" 

Berikutnya adalah bagian terpenting dari konfigurasi Logstash. Deskripsi pipa terdiri dari beberapa bagian - di awal, plugin ditunjukkan di bagian Input dengan bantuan Logstash menerima data. Cara termudah untuk mengumpulkan syslog dari perangkat jaringan adalah dengan menggunakan plugin input tcp / udp . Satu-satunya parameter yang diperlukan untuk plugin ini adalah port , itu harus ditentukan sama seperti pada pengaturan router.

Bagian kedua adalah Filter , yang mengatur tindakan lebih lanjut dengan data yang belum terstruktur. Dalam contoh saya, pesan syslog yang tidak perlu dari router dengan teks tertentu dihapus. Ini dilakukan dengan menggunakan kondisi dan tindakan penurunan standar, yang membuang seluruh pesan jika kondisi terpenuhi. Dalam kondisi tersebut , bidang pesan diperiksa untuk keberadaan teks tertentu.



Jika pesan tidak jatuh, ia masuk lebih jauh ke rantai dan memasuki filter grok . Seperti yang dikatakan dalam dokumentasi, grok adalah cara yang bagus untuk mengurai data log yang tidak terstruktur menjadi sesuatu yang terstruktur dan dapat ditanyakan . Filter ini digunakan untuk memproses log dari berbagai sistem (linux syslog, server web, database, perangkat jaringan, dll.). Berdasarkan pola yang sudah jadi, Anda dapat, tanpa menghabiskan banyak waktu, membuat parser untuk urutan berulang lebih atau kurang. Lebih mudah menggunakan parser online untuk validasi (dalam versi terbaru Kibana, fungsi serupa ada di bagian Dev Tools ).



Volume "./logstash/patterns:/usr/share/logstash/patterns" terdaftar di docker-compose.yml , dalam direktori pola ada file dengan pola komunitas standar (hanya untuk kenyamanan, lihat apakah saya lupa), serta file dengan pola beberapa jenis pesan Mikrotik (modul Firewall dan Auth) , dengan analogi, Anda dapat menambahkan templat Anda sendiri untuk pesan dari struktur yang berbeda.

Opsi standar add_field dan remove_field memungkinkan Anda untuk menambah atau menghapus bidang dari pesan yang sedang diproses di dalam filter apa pun. Dalam hal ini, bidang host dihapus, yang berisi nama host dari mana pesan diterima. Dalam contoh saya, hanya ada satu host, jadi tidak ada gunanya di bidang ini.

Selanjutnya, di bagian Filter yang sama, saya mendaftarkan filter cidr , yang memeriksa bidang dengan alamat IP untuk kepatuhan dengan kondisi entri di subnet yang diberikan dan meletakkan tag. Berdasarkan tag pada rantai selanjutnya, tindakan akan dilakukan atau tidak dilakukan (jika secara khusus, ini dilakukan agar tidak melakukan pencarian geoip untuk alamat lokal di masa mendatang).

Mungkin ada sejumlah bagian Filter , sehingga ada lebih sedikit kondisi dalam satu bagian, di bagian baru saya mendefinisikan tindakan untuk pesan tanpa tag src_local , yaitu, peristiwa firewall diproses di sini di mana kami tertarik pada alamat sumber.

Sekarang kita perlu berbicara lebih banyak tentang dari mana Logstash mendapatkan informasi GeoIP. Logstash mendukung database GeoLite2. Ada beberapa opsi basis data, saya menggunakan dua basis data: GeoLite2 City (yang berisi informasi tentang negara, kota, zona waktu) dan GeoLite2 ASN (informasi tentang sistem otonom tempat alamat IP berada).



Plugin geoip juga terlibat dalam menambahkan informasi GeoIP ke pesan. Dari parameter, Anda harus menentukan bidang yang berisi alamat IP, basis yang digunakan, dan nama bidang baru di mana informasi akan ditulis. Dalam contoh saya, hal yang sama dilakukan untuk alamat IP tujuan, tetapi sejauh ini dalam skenario sederhana ini informasi ini tidak akan menarik, karena alamat tujuan akan selalu menjadi alamat router. Namun, di masa mendatang akan dimungkinkan untuk menambahkan log ke pipa ini tidak hanya dari firewall, tetapi juga dari sistem lain di mana akan relevan untuk melihat kedua alamat.

Filter mutasi memungkinkan Anda untuk mengubah bidang pesan dan memodifikasi teks dalam bidang itu sendiri, dokumentasi menjelaskan secara rinci banyak contoh tentang apa yang dapat Anda lakukan. Dalam hal ini, digunakan untuk menambahkan tag, mengganti nama bidang (untuk visualisasi log lebih lanjut di Kibana, diperlukan format tertentu dari objek geo-point , saya akan menyentuh topik ini lebih lanjut) dan menghapus bidang yang tidak perlu.



Ini mengakhiri bagian pemrosesan data dan hanya dapat menunjukkan tempat untuk mengirim pesan terstruktur. Dalam hal ini, Elasticsearch akan mengumpulkan data, Anda hanya perlu memasukkan alamat IP, port dan nama indeks. Anda disarankan untuk memasukkan indeks dengan bidang tanggal variabel sehingga indeks baru dibuat setiap hari.



Menyiapkan Pencarian Elastics


Kembali ke Elasticsearch. Pertama, Anda perlu memastikan bahwa server sudah aktif dan berjalan. Elastis paling efisien berinteraksi dengan melalui API Istirahat di CLI. Dengan menggunakan curl, Anda dapat melihat status node (ganti localhost dengan host ip docker):

 ❯❯ curl localhost:9200 

Maka Anda dapat mencoba membuka Kibana di localhost : 5601. Tidak perlu mengkonfigurasi apa pun di antarmuka web Kibana (kecuali mengubah tema menjadi gelap). Kami tertarik untuk melihat apakah suatu indeks telah dibuat. Untuk melakukan ini, buka bagian Manajemen dan pilih Manajemen Indeks Pencarian Elastik di kiri atas. Di sini Anda dapat melihat berapa banyak dokumen yang diindeks, berapa banyak menghabiskan ruang disk, Anda juga dapat melihat informasi tentang pemetaan indeks dari informasi yang berguna.



Saat itu Anda perlu mendaftarkan templat pemetaan yang benar. Informasi ini diperlukan untuk Elastis sehingga ia memahami tipe data mana yang termasuk bidang. Misalnya, untuk membuat pilihan khusus berdasarkan alamat IP, untuk bidang src_ip , Anda harus secara eksplisit menentukan tipe data ip , dan untuk menentukan lokasi geografis, Anda perlu menentukan bidang geoip.location dalam format tertentu dan mendaftarkan jenis geo_point . Semua bidang yang mungkin tidak perlu dijelaskan, karena untuk bidang baru, tipe data ditentukan secara otomatis berdasarkan pola dinamis ( panjang untuk angka dan kata kunci untuk string).

Anda dapat menulis templat baru menggunakan curl, atau langsung dari konsol Kibana (bagian Dev Tools ).

 ❯❯ curl -X POST -H "Content-Type: application/json" -d @elasticsearch/logstash_mikrot-template.json http://192.168.88.130:9200/_template/logstash-mikrot 

Setelah mengubah pemetaan, Anda perlu menghapus indeks:

 ❯❯ curl -X DELETE http://192.168.88.130:9200/logstash-mikrot-2019.12.16 

Ketika setidaknya satu pesan masuk dalam indeks, periksa pemetaan:

 ❯❯ curl http://192.168.88.130:9200/logstash-mikrot-2019.12.16/_mapping 

Untuk penggunaan lebih lanjut data di Kibana, Anda perlu membuat pola dalam Manajemen> Pola Indeks Kibana . Masukkan nama indeks dengan simbol * ( logstash-mikrot *) sehingga semua indeks cocok, pilih bidang cap waktu sebagai bidang dengan tanggal dan waktu. Di bidang ID pola indeks kustom , Anda dapat memasukkan ID pola (misalnya, logstash-mikrot ), di masa depan ini dapat menyederhanakan mengakses objek.

Analisis dan Visualisasi Data di Kibana


Setelah membuat pola indeks , Anda dapat melanjutkan ke bagian yang paling menarik - analisis dan visualisasi data. Kibana memiliki banyak fungsi dan bagian, tetapi sejauh ini kita hanya akan tertarik pada dua.

Temukan


Di sini Anda dapat melihat dokumen dalam indeks, memfilter, mencari, dan melihat informasi yang diterima. Penting untuk tidak melupakan timeline, yang menetapkan kerangka waktu dalam kondisi pencarian.



Visualisasikan


Di bagian ini, Anda dapat membangun visualisasi berdasarkan data yang dikumpulkan. Yang paling sederhana adalah menampilkan sumber pemindaian botnet pada peta geografis, baik bertitik atau dalam bentuk peta panas. Ada juga banyak cara untuk membuat grafik, membuat pilihan, dll.



Di masa depan saya berencana untuk menceritakan secara lebih rinci tentang pemrosesan data, mungkin visualisasi, mungkin sesuatu yang menarik. Dalam proses belajar saya akan mencoba menambah tutorial.

Pemecahan masalah


Jika indeks tidak muncul di Elasticsearch, Anda harus terlebih dahulu melihat Logstash log:

 ❯❯ docker logs logstash --tail 100 -f 

Logstash tidak akan berfungsi jika tidak ada konektivitas dengan Elasticsearch, atau kesalahan dalam konfigurasi pipa adalah alasan utama dan menjadi jelas setelah studi yang cermat terhadap log yang ditulis ke json docker secara default.

Jika tidak ada kesalahan dalam log, Anda perlu memastikan bahwa Logstash menangkap pesan pada soket yang dikonfigurasi. Untuk tujuan debug, Anda dapat menggunakan stdout sebagai output :

 stdout { codec => rubydebug } 

Setelah itu, Logstash akan menulis informasi debag ketika pesan diterima langsung ke log.

Memeriksa Elasticsearch sangat sederhana - cukup buat ikal permintaan GET pada alamat IP dan port server, atau pada titik akhir API tertentu. Misalnya, lihat status indeks dalam tabel yang dapat dibaca manusia:

 ❯❯ curl -s 'http://192.168.88.130:9200/_cat/indices?v' 



Kibana juga tidak akan memulai jika tidak ada koneksi ke Elasticsearch, mudah untuk melihatnya melalui log.

Jika antarmuka web tidak terbuka, maka Anda harus memastikan bahwa firewall dikonfigurasi dengan benar atau dinonaktifkan di Linux (di Centos ada masalah dengan iptables dan buruh pelabuhan , mereka dipecahkan berdasarkan saran dari topik ). Perlu juga dipertimbangkan bahwa pada peralatan yang tidak terlalu produktif, semua komponen dapat dimuat selama beberapa menit. Dengan kekurangan memori, layanan mungkin tidak memuat sama sekali. Lihat penggunaan sumber daya wadah:

 ❯❯ docker stats 

Jika tiba-tiba seseorang tidak tahu cara mengubah konfigurasi kontainer dengan benar dalam file docker-compose.yml dan memulai kembali kontainer, ini dilakukan dengan mengedit docker-compose.yml dan menggunakan perintah yang sama dengan parameter yang sama, restart:

 ❯❯ docker-compose --compatibility up -d 

Pada saat yang sama, di bagian yang diubah, objek lama (wadah, jaringan, volume) dihapus dan yang baru diciptakan kembali sesuai dengan konfigurasi. Data layanan tidak hilang pada saat yang sama, karena volume bernama digunakan , yang tidak dihapus dengan wadah, dan konfigurasi dipasang dari sistem host, Logstash bahkan dapat memantau file konfigurasi dan memulai kembali konfigurasi pipa ketika file diubah.

Anda dapat memulai kembali layanan secara terpisah dengan perintah restart buruh pelabuhan (tidak perlu berada di direktori dengan buruh pelabuhan-compose.yml) :

 ❯❯ docker restart logstash 

Anda dapat melihat konfigurasi objek buruh pelabuhan dengan perintah buruh pelabuhan memeriksa , lebih mudah untuk menggunakannya dengan jq .



Kesimpulan


Saya ingin mencatat bahwa keamanan dalam proyek ini tidak dilaporkan karena ini merupakan lingkungan pengujian (dev) dan tidak direncanakan untuk dirilis di luar router. Jika Anda menggunakannya untuk penggunaan yang lebih serius, Anda harus mengikuti praktik terbaik, menginstal sertifikat untuk HTTPS, membuat cadangan, pemantauan normal (yang tidak dimulai di sebelah sistem utama). Omong-omong, Traefik berjalan di buruh pelabuhan saya di server saya, yang merupakan proxy terbalik untuk beberapa layanan, dan juga mengakhiri TLS dengan sendirinya dan melakukan otentikasi. Yaitu, berkat DNS yang dikonfigurasi dan proksi balik, menjadi mungkin untuk mengakses antarmuka web Kibana dari Internet dengan HTTPS dan kata sandi yang tidak dikonfigurasi (seperti yang saya pahami, dalam versi komunitas Kibana tidak mendukung perlindungan kata sandi untuk antarmuka web). Saya berencana untuk menjelaskan pengalaman saya lebih lanjut dalam mengatur Traefik untuk digunakan pada jaringan rumah dengan Docker.

Source: https://habr.com/ru/post/id481596/


All Articles