Ansible og Terraform Þjónn
Uppsetning á sérstökum framteflingarþjóni (e. deployment server). Þjónninn mun hafa notendur sem hafa leyfi til að keyra Ansible skipanir á ákveðinn hóp af þjónum (í þessu tilviki allir). Gert er ráð fyrir að fleiri en einn notandi komi geti notað þjóninn og því er fyrirkomulagið þannig að sett er upp git lind á sérstökum stað á þjóninum sem er svo klónuð í heimamöppur allra notanda. Vegna þess að þjónninn hefur rótaraðgang að öllum öðrum þjónum eru ákveðnar öryggisráðstafanir teknar.
Uppsetning
Gert er ráð fyrir að þjónn sé til staðar. Í þessu tilfelli er notaður Ubuntu 20.04 þjónn keyrður á ESXi. Mælt er með því að virkja sjálfvirkar öryggisuppfærslur.
Kerfisnotandinn
Gerum hóp og kerfisnotanda:
Þannig getur bubbi notað sudo til kerfisstjórnunar. Skynsamlegt finnst mér að treysta almennum forritandi kerfisstjóum til að uppfæra kerfið. Breytið /etc/sudoers þannig að skráin innihaldi eftirfarandi línur:
byggir að geta uppfært kerfið án lykilorðs. Að því stilltu skulum við gera fleiri notendur:
Öryggisráðstafanir
SSH aðgangur er einungis aðgengilegur frá vinnustöðvanetinu, í þessu tilfelli 192.168.52.0/24, og innskráningar eru einungis leyfðar í gegnum SSH lykla. Þetta er stillt í skránni /etc/ssh/sshd_conf ásamt þessum atriðum:
PermitRootLogin no # (1)!
PasswordAuthentication no # (2)!
AddressFamily inet # (3)!
ListenAddress <IP-fang þjóns> # (4)!
X11Forwarding no # (5)!
AuthorizedKeysFile /etc/ssh/authorized-keys/%u/authorized_keys # (6)!
- Bönnum beina innskráningu sem
root - Bönnum innskráningu með lykilorðum
- Hlustum bara á IPv4 traffík
- Tilgreinum IP töluna sem SSH þjónninn svarar
- Bönnum sendinu X skjákerfisins í gegnum SSH
- Sýnum notendum vantraust og setjum lykla í möppu sem þeir geta ekki skrifað í, %u breytist í notendanafn virks notanda. Þessi mappa þarf að vera læs fyrir sérhvern notanda.
Warning
Verið viss um að koma ykkar SSH lykli örugglega fyrir í /etc/ssh/authorized-keys/%u/authorized_keys áður en þið virkið breytingarnar og skráið ykkur út. Gangið einnig úr skugga um að þinn notandi geti lesið þá möppu, en hann ætti ekki að geta skrifað í hana.
Bönnum líka alls kyns áframsendingar
AllowAgentForwarding no # (1)!
AllowTcpForwarding no # (2)!
PermitTunnel no
AllowUsers *@192.168.52.0/24 # (3)!
- Bönnum tengingu við
ssh-agentferlið á tölvunni sem tengist þjóninum. - Bönnum notkun þjóns sem göng.
- Leyfum bara tengingar frá tilgreindu neti
Breytum svo umask gildinu þannig að allar nýjar möppur hafi 0770 réttindi og skrár 0660. Göngum úr skugga um að línan
sé til staðar áður en við opnum skrána /etc/login.defs og bætum við línunni
eftir þetta gæti þurft að eiga við réttindi á kerfisskrám sé þeim breytt.
Gerum möppur fyrir Ansible og Terraform skrárnar okkar
Þetta verða git lindir sem notendur geta klónað. Frumstillum git lindirnar:Note
Hér gerum við --bare þar sem við munum ekki vinna skrár í þessari möppu, þetta er bara til að hafa einn miðlægan punkt fyrir alla notendur.
Að nota lindirnar
Við getum verið að vinna á þjóninum, þá getum við klónað lindirnar á sjálfum þjóninum undir okkar heimamöppu
Líklegra er að við vinnum þetta í gegnum fjartengingu, þá gerum við einfaldlega
Stillingar þjóna
Allir þjónar sem stjórnað er af ansible þurfa annað hvort að hafa notanda fyrir hvern notanda sem keyrir ansible, eða allir ansible notendur keyra með einum kerfisnotanda sem er til staðar á öllum þjónum. Við munum nota þá aðferð.
Ef umhverfi þitt er með þjóna sem hafa ekki þennan kerfisnotanda getum við notað núverandi notanda til að keyra playbook sem bætir við kerfisnotandanum
Byrjum á því að skilgreina þjónana okkar
[linux]
linux01.heima
linux02.heima
linux03.heima
linux04.heima
linux05.heima
linux06.heima
linux07.heima
linux08.heima
linux09.heima
linux10.heima
linux11.heima
[linux]
---
- name: Gerum notanda Bubba
hosts: linux
become: true
gather_facts: false
vars_files:
- group_vars/leyndo
tasks:
- name: Bætum við hópi byggir
group:
name: byggir
system: yes
state: present
- name: Bætum við Bubba
user:
name: bubbi
group: byggir
groups: ''
home: /home/bubbi
system: yes
state: present
password: '!'
- name: Gerum SSH möppu bubba
file:
path: /home/bob/.ssh
state: directory
owner: bubbi
group: byggir
mode: 0700
- name: Flytjum inn SSH lykil bubba
copy:
dest: /home/bob/.ssh/authorized_keys
src: id_bubbi.pub
owner: bubbi
group: byggir
mode: 0600
- name: Leyfum bubba að sudo-a
lineinfile:
create: yes
line: "bubbi ALL=(ALL) NOPASSWD: ALL
path: /etc/sudoers.d/bubbi
state: present
validate: /usr/sbin/visudo -cf %s
- name: Bönnum lykilorðainnskráningar bubba
blockinfile:
path: /etc/ssh/sshd_config
block: |
Match User bob
PasswordAuthentication no
Note
Skráin group_vars/leyndo inniheldur dulkóðað gildi lykilorðs notandans sem keyrir ansible, það er gert með ansible vault. Rótaraðgang þarf til að keyra flestar skipanirnar og til þess þarf stæðuna become: true, það virkar ekki nema lykilorð notandans sé til staðar eða notandinn hafa lykilorðalaust sudo.