DEV Community

Berkant
Berkant

Posted on

1

SSH Güvenliğini Arttırmak

Giriş

  • Merhaba, Bu yazımda ssh-audit aracıyla hedef makinedeki ssh bağlantı güvenliği açıklarını bulup, açıkları kapamak için gereken değişiklikleri Ansible ile yapacağız.

.sshd_config ve ssh_config Arasındaki Fark?

  • sshd nin açılımı ssh daemondur. SSH Portuna gelen bağlantıları dinler. sshd_config bulunduğumuz makineye gelen bağlantıları karşılamada kullanılan ayarlardır.
  • ssh_config de ise ssh istemcisi için yapılan ayarlar bulunur. Yani ssh_config başka makinelere bağlanırken kullanılan ayarlar içindir.

ssh-audit ile Açıkları Bulmak

  • ssh-audit kurulur.
sudo apt install ssh-audit -y
#ya da
sudo snap install ssh-audit
  • sshd_config ayarları yapılarak güvenliği arttırılacak makine taratılır. İster uzak bir makineden ister kendisinden taratabiliriz.

    ssh-audit localhost

alt text

alt text

  • Çıkan sonuca göre anahtar değişim algoritmalarında (KexAlgorithms), HostKeyAlgoritms de, kullanılan şifreleme algoritmalarında (ciphers) ve mesaj kimlik doğrulama kodlarında yeşille belirtilen algoritmalar güvenli olduğundan kalacak, sarı ve kırmızı olanlar sshd_config den çıkartılacak.

  • Ubuntu 20.04 Focal için örnek sshd_config dosyamız.

    ### Degistirilen Bolum ###
    KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
    HostKeyAlgorithms ssh-ed25519,rsa-sha2-256,rsa-sha2-512
    HostKey /etc/ssh/ssh_host_ed25519_key
    HostKey /etc/ssh/ssh_host_rsa-sha2-256_key
    HostKey /etc/ssh/ssh_host_rsa-sha2-512_key
    Ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    MACs umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
    ### Degistirilen Bolum ###
    view raw sshd_config hosted with ❤ by GitHub

Ansible ile Otomasyon

  • Birden fazla sunucunun olduğu bir ortamda, teker teker bu ayarları dağıtmak çok fazla zaman alacağından Ansible ile dağıtacağız.

  • Ansible ile dağıtırken her işletim sistemi sürümüne göre desteklenen algoritmalarda değişiklikler olabilir. Bundan dolayı playbook umuza sunucuların işletim sistemini bakıp, sadece Ubuntu 20.04 (focal) için çalışacak şekilde ayarlanacak. Dilerseniz farklı işletim sistemlerinide benzer yöntemle ekleyebilirsiniz.

  • Aşağıdaki ekran görüntüsünde host02.txt dosyasında belirtilen makinelerde işletim sistemi kod adı bilgisine ulaşıyoruz.

alt text

  • Yapacağımız işlemi kısaca özetlersek
    • sshd_config hedef makineye kopyalamak (var olan izin ve sahiplikleri koruyarak)
    • sshd_config de belirtilen hostkeyleri yoksa oluşturmak
    • ssh servisini yeniden başlatmak (değişiklik olmuşsa)
      ### 2nd Part of playbook.yaml
      - hosts: OSRelease_focal
      remote_user: root
      tasks:
      - name: Change sshd_config
      ansible.builtin.copy:
      src: ./sshd_config
      dest: /etc/ssh/sshd_config
      owner: root
      group: root
      mode: '0644'
      notify: Restart ssh service
      - name: Generate ed25519 host key
      command: ssh-keygen -q -N "" -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
      args:
      creates: /etc/ssh/ssh_host_ed25519_key
      notify: Restart ssh service
      - name: Generate rsa-sha2-256 host key
      command: ssh-keygen -q -N "" -t rsa-sha2-256 -f /etc/ssh/ssh_host_rsa-sha2-256_key
      args:
      creates: /etc/ssh/ssh_host_rsa-sha2-256_key
      notify: Restart ssh service
      - name: Generate rsa-sha2-512 host key
      command: ssh-keygen -q -N "" -t rsa-sha2-512 -f /etc/ssh/ssh_host_rsa-sha2-512_key
      args:
      creates: /etc/ssh/ssh_host_rsa-sha2-512_key
      notify: Restart ssh service
      handlers:
      - name: Restart ssh service
      service:
      name: ssh
      state: restarted
      view raw playbook.yaml hosted with ❤ by GitHub

Bir sonraki yazımızda görüşmek üzere ;)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →