Sambungan jaringan TCP/IP dapat diblokir, dijatuhkan, dibuka, atau difilter. Tindakan ini umumnya dikendalikan oleh firewall IPtables yang digunakan sistem dan tidak bergantung pada proses atau program apa pun yang mungkin mendengarkan pada port jaringan. Di luar firewall, program atau proses (server atau daemon) mungkin mendengarkan di port atau tidak mendengarkan. Ini dapat diperiksa menggunakan program netstat atau ss. Memeriksa untuk melihat apakah port terbuka, diblokir, dijatuhkan, atau difilter di firewall tidaklah mudah. Ada dua cara untuk melakukannya:
- menguji port secara eksternal
- daftar konfigurasi firewall dan periksa hasilnya
1. Menggunakan netstat untuk melihat proses mendengarkan
Untuk melihat apakah program atau proses mendengarkan pada port, siap menerima paket, gunakan perintah netstat.
# netstat -tulnp
Argumen untuk perintah netstat tercantum di bawah ini:
t – Tampilkan TCP
u – Tampilkan UDP
l – Hanya tampilkan proses mendengarkan (netstat dapat menampilkan mendengarkan dan semua koneksi yang dibuat, yaitu sebagai klien juga)
n – Jangan menyelesaikan nama alamat IP jaringan atau nomor port
p – Tampilkan nama proses yang mendengarkan di port
Misalnya :
# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1254/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1484/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1355/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1562/master tcp 0 0 0.0.0.0:44349 0.0.0.0:* LISTEN 1274/rpc.statd udp 0 0 0.0.0.0:111 0.0.0.0:* 1254/rpcbind udp 0 0 0.0.0.0:631 0.0.0.0:* 1355/cupsd udp 0 0 0.0.0.0:44165 0.0.0.0:* 1274/rpc.statd udp 0 0 0.0.0.0:602 0.0.0.0:* 1274/rpc.statd udp 0 0 0.0.0.0:1001 0.0.0.0:* 1254/rpcbind
2. Menggunakan ss untuk melihat proses mendengarkan
Untuk melihat apakah suatu program atau proses mendengarkan pada port, siap menerima paket, gunakan program ss.
# ss -nutlp
Argumen untuk program ss tercantum di bawah ini:
t – Menampilkan soket TCP.u – Menampilkan soket UDP.
l – Menampilkan soket pendengar
n – Sekarang coba selesaikan nama
p – Tampilkan proses menggunakan soket
Contoh :
# ss -nutlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:111 *:* users:(("rpcbind",1254,6)) udp UNCONN 0 0 *:631 *:* users:(("cupsd",1355,9)) udp UNCONN 0 0 *:44165 *:* users:(("rpc.statd",1274,8)) udp UNCONN 0 0 *:602 *:* users:(("rpc.statd",1274,5)) udp UNCONN 0 0 *:1001 *:* users:(("rpcbind",1254,7)) tcp LISTEN 0 128 *:111 *:* users:(("rpcbind",1254,8)) tcp LISTEN 0 128 *:22 *:* users:(("sshd",1484,3)) tcp LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",1355,7)) tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",1562,12)) tcp LISTEN 0 128 *:44349 *:* users:(("rpc.statd",1274,9))
3. menggunakan lsof untuk menemukan port yang terbuka
Untuk membuat daftar semua port yang terbuka pada suatu sistem, gunakan perintah berikut untuk mencantumkan nama proses dan nomor yang telah membuka port tersebut.
# lsof -i
Berikut adalah contoh keluarannya:
# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbind 1254 rpc 6u IPv4 12592 0t0 UDP *:sunrpc rpcbind 1254 rpc 7u IPv4 12596 0t0 UDP *:1001 rpcbind 1254 rpc 8u IPv4 12597 0t0 TCP *:sunrpc (LISTEN) rpc.statd 1274 rpcuser 5r IPv4 12784 0t0 UDP *:xmlrpc-beep rpc.statd 1274 rpcuser 8u IPv4 12788 0t0 UDP *:44165 rpc.statd 1274 rpcuser 9u IPv4 12792 0t0 TCP *:44349 (LISTEN) cupsd 1355 root 7u IPv4 13147 0t0 TCP localhost:ipp (LISTEN) cupsd 1355 root 9u IPv4 13150 0t0 UDP *:ipp sshd 1484 root 3u IPv4 13707 0t0 TCP *:ssh (LISTEN) master 1562 root 12u IPv4 13923 0t0 TCP localhost:smtp (LISTEN) sshd 1657 root 3r IPv4 14745 0t0 TCP 192.168.1.50:ssh->192.168.1.101:49549 (ESTABLISHED)
Menguji port secara eksternal
Aplikasi telnet dapat digunakan untuk menguji konektivitas soket jaringan sederhana, tetapi hanya untuk koneksi TCP, bukan UDP. Misalnya, jika saya ingin melihat apakah port TCP 80 pada sistem siap menerima koneksi, saya menentukan alamat IP dan port untuk telnet:
# telnet 192.168.1.55 80 Trying 192.168.1.55... Connected to example.redhat.com (192.168.1.55). Escape character is '^]'.
Jika server tidak mendengarkan, responsnya berbeda:
# telnet 10.0.0.25 80 Trying 10.0.0.25... telnet: connect to address 10.0.0.25: Connection refused telnet: Unable to connect to remote host: Connection refused
- Ini menunjukkan bahwa koneksi ditolak secara aktif. Subsistem TCP menerima paket, memeriksanya, dan menemukan bahwa itu adalah permintaan untuk membuka soket di port 80, melihat bahwa tidak ada proses yang siap menerima koneksi dan merespons dengan penolakan.
- Jika firewall dikonfigurasi untuk memblokir atau memfilter koneksi, telnet akan menampilkan sesuatu yang sangat mirip dengan di atas, meskipun ada proses yang siap menerima koneksi.
- Jika firewall dikonfigurasi untuk memutuskan koneksi, kami tidak akan melihat respons sama sekali dan telnet akan habis waktu sebagai gantinya:
# telnet 10.0.0.25 80 Trying 10.0.0.25... telnet: connect to address 10.0.0.25: Connection timed out
Mencantumkan aturan firewall
Di Red Hat Enterprise Linux, aturan firewall dapat dicantumkan dengan menggunakan perintah layanan:
# service iptables status
Atau dengan menggunakan perintah iptables:
# iptables -xvn -L