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.

Diagram memperlihatkan skenario yang memungkinkan Anda memvisualisasikan log alur Kelompok Keamanan Jaringan menggunakan Elastic Stack.

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.

  1. 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.

  2. 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

  3. 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 .

  1. 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
    
  2. Selanjutnya kita perlu mengonfigurasi Logstash untuk mengakses dan mengurai log alur. Buat file logstash.conf menggunakan:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. 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.

  1. 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
    
  2. Untuk menjalankan Kibana, gunakan perintah:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Untuk melihat antarmuka web Kibana Anda, navigasi ke http://localhost:5601

  4. 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.

  5. 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:

gambar 1

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:

  1. 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.

    Cuplikan layar memperlihatkan dasbor sampel dengan alur menurut keputusan dan arah dari waktu ke waktu.

  2. 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.

    Cuplikan layar memperlihatkan dasbor sampel dengan alur menurut port tujuan dan sumber.

  3. Jumlah Alur dan Waktu Log Paling Awal – metrik memperlihatkan jumlah alur yang direkam dan tanggal log paling awal yang ditangkap.

    Cuplikan layar memperlihatkan dasbor sampel dengan jumlah alur dan waktu log paling awal.

  4. 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.

    Cuplikan layar memperlihatkan contoh dasbor dengan alur menurut N S G dan aturan.

  5. 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.

    Cuplikan layar memperlihatkan dasbor sampel dengan alur berdasarkan sepuluh sumber teratas dan alamat I P tujuan.

  6. Tuple Alur – tabel ini menunjukkan kepada Anda informasi yang terkandung dalam setiap tuple alur, dan NGS dan aturan yang sesuai.

    Cuplikan layar memperlihatkan tuple alur dalam tabel.

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