• Sonuç bulunamadı

AHTAPOT Merkezi Yönetim Sistemi ile Kurulum Yapılması

N/A
N/A
Protected

Academic year: 2022

Share "AHTAPOT Merkezi Yönetim Sistemi ile Kurulum Yapılması"

Copied!
53
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

AHTAPOT |

Merkezi Yönetim Sistemi ile

Kurulum Yapılması

Bu dökümanda, Ahtapot bütünleşik güvenlik yönetim sisteminde kullanılan merkezi yönetim sunucusu ile gerekli tüm sistemlerin kurulması prosedürü anlatılıyor.

Gereken :

1. Pardus Temel ISO’ dan kurulumu tamamlanmış sunucular.

(2)

Ansible Kurulum İşlemleri

Ansible Playbookların Kurulum İşlemleri İçin Hazırlanması Ansible Playbook ile GitLab Kurulumu

GitLab Arayüz Yapılandırması

Ansible Playbook ile FirewallBuilder Kurulumu Ansible Playbook ile Rsyslog Kurulumu Ansible Playbook ile Test Firewall Kurulumu Ansible Playbook ile Firewall Kurulumu

Ansible Kurulum İşlemleri

1. Pardus Temel ISO dosyasından Pardus kurulumu tamamlandıktan sonra sisteme

“ahtapotops” kullanıcı ile giriş yapılır. ahtapotops kullanıcısının parolası “ahtapotops”

olarak öntanımlıdır.

NOT: Pardus Temel ISO dosyasından Pardus kurulumu adımları için “AHTAPOT Pardus Temel ISO Kurulumu” dökümanına bakınız.

2. Sisteme giriş sağlandıktan sonra, aşağıdaki komut ile root kullanıcısına geçiş yapılır. root kullanıcısı için ISO kurulumunda belirlenen parola kullanılır.

$ sudo su -

3. Sisteme root kullanıcısı ile bağlantı sağlandıktan sonra aşağıdaki komut ile ansible ve git kurulumları yapılır:

# apt-get install -y ansible

# apt-get install -y git

NOT: Ansible makinası yedekli kurulacak ise, yedek olacak makinanın üzerinde bu adım el ile yapılmalıdır.

4. Bu adımda, BilgiO A.Ş tarafından geliştirilen ve kurulum, sıkılaştırma vb. gibi işleri otomatize etmeyi sağlayan ansible playbook’ları Pardus Ahtapot reposunda paketlenmiş olarak bulunmaktadır.

(3)

# apt-get install -y ahtapot-mys

# cp -rf /ahtapotmys/* /etc/ansible/

5. Ahtapot projesi kapsamında oluşacak tüm loglar “/var/log/ahtapot/” dizinine

yazılmaktadır. Bu dizinin sahipliğini “ahtapotops” kullanıcısına vermek için aşağıdaki komut çalıştırılır.

# chown ahtapotops:ahtapotops -R /var/log/ahtapot

NOT: Ansible makinası yedekli kurulacak ise, yedek olacak makinanın üzerinde bu adım el ile yapılmalıdır.

6. Bir sonraki adımda yer alan sıkılaştırma ve kurulum işlemlerinin akabinde sistemde bulunan diğer sunucular ile iletişimin kurulmasını sağlamak adına ahtapotops

kullanıcısına ait AHTAPOT CA KURULUM dökümanına uygun bir şekilde oluşturulmuş anahtalar, sunucu üzerinde ilgili yerlere kopyalama işlemi yapılmalıdır. Bu işlem için gerekli adımlar aşağıdaki gibidir;

a. ahtapotops kullanıcısı için oluşturulmuş anahtarları, sunucu üzerinde /home/ahtapotops dizinine belirlenen yöntem ile kopyalanır.

b. Anahtarların kopyalanması gereken ilgili dizine gidilir.

# su - ahtapotops

$ mkdir ~/.ssh && chmod 700 ~/.ssh

c. Kopyalanan anahtarların ahtapotops kullanıcısına atanması için aşağıdaki komutlar çalıştırılır.

$ cp /home/ahtapotops/ahtapotops /home/ahtapotops/.ssh/id_rsa && chmod 600 /home/ahtapotops/.ssh/id_rsa

$ cp /home/ahtapotops/ahtapotops-cert.pub /home/ahtapotops/.ssh/id_rsa- cert.pub

$ cp /home/ahtapotops/ahtapotops.pub /home/ahtapotops/.ssh/id_rsa.pub

NOT: Ansible makinası yedekli kurulacak ise, yedek olacak makinanın üzerinde bu adım el ile yapılmalıdır.

(4)

7. Tercih ettiğimiz metin düzenleyicisini kullanarak hosts dosyasını düzenliyoruz. Aşağıdaki örnekte vi kullanılır. Açılan dosyada [ansible] kısmı altına ansible makinasının tam ismi (FQDN) girilir.

$ cd /etc/ansible/

$ sudo vi hosts [ansible]

ansible.alan.adi

NOT: Ansible makinası yedekli kurulacak ise, yedek olacak makinanın FQDN bilgiside

“[ansible]” bölümünün altına yazılmalıdır.

8. Ansible makinasının erişmesi gereken tüm makinaların hosts dosyasını düzenlemek adına, “Ansible Playbookları” dökümanında detaylı anlatımı bulunan “Base” rolüne ait

“hosts.j2” dosyasına tüm makina bilgileri yazılır.

$ sudo vi /roles/base/templates/hosts.j2

## Bu dosya ansible tarafindan yonetilmektedir!

## Burada yapilan degisikliklerin uzerine yazilir!!

{{ ansible_managed }}

# The following lines are desirable for IPv4 capable hosts 127.0.0.1 localhost

x.x.x.x ansible.gdys.local ansible x.x.x.x gitlab.gdys.local gitlab x.x.x.x fwbuilder.gdys.local fwbuilder x.x.x.x fw.gdys.local fw

x.x.x.x fwtest.gdys.local fwtest

# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes ff02::2 ip6-allrouters

9. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve ansible kurulumu yapacak olan “ansible.yml” playbook’u çalıştırılır.

(5)

$ ansible-playbook playbooks/ansible.yml --skip-tags=gdys,mys

10. ansible.yml playbookunun çalışması bittikten sonra, Ansible kurulumu tamamlanmış olacak ve sistem diğer sunucuları yönetebilir hale gelmiş olacaktır.

(6)

Ansible Playbookların Kurulum İşlemleri İçin Hazırlanması

1. Ansible sunucusunun kuruluması akabinde, Pardus Temel ISO kurulumu tamamlanmış sunucuların rollerin yüklenebilmesi için Ansible sunucusu tarafından yapılacak

kurulumlar öncesinde, playbooklarda tanımlanması gereken değişkenler bu başlık altında belirtilmektedir.

NOT: Sistemlerin yedekli kurulması durumunda, bu işlemlerin yedek Ansible makinası üzerinde yapılmasına gerek yoktur.

2. Öncelikli olarak DNS kullanılmadığı durumlar için tüm sunucuların “/etc/hosts”

dosyalarına karşılıklı olarak birbirlerinin bilgileri girilmelidir.

3. Ansible playbookları çalışmadan önce sunucuların birbirlerinin “known_host” dosyasında kayıtlarının olması için “root” ve “ahtapotops” kullanıcıları ile karşılıklı ssh bağlantısı sağlanması gerekmektedir. Bunun için aşağıdaki komutlar her sunucudan diğer bir sunucuya doğru çalıştırılmalı ve sunucu anahtarlarının kabul edilmesi sorulduğunda

“yes” yazılmalıdır.

$ ssh FQDN_SUNUCU_ADI

$ sudo su -

# ssh ahtapotops@FQDN_SUNUCU_ADI -i /home/ahtapotops/.ssh/id_rsa

# exit

4. Ansible’ın yöneteceği makinaları uygulamaya belirtmek adına, “/etc/ansible” klasörü altında bulunan “hosts” dosyası düzenlenir. Dosya düzenlenirken dikkat edilmesi gereken nokta, sunucuya hangi rol yüklecek ise “[rol_adı]” satırının altına ilgili sunucusunun “FQDN” bilgileri girilmelidir.

$ cd /etc/ansible/

$ sudo vi hosts [firewallbuilder]

firewallbuilder.domain_adı

(7)

[ansible]

ansible.domain_adı [gitlab]

gitlab.domain_adı [firewall]

firewall.domain_adı [testfirewall]

testfirewall.domain_adı [rsyslog]

rsyslog.domain_adı

NOT: Sistemler yedekli kurulacak ise, yedek sistemlerin FQDN bilgileri de ilgili başlık altına yazılmalıdır.

5. “roles/base/vars” klasörü altında değişkenleri barındıran “main.yml” dosyası üzerinde

“ntp server bilgileri girilmektedir.” başlığı altındaki “FirstNtpServerHost” ve

“SecondNtpServerHost” satırları karşısına NTP sunucu bilgileri girilmelidir. “# rsyslog yapilandirmasini belirtmektedir.” başlığı altındaki “Server1” ve “Server2” satırları Rsyslog sunucusunun FQDN bilgisi ile doldurulmalıdır. Sistemde bir Rsyslog sunucu olduğu durumlarda “Server2”, bir NTP sunucu olduğu durumda ise

“SecondNtpServerHost” satırının başına “#” işareti konularak o satırın işlem dışı kalması sağlanmalıdır. Sunucularda ssh portunun varsayılan değer dışında bir değere atanması istendiği durumda, “ssh” fonksiyonu altında bulunan “Port” değişkenine istenen yeni değer yazılmalıdır.

$ cd roles/base/vars/

$ sudo vi main.yml

# ntp server bilgileri girilmektedir.

FirstNtpServerHost: "0.debian.pool.ntp.org"

SecondNtpServerHost: "1.debian.pool.ntp.org"

# rsyslog yapilandirmasini belirtmektedir.

conf:

(8)

source: rsyslog.conf.j2

destination: /etc/rsyslog.conf owner: root

group: root mode: 0644 service:

name: rsyslog state: started enabled: yes ConnectionType: tcp

Server1: rsyslog01.domain_adı #Server2: rsyslog02.domain_adı Port: 514

ActionQueueMaxDiskSpace: 1g ActionQueueSaveOnShutdown: on ActionQueueType: LinkedList ActionResumeRetryCount: -1

WorkDirectory: "/var/spool/rsyslog"

IncludeConfig: "/etc/rsyslog.d/*"

ssh:

# ssh yapilandirmasini belirtmektedir.

conf:

source: sshd_config.j2

destination: /etc/ssh/sshd_config owner: root

group: root mode: 0644 service:

name: ssh state: started enabled: yes TrustedUserCAKeys:

source: ahtapot_ca.pub.j2

destination: /etc/ssh/ahtapot_ca.pub owner: root

group: root mode: 0644 LocalBanner:

(9)

source: issue.j2

destination: /etc/issue owner: root

group: root mode: 0644 RemoteBanner:

source: issue.net.j2

destination: /etc/issue.net owner: root

group: root mode: 0644 Port: 22

(10)

6. “roles/ansible/vars” klasörü altında değişkenleri barındıran “main.yml” dosyası

üzerinde “# Onay mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.”

ve “# MYS mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.”

başlıkları altındaki “repo” satırında bulunan “yerel_gitlab_adresi” bölümünün yerine Merkezi Yönetim Sistemi kapsamında kurulacak Git sunucusunun ip adresi girilmelidir.

Eğer sunucularda varsayılan ssh portu dışında port kullanılacak ise “:ssh_port” bilgisi girilmeli, kullanılmadığı durumlarda ise “:ssh_port” kısmı silinmelidir.

$ cd roles/ansible/vars/

$ sudo vi main.yml

# Onay mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.

repo: ssh://git@yerel_gitlab_adresi:ssh_port/ahtapotops/gdys.git update: yes

accepthostkey: yes

# MYS mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.

repo: ssh://git@yerel_gitlab_adresi:ssh_port/ahtapotops/mys.git update: yes

accepthostkey: yes

7. “roles/firewallbuilder/vars” klasörü altında değişkenleri barındıran “main.yml” dosyası üzerinde “# Onay mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.”

başlığı altındaki “repo” satırında bulunan “yerel_gitlab_adresi” bölümünün yerine Merkezi Yönetim Sistemi kapsamında kurulacak Git sunucusunun ip adresi girilmelidir.

$ cd roles/firewallbuilder/vars/

$ sudo vi main.yml

# Onay mekanizmasinin bulundugu Yerel GitLab reposu belirtilmektedir.

repo: ssh://git@yerel_gitlab_adresi/ahtapotops/gdys.git update: yes

accepthostkey: yes

(11)

8. “roles/gitlab/vars” klasörü altında değişkenleri barındıran “main.yml” dosyası üzerinde

“# Git yapılandırması belirtilmektedir.” başlığı altındaki “external_url” satırında bulunan “yerel_gitlab_URL” bölümüne GitLab sunucusunu browser üzerinden çağırırken kullanılması istenilen URL girilmelidir. GitLab SMTP ayarları için

“gitlab_email_from:” satırına GitLab tarafından atılacak bilgilendirme postalarının hangi adres tarafından atılacağı belirtilmelidir. “gitlab_email_display_name:” satırında gönderilen postalarda görünmesi istenilen isim belirlenir. “gitlab_email_reply_to:”

satırında GitLab tarafından gönderilen postalara cevap verilmesi durumunda cevabın hangi adrese yönlendirilmesi istendiği belirtilir. “smtp_address:” satırında smtp sunucusunun FQDN ve ya IP adres bilgileri girilir. “smtp_port:” satırında smtp

sunucusunun kullandığı port yazılır. “smtp_domain:” satırında ise stmp alan adı bilgisi girilir. Yedekli kullanılacak Gitlab ortamında, git fonksiyonu altındaki “Server” satırına yedek gitlab sunucusunun FQDN bilgileri “Port” satırına ise ssh port bilgisi girilmelidir.

Ansible fonksiyonu altındaki “Server” satırına ansible makinasının FQDN bilgileri “Port”

satırına ise ssh port bilgisi girilmelidir.

$ cd roles/gitlab/vars/

$ sudo vi main.yml

# Git yapılandırması belirtilmektedir.

external_url: https://yerel_gitlab_URL firstrunpath: /var/opt/gitlab/bootstrapped gitlab_rails:

gitlab_email_enabled: "true"

gitlab_email_from: gitlab@Domain_Adi gitlab_email_display_name: GdysGitlab gitlab_email_reply_to: no-reply@Domain_Adi gitlab_default_theme: 2

gitlab_shell_ssh_port: 22 smtp_enable: "true"

smtp_address: smtp_sunucu_adı smtp_port: 25

smtp_domain: domain_adi smtp_tls: "false"

Server: yedek_gitlab.domain.adi Port: 22

ansible:

Server: ansible.domain.adi

(12)

Port: 22

9. GitLab yedekli kurulmayacak ise, Ansible playbook üzerinde bulunan yedek gitlab için yapılacak işlemler gitlab rolünden kaldırılır. “/etc/ansible/roles/gitlab/templates/” dizini altında bulunan “post-receive-gdys.sh.j2” dosyasında, gdys reposunun

güncellenmesini sağlayan ilk komut bırakılarak, backup/restore işlemini tetikleyen diğer satırların başına “#” işareti konularak, komut satırı haline dönüştürülür.

$ cd roles/gitlab/templates/

$ sudo vi post-receive-gdys.sh.j2

# Bu dosya ansible tarafindan yonetilmektedir!

## Burada yapilan degisikliklerin uzerine yazilir!!

{{ ansible_managed }}

#!/bin/bash

/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

ahtapotops@{{ gitlab['ansible']['Server'] }} -p {{ gitlab['ansible']['Port']}} -i

"/var/opt/gitlab/.ssh/gdyshook" &

#/bin/rm -f /var/opt/gitlab/backups/*.tar

#gitlab-rake gitlab:backup:create

#/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

git@{{ gitlab['backup']['Server'] }} -p {{ gitlab['backup']['Port']}} "/bin/bash -c 'rm -f /var/opt/gitlab/backups/*.ta

r'"

#scp -P {{ gitlab['backup']['Port']}} -o StrictHostKeyChecking=no -o

UserKnownHostsFile=/dev/null /var/opt/gitlab/backups/*.tar git@{{ gitlab['backup']

['Server'] }}:/var/opt/gitlab/backups/

#/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

git@{{ gitlab['backup']['Server'] }} -p {{ gitlab['backup']['Port']}} "/bin/bash -c 'gitlab-rake gitlab:backup:restore force=yes'" &

(13)

10. GitLab yedekli kurulmayacak ise, “/etc/ansible/roles/gitlab/templates/” dizini altında bulunan “post-receive-mys.sh.j2” dosyasında, mys reposunun güncellenmesini sağlayan ilk komut bırakılarak, backup/restore işlemini tetikleyen diğer satırların başına

“#” işareti konularak, komut satırı haline dönüştürülür.

$ cd roles/gitlab/templates/

$ sudo vi post-receive-mys.sh.j2

## Bu dosya ansible tarafindan yonetilmektedir!

## Burada yapilan degisikliklerin uzerine yazilir!!

{{ ansible_managed }}

#!/bin/bash

/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

ahtapotops@{{ gitlab['ansible']['Server'] }} -p {{ gitlab['ansible']['Port']}} -i

"/var/opt/gitlab/.ssh/myshook" &

#/bin/rm -f /var/opt/gitlab/backups/*.tar

#gitlab-rake gitlab:backup:create

#/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

git@{{ gitlab['backup']['Server'] }} -p {{ gitlab['backup']['Port']}} "/bin/bash -c 'rm -f /var/opt/gitlab/backups/*.tar'"

#scp -P {{ gitlab['backup']['Port']}} -o StrictHostKeyChecking=no -o

UserKnownHostsFile=/dev/null /var/opt/gitlab/backups/*.tar git@{{ gitlab['backup']

['Server'] }}:/var/opt/gitlab/backups/

#/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

git@{{ gitlab['backup']['Server'] }} -p {{ gitlab['backup']['Port']}} "/bin/bash -c 'gitlab-rake gitlab:backup:restore force=yes'" &

11.GitLab yedekli kurulmayacak ise, “/etc/ansible/roles/gitlab/vars/” dizini altında bulunan

“main.yml” dosyasında, “backup” fonksiyonu altında bulunan “Server” ve “Port”

değişkenlerine, Yerele kurulacak gitlab sunucusunun bilgileri yazılır. Yine aynı fonksiyon içinde bulunan “gktssource” ve “gktsdestination” parametrelerinin başına “#” işareti konularak yorum satırı haline getirilir.

$ cd roles/gitlab/vars/

(14)

$ sudo vi main.yml backup:

conf:

myssource: post-receive-mys.sh.j2 mysdestination: /var/opt/gitlab/git-

data/repositories/ahtapotops/mys.git/custom_hooks/post-receive gdyssource: post-receive-gdys.sh.j2

gdysdestination: /var/opt/gitlab/git-

data/repositories/ahtapotops/gdys.git/custom_hooks/post-receive #gktssource: post-receive.sh.j2

#gktsdestination: /var/opt/gitlab/git-

data/repositories/ahtapotops/gkts.git/custom_hooks/post-receive owner: git

group: git mode: 770 directory:

mysdir: /var/opt/gitlab/git-

data/repositories/ahtapotops/mys.git/custom_hooks/

gdysdir: /var/opt/gitlab/git-

data/repositories/ahtapotops/gdys.git/custom_hooks/

gktsdir: /var/opt/gitlab/git-

data/repositories/ahtapotops/gkts.git/custom_hooks/

owner: git group: git mode: 755

state: directory recurse: no

Server: yerel_gitlab_fqdn Port: ssh_port

12.“roles/firewall/vars” klasörü altında değişkenleri barındıran “main.yml” dosyası üzerinde “# Guvenlik duvari uzerine konumlandirilacak Yerel GitLab dizinleri belirtilmektedir.” başlığı altındaki “port” satırında bulunan “ssh_port” bölümünün yerine Merkezi Yönetim Sistemi kapsamında kurulacak Git sunucusunun ssh portu girilmelidir.

deploy:

# Guvenlik duvari uzerine konumlandirilacak Yerel GitLab dizinleri

(15)

belirtilmektedir.

repo:

path: /etc/fw/gdys owner: ahtapotops group: ahtapotops mode: 750

state: directory recurse: yes

filepath: /etc/fw/gdys/files file:

options: --force recursive: yes port: ssh_port

13. ISO’dan kurulumu yapılmış her makinanın ilk planda ssh portları “22” olarak belirlendiğinden dolayı, ansible ilk kurulumu yaparken her makinaya 22. Porttan bağlanacaktır. Bu sebep ile “ansible.cfg” dosyasında bulunan “remote_port”

parametresinin “22” olduğu teyit edilmelidir.

$ cd /etc/ansible/

$ sudo vi ansible.cfg

# config file for ansible -- http://ansible.com/

# ==============================================

# nearly all parameters can be overridden in ansible-playbook

# or with command line flags. ansible will read ANSIBLE_CONFIG,

# ansible.cfg in the current working directory, .ansible.cfg in

# the home directory or /etc/ansible/ansible.cfg, whichever it

# finds first [defaults]

# some basic default values...

hostfile = /etc/ansible/hosts library = /usr/share/ansible remote_tmp = /tmp

pattern = *

(16)

forks = 5 poll_interval = 15 sudo_user = root

#ask_sudo_pass = True

#ask_pass = True transport = smart remote_port = ssh_port

Ansible Playbook ile GitLab Kurulumu

1. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve gitlab kurulumu yapacak olan “gitlab.yml” playbook’u çalıştırılır.

$ cd /etc/ansible/

$ ansible-playbook playbooks/gitlab.yml

5. Git kurulumdan sonra parolasız git işemlerini yapabilmek için git kullanıcısına ait anahtar bilgileri AHTAPOT CA KURULUM dökümanına uygun bir şekilde oluşturulmuş anahtalar, sunucu üzerinde ilgili yerlere kopyalama işlemi yapılmalıdır. Bu işlem için gerekli adımlar aşağıdaki gibidir;

a. Gitlab sunucusuna bağlantı sağlanır.

$ ssh ahtapotops@gitlabsunucusu -p ssh_port

b. git kullanıcısı için oluşturulmuş anahtarları, sunucu üzerinde /home/ahtapotops dizinine belirlenen yöntem ile kopyalanır.

c. Kopyalanan anahtarlar aşağıdaki şekilde ilgili dizinlere taşınır.

$ cd /home/ahtapotops/

$ sudo cp /home/ahtapotops/git /var/opt/gitlab/.ssh/id_rsa

$ sudo cp /home/ahtapotops/git-cert.pub /var/opt/gitlab/.ssh/id_rsa-cert.pub

$ sudo cp /home/ahtapotops/git.pub /var/opt/gitlab/.ssh/id_rsa.pub

$ sudo cp /home/ahtapotops/myshook /var/opt/gitlab/.ssh/myshook

$ sudo cp /home/ahtapotops/myshook-cert.pub /var/opt/gitlab/.ssh/myshook- cert.pub

(17)

$ sudo cp /home/ahtapotops/myshook.pub /var/opt/gitlab/.ssh/myshook.pub

$ sudo cp /home/ahtapotops/gdyshook /var/opt/gitlab/.ssh/gdyshook

$ sudo cp /home/ahtapotops/gdyshook-cert.pub /var/opt/gitlab/.ssh/gdyshook- cert.pub

$ sudo cp /home/ahtapotops/gdyshook.pub /var/opt/gitlab/.ssh/gdyshook.pub d. Kopyalanan anahtarların git kullanıcısı yetkilerine sahip olması için aşağıdaki

komutlar çalıştırılır.

# sudo su -

# chown git:git /var/opt/gitlab/.ssh/*

# su - git

$ chmod 700 ~/.ssh

$ cd ~/.ssh/

$ chmod 600 id_rsa gdyshook myshook

$ exit

NOT: Gitlab yedekli kurulacak ise, yedek sistem üzerinde bu adımlar el ile yapılmalıdır.

2. Ansible makinasından Git makinasına doğru yapılmış ssh bağlantısı “exit” komutu ile sonlandırılır.

GitLab Arayüz Yapılandırması

1. Yapılandırma işlemlerine geçmek üzere, adresine bir web tarayıcı vasıtası ile girilerek Gitlab web arayüzüne “https :// gitlabsunucuadresi” ile erişilir.

NOT: Gitlab yedekli kurulacak ise, yedek sistemin üzerinde arayüz yapılandırma işlemlerinin yapılmasına gerek yoktur.

Gitlab, öntanımlı kullanıcı adı “root” ve öntanımlı parola “5iveL!fe” olacak şekilde gelmektedir. Bu bilgiler kullanılarak sisteme giriş sağlanır.

(18)
(19)

2. GitLab web arayüzüne erişim sağlandıktan sonra, ilk adım olarak root kullanıcısının parolasının değiştirilmesi gerekmektedir.

En az 8 karakterden oluşacak yeni şifre belirlenerek, “SET NEW PASSWORD” butonuna basılır. Şifre değiştirme işleminin ardından web arayüz açılış sayfasına otomatik geri döner. Yeni şifre ile giriş yapılır.

(20)

3. Root kullanıcısı ile giriş yapıldıktan sonra sağ üst köşede bulunan “Admin Area”

simgesine basılarak sisteme tanımlanması gereken kullanıcıları oluşturmak için

“Yönetici Bölümüne” geçiş yapılır.

(21)

4. Yönetici bölümünde “Users” bölümünde yer alan “NEW USER” butonuna basılır.

(22)

5. Öncelikli olarak FirewallBuilder kontrol paneli ile iletişimi sağlayarak onay mekanizması yapısı kapsamında Onay Kontrol, Son Onaylanmış Commit ID gibi özelliklerini

çalıştıracak API kullanıcısı oluşturulur. Oluşturulacak kullanıcının isminin “gdysapi”

olması zaruridir. Kullanıcıyı oluşturmak için “Name”, “Username” ve “Email” alanları doldurularak “CREATE USER” butonuna basılır.

(23)

6. Kullanıcı oluşturulduktan sonra, ilgili kullanıcıya ait bilgilendirme sayfası açılmaktadır. Bu sayfada kullanıcıya şifre oluşturmak için “EDIT” butonuna basılır.

(24)

7. Açılan ekranda “Password” bölümünden “gdysapi” kullanıcı için parola belirlenir ve sayfanın en altında bulunan “SAVE CHANGES” butonuna basılır.

8. 3, 4 ve 5. adımlar tekrar uygulanarak bir adet kullanıcı daha oluşturulur. “gydsapi”

kullanıcısından farklı olarak bu kullanıcı için şifre oluşturulmaz. (6 ve 7. adımlar uygulanmadan geçilecektir.)

Oluşturulacak kullanıcının isminin “ahtapotops” olması zaruridir. Bu kullanıcı

FirewallBuilder ile Ansible entegrasyonunu ve Ansible ile yöneteceği sunucular arasında iletişimi sağlamaktadır. Otomatizasyon yapısının çalışabilmesi için yapıyı oluşturacak sunucular arasında parolasız erişim kullanılmalıdır. Bu neden ile kullanıcı

oluşturulduktan sonra aşağıdaki adımları takip ederek kullanıcıya ait açık anahtar GitLab sistemine eklenmelidir.

(25)

9. Oluşturulan “ahtapotops” kullanıcısına SSH-Key belirtme işlemini yapmak için sağ tarafta görünen “IMPERSONATE” butonuna basılarak, uygulamanın bu kullanıcı gibi davranması sağlanır.

10.Impersonate işleminin başarılı gerçekleştiği sağ üstte bulanan “Impersonate” simgesi ile teyit edildikten sonra gelen ekranda sol taraftan “Profile Settings” seçeneğine tıklanır.

(26)
(27)

11.Açılan kullanıcı ayarlarında solda bulunan menüden “SSH Keys” seçeneği seçilir ve gelen sayfada SSH Key işlemi gerçekleştirilebilir haldedir.

12.https :// git . pardus . org . tr adresinde bulunan “gereksinimler” deposu altından “Keys”

dosyası seçilir.

(28)

13.Keys deposunda bulunan “ahtapotops.pub” dosyasının içereği kopyalanır. “RAW”

olarak açılarak kopyalanır.

14.Ekranda “Key” kısmına kopyalanan anahtar, “Title” kısmına kullanıcı oluştururken belirttiğimiz posta adresi girilir. “ADD KEY” butonuna basılarak sisteme eklenir.

(29)

15.FirewallBuilder ve Ansible entegrasyonunu sağlıklı olarak gerçekleştirmek için üç adet proje oluşturulması gerekmektedir. FirewallBuilder tarafı için “gdys”, Ansible tarafı için ise “mys”, Geçici Kural Tanımlama için “gkts” projeleri oluşturulacaktır. Proje oluşturmak için “Go to dashboard” butonuna basılır.

(30)

16.Ekranda bulunan “NEW PROJECT” butonuna basarak yeni proje oluşturma işlemi gerçekleştirilir.

(31)

17.“NEW PROJECT” butonuna basıldığında gelen ekranda “Project path” satırında “/”

ibaresinden sonra proje ismi olan “gdys” yazılır. İsteğe bağlı olarak “Description”

bölümüne tanımlama yazılarak “Private” olacak şekilde “CREATE PROJECT” butonuna basılır.

NOT: GDYS kapsamında açılan tüm GitLab projelerinin “Private” olması zaruridir.

18.Proje oluşturulduktan sonra, açılan ekran proje anasayfası olup; “gdys” deposuna erişim hakkı olacak kullanıcıları belirtlemek için sol ağaç yapısından “Members” seçeneği seçilir.

(32)

19.GitLab üzerinde oluşturulmuş “gdys” projesi için “gdysapi” ve “ahtapotops” kullanıcıları

“People” bölümüne eklenerek yetkilendirilir. Yetki seviyesini belirlemek amacı ile

“Project Access” bölümünden bu kullancılara “Master” yetkisi verilerek “ADD USERS TO PROJECT” butonuna basılır.

(33)

20.“Go to dashboard” butonuna basılarak, ana ekrana gidilerek 16. ve 17. adımlar Geçici Kural Tanımla Sistemi için “gkts” deposun için tekrar uygulanır. “gkts” deposuna ait anasayfa geldikten sonra “Go to dashboard” seçeneği seçilerek GitLab sayfasına gidilir.

(34)

21.Öncelikli olarak “master” dalını oluşturmak için “adding README” satırına basılırak, bir dosya oluşturulur. Açılan dosya ekranında, ilk satıra yorum olmasını sağlacak şekilde

“#” simgesi konularak açıklama yazılır. Akabinde “Commit message” bölümüne yapılan işlem yazılarak “COMMIT CHANGES” butonuna basılır.

(35)

22.Oluşturulan “master” dalı aşağıdaki ekranda olduğu gibi gözükmektedir. “Files”

butonuna basılarak, projeye ait dosyaların bulunduğu “gkts” dizinine gidilir. Açılan sayfada “+” tuşuna basılarak, “New File” seçeneği seçilir.

23.“New File” sayfasında dosya adı olarak “gkts.csv” yazılır. Dosyasının ilk satırına

“adres,durum,hedef adres,zaman” yazılarak, “Commit Changes” butonuna basılır.

(36)

24.“Go to dashboard” butonuna basılarak, ana ekrana gidilerek 16. ve 17. adımlar “mys”

deposun için tekrar uygulanır. “mys” deposuna ait anasayfa geldikten sonra “Go to dashboard” seçeneği seçilerek GitLab sayfasına gidilir.

(37)
(38)

25.Onay mekanizmasının yapısı oluşturmak adına GitLab sayfasından, “ahtapotops / gdys” projesine gidilir.Bu yapıyı oluşturmak için projede iki adet dal oluşturulmalıdır.

“master” ve “onay” dalları bu yapıyı sağlamaktadır. Öncelikli olarak “master” dalını oluşturmak için “adding README” satırına basılırak, bir dosya oluşturulur. Böylelikle master dal oluşmuş olur.

26.Açılan dosya ekranında, ilk satıra yorum olmasını sağlacak şekilde “#” simgesi konularak açıklama yazılır. Akabinde “Commit message” bölümüne yapılan işlem yazılarak “COMMIT CHANGES” butonuna basılır.

(39)

27.Oluşturulan “master” dalı aşağıdaki ekranda olduğu gibi gözükmektedir. “Files”

butonuna basılarak, projeye ait dosyaların bulunduğu “gdys” dizinine gidilir.

(40)

28.https :// git . pardus . org . tr adresinde bulunan “gereksinimler” deposu altında bulunan

“Files” dizininden “gdys.fwb” dosyası açılır. Sağda bulunan “RAW” butonuna basılarak yeni bir tarayıcı sekmesinde kopyalanabilir şekilde açılır.

(41)

29. “Files” sayfasında “+” işaretine basılarak “New file” seçeneği seçilir.

(42)

30.28. adımda kopyalanan “gdys.fwb” dosyasının içeriği buraya yapıştırılır. “master/”

ibaresinden sonraki alana “gdys.fwb” ve “Commit message” alanına yapılan işlem yazılarak “COMMIT CHANGES” butonuna basılır.

31.“Files” butonuna basılarak, projeye ait dosyaların bulunduğu “gdys” dizinine gidilir.

(43)

32.“Files” sayfasında “+” işaretine basılarak “New directory” seçeneği seçilir.

33.Açılan ekranda “Directory name” kısmında “files” yazılması zaruridir. “Commit message” bölümüne bilgi yazıldıktan sonra “Target branch”, “master” seçilir ve

“CREATE DIRECTORY” butonuna basılır.

(44)
(45)

34.Dosyayı oluşturduktan sonra sol ağaç menüsünden “Project” seçilerek “gdys” deposu anasayfaya gidilir. Anasayfasında bulunan “+” işaretine basılarak “New branch” ile onay dalı oluşturulur.

35.Açılan yeni ekranda “Branch name” bölümüne “onay” yazılarak “CREATE BRANCH”

seçeneği seçilir.

(46)

36.Ansible’a ait playbookları “mys” deposuna aktarmak için Ansible makinasına ssh ile bağlanılarak aşağıdaki adımlar takip edilir.

a. mys projesini yerele indirme işlemi için bulunulan dizin geçici dizin ile değiştirilir.

$ cd /tmp

b. GitLab üzerinde açılan proje aşağıdaki komut ile Ansible makinasının yereline alınır. (“mys_proje_URL” bilgisi GitLab arayüzünde “Projects” altından “mys”

projesi seçildiğinde, mys projesine ait anasayfada “http :// gitlab / root / mys” şeklinde görüntülenmektedir.) Komutun girilmesi ile birlikte, kullanıcı adı ve parola

sormaktadır. Kullanıcı adı olarak GitLab tarafında öntanımlı gelen yetkili kullanıcı

“root”, parola olarak 11. adımda belirlenen parola girilmelidir.

$ git clone ssh://git@gitlab_sunucuadı:ssh_port/ahtapotops/mys.git

c. Beşinci adımda Ansible üzerinden yerele indirilen playbooklar bulunduğu dizin içerisinden alınırak geçici dizin altında oluşmuş olan “mys” klasörüne kopyalanır.

(47)

$ sudo cp -rf /etc/ansible/* /tmp/mys/

d. Dosyaların kopyalandığını teyit etmek amacı ile ilgili dizine gidilir.

$ cd /mys

$ ls -ltr

e. “mys” klasörüne kopyalanmış playbookların kopyalandığı teyit edildikten sonra, GitLab arayüzüne gönderilir.

$ git add --all

$ git config --global user.email “ansible@ test . com”

$ git config --global user.name “Ansible Makinasi”

$ git commit -m “MYS ana dosyalari eklendi.”

$ git push origin master

37.GitLab kurulumunun tamamlanmasının ardından Ansible sunucusunun bu makinaya erişimini kontrol etmek adına, Ansible sunucusuna SSH bağlantısı yapılarak; SSH bağlantı linki üzerinden deponun yerele alınması test edilir. “Gitlab_sunucuadı” bölüme kurulmuş gitlab sunucusunun adresi, “ssh_port” bölümüne ise sunucusunun ayarlanan sunucunun ssh port bilgisi yazılır.

$ cd /tmp

$ git clone ssh://git@gitlab_sunucuadı:ssh_port/ahtapotops/gdys.git

$ rm -rf gdys

38. Erişimin sağlandığından emin olduktan sonra, Ansible makinası üzerine ilk kurulum için koyduğumuz playbookların, MYS reposudan çalışmasını sağlamak için yerel gitlab sunucusu üzerindeki MYS reposu ansible makinasına clonelanarak, “.git” dosyası

“/etc/ansible” dosyasına taşınır. Bu dizin altındaki tüm dosyaların sahiplik hakları

“ahtapotops” kullanıcısına verilir.

$ cd /tmp/mys

$ sudo cp -rf .git /etc/ansible/ && sudo chown ahtapotops:ahtapotops /etc/ansible/.git

$ rm -rf ../mys

$ sudo chown -R ahtapotops:ahtapotops /etc/ansible/*

(48)

NOT: Ansible yedekli kurulacak ise, yedek sistemde sadece 38. Madde adımları aşağıdaki şekilde çalıştırılmalıdır.

$ cd /tmp

$ git clone ssh://git@gitlab_sunucuadı:ssh_port/ahtapotops/mys.git

$ cd mys/

$ sudo cp -rf .git /etc/ansible/ && sudo chown ahtapotops:ahtapotops /etc/ansible/.git

$ rm -rf ../mys

$ sudo chown -R ahtapotops:ahtapotops /etc/ansible/*

Ansible Playbook ile FirewallBuilder Kurulumu

1. Bir sonraki adımda yer alan sıkılaştırma ve kurulum işlemlerinin akabinde sistemde bulunan diğer sunucular ile iletişimin kurulmasını sağlamak adına ahtapotops

kullanıcısına ait AHTAPOT CA KURULUM dökümanına uygun bir şekilde oluşturulmuş anahtalar, sunucu üzerinde ilgili yerlere kopyalama işlemi yapılmalıdır. Bu işlem için gerekli adımlar aşağıdaki gibidir;

a. ahtapotops kullanıcısı için oluşturulmuş anahtarları, sunucu üzerinde /home/ahtapotops dizinine belirlenen yöntem ile kopyalanır.

b. Anahtarların kopyalanması gereken ilgili dizine gidilir.

# su - ahtapotops

$ mkdir ~/.ssh && chmod 700 ~/.ssh

c. Kopyalanan anahtarların ahtapotops kullanıcısına atanması için aşağıdaki komutlar çalıştırılır.

$ cp /home/ahtapotops/ahtapotops /home/ahtapotops/.ssh/id_rsa && chmod 600 /home/ahtapotops/.ssh/id_rsa

$ cp /home/ahtapotops/ahtapotops-cert.pub /home/ahtapotops/.ssh/id_rsa-

(49)

cert.pub

$ cp /home/ahtapotops/ahtapotops.pub /home/ahtapotops/.ssh/id_rsa.pub

NOT: FirewallBuilder makinası yedekli kurulacak ise, yedek olacak makinanın üzerinde bu adım el ile yapılmalıdır.

2. Playbook oynatmadan önce, gitlab sunucusunun port bilgisi değiştiğinden, gitlab

sunucusu ile firewall builder makinası arasında ssh bağlantısı yapılarak, host_key kabul edilir. Hem Gitlab suncusundan FirewallBuilder sunucusuna doğru, hem de

FirewallBuilder sunucusundan Gitlab sunucusuna doğru root ve ahtapotops kullanıcıları ile ssh yapılmalıdır.

$ ssh FQDN_SUNUCU_ADI

$ sudo su -

# ssh ahtapotops@FQDN_SUNUCU_ADI -i /home/ahtapotops/.ssh/id_rsa

# exit

3. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve FirewallBuilder kurulumu yapacak olan “firewallbuilder.yml”

playbook’u Ansible makinasından aşağıdaki komut ile çalıştırılır.

$ cd /etc/ansible/

$ ansible-playbook playbooks/firewallbuilder.yml

4. Firewall Builder makinasında gyds-gui dizinine izin vermek için aşağıdaki komut Firewallbuilder makinasından çalıştırılır

$ sudo chown ahtapotops:ahtapotops /var/opt/gdysgui/*

NOT: FirewallBuilder makinası yedekli kurulacak ise, yedek olacak makinanın üzerinde bu adım el ile yapılmalıdır.

Ansible Playbook ile Rsyslog Kurulumu

(50)

1. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve Rsyslog kurulumu yapacak olan “rsyslog.yml” playbook’u çalıştırılır.

$ cd /etc/ansible/

$ ansible-playbook playbooks/rsyslog.yml

Ansible Playbook ile Test Firewall Kurulumu

1. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve Test Firewall kurulumu yapacak olan “testbuilder.yml”

playbook’u çalıştırılır.

$ cd /etc/ansible/

$ ansible-playbook playbooks/testbuilder.yml --skip-tags=deploy

Ansible Playbook ile Firewall Kurulumu

1. “Ansible Playbookları” dökümanında detaylı anlatımı bulunan, sunucu üzerinde gerekli sıkılaştırma işlemleri ve Firewall kurulumu yapacak olan “firewall.yml” playbook’u çalıştırılır.

$ cd /etc/ansible/

$ ansible-playbook playbooks/firewall.yml --skip-tag=deploy

(51)
(52)

Kurulum Sonrası Yapılacak Kontroller

1. Kurulum işlemleri tamamlandığında, “Base” playbookunda var olan “ssh_port”

değişkeni değiştirildi ise, sunuculara bağlantı yapılacak ssh port değiştiğinden GitLab arayüzünden “ahtapotops/mys” projesi açılarak “Files” dizini altındaki “ansible.cfg”

dosyasında bulunan “remote_port” parametresi mevcut ssh port bilgisi ile değiştirilmelidir.

2. SSH Port değiştiği durumlarda daha önce kayıt girilmiş, “known_host” dosyası güncelliğini yitireceğinden, yeniden ekleme yapmak için “root” ve “ahtapotops”

kullanıcıları ile karşılıklı ssh bağlantısı sağlanması gerekmektedir. Bunun için aşağıdaki komutlar her sunucudan diğer bir sunucuya doğru çalıştırılmalı ve sunucu anahtarlarının kabul edilmesi sorulduğunda “yes” yazılmalıdır.

(53)

$ ssh FQDN_SUNUCU_ADI -p SSH_PORT

$ sudo su -

# ssh ahtapotops@FQDN_SUNUCU_ADI -p SSH_PORT -i /home/ahtapotops/.ssh/id_rsa

NOT: Sisteme ISO üzerinden kurulmuş ve ilk ansible ile kurulumları yapılacak makinalarda ansible playbookların çalıştırılabilmesi için, “/etc/ansible” altında bulunan “ansible.cfg”

dosyasındaki “remote_port” parametresi öncelikle “22” yapılmalı ve playbook çalıştıktan sonra bu dosyadaki “remote_port” parametresine belirlenen “ssh_port” girilmelidir.

NOT: Kurulumlar tamamlandıktan sonra rsyslog sunucusuna yönlendirilen tüm loglar

“/data/log/” dizini altında tutulmaktadır.

Referanslar

Benzer Belgeler

İlgili yetkili ve uygulanabildiği takdirde müşteri tarafından başkaca onaylanmadıkça, plânlanmış düzenlemeler (bkz. Madde 7.1) tatmin edici ölçüde

Gözden geçirmeye ve bu gözden geçirmeden kaynaklanan faaliyetlerin sonuçlarına ait kayıtlar muhafaza edilmelidir (bkz. Müşteri, şartları doküman halinde beyan

d) Proseslerin etkin olarak plânlanması, uygulanması ve kontrolünü güvence altına almak için kuruluş tarafından gerekli olduğuna karar verilen, kayıtlar dahil

Carb�de NC Po�nt Dr�lls Karbür Punta & Havşa Matkabı Carb�de Center & Counter Dr�lls Köşeleri Yuvarlatılmış Karbür Freze6. Carb�de Corner Rad�us Endm�ll

 Önemli enerji kullanımı ve enerji politikası, amaçları, hedefleri ve aksiyon planlarına ilişkin operasyon ve bakım faaliyetlerinin belirlenmesi ve.

Elektrik tesisatının planlanması, kontrol panelinin kullanımı, program özellikleri, fieldbus, tüm erişilebilir gerçek sinyaller ve parametreler, hata izleme, bakım, ek

Kuruluş, dış tedarikçilerin proses, ürün ve hizmetleri tedarik etme yeteneklerini temel alarak, şartlara göre, değerlendirmek, seçmek, performanslarını izlemek ve

Buna göre atık oluşumunun önlenmesi, atık azaltımı, atık oluşumunun önlenemediği durumda yeniden kullanımı sıfır atık yönetim sisteminin basamaklarıdır.. Yeniden