giriiş
Port, bir iletişim uç noktasıdır. Bir işletim sisteminde, port belirli işlemler veya ağ hizmetleri için veri paketlerine açılır veya kapatılır.
Genellikle portlar, kendilerine atanmış belirli bir ağ hizmetini tanımlar. Bu, hizmeti farklı bir port kullanacak şekilde manuel olarak yapılandırarak değiştirilebilir, ancak genel olarak varsayılan değerler kullanılabilir.
İlk 1024 port (0 ila 1023 arası port numaraları) bilinen port numaraları olarak adlandırılır ve en yaygın hizmetler için ayrılmıştır. Bunlar arasında SSH (port 22), HTTP (port 80) ve HTTPS (port 443) yer alır.
1024'ün üzerindeki port numaralarına geçici portlar denir.
- 1024 ile 49151 arasındaki portlar kayıtlı/kullanıcı portları olarak adlandırılır.
- 49152 ile 65535 arasındaki portlar dinamik/özel portlar olarak adlandırılır.
Bu eğitimde, Linux'ta geçici bir port açacaksınız, çünkü en yaygın hizmetler bilinen portları kullanır.
Ön koşullar
- Terminal kullanımına aşinalık
Tüm açık portların listesi
Linux'ta bir portu açmadan önce, tüm açık portların listesini kontrol etmeli ve bu listede olmayan geçici bir portu seçerek açmalısınız.
Ağ katmanında paket aktarımı için en yaygın protokoller olan TCP ve UDP dahil olmak üzere tüm açık portları listelemek için netstat komutunu kullanın.
netstat -lntuBu şu çıktıyı verecektir:
- Tüm dinleme soketleri (-l)
- Bağlantı noktası numarası (-n)
- TCP portları (-t)
- UDP portları (-u)
Output
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
tcp6 0 0 ::1:6379 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:* LISTENAçık portlara sahip dinleme soketlerini listelemek için `ss` komutunu kullanarak tutarlı bir çıktı aldığınızı doğrulayın:
ss -lntuBu şu çıktıyı verecektir:
Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::1]:5432 0.0.0.0:*
tcp LISTEN 0 128 [::1]:6379 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 0.0.0.0:*Bu, netstat ile hemen hemen aynı sayıda açık port sayısı sağlar.
Linux'ta TCP bağlantılarına izin vermek için bir port açın.
Şimdi, kapalı bir portu açın ve TCP bağlantılarını dinlemesini sağlayın.
Bu eğitimde, 4000 numaralı portu açacaksınız. Ancak, sisteminizde bu port açık değilse, kapalı olan başka bir portu da kullanabilirsiniz. Sadece 1023'ten büyük olduğundan emin olun.
Netstat komutunu kullanarak 4000 numaralı portun kullanımda olmadığından emin olun:
netstat -na | grep :4000Veya ss komutu:
ss -na | grep :4000Çıktı boş bırakılmalıdır, bu nedenle şu anda kullanımda olmadığından emin olun, böylece iptables sistem güvenlik duvarına manuel olarak port kuralları ekleyebilirsiniz.
Ubuntu kullanıcıları ve ufw tabanlı sistemler için
Sorunsuz bir güvenlik duvarı için ufw adlı komut satırı istemcisini kullanın.
Komutlarınız şunlara benzer:
sudo ufw allow 4000CentOS ve güvenlik duvarı tabanlı sistemler için
firewalld servis sağlayıcısı için firewall-cmd komut satırı istemcisini kullanın.
Komutlarınız şunlara benzer:
firewall-cmd --add-port=4000/tcpDiğer Linux dağıtımları için
iptables kullanarak sistemin IPv4 paket filtreleme kurallarını değiştirebilirsiniz.
iptables -A INPUT -p tcp --dport 4000 -j ACCEPTYeni açılan portu TCP bağlantıları için test edin.
Yeni bir TCP portunu başarıyla açtığınıza göre, şimdi onu test etme zamanı.
Öncelikle, netcat'i (nc) başlatın ve 4000 numaralı portta (-p) dinleme yapın (-l), bu sırada ls komutunun çıktısını bağlı her istemciye gönderin:
ls | nc -l -p 4000Şimdi, bir istemci 4000 numaralı portta bir TCP bağlantısı açtıktan sonra, `ls` komutunun çıktısını alacaktır. Şimdilik bu oturumu kapatın.
Aynı cihazda başka bir terminal oturumu açın.
TCP portunu açtığınıza göre, TCP bağlantısını kontrol etmek için telnet kullanın. Komut yoksa, paket yöneticinizi kullanarak yükleyin.
Sunucu IP adresinizi ve port numaranızı (bu örnekte 4000) girin ve şu komutu çalıştırın:
telnet localhost 4000Bu komut, localhost üzerinde 4000 numaralı porttan bir TCP bağlantısı açmaya çalışır.
Dinleme programı (nc) ile bağlantı kurulduğunu gösteren buna benzer bir çıktı alacaksınız:
Output
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
while.shls komutunun çıktısı (bu örnekte while.sh) istemciye de gönderilir ve başarılı bir TCP bağlantısının kurulduğunu gösterir.
Portun açık olup olmadığını kontrol etmek için nmap kullanın (-p):
nmap localhost -p 4000Bu komut açık portları kontrol eder:
Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
4000/tcp open remoteanything
Nmap done: 1 IP address (1 host up) scanned in 0.25 secondsBağlantı noktası açıldı. Linux sisteminizde yeni bir bağlantı noktasını başarıyla açtınız.
Ancak bu sadece geçici bir durumdur, çünkü sistem her yeniden başlatıldığında değişiklikler sıfırlanır.
Sürdürülebilir kurallar
Bu makalede sunulan yaklaşım, güvenlik duvarı kurallarını yalnızca sistem kapatılana veya yeniden başlatılana kadar geçici olarak günceller. Bu nedenle, yeniden başlatmanın ardından aynı bağlantı noktasını yeniden açmak için aynı adımların tekrarlanması gerekir.
ufw güvenlik duvarı için
ufw kuralları yeniden başlatmada sıfırlanmaz. Bunun nedeni, önyükleme işlemine entegre edilmiş olması ve çekirdeğin uygun yapılandırma dosyalarını uygulayarak ufw kullanarak güvenlik duvarı kurallarını saklamasıdır.
Güvenlik duvarı için
Portu kalıcı güvenlik duvarı yapılandırmasına eklemek ve değişiklikleri hemen uygulamak istiyorsanız, --permanent ve --reload bayraklarını kullanabilirsiniz:
sudo firewall-cmd --permanent --add-port=4000/tcp
sudo firewall-cmd --reloadiptables için
Yapılandırma kurallarını kaydetmeniz ve iptables-persistent komutunu kullanmanız gerekiyor.
Sonuç
Bu eğitimde, Linux'ta yeni bir port açmayı ve gelen bağlantılar için yapılandırmayı öğrendiniz. Ayrıca netstat, ss, telnet, nc ve nmap komutlarını da kullandınız.









