Cara Menggunakan Perintah Sockstat dan Netstat di FreeBSD

Terbit: Perbarui:
Tags


Artikel ini akan menjelaskan cara menggunakan perintah sockstat dan netstat pada FreeBSD. Untuk memudahkan pembaca memahami kedua perintah dasar ini, kami mencoba menulis artikel ini secara sederhana tanpa mengurangi detail dalam menjelaskan kedua perintah ini.

1. Memahami Sockstat dan Netstat

Bagi seorang administrator sistem, kedua perintah ini sangatlah penting, bayangkan saja jika kita berhadapan dengan komputer server, kita pasti tidak akan mengetahui aplikasi apa saja yang sedang dijalankan oleh komputer server tersebut. Dengan bantuan sockstat dan netstat, seorang administrator sistem dapat mengetahui port socket dan aplikasi/program yang sedang dijalankan oleh komputer server, sehingga kita dapat melakukan perawatan sesuai dengan aplikasi yang sedang berjalan di komputer server tersebut.

Sockstat merupakan utilitas baris perintah serbaguna yang digunakan untuk menampilkan socket port jaringan dan program yang terbuka atau sedang digunakan di FreeBSD. Jika Anda menggunakan sistem operasi FreeBSD, perintah sockstat tidak perlu diinstal. Secara default Sockstat sudah terinstal di FreeBSD, jadi Anda tinggal menggunakannya saja.

Perintah sockstat juga dapat mencantumkan socket yang terbuka berdasarkan versi protokol, status koneksi, dan di port mana daemon atau program tersebut sedang berjalan. Dengan sockstat, Anda juga dapat menampilkan socket komunikasi antarproses yang dikenal sebagai socket domain Unix atau IPC. Perintah Sockstat yang dikombinasikan dengan grep filter atau dengan utilitas awk through pipeline ternyata menjadi alat yang ampuh untuk manajemen jaringan lokal.

Sementara itu, netstat digunakan untuk melihat status jaringan termasuk port terbuka, koneksi TCP/UDP, dan lain-lain. Perintah statistik jaringan (netstat) juga dapat digunakan untuk pemecahan masalah dan konfigurasi, yang juga dapat berfungsi sebagai alat pemantauan untuk koneksi melalui jaringan. Koneksi masuk dan keluar, tabel perutean, port pembacaan, dan statistik protokol yang digunakan.

2. Cara Menggunakan Sockstat

Sebelum kita mempraktikkan cara menggunakan sockstat, berikut adalah daftar perintah yang dapat Anda gunakan untuk bekerja dengan sockstat.

DESCRIPTION
     The sockstat command lists open Internet or UNIX domain sockets.

     The following options are available:

     -4          Show AF_INET (IPv4) sockets.

     -6          Show AF_INET6 (IPv6) sockets.

     -C          Display the congestion control module, if applicable.  This
                 is currently only implemented for TCP.

     -c          Show connected sockets.

     -i          Display the inp_gencnt.

     -j jail     Show only sockets belonging to the specified jail ID or name.

     -L          Only show Internet sockets if the local and foreign addresses
                 are not in the loopback network prefix 127.0.0.0/8, or do not
                 contain the IPv6 loopback address ::1.

     -l          Show listening sockets.

     -n          Do not resolve numeric UIDs to user names.

     -p ports    Only show Internet sockets if the local or foreign port
                 number is on the specified list.  The ports argument is a
                 comma-separated list of port numbers and ranges specified as
                 first and last port separated by a dash.

     -P protocols
                 Only show sockets of the specified protocols.  The protocols
                 argument is a comma-separated list of protocol names, as they
                 are defined in protocols(5).

     -q          Quiet mode, do not print the header line.

     -S          Display the protocol stack, if applicable.  This is currently
                 only implemented for TCP.

     -s          Display the protocol state, if applicable.  This is currently
                 only implemented for SCTP and TCP.

     -U          Display the remote UDP encapsulation port number, if
                 applicable.  This is currently only implemented for SCTP and
                 TCP.

     -u          Show AF_LOCAL (UNIX) sockets.

     -v          Verbose mode.

     -w          Use wider field size for displaying addresses.

Berikut ini adalah contoh penggunaan perintah sockstat.

a. Meliihat semua port yang terbuka

root@ns1:~ # sockstat
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       45933 4  tcp4   192.168.5.2:22        192.168.5.4:59217
root     sshd       45933 8  stream (not connected)
root     sshd       815   4  tcp6   *:22                  *:*
root     sshd       815   5  tcp4   *:22                  *:*
unbound  unbound    760   3  udp4   192.168.5.2:53        *:*
unbound  unbound    760   4  tcp4   192.168.5.2:53        *:*
unbound  unbound    760   5  udp4   192.168.5.2:853       *:*
unbound  unbound    760   6  tcp4   192.168.5.2:853       *:*
_tor     tor        1014  5  tcp4   192.168.5.2:9050      *:*
_tor     tor        1014  6  udp4   192.168.5.2:9053      *:*
root     syslogd    751   6  udp6   *:514                 *:*
root     syslogd    751   7  udp4   *:514                 *:*
ldap     slapd      542   6  stream /var/run/openldap/ldapi
ldap     slapd      542   7  tcp4   *:389                 *:*

Pada contoh di atas kita dapat menjelaskannya sebagai berikut.

  • USER: Pemilik atau pengguna yang memiliki soket/port.
  • COMMAND: Program yang membuka soket/port.
  • PID: ID proses dari perintah yang memiliki soket.
  • FD: Nomor deskriptor berkas soket.
  • PROTO: Protokol transport (biasanya TCP/UDP) dikaitkan dengan soket terbuka atau jenis soket dalam kasus soket domain unix (datagram, aliran, atau seqpac) untuk soket UNIX.
  • LOCAL ADDRESS: Alamat IP dan port yang digunakan oleh soket.
  • FOREIGN ADDRESS: Alamat IP jarak jauh tempat soket terhubung.

b. Melihat Port IP4 Yang Terbuka

root@ns1:~ # sockstat -4
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       922   4  tcp4   192.168.5.2:22        192.168.5.4:55525
www      httpd      917   4  tcp4   *:80                  *:*
www      httpd      916   4  tcp4   *:80                  *:*
www      httpd      915   4  tcp4   *:80                  *:*
www      httpd      914   4  tcp4   *:80                  *:*
www      httpd      913   4  tcp4   *:80                  *:*
root     httpd      894   4  tcp4   *:80                  *:*
root     sshd       828   5  tcp4   *:22                  *:*
root     syslogd    760   7  udp4   *:514                 *:*
ldap     slapd      313   7  tcp4   *:389                 *:*

c. Menampilkan Port IP6 Yang Terbuka

root@ns1:~ # sockstat -6
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
www      httpd      917   3  tcp6   *:80                  *:*
www      httpd      916   3  tcp6   *:80                  *:*
www      httpd      915   3  tcp6   *:80                  *:*
www      httpd      914   3  tcp6   *:80                  *:*
www      httpd      913   3  tcp6   *:80                  *:*
root     httpd      894   3  tcp6   *:80                  *:*
root     sshd       828   4  tcp6   *:22                  *:*
root     syslogd    760   6  udp6   *:514                 *:*

d. Melihat Protokol TCP/UDP Yang Terbuka

root@ns1:~ # sockstat -P tcp
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       922   4  tcp4   192.168.5.2:22        192.168.5.4:55525
www      httpd      917   3  tcp6   *:80                  *:*
www      httpd      917   4  tcp4   *:80                  *:*
www      httpd      915   3  tcp6   *:80                  *:*
www      httpd      915   4  tcp4   *:80                  *:*
www      httpd      914   3  tcp6   *:80                  *:*
www      httpd      914   4  tcp4   *:80                  *:*
www      httpd      913   3  tcp6   *:80                  *:*
www      httpd      913   4  tcp4   *:80                  *:*
root     httpd      894   3  tcp6   *:80                  *:*
root     httpd      894   4  tcp4   *:80                  *:*
root@ns1:~ # sockstat -P udp
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     syslogd    760   6  udp6   *:514                 *:*
root     syslogd    760   7  udp4   *:514                 *:*

e. Melihat Port TCP/UDP Tertentu

root@ns1:~ # sockstat -P tcp -p 443
root@ns1:~ # sockstat -P udp -p 53
root@ns1:~ # sockstat -P tcp -p 443,53,80,21

f. Meihat Port Terbuka dan Terhubung

root@ns1:~ # sockstat -P tcp -p 22 -c
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       922   4  tcp4   192.168.5.2:22        192.168.5.4:55525

root@ns1:~ # sockstat -P tcp -c
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       922   4  tcp4   192.168.5.2:22        192.168.5.4:55525

g. Melihat Nama Soket dan Pipe UNIX

root@ns1:~ # sockstat -u
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sshd       922   8  stream (not connected)
root     syslogd    760   8  dgram  /var/run/log
root     syslogd    760   9  dgram  /var/run/logpriv
root     devd       549   4  stream /var/run/devd.pipe
root     devd       549   5  seqpac /var/run/devd.seqpacket.pipe
root     devd       549   8  dgram  -> /var/run/logpriv
ldap     slapd      313   6  stream /var/run/openldap/ldapi

h. Melihat Program/Aplikasi yang Membuka Port

root@ns1:~ # sockstat -46 | grep nginx
root@ns1:~ # sockstat -46 | grep ssh
root@ns1:~ # sockstat -46 | grep unbound

i. Melihat Program/Aplikasi yang Terhubung dan Port yang Terbuka

root@ns1:~ # sockstat -46 -c| grep nginx
root@ns1:~ # sockstat -46 -c | grep ssh

Selain perintah-perintah yang dicontohkan di atas, Anda juga dapat mencoba perintah-perintah lain, seperti yang berikut ini.

root@ns1:~ # sockstat -46 -s -P TCP -p 22 -c
root@ns1:~ # sockstat -46 -c | egrep '22|389' | awk '{print $7}' | uniq -c | sort -nr
root@ns1:~ # sockstat -46 -c -p 22,389 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr
root@ns1:~ # sockstat -46 -l -s
root@ns1:~ # sockstat -4 -l | grep :22

3. Cara Menggunakan Netstat

Sebelum kita mempraktikkan cara menggunakan sockstat, berikut adalah daftar perintah yang dapat Anda gunakan untuk bekerja dengan netstat.

usage: netstat [-46AaCcLnRSTWx] [-f protocol_family | -p protocol]
               [-M core] [-N system]
       netstat -i | -I interface [-46abdhnW] [-f address_family]
               [-M core] [-N system]
       netstat -w wait [-I interface] [-46d] [-M core] [-N system]
               [-q howmany]
       netstat -s [-46sz] [-f protocol_family | -p protocol]
               [-M core] [-N system]
       netstat -i | -I interface -s [-46s]
               [-f protocol_family | -p protocol] [-M core] [-N system]
       netstat -m [-M core] [-N system]
       netstat -B [-z] [-I interface]
       netstat -r [-46AnW] [-F fibnum] [-f address_family]
               [-M core] [-N system]
       netstat -rs [-s] [-M core] [-N system]
       netstat -g [-46W] [-f address_family] [-M core] [-N system]
       netstat -gs [-46s] [-f address_family] [-M core] [-N system]
       netstat -Q

Berikut ini adalah contoh penggunaan perintah sockstat.

a. Melihat semua Port dan Koneksi

root@ns1:~ # netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)    
tcp4       0     44 ns1.ssh                192.168.5.4.55525      ESTABLISHED
tcp4       0      0 *.http                 *.*                    LISTEN     
tcp6       0      0 *.http                 *.*                    LISTEN     
tcp4       0      0 *.ssh                  *.*                    LISTEN     
tcp6       0      0 *.ssh                  *.*                    LISTEN     
tcp4       0      0 *.ldap                 *.*                    LISTEN     
udp4       0      0 *.syslog               *.*                    
udp6       0      0 *.syslog               *.*                    
Active UNIX domain sockets
Address          Type   Recv-Q Send-Q            Inode             Conn             Refs          Nextref Addr
fffff80012530600 stream      0      0                0                0                0                0
fffff80012530c00 stream      0      0 fffff80012b6b7a0                0                0                0 /var/run/devd.pipe
fffff80012530d00 stream      0      0 fffff80012b697a0                0                0                0 /var/run/openldap/ldapi
fffff8001255ba00 dgram       0      0                0 fffff800126e8b00                0                0
fffff800126e8b00 dgram       0      0 fffff80012a201e8                0 fffff8001255ba00                0 /var/run/logpriv
fffff80012530700 dgram       0      0 fffff80012a205b8                0                0                0 /var/run/log
fffff80012530b00 seqpac      0      0 fffff80012b6b3d0                0                0                0 /var/run/devd.seqpacket.pipe

b. Melihat Koneksi Yang Terbuka

root@ns1:~ # netstat -na -f inet
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)    
tcp4       0     44 192.168.5.2.22         192.168.5.4.15414      ESTABLISHED
tcp4       0      0 *.80                   *.*                    LISTEN     
tcp4       0      0 *.22                   *.*                    LISTEN     
tcp4       0      0 *.389                  *.*                    LISTEN     
udp4       0      0 *.514                  *.*                    

c. Menampilkan Memori Kernel yang Digunakan oleh Jaringan

root@ns1:~ # netstat -m
257/1018/1275 mbufs in use (current/cache/total)
256/506/762/109049 mbuf clusters in use (current/cache/total/max)
256/506 mbuf+clusters out of packet secondary zone in use (current/cache)
0/508/508/54524 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/16155 9k jumbo clusters in use (current/cache/total/max)
0/0/0/9087 16k jumbo clusters in use (current/cache/total/max)
576K/3298K/3874K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 sendfile syscalls
0 sendfile syscalls completed without I/O request
0 requests for I/O initiated by sendfile
0 pages read by sendfile as part of a request
0 pages were valid at time of a sendfile request
0 pages were valid and substituted to bogus page
0 pages were requested for read ahead by applications
0 pages were read ahead by sendfile
0 times sendfile encountered an already busy page
0 requests for sfbufs denied
0 requests for sfbufs delayed

d. Menampilkan Statistik Jaringan

root@ns1:~ # netstat -i
Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
nfe0   1500 <Link#1>      00:24:21:88:69:24    65877     0     0      322     0     0
nfe0      - 192.168.5.0/2 ns1                    259     -     -      317     -     -
lo0   16384 <Link#2>      lo0                      0     0     0        0     0     0
lo0       - localhost     localhost                0     -     -        0     -     -
lo0       - fe80::%lo0/64 fe80::1%lo0              0     -     -        0     -     -
lo0       - your-net      localhost                0     -     -        0     -     -

e. Menampilkan Informasi Soket

root@ns1:~ # netstat -lx
Active Internet connections
Proto Recv-Q Send-Q Local Address                                 Foreign Address                               R-MBUF S-MBUF R-CLUS S-CLUS R-HIWA S-HIWA R-LOWA S-LOWA R-BCNT S-BCNT R-BMAX S-BMAX   rexmt persist    keep    2msl  delack rcvtime
tcp4       0     44 ns1.ssh                                       192.168.5.4.15414                                  0      1      0      0  65700  33580      1   2048      0    256 525600 268640    0.23    0.00 5321.34    0.00    0.00    0.00
Active UNIX domain sockets
Address          Type   Recv-Q Send-Q            Inode             Conn             Refs          Nextref Addr
fffff8000b472100 stream      0      0                0                0                0                0
fffff8000b546b00 stream      0      0 fffff8000b6f5000                0                0                0 /var/run/devd.pipe
fffff8000b546c00 stream      0      0 fffff8000b46b3d0                0                0                0 /var/run/openldap/ldapi
fffff8000b472600 dgram       0      0                0 fffff8000b472b00                0 fffff8000b472800
fffff8000b472800 dgram       0      0                0 fffff8000b472b00                0                0
fffff8000b472b00 dgram       0      0 fffff8000bfcc3d0                0 fffff8000b472600                0 /var/run/logpriv
fffff8000b472d00 dgram       0      0 fffff8000bfcc7a0                0                0                0 /var/run/log
fffff8000b546a00 seqpac      0      0 fffff8000b51ab70                0                0                0 /var/run/devd.seqpacket.pipe

Meskipun perintah netstat merupakan alat administrator sistem yang hebat, Anda tidak perlu menjadi sysadmin untuk menggunakannya. Seperti yang telah kita lihat, netstat berguna dalam banyak skenario, bahkan jika tujuan kita hanyalah mengamankan aktivitas penjelajahan sehari-hari.

Namun, netstat tidak boleh dibatasi pada perintah-perintah yang dibahas di sini, opsi dan tanda dapat memperluas cakupan secara signifikan dari apa yang dapat dilakukan dengan perintah netstat.