Visualisasikan log alur NSG Azure Network Watcher menggunakan alat sumber terbuka
Perhatian
Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan perencanaan Anda yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.
Log alur Kelompok Keamanan Jaringan menyediakan informasi yang dapat digunakan untuk memahami lalu lintas IP masuk dan keluar pada Kelompok Keamanan Jaringan. Log alur ini memperlihatkan alur keluar dan masuk per aturan, alur yang diterapkan ke NIC, 5 tuple informasi tentang alur (IP Sumber/Tujuan, Port Sumber/Tujuan, Protokol), dan apakah lalu lintas diizinkan atau ditolak.
Log alur ini bisa sulit untuk diurai secara manual dan didapatkan wawasannya. Namun, ada beberapa alat sumber terbuka yang dapat membantu memvisualisasikan data ini. Artikel ini menyediakan solusi untuk memvisualisasikan log ini menggunakan Elastic Stack, yang memungkinkan Anda untuk dengan cepat mengindeks dan memvisualisasikan log alur Anda di dasbor Kibana.
Skenario
Dalam artikel ini, kami menyiapkan solusi yang memungkinkan Anda memvisualisasikan log alur Kelompok Keamanan Jaringan menggunakan Elastic Stack. Plugin input Logstash mendapatkan log alur langsung dari blob penyimpanan yang dikonfigurasi untuk berisi log alur. Kemudian, menggunakan Elastic Stack, log alur diindeks dan digunakan untuk membuat dasbor Kibana untuk memvisualisasikan informasi.
Langkah-langkah
Aktifkan pengelogan alur Kelompok Keamanan Jaringan
Untuk skenario ini, Anda harus mengaktifkan Pencatatan Alur Network Security Group pada setidaknya satu Network Security Group di akun Anda. Untuk petunjuk tentang mengaktifkan Log Alur Keamanan Jaringan, lihat artikel Pengenalan pengelogan alur untuk Kelompok Keamanan Jaringan.
Siapkan Elastic Stack
Dengan menghubungkan log alur NSG dengan Elastic Stack, kita dapat membuat dasbor Kibana yang memungkinkan kita untuk mencari, membuat grafik, menganalisis, dan memperoleh wawasan dari log kita.
Menginstal ElasticSearch
Instruksi berikut digunakan untuk menginstal Elasticsearch di Ubuntu Azure VM. Untuk petunjuk tentang cara menginstal pencarian elastis di distribusi RHEL/CentOS, lihat Menginstal Elasticsearch dengan RPM.
Elastic Stack dari versi 5.0 ke atas memerlukan Java 8. Jalankan perintah
java -version
untuk memeriksa versi Anda. Jika Anda belum menginstal Java, lihat dokumentasi tentang JDK yang didukung Azure.Unduh paket biner yang benar untuk sistem Anda:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb sudo dpkg -i elasticsearch-5.2.0.deb sudo /etc/init.d/elasticsearch start
Metode penginstalan lain dapat ditemukan di Penginstalan Elasticsearch
Verifikasi bahwa Elasticsearch berjalan dengan perintah:
curl http://127.0.0.1:9200
Anda akan melihat respons yang mirip dengan yang berikut ini:
{ "name" : "Angela Del Toro", "cluster_name" : "elasticsearch", "version" : { "number" : "5.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }, "tagline" : "You Know, for Search" }
Untuk instruksi lebih lanjut tentang menginstal pencarian Elastic, lihat Instruksi penginstalan.
Menginstal Logstash
Instruksi berikut digunakan untuk menginstal Logstash di Ubuntu. Untuk petunjuk tentang cara menginstal paket ini di RHEL/CentOS, lihat artikel Menginstal dari Repositori Paket - yum .
Untuk memasang Logstash, jalankan perintah berikut:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Selanjutnya kita perlu mengonfigurasi Logstash untuk mengakses dan mengurai log alur. Buat file logstash.conf menggunakan:
sudo touch /etc/logstash/conf.d/logstash.conf
Tambahkan konten berikut ke file:
input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg==" container => "insights-logs-networksecuritygroupflowevent" codec => "json" # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types file_head_bytes => 12 file_tail_bytes => 2 # Enable / tweak these settings when event is too big for codec to handle. # break_json_down_policy => "with_head_tail" # break_json_batch_count => 2 } } filter { split { field => "[records]" } split { field => "[records][properties][flows]"} split { field => "[records][properties][flows][flows]"} split { field => "[records][properties][flows][flows][flowTuples]"} mutate{ split => { "[records][resourceId]" => "/"} add_field => {"Subscription" => "%{[records][resourceId][2]}" "ResourceGroup" => "%{[records][resourceId][4]}" "NetworkSecurityGroup" => "%{[records][resourceId][8]}"} convert => {"Subscription" => "string"} convert => {"ResourceGroup" => "string"} convert => {"NetworkSecurityGroup" => "string"} split => { "[records][properties][flows][flows][flowTuples]" => ","} add_field => { "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}" "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}" "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}" "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}" "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}" "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}" "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}" "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}" "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}" "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}" "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}" "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}" "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} } date{ match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } elasticsearch { hosts => "localhost" index => "nsg-flow-logs" } }
Untuk petunjuk lebih lanjut tentang menginstal Logstash, lihat dokumentasi resmi.
Pasang plugin input Logstash untuk penyimpanan blob Azure
Plugin Logstash ini memungkinkan Anda untuk langsung mengakses log alur dari akun penyimpanan yang ditunjuk. Untuk menginstal plugin ini, dari direktori penginstalan Logstash default jalankan perintah :
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Untuk memulai Logstash, jalankan perintah:
sudo /etc/init.d/logstash start
Untuk informasi selengkapnya tentang plugin ini, lihat dokumentasi.
Install Kibana
Untuk petunjuk tentang cara menginstal Kibana di sistem RHEL/CentOS, lihat Menginstal Kibana dengan RPM. Untuk petunjuk tentang cara menginstal Kibana di sistem Ubuntu/Debian menggunakan paket repositori, lihat Menginstal Kibana dari repositori APT.
Kemudian instruksi berikut diuji di Ubuntu dan dapat digunakan dalam distribusi Linux yang berbeda karena tidak spesifik untuk Ubuntu.
Jalankan perintah berikut untuk memasang Kibana:
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
Untuk menjalankan Kibana, gunakan perintah:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Untuk melihat antarmuka web Kibana Anda, navigasi ke
http://localhost:5601
Untuk skenario ini, pola indeks yang digunakan untuk log alur adalah "nsg-flow-logs". Anda dapat mengubah pola indeks di bagian "output" dari file logstash.conf Anda.
Jika Anda ingin menampilkan dasbor Kibana dari jarak jauh, buat aturan NSG masuk yang mengizinkan akses ke port 5601.
Membuat dasbor Kibana
Contoh dasbor untuk menampilkan tren dan detail dalam pemberitahuan Anda diperlihatkan dalam gambar berikut:
Unduh file dasbor, file visualisasi, dan file pencarian yang disimpan.
Di bawah tab Manajemen Kibana, navigasi ke Objek Tersimpan dan impor ketiga file tersebut. Kemudian dari tab Dasbor Anda dapat membuka dan memuat dasbor sampel.
Anda juga dapat membuat visualisasi dan dasbor Anda sendiri yang disesuaikan dengan metrik yang Anda minati. Baca selengkapnya tentang membuat visualisasi Kibana dari dokumentasi resmi Kibana.
Visualisasikan log alur NSG
Dasbor sampel menyediakan beberapa visualisasi log alur:
Alur menurut Keputusan/Arah dari Waktu ke Waktu - grafik rangkaian waktu memperlihatkan jumlah alur selama periode waktu tersebut. Anda dapat mengedit satuan waktu dan rentang kedua visualisasi ini. Alur menurut Keputusan menunjukkan proporsi keputusan izinkan atau tolak yang dibuat, sementara Alur menurut Arah menunjukkan proporsi lalu lintas masuk dan keluar. Dengan visual ini, Anda dapat memeriksa tren lalu lintas dari waktu ke waktu dan mencari lonjakan atau pola yang tidak biasa.
Port Alur menurut Tujuan/Sumber – bagan pai memperlihatkan perincian alur ke port masing-masing. Dengan tampilan ini, Anda dapat melihat port yang paling umum digunakan. Jika Anda mengklik port tertentu dalam bagan pai, dasbor lainnya akan memfilter ke alur port tersebut.
Jumlah Alur dan Waktu Log Paling Awal – metrik memperlihatkan jumlah alur yang direkam dan tanggal log paling awal yang ditangkap.
Alur berdasarkan NSG dan Aturan – grafik batang yang menunjukkan distribusi alur dalam setiap NSG, dan distribusi aturan dalam setiap NSG. , Anda dapat melihat NSG dan aturan mana yang menghasilkan lalu lintas terbanyak.
10 IP Sumber/Tujuan Teratas – bagan batang memperlihatkan 10 IP sumber dan tujuan teratas. Anda dapat menyesuaikan bagan ini untuk memperlihatkan lebih banyak atau sedikit IP teratas. Dari sini, Anda dapat melihat IP yang paling umum terjadi dan keputusan lalu lintas (izinkan atau tolak) dibuat terhadap setiap IP.
Tuple Alur – tabel ini menunjukkan kepada Anda informasi yang terkandung dalam setiap tuple alur, dan NGS dan aturan yang sesuai.
Dengan menggunakan bar kueri di bagian atas dasbor, Anda bisa memfilter dasbor berdasarkan parameter alur apa pun, seperti ID langganan, grup sumber daya, aturan, atau variabel menarik lainnya. Untuk informasi selengkapnya tentang kueri dan filter Kibana, lihat dokumentasi resmi
Kesimpulan
Dengan menggabungkan log alur Kelompok Keamanan Jaringan dengan Elastic Stack, kami telah menemukan cara yang kuat dan dapat disesuaikan untuk memvisualisasikan lalu lintas jaringan kami. Dasbor ini memungkinkan Anda untuk dengan cepat mendapatkan dan berbagi wawasan tentang lalu lintas jaringan Anda, dan memfilter dan menyelidiki potensi anomali. Dengan menggunakan Kibana, Anda dapat menyesuaikan dasbor ini dan membuat visualisasi khusus untuk memenuhi kebutuhan keamanan, audit, dan kepatuhan apa pun.
Langkah berikutnya
Pelajari cara memvisualisasikan log alur NSG Anda dengan Power BI dengan mengunjungi Visualisasikan log alur NSG dengan Power BI