Ana içeriğe geç
Kısım 09 - Ağ Kurulumuna Dalış
  1. Linux Bootcamp/

Kısım 09 - Ağ Kurulumuna Dalış

· ·
NKÜ Siber Güvenlik Topluluğu
Yazar
NKÜ Siber Güvenlik Topluluğu
Kampüste dijital dönüşüm. Sen de bize katıl!
Yazar
Yiğit Altınay
Bir kaplumbağa olsaydım Fransızca konuşurdum.

9. Kısım - Ağ Kurulumuna Dalış
#

GİRİŞ
#

Sunucunuz şu anda uzaktan giriş için sshd ve web erişimi için apache2 hizmetlerini çalıştırıyor. Bu hizmetler, TCP/IP “portları” 22 ve 80 üzerinden “dünyaya açık” durumda.

Bir sistem yöneticisi olarak, sunucularınızdaki açık portları bilmelisiniz çünkü her açık port potansiyel bir saldırı alanıdır. Uygun izleme ve kontrol mekanizmalarını uygulayabilmelisiniz.

BUGÜNKÜ GÖREVLERİNİZ
#

  • Web sunucunuzu bir güvenlik duvarı kullanarak güvenli hale getirin.

TALİMATLAR
#

Öncelikle, sunucunuzda hangi portların açık olduğunu belirlemenin birkaç yoluna göz atalım:

  • ss - “socket status” (soket durumu) anlamına gelir ve eski netstat aracının yerini almıştır.
  • nmap - Bu “port tarayıcısı” genellikle varsayılan olarak yüklü gelmez.

ss komutuyla çok çeşitli seçenekler kullanılabilir, ancak öncelikle şu komutu deneyin:

ss -ltpn

Komut çıktısı, hangi arayüzlerde hangi portların açık olduğunu gösterir:

sudo ss -ltp
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process
LISTEN  0       4096     127.0.0.53%lo:53        0.0.0.0:*      users:(("systemd-resolve",pid=364,fd=13))
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*      users:(("sshd",pid=625,fd=3))
LISTEN  0       128               [::]:22              [::]:*      users:(("sshd",pid=625,fd=4))
LISTEN  0       511                  *:80                *:*      users:(("apache2",pid=106630,fd=4),("apache2",pid=106629,fd=4),("apache2",pid=106627,fd=4))

Bu çıktı, 80 ve 22 numaralı portların tüm yerel IP adresleri üzerinden “dünyaya açık” olduğunu ve 53 numaralı portun (DNS) yalnızca yerel bir adreste açık olduğunu gösterir.

Şimdi nmap aracını şu komutla yükleyin:

apt install nmap

Bu araç farklı çalışır: 1.000’den fazla portu etkin bir şekilde tarar ve açık olup olmadıklarını kontrol eder. Genellikle uzak makineleri taramak için kullanılır - bunu yapmayın - ancak kendi sunucunuzu kontrol etmek için çok kullanışlıdır:

nmap localhost

Örnek çıktı:

Starting Nmap 5.21 ( http://nmap.org ) at 2013-03-17 02:18 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00042s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

22 numaralı port ssh hizmetini sağlıyor, bu yüzden açık olacak. Apache çalışıyorsa, 80 numaralı port (http) da açık olacaktır. Her açık port, “saldırı yüzeyini” artırır. Bu nedenle, ihtiyaç duymadığınız hizmetleri kapatmak en iyi uygulamadır.

Ancak “localhost” (127.0.0.1) döngüsel ağ cihazıdır. Yalnızca buna bağlı hizmetler sadece yerel makinede kullanılabilir. Gerçekte dış dünyaya neyin açık olduğunu görmek için önce ip a komutunu kullanarak ağ kartınızın IP adresini bulun ve ardından bu adresi nmap ile tarayın.

Sunucu Güvenlik Duvarı
#

Linux çekirdeği, “netfilter” adlı yerleşik bir güvenlik duvarı işlevine sahiptir. Bunu iptables veya daha yeni nftables gibi araçlarla yapılandırır ve sorgularız. Bunlar güçlü ancak karmaşıktır - bu yüzden daha kullanıcı dostu bir alternatif olan ufw (uncomplicated firewall) kullanacağız.

Öncelikle şu komutla mevcut kuralları listeleyin:

sudo iptables -L

Örnek çıktı:

Chain INPUT (policy ACCEPT)
target  prot opt source             destination

Chain FORWARD (policy ACCEPT)
target  prot opt source             destination

Chain OUTPUT (policy ACCEPT)
target  prot opt source             destination

Yani, herhangi bir trafik kabul ediliyor.

ufw kullanımı çok basittir. Ubuntu 8.04 LTS sonrası sürümlerde varsayılan olarak mevcuttur, ancak yüklemeniz gerekirse:

sudo apt install ufw

SSH’ye izin verip HTTP’ye izin vermemek için:

sudo ufw allow ssh
sudo ufw deny http

DİKKAT! SSH’ye açıkça izin vermeyi unutmayın, yoksa sunucunuza erişiminizi kaybedersiniz! İzin verilmezse güvenlik duvarı varsayılan olarak portu reddeder.

Bu ayarları etkinleştirin:

sudo ufw enable

Şimdi sudo iptables -L komutunu çalıştırarak ayrıntılı kuralları görebilirsiniz. Çıktıda şu kurallardan biri olmalıdır:

DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Bu, Apache hala çalışıyor olsa da artık “dış dünya” tarafından erişilemez olacağı anlamına gelir. Tüm gelen http/80 trafiği reddedilecektir. Bunu test edin! Muhtemelen şu komutlarla işlemi geri almak isteyeceksiniz:

sudo ufw allow http
sudo ufw enable

Gereksiz hizmetleri kapatmak genellikle yeterli bir koruma sağlar, ancak güvenlik duvarı ihtiyacı, yapılandırdığınız sunucunun türüne bağlıdır. Umarım bu oturum size temel kavramları anlamada yardımcı olmuştur.

Bu test/öğrenme sunucusu için http/80 erişimini tekrar açın. Böylece access.log dosyalarıyla gerçek bir sunucuyu yönetmenin nasıl bir şey olduğunu deneyimleyebilirsiniz.

Standart Dışı Portlar Kullanmak
#

Bazı durumlarda hizmetleri standart olmayan portlarda sunmak mantıklı olabilir. Örneğin ssh/22 için bu yaygın bir öneridir ve /etc/ssh/sshd_config dosyasında yapılandırılarak gerçekleştirilir.

Bazıları bunu “gizlilik yoluyla güvenlik” olarak adlandırır. Ancak bu yöntem, rastgele saldırıları etkili bir şekilde önler. Yine de, AWS kullanıyorsanız ve SSH portunu 2222 olarak değiştirirseniz, EC2 güvenlik grubunuzda bu portu açmanız gerektiğini unutmayın.

Genişletme
#

Erişim engellendikten sonra bile kimin giriş yapmaya çalıştığını bilmek yararlı olabilir. Aşağıdaki tartışmalara göz atın:

KAYNAKLAR
#

Related

Kısım 11 - Bir şeyler bulmak...
Kısım 06 - "vim" ile Düzenleme
Kısım 07 - Sunucu ve Servisleri
Kısım 12 - Dosya Aktarımı
Kısım 04 - Yazılım Kurulumu ve Dosya Yapısının Keşfi
Kısım 05 - More veya Less...