Başlangıç:
1- cd goinfre/fozerdem/born2beroot
sonrasında
shasum born2beroot.vdi
yap ve gitclonedan çektiğin id ile
karşılaştır.Bu idnin işlem sornası değişmemesini istiyosan sanal makine
üstünden anlık görüntü almayı unutma.
Project overview :
-
Sanal Makine nasıl çalışır?
Sanal Makineler, donanımdan ayrılmış katmanda bir bilgisayarın sanal örneğini çalıştırırlar. Bu işlem sanallaştırma (virtualization) tekniği sayesinde mümkündür. Makinenin kaynaklarının sanallaştırılma işlemi, VM'leri oluşturan, barındıran ve çalıştıran hipervizör adı verilen bir yazılım tarafından gerçekleştirilir.
Sanallaştırma sayesinde, VM'ler kullanıcılar için sanal bir ortam oluşturur. Sanal makineler, bilgisayarın işletim sistemindeki bir pencerede işlem olarak çalışır. Kullanıcılar bu ortamlarda uygulamalar çalıştırabilir, veri depolayabilir ve herhangi bir bilgisayarda yapılabilecek herhangi bir eylemi gerçekleştirebilir. Sanal Makineler, işletim sistemini bir yazılım yerine bilgisayarın yerel donanımında çalıştıklarına inandırarak çalışır, dolayısıyla bir bilgisayarın tüm kabiliyetlerine sahiptir.
- İşletim sistemini neden Debian seçtin? Diğer işletim sistemleri neler?
-
Rocky ve Debian arasındaki temel farkları nelerdir?
- Rocky Linux daha yeni kurulan (2021) bir işletim sistemi.(CentOS klonu olmayı amaçlıyor).Debian ise 1993te kurulmuş.
- Debian, büyük ve aktif bir topluluğa sahiptir. Kullanıcılar arasında geniş bir destek ağı bulunur ve paket deposunda geniş bir yazılım yelpazesi bulunur. Rocky Linux'in de kendi topluluğu vardır, ancak Debian kadar geniş ve köklü değildir.
- Debian, kararlı sürümü ve kararsız (testing) sürümü gibi farklı sürümleri bulunan bir güncelleme politikasına sahiptir. Kararlı sürüm, daha güvenilir ve daha az hata içerirken, testing sürümü daha yeni paketleri içerir. Rocky Linux ise, CentOS Stream'e dayandığı için sürekli güncellenen bir yapıya sahiptir.Sürekli güncellenmesinden dolayı uyum sorunları,test edilmemiş güncellemeleriinin yaratçağı sorunlar olabilir.
- Debian, geniş bir paket deposuna sahiptir ve birçok farklı mimariyi destekler. Bu, farklı ihtiyaçlarınıza ve donanımınıza uygun paketleri bulmanızı sağlar. Rocky Linux ise CentOS ile uyumlu olduğu için, CentOS için geliştirilen uygulamaları ve araçları kullanabilirsiniz.
-
Debian vs CentOS
-
Debian apt’dir, CentOS yum.
-
CentOS kararlı bir yapıdadır(Az ve Öz güncelleme alıyor). Debian daha az kararlı(Çok Güncelleme Alıyor).
-
CentOS redhat tarafından lanse edilirken, Debian bireysel lanse ediliyor.
-
CentOS kendi güvenlik sistemiyle geliyor(Güvenlik Sisteminin Adı: Selinux).
-
CentOS kurumsal alanda daha çok tercih ediliyor, Debian bireysel.
-
-
Sanal makinenin amacı nedir?
- Uygulamaları bulutta derleme ve dağıtma.
- Beta sürümleri dahil olmak üzere yeni bir işletim sistemi (OS) deneme.
- Geliştiricilerin geliştirme-test senaryolarını çalıştırmasını kolaylaştırmak ve hızlandırmak için yeni bir ortam oluşturma.
- Mevcut işletim sisteminizi yedekleme.
- Virüs bulaşmış verilere erişme veya eski bir işletim sistemini yükleyerek eski bir uygulamayı çalıştırma.
- Yazılım veya uygulamaları, başlangıçta amaçlanmadıkları işletim sistemlerinde çalıştırma.
-
Aptitude ile Apt arasındaki fark ve APPArmor'ın nedir?
- Diyelim ki bir yazılımı yüklemek istiyorsunuz, ancak yazılımın bağımlı olduğu başka paketler de var. Aptitude, bu bağımlılıkları otomatik olarak çözebilir ve eksiksiz bir kurulum yapabilir.Apt de bu bağımlılıkları elle yapmak zorundasın
- Aptitude, hem komut satırı tabanlı hem de grafiksel bir kullanıcı arayüzü sunar. Bu grafiksel arayüz, paketlerinizi daha sezgisel bir şekilde yönetmenize yardımcı olabilir.Apt, genellikle komut satırı tabanlıdır. Bu nedenle grafiksel bir kullanıcı arayüzüne sahip değildir.
- Aptitude, paket yükseltme veya kaldırma işlemlerini interaktif bir şekilde yönetmenize olanak tanır. Bu, hangi paketlerin güncelleneceğini veya kaldırılacağını daha iyi kontrol etmenizi sağlar.Apt de bu yönetimi komutlarla yapmak zorundasın
-
AppArmor
- AppArmor, Ubuntu 7.10'dan beri Ubuntu'ya varsayılan olarak dahil edilen önemli bir güvenlik özelliğidir. Ancak arka planda sessizce çalışır, bu nedenle ne olduğunun ve ne yaptığının farkında olmayabilirsiniz.
- AppArmor, bir web tarayıcısı veya sunucu yazılımı gibi kötüye kullanılabilecek yazılımları kısıtlamak için özellikle yararlıdır.
- AppArmor, profil adı verilen yapılandırmalar kullanarak uygulama davranışlarını kısıtlayabilir. Bu profiller, uygulamaların belirli dosyalara erişimini kontrol edebilir, ağ bağlantılarını düzenleyebilir ve diğer güvenlik önlemlerini uygulayabilir. Bu şekilde, AppArmor uygulamaların zararlı etkilerini sınırlayarak sistemin güvenliğini artırabilir.
- Ekranda 10 dkda bir script gelicek onu kontrol detaylarını sonraki sorularda sorulcak.
Simple setup:
-
UFW service nedir kontol et
systemctl status ufw
- UFW (uncomplicated firewall), Linux'ta güvenlik duvarı kurallarını yönetmek için kullanılan bir araçtır.
- Güvenlik duvarını hızlı bir şekilde etkinleştirme veya devre dışı bırakma seçeneği sunar.
- Gelen ve giden trafiği kontrol etmek için temel güvenlik politikaları oluşturmanıza olanak tanır.
- Sadece gereken portlara erişim sağlayarak saldırırlardan korur.
- Zararlı yazılımların sisteme sızmasından korur.
- Yalnızca belirli IP adreslerinden gelen erişimlere izin vererek güvenliği artırabilirsiniz.
disable ->
systemctl disable ufw
inactive →
systemctl stop ufw
-
enable vs stop
systemctl stop
: Bu komut, belirtilen hizmeti anında durdurur. Hizmetin çalışması durdurulur ve mevcut işlemler sonlandırılır. Hizmet, sistem yeniden başlatılmadığı sürece otomatik olarak başlamaz.
systemctl disable
: Bu komut, belirtilen hizmetin sistem başlangıcında otomatik olarak başlamasını engeller. Hizmetin çalışması durdurulmaz, sadece sistem yeniden başlatıldığında otomatik olarak başlamaz. Hizmeti manuel olarak başlatmak veya durdurmak hala mümkündür.
Özetle,
systemctl stop
komutu hizmeti anında durdururken,systemctl disable
komutu hizmetin otomatik başlamasını sistem başlangıcında engeller.
-
SSH servise nedir kontol et
systemctl status ssh
disable için →
systemctl disable ssh
→ enable içinsystemctl enable ssh
inactive için →
systemctl stop ssh
→ active içinsystemctl start ssh
- SSH (Secure Shell), güvenli bir uzaktan erişim protokolüdür.
- SSH’nin çalışması, iki uzak sistemin kimlik doğrulamasına ve aralarında geçen verilerin şifrelenmesine izin vermek için bir istemci-sunucu modelinden faydalanmaktır.
User :
-
öğrencinin sudo ve user42 grubuna ait olup olmadığına bakın.
grep -w sudo etc/group
orgetent group sudo
grep -w user42 etc/group
orgetent group user42
-
Yeni kullanıcı oluştur,şifre kurallarına uygun bir şifre belirle.
sudo adduser kullanıcı
grep -w kullanıcı etc/group
orgetent group kullanıcı
→ kullanıcı nerde görüyom
-
Konuda istenen kuralları sanal makinesinde nasıl oluşturduğunu açıkla.
sudo vim /etc/login.defs
→ PASS_MAX_DAYS 30,PASS_MIN_DAYS 2,PASS_WARN_AGE 7sudo vim /etc/pam.d/common-password
→ şifre için gerekli şeylerin olduğu dosya-
Güçlü bir şifre politikası oluşturmak için aşağıdaki gereksinimlere uymalısınız:
→
sudo vim /etc/login.defs
bu dosyada işlemler sürcek- Şifreniz her 30 günde bir süresi dolmalıdır.
PASS_MAX_DAYS 30
- Bir şifrenin değiştirilmeden önce izin verilen minimum gün
sayısı 2 olarak ayarlanacaktır.
PASS_MIN_DAYS 2
- Kullanıcı, şifresinin süresi dolmadan 7 gün önce bir uyarı
ile bilgilendirilmelidir.
PASS_WARN_AGE 7
-
Şifreniz en az 10 karakter uzunluğunda olmalıdır. Bir büyük harf, bir küçük harf ve bir rakam içermelidir. Ayrıca, üç ardışık aynı karakteri içermemelidir.
sudo vim /etc/pam.d/common-password
→
ucredit=-1
→ En az bir büyük harf içermeli→
lcredit=-1
→ En az bir küçük harf içermeli→
dcredit=-1
→ En az bir sayı içermeli→
maxrepeat=3
→ En fazla 3 ardışık aynı karakter içerebilir.→
minlen=10
→ Şifre minimum uzunluğunu 10 karakter→
usercheck=1
→ Şifre, kullanıcının adını içermemelidir.
-
Aşağıdaki kural kök (root) şifresi için geçerli değildir: Şifre, önceki şifrenin parçası olmayan en az 7 karakter içermelidir.
→
difok=7
→ önceki şifrenin parçası olmayan en az 7 karakter
-
Tabii ki, kök (root) şifreniz de bu politikaya uymalıdır.
→
enforce_for_root
**→ Tüm bu şifre politikasını **root kullanıcısı üzerinde uygulanır.
sha512
→ Bu modül, kullanıcıların parola doğrulama işlemlerini kontrol etmek ve yönlendirmek için kullanılır.sha512
ise bir şifreleme algoritmasıdır ve parolaların güvenli bir şekilde saklanmasını sağlar.SHA-512 (Secure Hash Algorithm 512) ise güvenli bir karma algoritmasıdır ve parolaların özetlerini (hash) oluşturmak için kullanılır. Karma algoritmaları, veriyi belirli bir uzunlukta sabit bir dizeye dönüştüren ve tek yönlü olan matematiksel işlemlerdir.
obscure
→ pam_unix.so obscure"ifadesi, bu PAM modülünün parola politikalarını veya parola karmaşıklığını artıran ve belirli bir güvenlik seviyesini sağlayan ayarları - Şifreniz her 30 günde bir süresi dolmalıdır.
-
Eğer fozerdem üsründe şifre uygulancaksa :
sudo chage --mindays 2 fozerdem
-
-
"evaluating" adında bir grup oluştur
sudo addgroup evoluating
grep -w evoluating etc/group
→evoluating
groupu var mı kontrol et
-
bu grubu bu kullanıcıya atamasını isteyin
adduser kullanıcı evoluating
orsudo usermod -aG evaluating your_new_username
-
bu kullanıcının "evaluating" grubuna ait olup olmadığını kontrol edin.
grep -w kullanıcı etc/group
orgetent group evaluating
groups kullanıcı
→ kullanıcıların bağlı olduğu grupları gösterir
-
silmek için
sudo groupdel gorupname
→ grup silmek içinsudo deluser kullanıcı
→ user desilmek için
-
değerlendirilen öğrenciden bu şifre politikasının avantajlarını,uygulamanın avantajlarını ve dezavantajlarını açıklamasını isteyin.
https://www.passwordmonster.com
Parolaların kırılma hızı çok artıyo.Şifrelenmesi için özel şifreleme sistemleri kullanıyoruz.Hesap paylaşımı azalır çünkü güçlü parolaları insanlar paylaşmak istemez
Hatırlaması zor,kullanıcı memnuniyetsiz
Hostname and partitions:
-
hostname login42 olmalı kontol et
hostnamectl
-
hostaname adını evocu adıyla değiştir , rebbot et
hostnamectl set-hostname server1
vim etc/hosts
→ girip adını değiştiriyoruzreboot
-
makineyi tekrar original hostname e çevir
hostnamectl set-hostname fozerdem42
-
LVM'nin nasıl çalıştığına ve konunun ne hakkında olduğuna dair kısa bir açıklama yapmalıdır.
- Geleneksel bir disk yönetimi modelinde, işletim sistemi önce kullanılabilir sürücüleri arar ve ardından bu aygıtlarda hangi birimlerin kullanılabilir olduğunu kontrol eder.
- LVM ise sürücüler ve birimler tek bir sürücü birkaç disk ve birim içerecek şekilde ele alınabilir.Disk alanı bu şekilde ele alınırsa işletim sistemi tarafından aralarında hiçbir fark göremeyecek ve birim yöneticisi işletim sistemine yanlızca yapılandırdığınız birim gruplarını , diskleri ve bölümleri gösterecektir.Bu veri içeren birimleri yönetmek için çok güçlü bir sistemdir.Fiziksel bölümlere ayılmış mantıksal birimler oluşturmaya izin verir ve bu tür birimler işletim sisteminde veri içeren geleneksek aygıtlar olark ortaya çıkar
- Bu yöneticinin ana faydaaları her şeyden öncee herhangi bri sayıda fiziksel birim üzerinde bir grup mantıksal birim oluşturabilmek ve mantıksal birimlerin kolayca ve anında yeniden boyutlandırılabilmesidir.
-
Hard lsblk
-
Başlıkların açıklaması
NAME
: Aygıtın adı veya kimliği.
MAJ:MIN
: Aygıtın ana ve alt numarası.
RM
: Aygıtın taşınabilirliği (1: taşınabilir, 0: taşınabilir değil). 1 → Bu genellikle harici diskler, USB bellekler veya kart okuyucular gibi taşınabilir aygıtlar için kullanılır. 0→ tipik olarak dahili sabit diskler veya ROM aygıtları gibi aygıtların taşınabilir olmadığı anlamına gelir.
SIZE
: Aygıtın boyutu.
RO
: Aygıtın salt okunur olup olmadığı (1: salt okunur, 0: salt okunur değil). 1 → aygıt salt okunurdur, yani üzerine yazma veya değişiklik yapmak mümkün değildir. 0→ aygıt yazılabilir veya değiştirilebilir demektir.
TYPE
: Aygıtın türü (örneğin disk, bölüm, ROM vb.). disk → bir disk aygıtını temsil eder. Örneğin,sda
bir disk aygıtıdır. part → bir disk bölümünü temsil eder. rom → Bu, bir ROM (Salt Okunur Bellek) aygıtını temsil eder. Örneğin,sr0
bir ROM aygıtıdır ve genellikle bir CD/DVD sürücüsünü ifade eder. crypt →Bu, şifrelenmiş bir bölümü temsil eder.
MOUNTPOINTS
: Bölümün bağlı olduğu nokta (örneğin dosya sistemi tarafından kullanılan nokta).
-
Linux Dosya Sistemi yapısı : /boot,/home …
/boot
:- Başlatma süreci için gerekli olan dosyaları içerir, örneğin çekirdek dosyası (kernel) ve başlatma yükleyici (bootloader) dosyaları.
- Örnek:
/boot/vmlinuz
,/boot/grub
/home
:- Kullanıcıların kişisel dizinlerini içerir.
- Her kullanıcı kendi dizini altında çalışabilir.
- Örnek:
/home/user1
,/home/user2
/tmp
:- Sistemde geçici dosya yaratma ve ortak kullanım alanı.
- Geçici dosyaların saklandığı dizindir.
- Önyükleme sırasında temizlenir.
- Örnek:
/tmp/tempfile
/var
: Değişken verilerin (variable data
) bulunduğu dizin.- Değişen verileri ve günlük (log) dosyalarını içerir.
- Örnek:
/var/log
,/var/spool
,/var/www
/srv
:- Linux sistemlerinde servislerin verilerini saklamak amacıyla kullanılan bir dizindir.
- sistem dizinlerinden ayrı bir bölge olarak servis verilerini saklar.
- Örnek olarak, bir web sunucusunun veri dosyalarını
/srv/www
altında saklamak yaygın bir kullanım şeklidir.
swap
:- RAM belleğinin tükendiği durumlarda sistem performansını düşürmeden işlemlere devam etmektir. Bellek tükenirse, kullanılmayan veya az kullanılan veriler swap alanına taşınabilir. Bu sayede daha fazla bellek benzeri alan sağlanır ve sistem çökmesi önlenir.
-
sr0
ROM aygıtını (CD/DVD sürücüsü gibi) temsil eder.
-
Sudo
-
Sanal makinede "sudo" programının düzgün bir şekilde yüklendiğini kontrol edin.
dpkg -l | grep sudo
-
Değerlendirilen öğrenci, yeni kullanıcınızı "sudo" grubuna atamayı göstermelidir.
adduser yeni sudo
-
sudo'nun değerini ve işleyişini kendi seçtikleri örneklerle açıklamalıdır. İkinci bir adımda ise, konu tarafından getirilen kuralların uygulanışını size göstermelidir
sudo visudo
-
Sudo değeri ve işleyişi
- Sistem önce kullanıcının yetkilendirilip yetkilendirilmediğini kontrol eder.
- Hangi kullanıcıların hangi komutları ve hangi kullanıcıların hangi yetkilerle çalıştırabileceğini tanımlar.
-
Kullanıcının
sudo
yetkilerine sahip olduğunu belirlerse, kullanıcıya kendi parolasını girmesi istenir.-
{{kullanıcı_adı}} ALL=(ALL) ALL
- İlk "ALL" (komut): Bu,
{{kullanıcı_adı}}
adlı kullanıcının izin verileceği şeyi gösteriyor.
- İkinci "ALL" (kullanıcı): Bu,
{{kullanıcı_adı}}
kullanıcısının herhangi bir kullanıcının kimliği altında (herhangi bir kullanıcı adıyla) komut çalıştırabilmesine izin verildiğini belirtir.
- Üçüncü "ALL"(Host): Bu,
{{kullanıcı_adı}}
kullanıcısının herhangi bir host (sunucu) üzerinde tüm komut çalıştırabilmesine izin verildiğini belirtir.
- Terminal Oturumu Türü Kısıtlaması Yok: Bu girişte belirli bir terminal oturumu türüne dair bir kısıtlama bulunmaz.
- İlk "ALL" (komut): Bu,
-
{{kullanıcı_adı}} ALL=
(ALL : ALL)
ALL
ALL : ALL daki 2. ALL hangi terminal üzerinde çalışmasına izin verdiğini belirtiyor.Yani kullanıcısının herhangi bir terminal oturumu türüyle (örneğin, terminal penceresi veya uzaktan erişim) komut çalıştırabilmesine izin verildiğini belirtir.
-
{{kullanıcı_adı}} ALL=(root : /dev/tty1) /bin/ls"
Bu ifade, "{{kullanıcı_adı}}" kullanıcısına sadece "root" kimliğiyle ve "/dev/tty1" terminalinden "/bin/ls" komutunu çalıştırma izni verir. Bu şekilde, yetkilendirmeyi daha spesifik hale getirebilirsiniz.
-
sudo
, çalıştırılan komutları izler ve günlüğe kaydeder.
-
fozerdem ALL=(ALL) NOPASSWD: /usr/local/bin/monitoring.sh
→ NOPASSWD:" ifadesi, sudo komutlarının çalıştırılmasında parola gerekliliğini kaldırır. Yani, "monitoring.sh" betiği sudo ile çalıştırıldığında, parola girmeden çalıştırılabilir. cron 10dkda bir şifre istemesin diye bunu yapıyoruz otomatik çalışsın diye-
Sudo grubunuz için güçlü bir yapılandırma oluşturmak için aşağıdaki gereksinimlere uymanız gerekmektedir:
-
Sudo kullanarak kimlik doğrulama, yanlış bir şifre girilmesi durumunda 3 denemeye sınırlanmalıdır.
Defaults passwd_tries=3
-
Sudo kullanılırken yanlış şifre nedeniyle bir hata oluşursa, isteğe bağlı olarak özel bir ileti görüntülenmelidir.
Defaults badpass_message=”Hatali Sifre Girdiniz! Lutfen Tekrar Giriniz.”
-
Sudo kullanılarak gerçekleştirilen her işlem, girdileri ve çıktılarıyla birlikte arşivlenmelidir. Günlük dosyası, /var/log/sudo/ klasöründe saklanmalıdır.
Önce
sudo mkdir /var/log/sudo
ile dosya oluştursudo visudo
içineDefaults logfile="/var/log/sudo/sudo.log"
-
Güvenlik nedenleriyle TTY modu etkinleştirilmelidir.
Defaults requiretty
- Pts ve tty arasındaki fark nedir? tty normal bir terminal cihazıdır (örneğin sunucunuzdaki konsol). pts, sanal/taklit (uzak) terminal bağımlısıdır (bir xterm veya ssh bağlantısı).
-
Güvenlik nedenleriyle sudo tarafından kullanılabilecek yollar sınırlanmalıdır.
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
-
-
"log_input" seçeneği, sudo komutunun kullanıcı tarafından girilen komutları günlüğe kaydetmesini sağlar. Bu, kullanıcının hangi komutları çalıştırdığını izlemek için yararlı olabilir.
"log_output" seçeneği, sudo komutunun çalıştırılan komutun çıktısını günlüğe kaydetmesini sağlar. Bu, komutun çıktısını takip etmek ve olası hataları veya sorunları tespit etmek için kullanışlı olabilir.
Defaults log_input,log_output
-
-
"/var/log/sudo/" klasörünün varlığını ve en az bir dosyasının bulunduğunu doğrulayın.
cat /var/log/sudo/sudo.log
-
Bu klasördeki dosyaların içeriğini kontrol edin. Bu dosyalarda sudo ile kullanılan komutların geçmişini görmelisiniz. Son olarak, sudo aracılığıyla bir komut çalıştırmayı deneyin.
- "/var/log/sudo/" klasöründeki dosyaların güncellendiğini gözlemleyin
UFW
-
UFW" (veya "Firewalld" eğer Rocky Linux ise) programının düzgün bir şekilde yüklendiğini kontrol edin.
dpkg -l | grep ufw
-
UFW (veya Firewalld)'nin düzgün çalıştığını kontrol edin.
service ufw status
systemctl status ufw
-
8080 portuna izin verin check edin
sudo ufw allow 8080
ufw status
ayaralr >ağ>gelişmiş>b.noktası yönlendirme > portları 8080 yap
- disable ->
systemctl disable ufw
- inactive →
systemctl stop ufw
SSH
-
sshı kontrol et inmiş mi ve çalışıyo mu
systemctl status ssh
dpkg -l | grep ssh
-
SSH ın ne olduğunu ve AVANTAJLARI
SSH (Secure Shell), güvenli bir uzaktan erişim protokolüdür. SSH, ağ üzerinden güvenli ve şifreli bir şekilde başka bir bilgisayara erişim sağlar. Genellikle sunuculara uzaktan bağlanmak, dosya transferi yapmak veya uzaktan komut çalıştırmak için kullanılır.
SSH'nin Temel Avantajları:
- Şifreli İletişim: SSH, iletişimi şifreleyerek verilerin güvenli bir şekilde aktarılmasını sağlar. Bu, hassas bilgilerin ağ üzerinde aktarılması sırasında güvenlik risklerini azaltır.
- Kimlik Doğrulama: SSH, kullanıcıların ve sunucuların birbirlerini kimlik doğrulayarak bağlantı kurmasına olanak tanır. Bu, yetkisiz erişimi önlemeye yardımcı olur.
- Açık Ağlar İçin Güvenlik: SSH, genellikle açık ağlarda (örneğin, internet üzerinden) güvenli bir şekilde bağlantı kurmak için kullanılır. Şifreli bağlantı, verilerin izinsiz erişimden korunmasını sağlar.
- Uzaktan Yönetim: SSH, uzaktan sunucu veya cihaz yönetimini kolaylaştırır. Uzaktan komut çalıştırma ve dosya transferi gibi işlemler bu sayede gerçekleştirilebilir.
- Tünel Oluşturma: SSH, verileri güvenli bir tünel üzerinden iletmek için kullanılabilir. Örneğin, VPN benzeri güvenli bağlantılar oluşturulabilir.
- Çoklu Platform Desteği: SSH, farklı işletim sistemlerinde ve cihazlarda kullanılabilir. Bu, çeşitli platformlar arasında güvenli iletişimi sağlar.
- Anahtar Tabanlı Kimlik Doğrulama: SSH, parola tabanlı kimlik doğrulama yerine anahtar tabanlı kimlik doğrulama da sağlar. Bu daha güvenli bir kimlik doğrulama yöntemidir.
-
SSH ın sadece 4242 portunu kullandığını göster
aklına gelmezse
find -name sshd_config
ile uzantısını bulabilirsinsudo vim /etc/ssh/sshd_config
→ port 4242-
PermitRootLogin no
TERMİNALDE root@127.0.0.1 ile ağlanamıyoruz bunun sayesinde
Sistem yöneticisinin düzenli bir kullanıcı hesabı ile giriş yapması ve ardından komutlarını sudo gibi izin verilen yetkilendirme mekanizmalarını kullanarak çalıştırması gerektiği anlamına gelir. Bu şekilde, hem güvenlik sağlanmış olur hem de her işlem için ayrı ayrı kimlik doğrulama yapılmasına olanak tanınır.
sudo systemctl restart ssh
-
-
Yeni oluşturulan kullanıcıyla SSH kullanarak oturum açmada size yardımcı olmalıdır. Bunun için anahtar veya basit bir şifre kullanabilirsiniz. Bu, değerlendirilen öğrenciye bağlı olacaktır. Tabii ki, konuda belirtildiği gibi "root" kullanıcısıyla SSH kullanamayacağınızdan emin olmalısınız.
yeni oluşturulan kullanıcyla terminalden bağlanma →
ssh kullanici@127.0.0.1 -p 4242
sıkıntı çıkarsa →ssh-keygen -R '[127.0.0.1]:4242'
-
disable
systemctl disable ssh
→ enable içinsystemctl enable ssh
-
inactive
systemctl stop ssh
→ active içinsystemctl start ssh
CRON
-
Betik hangi işlevleri yerine getiriyor, hangi komutları içeriyor ve hangi sonuçları üretiyor gibi sorulara cevap vermelisiniz.
sudo apt install -y net-tools
cd /usr/local/bin/
vim monitoring.sh
- İçine aşağğıdakileri yazıcaz Detaylı açıklıyorum:
#!/bin/bash → Bu satır, Bash kabuğunu kullanarak betiğin çalıştırılmasını sağlar.
-
arc=$(uname -a)
# Sistem mimarisini ve diğer bilgileri alır.uname
→ yazınca sadece işletim sistemini veriyo Linux yazıyo amauname -a
diyince komple mimariyi veriyor.Linux: İşletim sistemi çekirdek türünü gösterir.
server1 → hostname
6.1.0-10-amd64: Çekirdek versiyonunu gösterir. Bu durumda, çekirdek versiyonu "6.1.0-10-amd64" olarak belirtilmiştir.
#1 SMP PREEMPT_DYNAMIC: Çekirdek yapılandırmasını ifade eder.
Debian : İşletim sistemi
x86_64: Sistem mimarisini ifade eder.
GNU/Linux: İşletim sistemi adını belirtir.
-
pcpu=$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)
# Fiziksel CPU sayısını belirler.grep "physical id" /proc/cpuinfo
: Bu komut, /proc/cpuinfo dosyasını okur ve “physical id” ifadesini içeren satırları ayıklar. Bu satırlar, her bir fiziksel işlemciye ait bilgileri içerir.
sort
: Ayıklanan satırları sıralar. Bu, aynı fiziksel işlemciye ait bilgilerin bir arada olmasını sağlar
uniq
: Ardışık aynı satırları filtreler ve yalnızca benzersiz satırları bırakır. Bu, aynı fiziksel işlemciye ait bilgilerin yinelenmemesini sağlar.
-
wc -l
: Bu komut, gelen satır sayısını hesaplar. Bu, toplam fiziksel işlemci sayısını verir.Sonuç olarak, bu komut dizisi size sisteminizde bulunan toplam fiziksel işlemci sayısını verir. Örneğin, eğer sonuç “2” ise, sisteminizde iki fiziksel işlemci bulunduğunu gösterir.
physical id : 0 physical id : 0 physical id : 1 physical id : 1
Bu şekildede çıktı olabailir bu durumda 2 fiziksel kimlik vardır 0 ve 1 bunların kimlik numarasıdır.
-
vcpu=$(grep "^processor" /proc/cpuinfo | wc -l)
# Sanal CPU (çekirdek) sayısını belirler.processor kelimesinin satırın başında yer aldığı yerleri bulur ve satırları toplar.
-
fram=$(free --mega | grep Mem: | awk '{print $2}')
# Toplam RAM miktarını MB cinsinden alır.free --mega
: Bu komut, sistemin mevcut bellek kullanımını ve diğer bellek istatistiklerini görüntüler. -m baytları memibaytlara , —mega → megabaytlara dönüştürür.
grep Mem
:: free —mega komutunun çıktısını alır ve “Mem:” ifadesini içeren satırı ayıklar. Bu satır, toplam bellek (RAM) hakkında bilgi içerir.
-
awk '{print $2}'
: grep komutunun çıktısını alır ve satırdaki ikinci alanı (bellek miktarını) yazdırır.Sonuç olarak, bu komut dizisi size sistemdeki toplam bellek miktarını megabayt cinsinden verir. Örneğin, eğer sonuç “8192” ise, sisteminizde toplam 8192 megabayt (8 gigabayt) bellek olduğunu gösterir.
Burdaki swap Mem: i aşan durumlarda swap alanında kullanılan şeyleri içerir.
uram=$(free --mega | grep Mem: | awk '{print $3}')
# Kullanılan RAM miktarını MB cinsinden alır.
-
pram=$(free | grep Mem: | awk '{printf("%.2f"), $3/$2*100}')
# Kullanılan RAM yüzdesini hesaplar.free → bayt cinsinden
awk '{printf("%.2f"), $3/$2*100}'
: Seçilen satırı AWK aracılığıyla işler. Bu kısım, kullanılan belleği toplam belleğe bölerek bellek kullanım yüzdesini hesaplar. Ardındanprintf("%.2f")
kullanılarak yüzdeyi ondalık noktası ile iki basamak hassasiyetle görüntüler.
-
fdisk=$(df -Bg | grep '^/dev/' | grep -v '/boot$' | awk '{ft += $2} END {print ft}')
# Toplam disk alanını GB cinsinden hesaplar.df -Bg
: Bu komut, dosya sistemi kullanımını gösterir.B
seçeneği, boyutları belirli bir birimde görüntülememizi sağlar.g
ise gigabayt cinsinden görüntülememizi sağlar. Bu komutun çıktısı, dosya sistemleri hakkında bilgi içeren satırları içerir.
grep '^/dev/'
:df
çıktısını işlerken, sadece/dev/
ile başlayan disklerin bilgilerini seçer. Bu, fiziksel disklerin listesini almanın bir yoludur.
grep -v '/boot$'
: Önceki adımda seçilen satırlardan,/boot
ile bitenleri hariç tutar. Bu genellikle önyükleme bölümüdür ve sistem dosyalarını içerir.
-
udisk=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} END {print ut}')
# Kullanılan disk alanını MB cinsinden hesaplar.df -Bm
: Bu komut, dosya sistemi kullanımını gösterir.-B
seçeneği, boyutları belirli bir birimde (MB) görüntülememizi sağlar.-m
ise megabayt cinsinden görüntülememizi sağlar. Bu komutun çıktısı, dosya sistemleri hakkında bilgi içeren satırları içerir.3.sutünü toplar yazdırır ekrana 1224
-
pdisk=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} {ft+= $2} END {printf("%d"), ut/ft*100}')
# Kullanılan disk alanının yüzdesini hesaplar.üçüncü sutün(kullanılan)toplamı /ikinci sütün(toplam boyut ft)toplamı *100
-
cpul=$(top -bn1 | grep '^%Cpu' | cut -c 9- | xargs | awk '{printf("%.1f%%"), $1 + $3}')
# CPU kullanım yüzdesini hesaplar.top -bn1
: Bu komut, bir kez çalıştırılantop
komutunu kullanarak sistemdeki işlem ve kaynak kullanımı istatistiklerini görüntüler.bn1
seçeneği,top
komutunun toplamda bir kez çalıştırılmasını ve çıkışın hemen gösterilmesini sağlar.
grep '^%Cpu'
:top
çıktısını işlerken, sadece%Cpu
ile başlayan satırları seçer. Bu satır, CPU kullanım istatistiklerini içerir.
cut -c 9-
: Seçilen satırın 9. karakterden sonraki bölümünü alır. Bu, CPU kullanım yüzdesini içeren veriyi elde etmenizi sağlar.
xargs
: Önceki komuttan gelen veriyi alır ve boşlukları çıkararak tek bir veri parçasına dönüştürür.
awk '{printf("%.1f%%"), $1 + $3}'
:awk
aracılığıyla işlenir. Bu adım,$1
ve$3
ifadelerini alır, bunları toplar ve sonucu ondalık noktasıyla birlikte yüzde sembolüyle birlikte yazdırır.
-
lvmt=$(lsblk -o TYPE | grep "lvm" | wc -l)
# LVM bölümlerinin sayısını belirler.lsblk -o TYPE
: Bu komut, disk bölümlerini listeler ve yalnızca "TYPE" sütununu görüntüler. "TYPE" sütunu, bölüm türünü belirtir.
-
lvmu=$(if [ $lvmt -eq 0 ]; then echo no; else echo yes; fi)
# LVM kullanılıp kullanılmadığını belirler.Eğer lvm sayısı 0 sa no döndür 0 değilse yes döndür
fi
if ifadesinin sonunu belirtir.
-
ulog=$(users | wc -w)
# Anlık oturum açmış kullanıcı sayısını belirler.users
: Bu komut, anlık olarak oturum açmış kullanıcıları görüntüler.
wc -w
:wc
komutu, verilen metin veya dosyanın satır, kelime ve karakter sayısını sayar.w
seçeneği, sadece kelime sayısını döndürmesini sağlar. Bu komut dizisi,users
komutunun çıktısındaki kelime sayısını yani oturum açmış kullanıcı sayısını verir.
-
mac=$(ip link show | awk '$1 == "link/ether" {print $2}')
# Sistem MAC adresini alır.ip link show
: Bu komut, ağ arabirimlerinin (network interfaces) durumunu ve özelliklerini görüntüler. Bu çıktı, ağ arabirimlerinin farklı özelliklerini içeren satırları içerir.
awk '$1 == "link/ether" {print $2}'
: Bu adım,awk
komutunu kullanarak çıktıdaki satırları işler.$1
ifadesi, her satırdaki ilk sütunu temsil eder. Bu komut, sadece "link/ether" ifadesini içeren satırları seçer, yani fiziksel MAC adreslerini içeren satırları.
-
ip=$(hostname -I)
#ip adresini yazdırır.sistemdeki ağ arabirimlerinin IP adreslerini döndürür
-
cmds=$(journalctl _COMM=sudo | grep COMMAND | wc -l)
# Sudo komutlarının sayısını belirler._COMM =sudo kısmı sudo[123] olanları getirir systemd[123] falanda olabiliyo biz sudoları istiyoruz bide COMMAND olanlar sadece sudo komutu kullanmak demek diğerleri bilgi o yüzden onuda ayıklıyoruz
journalctl
aracılığıyla sistem günlüğünü incelemeyi sağlar.command içerenlerin sayısı döner
-
Öğrencinin hazırladığı betiği sunucu başladıktan sonra her 10 dakikada bir çalışacak şekilde nasıl planlayacağınızı anlamalısınız. Bu işlemi gerçekleştirmek için "cron" kullanmanız gerekecek.
crontab -e
*/10 * * * *
at every 10th minute 21:10, 21:20,21:30 ,..10 * * * *
at minute 10 21:10, 22:10,23:10 ,..
-
Betiğin doğru şekilde çalıştığını doğruladıktan sonra, öğrencinin betiği her dakika çalışacak şekilde nasıl ayarlayacağını anlamalısınız.
*/1 * * * *
olarak değiştir
-
Sunucu başladığında betiğin otomatik olarak çalışmasını durdurmak, ancak betiği kendisini değiştirmeden yapmanız gerekmektedir. Bu, "cron" zamanlama ve betiğin yönetimiyle ilgili bir gerekliliktir.
systemctl status cron ile hangi saaatlerde çalıştığını göerbilriiz
systemctl stop cron
→ inactivesudo cronstop
sudo cronstop
- Sunucu yeniden başlatıldığında, betiğin hala aynı yerde bulunduğunu, haklarının değişmediğini ve değiştirilmediğini kontrol etmeniz gerekecektir.