Yusuf Efil tarafından yazıldı.
A) PAKET YÖNETİMİ TEMELLERİ
Şu şekil paket yüklenir:
sudo apt install nmap
NOT= Eğer sudo su şeklinde root olup yüklerseniz yüklediğiniz uygulamayı çalıştırırken de root olup çalıştırmanız gerekir.
Ama sudo apt install nmap derseniz sadece yüklemek için izin almış olursunuz paketi çalıştırmak için root olmanıza gerek olmaz.
2) PAKET SORGULAMA
Yüklü paketlerin listesini görmek için;
dpkg komutu kullanılır.
dpkg -l sistemde yüklü olan tüm paketleri listeler.
NOT= APT ve DPKG FARKI
apt internette bir repoya sorgu çekiyor ve internetten bu dosyayı indiriyor otomatik olarak kuruluyor.(Yani online paket yüklemek için)
dpkg sisteme indirdiğimiz bir dosyayı yüklemek için kullanılır. (offline paket yüklemek için yani)
Belirli bir uygulama hakkında bilgi almak için:
dpkg -l | grep nmap komutu kullanılır.
Bir paketle ilgili daha detaylı bilgi için:
apt search sqlmap komutu kullanılır.
Daha da detaylı bilgi almak için:
apt show sqlmap diyoruz.
Bir paketin çalışması gerekli olan kaynaklara bu komutla bakarız:
apt-cache depends nmap
3) PAKET KURMA
Linux'e paket iki şekilde kurulur:- apt install paketadi
- dpkg -i paketadi.deb
NOT= Komuta yazdığım şey dosya içinde mevcutsa baş harfini yazıp tab'a basarsak otomatik olarak gerisini tamamlar.
ls -al komutu dosyaları listeler.
4) PAKET SİLME
Linux'te paket silmenin iki yolu vardır:- apt remove paketadi
- dpkg -r paketadi.deb
Bir paketi sistemden tamamen silmek için şu komutu kullanırız:
apt purge paketadi
5) PAKET GÜNCELLEME
- apt update
- apt upgrade
UPDATE ve UPGRADE FARKI
Update bir paketin içinde bulunan küçük değişiklikleri güncellemeye yarayan bir komuttur.
Upgrade ise ürünü veya paketi bir üst versiyonuna taşıyan komuttur.
Sadece tek bir paketi güncellemek için:
apt --only-upgrade install paketadi komutu kullanılır.
Upgrade edilebilir paketleri görüntülemek içinde:
apt list --upgradable komutunu kullanırız.
B) GNU ve UNIX KOMUTLARI
1) Temel Kullanıcı ve Grup İşlemleri
a) Kullanıcı Ekleme
useradd -s /bin/bash -m -d /home/hacker -g sudo hacker
Komut Analizi Yapalım:
useradd: Kullanıcı ekleme
-s : Shell'i temsil ediyor yani nerde çalışacağını belirtir.
-m : Kullanıcıya bir home dizini oluşturmasını sağlıyoruz aslında mkdir anlamına geliyor.
-d : Directory'i temsil eder
-g : Grup oluşturmak için ( Burda ayrıca sudo yetkisi verdik)
b) Kullanıcı Listeleme
cat /etc/passwd
c) Kullanıcıyla İlgili Daha Detaylı Bilgi
id hacker
cat /etc/shadow bu da detaylı bilgi verir. Ayrıca içinde oluşturma tarihini de içerir.
hacker:!:19301:0:99999:7:::
ünlem kullanıcıya şifre belirlemediğimiz anlamına gelir.
d) Kullanıcıya Şifre Belirleme
passwd hacker
e) Grup Ekleme
groupadd pentesters
f) Grupları Listeleme
cat /etc/group
g) Gruba Kullanıcı Ekleme
usermod -G pentesters yusuf
h) Kullanıcıyı Gruptan Silme
gpasswd -d yusuf pentesters
j) Bir Kullanıcıyı Kitlemek
usermod -L hacker ( -L Lock anlamına gelir. )
k) Bir Kullanıcının Tüm Haklarını Herşeyini Silmek için
userdel -r hacker
userdel hacker ( Sadece kullanıcıyı siler tüm dosyaları kalmaya devam eder )
2) SUDO YAPILANDIRMASI
a) Gruba Kullanıcı Ekleme
usermod -aG sudo hacker
b) Kullanıcıya Geçiş Yapma
su hacker
c) Sudo Yetkilendirme
vi /etc/sudoers 'e giriyoruz.
Burda kullanıcılara yetki vermek istiyorsam: User privelege specification 'ın altına gelip:
hacker ALL=(ALL:ALL) ALL
Belli başlı uygulamalara izin vermek istiyorsam sonda ki ALL kısmına uygulamanın patch'ini yazıyorum:
hacker ALL=(ALL:ALL) /usr/bin/systemctl
Bir gruba izin vermek istiyorsanız başına bir % işareti koyuyorsunuz devam ediyorsunuz: (Allow group'un altında)
%juniors ALL=(ALL:ALL) ALL
3)TEMEL AĞ KOMUTLARI
systemctl status networking dediğimiz zaman network servisiyle alakalı bilgileri görebiliyorum.
a) Ağ Kartını Yeniden Başlatma
systemctl restart networking network servisi yeniden başlar.
b) Network'e Ait Tüm Bilgileri Öğrenme
ip addr komutu kullanırız. Burdaki LOOPBACK bizim local hostumuzdur. eth0 ise bizim ana yayın yapan network'ümüz yani internete burdan bağlıyız.
c) Ethernet Kartını Disableb Etme
ip link set eth0 down
d) Ethernet Kartını Enabled Etme
ip link set eth0 up
e) Kullandığımız Interface'le İlgili Detaylı Bilgi Alma
ethtool -i eth0
Daha Detaylı Bilgi İçin:
ethtool -s eth0
f) DNS Ayarlarına Girme
cat /etc/resolv.conf
vi /etc/resolv.conf burdan açıp dns ayarlarını değiştirebiliriz.
4)SERVİS YÖNETİMİ
a) Servis Güncel Durum Görüntüleme
systemctl status servisadi
systemctl status sshd
NOT= servisin başında boş bir "o" işareti varsa servis çalışmıyor anlamındadır.
b) Servisi Aktif Etme
systemctl start sshd
c) Servisi Pasif Etme
systemctl stop sshd
d) Servisi Yeniden Başlatma
systemctl restart sshd
NOT= Loaded kısmı disable görünüyor nginx'te bunun anlamı sistem yeniden açıldığında bu servis sistemle beraber açılsın mı yoksa açılmasın mı.. disabled açılmasın anlamında.. Bu da şuna yol açar sistemi her yeniden açtığınızda nginx'e de ayrıca başlatmanız gerekir.
Bu servisi sistemle beraber açmak için:
systemctl enable nginx komutunu veririz. Loaded kısmıda bu durumda enabled olur.
5) SÜREÇ YÖNETİMİ
ps komutu sistemde çalışan süreçleri görüntüler.
a) Detaylı Süreç Görüntüleme
ps aux komutuyla yapılır.
Süreç dediği aslında windows'taki işlemler kısmı.
b) Süreçleri Ağaç Yapısına Getirip Hangisi Hangisinin Altında Çalışıyor Görme
ps axjf komutuyla yapılır.
pstree komutu yine süreç ağacı yapar ayrıntılı süreçleri gösterir birbirine bağlı olarak.
c) Hangi Uygulama İşlemciyi (CPU) Daha Çok Kullanıyor Görme
top komutuyla yapılır. q'ya basınca çıkar.
free komutuyla memory'nin detaylı bilgilerini öğreniriz. Kullanılan alan boş alan gibi.
uptime komutuyla makine ne kadar süreden beri açık onu gösterir.
6) DİZİNLER ARASI GEZİNMEK
/ (slash): işareti ana dizin yapımızdır.
cd : change directory anlamındadır. Dizinler arası geçişi sağlar.
pwd: Nerde hangi dizinde olduğunuzu gösterir.
Örneğin ben şöyle bir geçiş yapmak istiyorum:
cd /yusuf bunu bulamaz neden bulamaz başında slash olduğu için bunu arayacağı yer root dizinir. Ama tunaha root dizininde değil.
Bunu şu şekil yapacağız:
cd /home/yusuf
yada home klasöründeyken
cd yusuf/ şeklinde yaparız.
ll: Size bulunduğunuz dizinin altındaki ulaşılabilir tüm klasörleri görüntülüyor.
ls -l : ll ile aynıdır.
ls -al : Bu ise gizli olan dosyaları da görüntüler.
a) Linux'teki Bir Klasörü Bulmak
find komutu
find komutunda 3 tane parametre vardır:
find yazarsınız / ilgili dizini yazarsınız -name (name parametresinden sonra ki vereceğiniz uygulamayı tarar ) sqlmap
find / -name sqlmap (root dizininde sqlmap'i arıyorum )
find / -name nmap ( root dizininde nmap'i aradım )
Hiç lokasyonunu bilmediğiniz birşeyi root dizininin altında aratabilirsiniz.
find /etc -name nmap ( etc dizininde ara neyi ara nmap'i ara)
find / -name *.py (Kaç tane python dosyası var onu merak ediyorsam)
find / -name *.py | wc -l ( Bu da direk sayıyı verir)
7) DOSYA DİZİN OLUŞTURMA
a) Dosya Okuma
more komutuyla yapılır.
more /usr/share/sqlmap/sqlmap.py sqlmap'in kaynak kodlarını okuyabilirim.
cat /etc/group bu şekilde de dosya okunur.
cat /usr/share/sqlmap/sqlmap.py cat okuyup ekrana yazdırır more'daki gibi ekranda enter'a basmaya gerek kalmaz q'la çıkmak gerekmez.
b) Klasör Oluşturma
mkdir /home/yusuf/Desktop/linuxculer
c) Dosya Oluşturma
touch yusuf.txt
d) Dosya İsmi Değiştirme
cp yusuf.txt lucifer.txt bunu yaparsak yusuf.txt dosyasını silmeden aynı içerikte lucifer.txt dosyasını oluşturuyor. Yani içeriğini kopyalıyor.
e) Bir Dosyayı Başka Bir Yere Kopyalama
cp yusuf.txt /home/yusuf/Desktop
8) DOSYA DİZİN SİLME
rm komutu dosya silme işlemi yapar.
rm yusuf.txt
rm -rf komutu klasörü siler.
rm -rf linuxculer
Başka Lokasyondaki Klasörü Silme
Bunda patchini vererek sileriz.
rm -rf /home/lamer (lamer kullanıcısını sildik.)
9) DİZİN DOSYA TAŞIMA
Dizin ve dosyalar iki farklı komutla taşınıyor:
Biri mv komutu biri cp komutu.
a) Dosya Taşıma
mv /home/yusuf/Desktop/linux_1 /opt/ (linux_1 klasörünü aldık opt'nin altına taşıdık)
Şimdi klasörün içinde ki bir txt dosyasını linux_1'in içine göndericeğim.
mv /home/yusuf/Desktop/linux_2/dosya.pl /opt/linux_1
b) Dosya Kopyalama
cp komutuyla yapıyoruz.
cp /home/yusuf/Desktop/linux_2 /opt bunda hata verir neden çünkü dizin gönderiyoruz.O yüzden -r parametresi kullanıyoruz.
cp -r /home/yusuf/Desktop/linux_2 /opt
cd dosya_2.txt /mnt (dosya taşırken parametre gerekmez)
c) Dosyaları Taşınırken İsim Değiştirme
cp -r linux_2 /mnt/linux_4 (mnt'nin altına linux_2'yi linux_4 ismiyle kopyaladım)
cp dosya_2.txt /mnt/dosya_5.tg (dosya ismi de böyle değişir)
mv komutuylada isim değiştirerek taşıma yapılabilir.
mv linux_3 /mnt/linux_6 ( mnt'nin altına linux_3'ü linux_6 isminde taşıdım)
10) ARDIŞIK KOMUTLAR
Ardışık komutları pipe'la kullanıyoruz ( | ) bu işaret.
Mesela şu şekil bir komut yazalım:
ls -al | grep s nedir bu içinde s geçenleri bana listele anlamında
more komutunda yapalım aynısını
more /etc/sqlmap/sqlmap.conf | grep cookie nedir bana içinde cookie geçenleri getir anlamında.
more /etc/selinux/semanage.conf | grep expand nedir bana expand'in geçtiği satırları getir.
more syslog | grep error hataları errorları listeledim burda.
more syslog | grep 2022 tarih içinde bu şekilde yaparız. Bize 2022 de ki satırları getirir.
Birbirine Bağlı Olan Komutlar
ping google.com && ls -al hem google'a ping attım hem dosyaları listeledim.
İki Komutu Tek Komut Satırında Çalıştırmak
ls -al & ping google.com
Bunların ikisinin farkı şudur:
&& : bunda ilk komut başarılıysa ikinci komutuda çalıştırır. ( Buna birbirine bağlı olan komutlar denir. )
& : bunda biri başarısız olsa da diğer komutu direk çalıştırır.
Örnekler:
mkdir linux & touch linux/dosya.txt
mkdirle linux klasörü oluşturduk. linux klasörünün içinde de dosya.txt'yi oluşturduk.
11) LINUX RUN-LEVEL(SYSTEMD)
Windows'taki güvenli mod gibi modlara run level deniyor.
Run leveller arası geçiş şu şekilde yapılır.
systemctl isolate rescue.target
systemctl isolate default.target asıl run levelimize geri getirir.
Hangi run levelde olduğumuzu görmek için:
systemctl get-default komutu kullanılır.