Yanıtlar:
Şu anda portları kullanarak kontrol etmek için "netstat" kullanın.
netstat -antp Proto Recv-Q Send-Q Yerel Adres Yabancı Adres Durumu PID / Program adı tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* LİSTEN 16297 / adlandırılmış tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LİSTEN 16297 / adlandırılmış tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LİSTEN 16297 / adlandırılmış tcp 0 0 127.0.0.1:53 0.0.0.0:* LİSTEN 16297 / isimli
Bu (netstat) en hızlı çözümdür ...
netstat -lnt
... ama bu size daha fazla kontrol sağlar (hız pahasına (bazen çok fazla hız)) ...
lsof -n -i -a -u www-data
Örneğin, yukarıdaki örnek , Apache ( ) kullanıcısına ait olan LISTEN
VE ( -a
) durumundaki tüm TCP bağlantı noktalarını açık ve gösterir www-data
.
Tüm iyi cevaplar.
Ancak söz konusu bilgisayara giriş yapıp yapmadığınızdan bahsetmiyorsunuz. P
Değilse, nmap senin arkadaşın.
yeni başlayanlar için deneyin:
nmap -O
target
amap ayrıca, banner sayfalarını alarak sunucu yazılımını tahmin etmeye çalışacak iyi bir seçimdir.
yeni başlayanlar için deneyin:
amap
target
1-6000
Deneyin
lsof -i :<port number>
Herhangi bir sonuç alırsanız, bir şeyler dinler ve sınırlar, örneğin;
# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1833 nobody 3u IPv4 51091229 0t0 TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx 1833 nobody 5u IPv4 46221856 0t0 TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx 1833 nobody 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 1833 nobody 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
nginx 1833 nobody 14u IPv4 46221857 0t0 TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx 1833 nobody 15u IPv4 51091030 0t0 TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx 11832 root 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 11832 root 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
netstat -tlnp
İstenilen t
cp portlarını göster l
, n
yalnızca kullanıcılara göster (isimleri çözme - daha hızlı olmasını sağlar) ve p
dinleyen işi göster ( p
sadece root isen)
netstat -ulnp
İstenilen u
dp portlarını göster l
, n
yalnızca kullanıcılara göster (isimleri çözme - daha hızlı olmasını sağlar) ve p
dinleyen işi göster ( p
sadece root isen)
netstat -unp
u
Açık olan ancak dinlemeyen dp portlarını göster , n
yalnızca kullanıcılara göster (isimleri çözme - daha hızlı olmasını sağlar) ve p
dinleyen işi göster ( p
sadece root iseniz)
netstat -an
a
Kullanımdaki tüm bağlantı noktalarını göster , n
yalnızca üyelere göster - adları çözümlemeyin
lsof -i <proto>@<host>:<port>
Örneğin
lsof -i tcp@localhost:25
localhost 25 / TCP portunda bir şey dinleyip dinlemediğini görmek için veya
lsof -i tcp@0.0.0.0:636
Herhangi bir ana bilgisayar / arabirim için yerel ya da uzak ya dinleyen (yerel) ya da bağlı (yerel ya da uzak) soket olup olmadığını görmek için
Hangi protokolü kullanmak istediğinizden bahsetmiyorsunuz, yani TCP veya UDP - ve ayrıca “port” un sistemin yuvaları ayırmak için desteklediği kadar ayrıntılı olmadığını anlamak da önemlidir. Örneğin, sisteminizde birden fazla IP adresi varsa, 80 numaralı bağlantı noktası tüm IP adreslerinde kullanılıyor olabilir (uygulama "0.0.0.0" veya "::" ya da arka arkaya gelen her IP adresine bağlı olabilir) veya Yalnızca bu IP adreslerinin bir alt kümesinde kullanın.
Bir portun / adresin serbest ve müsait olup olmadığını belirlemenin en iyi ve en kesin yolu ona bağlanmaya çalışmaktır. Netcat bunun için kullanışlıdır.
nc-l [-s abcd] -p NN
TCP NN bağlantı noktasına bağlanmaya çalışacaktır (isteğe bağlı, varsayılan tüm adresler olacaktır) abcd UDP'de aynı yapmak için -u seçeneğini ekleyin.
Ardından, bağlantı noktasının istediğiniz gibi gerçekten "açık" olup olmadığını anlamak için potansiyel güvenlik duvarı kurallarına bakmaya başlamanız gerekir. Yine en kolay şey, limana bağlanmayı denemek. Sunucuda yukarıdaki gibi netcat kullanın ve bir istemciden açtığınız bağlantı noktasına bağlanmayı denemek için netcat kullanın.
nc [-u] abcd NN
-u bayrağı belirtilmişse UDP kullanarak abcd'deki NN bağlantı noktasına bağlanacaktır. Daha sonra istemci sonuna girdi yazabilirsiniz ve sunucuda görünmelidir. Olmazsa, sisteme ve ağa özel araçlara bakmanız gerekir.
Bu tek astar, kullanılan tüm TCP bağlantı noktalarının bir listesini alır. Ubuntu ve OS X'te bash olarak çalışır.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
Listede herhangi bir ekstra bilgi olmadan satır başına bir port bulunacaktır.
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
Bunu yapmanın birçok yolu bana sorunları verdi çünkü linux ve osx üzerinde çalışmadılar, ve / veya liman işçisi tarafından kullanılan portları veya kök tarafından sahip olunan işlemleri göstermedikleri için. Şimdi sadece bu javascript programını kullanıyorum:
(Düğümün kurulu olduğundan ve programın node
yalnızca nodejs
programla aynı şekilde değiştirilmediğinden emin olun )
aşağıdakileri check-port
yolunuzda veya projenizde adı verilen bir dosyaya kaydedin.
#!/usr/bin/env node
var http = require('http');
var app = new http.Server();
app.listen(process.argv[2], () => {
process.exit(0)
});
izinleri ayarla
chmod +x path/to/check-port
yolundan kaç
check-port 8080
veya aynı dizinden koş
./check-port 8080
Şimdiye kadar oldukça iyi çalışıyor.