GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Pengguna Baru dan Auth Kunci SSH. menggunakan Ansible di Ubuntu 18.04

Ansible adalah alat otomatisasi sederhana yang mengotomatiskan penerapan aplikasi perangkat lunak, penyediaan cloud, dan manajemen konfigurasi. Ini adalah alat orkestrasi server yang membantu Anda mengelola dan mengontrol sejumlah besar node server dari satu tempat yang disebut 'Mesin Kontrol'. Ansible dibuat oleh Michael DeHaan pada tahun 2012 dan ditulis dengan Python dan Powershell.

Dalam tutorial ini, kita akan belajar bagaimana menerapkan pengguna baru dan mengaktifkan otentikasi Berbasis Kunci SSH menggunakan alat otomatisasi Ansible. Kami juga akan mempelajari cara mengonfigurasi 'Mesin Kontrol' yang Memungkinkan, serta cara menulis buku pedoman sederhana yang memungkinkan.

Prasyarat

  • 2 atau lebih Server Ubuntu 18.04
    • 10.0.15.10      mesin kontrol
    • 10.0.15.21      ansi01
    • 10.0.15.22      ansi02
  • Hak istimewa root

Apa yang akan kita lakukan?

  1. Menyiapkan Mesin Kontrol yang Memungkinkan
  2. Tentukan Pengguna dan Kunci SSH
  3. Buat File Inventaris
  4. Buat Playbook yang Mungkin
  5. Menyebarkan Server Menggunakan Playbook
  6. Pengujian

Langkah 1 - Siapkan Mesin Kontrol yang Memungkinkan

Dalam tutorial ini, kita akan menggunakan server Ubuntu 16.04 sebagai Ansible 'Machine Control' dan host yang memungkinkan. Langkah pertama yang perlu kita lakukan adalah menyiapkan 'mesin kontrol'.

Kami akan menginstal python dan memungkinkan pada 'mesin kontrol' yang memungkinkan dengan menjalankan perintah berikut.

sudo apt install python ansible -y

Setelah instalasi selesai, kami akan menambahkan pengguna sistem baru.

Kami akan menambahkan pengguna baru bernama 'penyediaan' untuk melakukan penyediaan server menggunakan Ansible.

Tambahkan 'ketentuan' pengguna baru dan berikan kata sandi kepada pengguna.

penyediaan useradd -m -s /bin/bash
penyediaan passwd

Sekarang tambahkan pengguna 'penyediaan' untuk sudo tanpa kata sandi dengan membuat file konfigurasi baru di bawah '/etc/sudoers.d/' menggunakan perintah di bawah ini.

echo  -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL'> /etc/sudoers.d/provision

Pengguna baru telah dibuat, dan sekarang dapat menggunakan sudo tanpa kata sandi.

Langkah 2 - Tentukan Pengguna dan Kunci SSH

Pada langkah ini, kami akan menentukan pengguna untuk host yang memungkinkan. Pengguna ini akan dibuat secara otomatis oleh ansible, jadi kita hanya perlu menentukan nama pengguna, kata sandi, dan kunci publik ssh.

Untuk setiap server ('ansi01' dan 'ansi02'), kita akan membuat user baru bernama 'provision' dengan password 'secret01'. Dan kita perlu mengenkripsi kata sandi 'secret01' menggunakan perintah mkpasswd.

Enkripsi kata sandi 'secret01' menggunakan perintah di bawah ini.

mkpasswd --method=SHA-512
KETIKA SANDI 'secret01'

Catatan:

Pastikan paket 'whois' terinstal di sistem, atau Anda dapat menginstal menggunakan perintah berikut.

sudo apt install whois -y

Dan Anda akan mendapatkan sandi terenkripsi SHA-512.

Selanjutnya, kita akan membuat ssh-key baru.

Masuk ke pengguna 'penyediaan' dan buat kunci ssh menggunakan perintah ssh-keygen.

su - ketentuan
ssh-keygen -t rsa

Sekarang pengguna dan kata sandi telah ditentukan, dan kunci ssh telah dibuat l(terletak di direktori '.ssh').

Langkah 3 - Buat Inventaris Baru

Pada langkah ini, kita akan menentukan file inventaris untuk semua host server.

Masuk sebagai pengguna 'penyediaan' dan buat direktori baru untuk proyek.

su - ketentuan
mkdir -p ansible01/

Buka direktori 'ansible01' dan buat file inventaris baru 'inventory.ini' menggunakan vim.

cd ansible01/
vim inventory.ini

Tempelkan konfigurasi berikut di sana.

[server web]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22

Simpan dan keluar.

Sekarang buat file konfigurasi baru yang memungkinkan 'ansible.cfg'.

vim ansible.cfg

Tempelkan konfigurasi berikut di sana.

[default]
inventory =/home/provision/ansible01/inventory.ini

Simpan dan keluar.

File inventaris yang memungkinkan telah dibuat, dan skrip yang memungkinkan kami akan ditempatkan di bawah pengguna 'provision', di dalam direktori 'ansible01'.

Langkah 4 - Buat Playbook yang Mungkin

Playbook Ansible adalah kumpulan instruksi yang Anda kirim untuk dijalankan pada satu atau sekelompok host server. Ini mewakili penyediaan yang memungkinkan, di mana otomatisasi didefinisikan sebagai tugas, dan semua pekerjaan seperti menginstal paket, mengedit file, akan dilakukan oleh modul yang memungkinkan.

Pada langkah ini, kami akan membuat buku pedoman baru yang memungkinkan untuk menerapkan pengguna baru, menerapkan kunci ssh, dan mengonfigurasi layanan ssh.

Sebelum kami membuat playbook baru yang memungkinkan, kami akan memindai semua sidik jari server menggunakan perintah ssh-keyscan seperti di bawah ini.

ssh-keyscan 10.0.15.21>> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22>> ~/.ssh/known_hosts

Sidik jari server tersebut akan disimpan di file '.ssh/known_hosts'.

Catatan:

Jika Anda memiliki banyak node server, Anda dapat menyimpan daftar host Anda dan kemudian memindai sidik jari kunci ssh secara manual menggunakan skrip bash seperti yang ditunjukkan di bawah ini.

untuk saya di $(cat list-hosts.txt)
lakukan
ssh-keyscan $i>> ~/.ssh/known_hosts
selesai

Selanjutnya, buat buku pedoman yang memungkinkan bernama 'deploy-ssh.yml' menggunakan vim.

vim deploy-ssh.yml

Tempel mengikuti pedoman yang memungkinkan di sana.

---
- host:semua
  vars:
    - provision_password:'$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DVito1SpUn>  kumpulkan_fakta:tidak
  remote_user:root

  tugas:

  - nama:Tambahkan pengguna baru bernama ketentuan
    pengguna:
         name=provision
        password={{ provision_password }}

  - name:Tambahkan pengguna ketentuan ke sudoers
    copy:
        tujuan:"/etc/sudoers.d/provision "
         content:"provision  ALL=(ALL)  NOPASSWD:ALL"

  - name:Deploy SSH Key
    Authorized_key:user=provision
                 key=" lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
                  state=present

  - name:Disable Password Authentication
    lineinfile:
          dest=/etc/ssh/sshd_config
         regexp='^PasswordAuthentication'
         line="PasswordAuthentic ation no"
          state=present
         backup=yes
    notify:
      - restart ssh

  - name:Disable Root Login
    lineinfile:
          dest=/etc/ssh/sshd_config
         regexp='^PermitRootLogin'
         line="PermitRootLogin no"
     >   status
notify:
      - restart ssh

  handlers:
  - name:restart ssh
    service:
      name=sshd
      state=restart

Simpan dan keluar.

Pada skrip buku pedoman:

  • kami membuat skrip buku pedoman 'deploy-ssh.yml' untuk diterapkan pada semua server yang ditentukan dalam file 'inventory.ini'.
  • kami membuat variabel yang memungkinkan 'provision_password', yang berisi sandi terenkripsi untuk pengguna baru.
  • Setel fakta yang mungkin ke 'tidak'.
  • Tentukan pengguna 'root' sebagai pengguna jarak jauh untuk melakukan otomatisasi tugas.
  • Kami membuat tugas baru untuk menambahkan pengguna baru, menambahkan pengguna ke sudoers, dan mengunggah kunci ssh.
  • Kami membuat tugas baru untuk mengonfigurasi layanan ssh, menonaktifkan login root, dan menonaktifkan otentikasi kata sandi. Tugas untuk mengonfigurasi ssh akan memicu penangan 'mulai ulang ssh'.
  • Kami membuat handler untuk memulai ulang layanan ssh.

Langkah 5 - Jalankan Playbook

Masuk ke pengguna 'provision' dan buka direktori 'ansible01'.

su - ketentuan
cd ansible01/

Sekarang jalankan playbook 'deploy-ssh.yml' menggunakan perintah seperti yang ditunjukkan di bawah ini.

ansible-playbook deploy-ssh.yml --ask-pass

Ketik kata sandi root Anda, dan Anda akan mendapatkan hasil seperti di bawah ini.

Semua tugas untuk men-deploy pengguna baru dan kunci ssh telah berhasil diselesaikan.

Langkah 6 - Pengujian

Uji menggunakan perintah yang memungkinkan.

server web yang memungkinkan -m ping
server web yang memungkinkan -m shell -a id

Sekarang Anda akan mendapatkan pesan hijau seperti di bawah ini.

Sekarang kita dapat mengelola server 'ansi01' dan 'ansi02' menggunakan Ansible, dan pengguna 'provision' akan menjadi pengguna default untuk Ansible.

Menguji koneksi ke server

ssh 10.0.15.21
ssh 10.0.15.22

Dan Anda akan terhubung ke setiap server menggunakan kunci default file '.ssh/id_rsa', dan menggunakan 'provision' pengguna.

Menyebarkan pengguna baru dan ssh-key menggunakan ansible telah berhasil diselesaikan.


Ubuntu
  1. Pengaturan server awal dengan Ubuntu 14.04

  2. Cara menggunakan Ansible untuk menginstal dan mengkonfigurasi Redis 6 di Ubuntu 20.04

  3. Instal dan Siapkan Server OpenVPN di Ubuntu 20.04

  1. VPN IPsec berbasis StrongSwan menggunakan sertifikat dan kunci yang dibagikan sebelumnya di Ubuntu 16.04

  2. Menggunakan Ansible untuk menginstal dan mengkonfigurasi Elasticsearch di Ubuntu 20.04

  3. Atur SFTP dan Cegah SSH di Ubuntu 20.04

  1. Cara Mengatur Kunci SSH di Ubuntu 18.04

  2. Cara Mengatur Kunci SSH di Ubuntu 20.04

  3. Menggunakan Ubuntu Dengan Pengaturan Dua Layar?