AWS EC2 üzerinde Key Pair Kullanımı ve Key Pair Recovery İşlemleri

Serkan Bingöl
Cloud Türkiye
Published in
8 min readAug 22, 2019
images from http://www.elegantthemes.com

Merhabalar bu yazımız ile birlikte AWS içinde EC2 makinelerine güvenli giriş işlemleri için kullanılan key pair kavramından bahsedeceğim. Bu kısıma geçmeden önce bir kaç tanımlamayı incelemek faydalı olacaktır.

SSH Anahtarı (Key) : Ağ erişimi (ssh tunneling) aşamasında tüm trafiğin şirelenmesi, saldırılardan korunması için artırılmış güvenlik önlemlerini barındıran SSH protokolü için kullanılan kimlik bilgisini içeren anahtar olarak tanımlanabilir.

Açık anahtar doğrulaması (PKI — public key infrastructure) : Açık/gizli anahtar çiftine dayanan bir yöntemdir. Anahtar çiftinin açık olan anahtarı herkes tarafından kullanılabilir ve bu anahtarla veri kriptolanır. Sadece anahtar çiftinin gizli olan anahtarı bu kriptolu veriyi çözümleyebilir.

AWS içinde key pair kullanımı ile herhangi bir şifre kullanmadan EC2 makinelerimize güvenli bağlantı sağlayabilemekteyiz.

AWS key pairs ile ilgili daha detaylı bilgilere aşağıdaki link üzerinden ulaşabilirsiniz.

AWS EC2 Oluşturma ve Key Pair Kullanımı

Öncelikli olarak AWS yönetim konsolumuzu açarak EC2 dashboard üzerinden bu demo için henüz herhangi bir kaynağın oluşturulmadığını kontrol ediyoruz. Resimden de anlaşıldığı üzere sadece default olarak oluşturulmuş 1 adet Security Group bulunmakta.

EC2 Dashboard

EC2 oluştururken Ubuntu 18.04 imajından türetilen bir AMI seçerek t2.micro tipinde bir makine seçiyoruz. Gerekli VPC , subnet ayarlarını yapıp standart bir EBS volume olan gp2 tipindeki SSD disk tipini seçiyoruz ve makine ismi olarak “Production” atamasını tag oluşturma alanından yapıyoruz. Security Group olarak default olan PROD-SG içinden 22 portunu inbound olarak açarak adımlarımızı kontrol ederek EC2 instance oluşturma işlemlerimizi tamamlıyoruz.

EC2 Oluşturma Aşamaları — I

Oluşturmuş olduğumuz EC2 ye güvenli bir şekilde bağlanmak için kullanmak üzere “ KP-PROD-LONDON ” isimli bir key pair oluşturuyoruz.

Key Pair Oluşturma

EC2 oluşturma işlemimiz tamamlandıktan sonra “Instances” sekmesi üzerinden EC2 detaylarını incelediğimizde IPv4 Public IP alanından public IP için gerekli adresi görebilmekteyiz. Burada dikkat edilmesi gereken durum eğer oluşturulan EC2 lar için herhangi bir elastic ip ataması yapılmadı ise her makine durdurulmasında ve yeniden başlatılmasında bu IPv4 Public IP adresi yeniden atanacaktır. Dolayısı ile bu makine için bir elastic ip ataması yapmak istiyorum.

EC2 Public IP Kontrol

“Network & Security” alanından Elastic IPs tabını seçerek “Allocate new address” diyerek amazon pool tanımını seçerek yeni bir elastic IP oluşturuyoruz.

Elastic IP Oluşturma

Oluşan bu Elastic IP adresini seçip “Actions” kısmından “Associate address” diyerek olusturmuş olduğumuz EC2 instance ID yi seçerek atama işlemini tamamlıyoruz.

Elastic IP EC2 Atama

EC2 dashboard alanı üzerinden Elastic IP’s alanını kontrol ettiğimizde 1 adet yeni elastic IP yi görebiliriz. Ayrıca instances alanından baktığımızda public IP nin elastic IP nin adresi olarak güncellendiğini görmekteyiz.

Elastic IP Kontrol

Bu EC2 üzerindeki “Connect” butonunu tıkladığımızda bağlantı için gereken komutu ve gerekli adımları nasıl uygulayacağımızı görebiliriz. Bu kısımda ilgili ssh komutunu uyguladığımızda ubuntu makinemize ulaşabildiğimizi terminal üzerinden kontrol edebiliriz.

SSH ile EC2 Bağlantısı

Bağlantı işlemi gerçekleştikten sonra EC2 makinesinden logout olarak çıkıp kullanmış olduğumuz pem uzantılı key pair dosyamızı vim editör içinden açarak hashlanmiş bağlantı anahtarını görebilmekteyiz.

Key Pair pem dosyası detay

Burada bir felakat senaryosu uygulamak adına ilgili haslanmiş anahtarın içini silerek sanki kullandığımız anahtarın bozulduğunu kurgulamaya çalışıyoruz.

Hatalı Key Pair Örneği

Aynı bağlantı anahtarı ile ssh bağlantısı kurmaya çalıştığımızda artık bu anahtarla bağlantının sağlanamadığını aşağıdaki ekran görüntüsünden takip edebilmekteyiz.

SSH Bağlantısı Hatasıfdfdfd

Key Pair Recovery işlemi

Key pairler sadece EC2 makineleri oluşturulurken ataması yapılabildiği için burada daha önce oluşturduğumuz EC2 makinesinin birkaç özelliğini kalıtım olarak alan yeni bir EC2 makinesi oluşturup, yeni bir key pair kullanarak, bağlanamadığımız “Production” isimli EC2 üzerindeki diski yeni oluşturduğumuz makineye mount edip bazı dosyaları kopyalayacağız ve “Production“ isimli makineye geri takarak yeni bağlantıyı sıfırdan oluşturduğumuz key pair ile yapmaya çalışacağız.

Böyle bir durumla karşılaştığımız zaman önce tekrardan bağlantı kurabileceğimiz bir ssh anahtarı oluşturmak için key pair alanından yeni bir key pair pem dosyası oluşturuyoruz.

Key Pair Oluşturma İşlemi — II

İlk oluşturduğumuz EC2 instance detaylarını inceleyerek bu makineye ait Instance ID, AMI ID, Subnet ID ve root diske ait bilgileri ileride kullanmak adına bir yere kayıt edebilirsiniz.

EC2 Detay Bilgileri

Daha önce oluşturduğumuz EC2 model ve AMI tipini seçerek işlemimize devam ediyoruz.

Geçici EC2 Oluşturma — I

Burada önemle dikkat edeceğimiz konu VPC ve Subnet olarak Production isimli EC2 ya ait bilgileri kullanmamız gerektiğidir.

Geçici EC2 Oluşturma — II (VCN ve Subnet Ayarlamaları)

Kalan işlemlerimizi tamamlayarak “ KP-PROD-LONDON-NEW ” isimli key pair pem dosyasını kullanarak “Temporary” isimli bir EC2 makinesini ayaklandırıyoruz.

Geçici EC2 Oluşturma — III

Yeni bağlantı anahtarını kullanarak “Temporary” adlı EC2 makinesine ssh protokolü ile ulaşımı sağlayabiliyoruz.

SSH ile Geçici EC2 Bağlantısı

Artık “Production” makinesi üzerindeki diski çıkartmak adına bu makineyi durduruyoruz.

EC2 Sistem Durdurma

“Elastic Block Store” alanı üzerinden Volumes alanını secerek production diskini secerek actions üzerinden “Detach Volume” diyerek diskin sökülme işlemini gerçekleştiriyoruz. “available” state durumunu gördüğümüz taktirde bu işlemin gerçekleştiğini görebiliriz.

EBS Orjinal EC2 Detach İşlemi

Aynı production isimli diski seçerek actions alanı üzerinden “Attach Volume” diyerek instance alanı içinden “Temporary” makinesini secerek yeni oluşturduğumuz EC2 instance üzerine takılma işlemini gerçekleştiriyoruz. Burada yeni diske atanırken diskin ismi değişeceği için burada default gelen değeri seçerek işlemimize devam ediyoruz. İstenildiği takdirde kendimize ait bir isimlendirme belirleyebiliriz.

EBS Geçici EC2 Attach İşlemi

“Temporary” isimli EC2 instance üzerinde yeni diskin eklendiğini aşağıdaki ekran görüntüsünden takip edilebilirsiniz.

EC2-EBS Kontrol İşlemi

“ KP-PROD-LONDON -NEW” isimli key pairi kullanarak temporary makinesine ssh bağlantısı sağladıktan sonra “lsblk” komutunu kullanarak bu makineye dahil olan disklerimizi kontrol edebiliriz.

lsblk İşlemi

Takip eden adımlarda “sudo mkdir /mnt/tempvol” komutunu kullanarak temporary makinesi üzerinde root disk üzerinde mnt klasörü altında tempvol klasörü oluşturuyoruz. Sonrasında “sudo mount /dev/xvdf1 /mnt/tempvol” komutunu kullanarak eklediğimiz production diskini, yeni oluşturduğumuz temporary diski üzerindeki mnt/tempvol klasörüne eşitliyoruz.

sudo cp .ssh/authorized_keys /mnt/tempvol/home/ubuntu/.ssh/authorized_keys” komutunu kullanarak temporary disk üzerindeki ssh klasörü içindeki autherized_keys dosyasını production diski üzerindeki yerine kopyalıyoruz. “sudo umount /mnt/tempvol” komutu ile ilgili production diski ile /mnt/tempvol klasörünün eşleştirilmesini kaldırıyoruz.

Geçici EBS mount işlemi

Production diskini production EC2 makinesinde tekrardan kullanmak için temporary EC2 makinesinden detach ediyoruz.

EBS Geçici EC2 Detach İşlemi

Aynı diski tekrardan production EC2 makinesine attach etme işlemini gerçekleştiriyoruz.

EBS Orjinal EC2 Attach İşlemi

Burada dikkat edilmesi gereken durum production makinesinde bu disk ismi /dev/sda1 olarak oluşturulduğu için burada bu ismi giriyoruz.

EBS İsimlendirme İşlemi

Production isimli EC2 makinesini tekrardan start ediyoruz.Bu makine ayağa kalktıktan sonra bağlantıyı tekrardan sağlamak için gerekli işlemlere başlayabiliriz.

EC2 Start İşlemi

Production EC2 makinesinin detaylarına baktığımız takdirde hala “ KP-PROD-LONDON.pem” isimli key pairi görmekteyiz. Bu pem dosyası ile ssh bağlantısı kurmaya çalıştıımızda hala bağlantığı oluşturamaktayız. Yeni atamasını gerçekleştirdiğimiz “ KP-PROD-LONDON-NEW.pem” anahtarını kullanarak ssh bağlantısı oluşturduğumuzda artık yeniden kontrolünü yitirdiğimiz production EC2 makinesine bağlanabilmekteyiz.

SSH İşlemi

Sonuç

Uzun süren bir konfigurasyon sürecinden sonra tüm adımlarımızı tamamlayıp ssh bağlantısını yitirdiğimiz production makinesine yeniden güvenli şekilde bağlanmayı başardık. Burada kullandığımız path bizler için ssh anahtarımızı kaybettiğimizde, bizden başka kullanıcıların bu dosyaya ulaşabildiğini düşündüğümüz durumlarda, bu dosyayı bozduğumuz ya da EC2 makinesi ve bağlanmak istediğimiz makinenin anahtarlarının bir şekilde uyuşamadığı durumlarda bizlere fayda sağlayacaktır diye düşünüyorum.

Bir dahaki yazıda görüşmek dileği ile.

İlgili Linkler

--

--

Serkan Bingöl
Cloud Türkiye