Born2beroot
Kendi sanal makineni kur!
Born2beroot projesi, kendi sanal makinemizi oluşturarak ve bu makineye Debian veya Rocky gibi seçebileceğimiz işletim sistemlerini kurarak başladığımız, bilgi birikimimizi artırmamıza ve sistem yönetimi yeteneklerimizi geliştirmemize fırsat sunan keyifli bir projedir. Bu proje, işletim sistemlerini kurarken ve yapılandırırken belirli kurallara ve gereksinimlere uyulmasını gerektirir. Proje, kendi sanal makinenizi tasarlama ve yönetme becerilerinizi geliştirmeniz için harika bir fırsattır.
Peki nedir bu sanal makine ?
Sanal makine (VM), fiziksel bir bilgisayarın tüm donanım kaynaklarını (işlemci, bellek, depolama, ağ bağlantıları vb.) Hypervisor sayesinde taklit ederek sanal bir ortamda farklı bir bilgisayarın oluşturulması işlemidir. Sanal bilgisayarlar, gerçek bir bilgisayar gibi davranır ve farklı işletim sistemlerini veya yazılımları çalıştırmak için kullanılabilir.
Sanal makinelere neden ihtiyaç duyarız ?
- Sanal makineler, farklı işletim sistemlerini aynı bilgisayar üzerinde çalıştırma imkanı sunar.
- Sanal makineler izole ortamlardır, birindeki sorunlar diğerlerini etkilemez.
- Sanal makineler güvenlik açısından avantajlıdır. Tehlikeli olduğu düşünülen dosyaları izole bir şekilde çalıştırabilirsiniz.
Hangi işletim sistemi ?
Born2BeRoot projesi kapsamında kurulum yaparken, yeni başlayanlar için önerilen Debian işletim sistemini tercih ediyoruz.
İşletim sistemimizi seçtiğimize göre işletim sistemiyle alakalı temel kavramları ve farklarını öğrenmemiz gerekiyor. İşletim sistemimizle ilgili temel kavramlardan biri, Debian tabanlı işletim sistemlerinde yaygın olarak kullanılan paket yöneticileri olan Aptitude ve Apt'tir.
Get Sait Nur Batu’s stories in your inbox
Join Medium for free to get updates from this writer.
Aptitude
- Kullanıcı dostu bir arayüze sahiptir ve daha geniş işlevselliğe sahiptir.
- Paketlerin kurulma durumlarını izlemek ve yönetmek için kullanıcı dostu bir liste sunar.
- Otomatik ve manuel olarak paketlerin işaretlenmesini ve yönetilmesini sağlar.
- Sistemi yükseltme işlemlerini kolaylaştırır.
Apt
- Temel işlemleri (kurulum, yükseltme, kaldırma, bağımlılıkları çözme) gerçekleştirir.
- Genellikle komut satırı arayüzü kullanır ve daha teknik bir kullanıcı kitlesi için uygundur.
- Apt-get ve apt-cache gibi araçları içerir ve temelde paket işlemlerini gerçekleştirir.
Yani, Aptitude daha geniş işlevselliğe sahip, kullanıcı dostu bir arayüze ve paket yönetimi konusunda daha kapsamlı bir kontrol sunar. Apt ise daha temel işlemleri gerçekleştiren komut satırı araçlarına odaklanır.
bilinmesi gereken diğer önemli kavramlar arasında SELinux ve AppArmor da bulunmaktadır. SELinux ve AppArmor, Linux işletim sistemlerinde güvenlik sağlayan iki farklı güvenlik çerçevesidir. SELinux, genel sistem güvenliği için daha geniş yeteneklere odaklanırken, AppArmor uygulamaların özel kaynaklara erişimini kontrol eder.
Artık temel şeyleri bildiğimize göre sanal makinemizi ve işletim sistemimizi kurmaya hazırız. Born2beroot projesi kapsamında sanal makine kurulumu için tercih edilen sanallaştırma ortamı VirtualBox veya UTM’dir. Biz bu projeyi VirtualBox kullanarak gerçekleştireceğiz. Daha faydalı olduğunu düşündüğüm için kurulum aşamalarını göstermek yerine sanal makine yönetimi aşamalarını göstereceğim.
Root olarak giriş yapmak için
$ su -Sudo(super user do)
//sudo paketini yüklemek için
$ apt-get update -y
$ apt-get upgrade -y
$ apt install sudo
//sudo grubuna kullanıcı eklemek için
$ su -
$ usermod -aG sudo kullanıcı adınız
//Kullanıcının sudo grubunda olup olmadığını kontrol etmek için
$ getent grubu sudo
//Kullanıcıya sudo ayrıcalığı vermek için
$ sudo visudo
//Bu satırı dosyaya ekleyin:
kullanıcı adınız ALL=(ALL) ALLYardımcı Paket kurulumu
//git'i yüklemek için
$ apt-get update -y
$ apt-get upgrade -y
$ apt-get install git -y
//git sürümünün kontrolü
$ git --version
//Wget'i yükleme (wget, web depolarından dosya indirmek için kullanılan ücretsiz ve açık kaynaklı bir araçtır.)
$ sudo apt-get install wget
//Vim yükleme
$ sudo apt-get install vim
//Zsh kurulumu
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"SSH ve UFW
//SSH servisi yükleme ve konfigürasyon
$ sudo apt-get update
$ sudo apt install openssh-server
//SSH sevrisi durum kontrolü
$ sudo systemctl status ssh
//SSH servisini yeniden başlatma
$ service ssh restart
//port değişikliği
$ sudo nano /etc/ssh/sshd_config
//şu satırı bul : #Port 22
Port 4242 olarak düzenle
//kontrol et
$ sudo grep Port /etc/ssh/sshd_config
//SSH hizmetini yeniden başlat
$ sudo service ssh restart
//UFW yükleme
$ apt-get install ufw
//aktif et
$ sudo ufw enable
//UFW hizmetini kontrol et
$ sudo ufw status numbered
//SSH'a izin ver. Yapılandır!
$ sudo ufw allow ssh
$ sudo ufw allow 4242
//Verilen inzi sil
$ sudo ufw status numbered
$ sudo ufw delete (numara, örneğin 3 veya 4)SSH sunucusuna bağlamak için
1. VirtualBox-> VM -> Ayarlar
2. “Ağ” -> “Bağdaştırıcı1”-> ”Gelişmiş” -> ”B. Noktası Yönlendirme”
//1
$ sudo systemctl restart ssh
//2
$ sudo service sshd status
// kullandığınız terminalin üzerinden
$ ssh kullanıcıadınız@127.0.0.1 -p 4242
//çıkmak için
$ exit
Şifre yapılandırması
//Parola kalitesi kontrol kitaplığının kurulması
$ sudo apt-get install libpam-pwquality
//Uzunluğu değiştir
$ sudo nano /etc/pam.d/common-password
//satırı bul, düzenle
password [success=2 default=ignore] pam_unix.so obscure sha512
**password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=10
//satırı bul, düzenle(en az küçük harf 1 harf, en az büyük harf 1 harf, en az rakam 1, en fazla aynı harf tekrarı 3, şifrenin kullanıcı adını herhangi bir biçimde içerip içermediği)
password requisite pam_pwquality.so retry=3
**password requisite pam_pwquality.so retry=3
lcredit =-1 ucredit=-1 dcredit=-1 maxrepeat=3 usercheck=0 difok=7 enforce_for_root
// şifre geçerlilik süresi
$ sudo nano /etc/login.defs
//Bu bölümü bul, düzenle
PASS_MAX_DAYS 9999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
*PASS_MAX_DAYS 30
*PASS_MIN_DAYS 2
*PASS_WARN_AGE 7
//yeniden başlat
$ sudo reboot//grup oluştur
$ sudo groupadd user42
$ sudo groupadd evaluating
//grupları listele
$ getent group
//kullanıcı oluşturup gruba ata
$ sudo adduser yeni_kullanıcadı
//atama
$ sudo usermod -aG user42 kullanıcı_adı
$ sudo usermod -aG evaluating kullanıcı_adı
//kontrol et
$ getent group user42
$ getent group evaluating
//kullanıcın hangi gruplara ait olduğunu görüntüle
$ groups
//kullanıcın için şifre politikalarını değiştir
$ chage -l your_new_username//sudo kullanırken yapılan her işlem (tüm girdi ve çıktılar) kayıt altında tutulmalıdır.
Kayıtların tutulduğu log dosyası /var/log/sudo/ klasörüne kaydedilmelidir
$ sudo nano /etc/sudoers
//parametreler
Defaults secure_path="..."
Defaults passwd_tries=3
//hata mesajı için
Defaults badpass_message="Hatalı giriş, tekrar deneyiniz!"
//kayıtlar için
Defaults logfile="/var/log/sudo/sudo.log"
Defaults log_input,log_output
//requiretty
Defaults requiretty
//güvenlik nedeniyle sudo tarafından kullanılan dizinler sınırlandırılmalıdır
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
//Ana bilgisayarın adını öğren
$ hostnamectl
//değiştir
$ hostnamectl set-hostname new_hostname
$ sudo nano /etc/hosts
127.0.0.1 localhost
127.0.0.1 new_hostname
$ sudo rebootCrontab yapılandırması
“Crontab dosyaları, cron(8) arka plan programının talimatlarını şu şekilde içerir: Belirli bir tarihte ve saatte bu komutu çalıştır.”
//Netsat tools
$ sudo apt-get update -y
$ sudo apt-get install -y net-tools
//monitoring.sh dosyasını /usr/local/bin/ dizine yerleştirip, içine yazın
#!/bin/bash
wall $'#Architecture: ' `hostnamectl | grep "Operating System" | cut -d ' ' -f5- ` `awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'` `arch` \
$'\n#CPU physical: '`cat /proc/cpuinfo | grep processor | wc -l` \
$'\n#vCPU: '`cat /proc/cpuinfo | grep processor | wc -l` \
$'\n'`free -m | awk 'NR==2{printf "#Memory Usage: %s/%sMB (%.2f%%)", $3,$2,$3*100/$2 }'` \
$'\n'`df -h | awk '$NF=="/"{printf "#Disk Usage: %d/%dGB (%s)", $3,$2,$5}'` \
$'\n'`top -bn1 | grep load | awk '{printf "#CPU Load: %.2f\n", $(NF-2)}'` \
$'\n#Last boot: ' `who -b | awk '{print $3" "$4" "$5}'` \
$'\n#LVM use: ' `lsblk |grep lvm | awk '{if ($1) {print "yes";exit;} else {print "no"} }'` \
$'\n#Connection TCP:' `netstat -an | grep ESTABLISHED | wc -l` \
$'\n#User log: ' `who | cut -d " " -f 1 | sort -u | wc -l` \
$'\nNetwork: IP ' `hostname -I`"("`ip a | grep link/ether | awk '{print $2}'`")" \
$'\n#Sudo: ' `grep 'sudo ' /var/log/auth.log | wc -l`
//Komut dosyasının sudo şifresi olmadan çalıştıracağı kuralı ekleyin
$ sudo visudo
//bu satırı ekle
kullanıcı adınız ALL=(ALL) NOPASSWD: /usr/local/bin/monitoring.sh
$ sudo reboot
//Komut dosyasını çalıştır
sudo /usr/local/bin/monitoring.sh
//crontab açın ve sonuna şu kuralı ekleyin
$ sudo crontab -u root -e
*/10 * * * * /usr/local/bin/monitoring.sh
Kendi işletim sisteminizi yönetirken, bir ressamın paletindeki renkleri seçme özgürlüğüne sahip olması gibi, sistem yönetimine özgürce devam edebilirsiniz. Başarılar!




