Bash Command Tutorial - System admin guide

Discussion in 'Masalah Teknik dan Keamanan' started by vishualhost, 5 Nov 2009.

  1. vishualhost

    vishualhost Expert 2.0

    Messages:
    813
    Likes Received:
    81
    Trophy Points:
    28
    Bash Command Tutorial - System admin guide

    Berikut saya akan berikan beberapa tutorial dalam menggunakan bash comand shell yg diantara nya mungkin belum pernah digunakan sebelumnya .

    bash command ini diantaranya hasil experiment saya dan sangat membantu sekali dalam hal manage server khususnya meningkatkan security / stabilitas server / dan beberapa diantaranya untuk guide tambahan untuk administrasi sistem .

    1.) ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f\t%.2f\n",num[user], user, cpu[user], mem[user]) }'

    Fungsi :
    Melihat top / high 10 process yg sangat besar dalam penggunaan cpu dan memory server .

    =========================================================


    2.) for USER in `ls /var/spool/cron`; do echo "=== crontab for $USER ==="; echo $USER; done


    Fungsi :
    Untuk melihat siapa saja user yg memiliki cron aktif dan dijalankan di server secara rutin .

    =========================================================

    3.) Mencari files yang berada dalam zip folder tanpa harus extract dahulu .

    A. ) Buat 1 file katakan lah scan.sh di root

    #!/bin/bash
    find /home/ -name '*.zip' | while read file
    do
    echo "[*] Hasil Query Dari ${file}:"
    echo "==================="
    unzip -l "$file" | grep <nama kata yg dicari>
    done

    Note :
    Misal saya mau cari kata photoshop-crack inside seluruh zip di / home user :
    bagian bawah ubah text menjadi : grep photoshop-crack

    B. ) Jalankan manual file pada ssh : sh scan.sh
    klo untuk combine dengan cron anda bisa menambahkan pada crontab
    root anda dan set mau dijalankan berapa jam sekali / hari

    Deskripsi : selain zip saya juga pernah mencoba untuk tipe lain seperti rpm dan rar , jadi bisa di modifikasi sesuai kebutuhan .

    =========================================================


    4.) dd if=/dev/zero of=junk bs=1M count=1K


    Fungsi :
    Untuk merelease unused memory in server , flush temp cache buffer dalam memory server . count ini akan merelase sebesar 1 GB ram (1 M * 1k )

    =========================================================

    5.) find . -type f -size 0 -delete

    Fungsi :
    Untuk mencari file dengan ukuran 0 dan langsung menghapusnya auto .

    =========================================================

    6.) x=1; while [ $x = 1 ]; do process=`pgrep -u username`; if [ $process ]; then x=0; fi; done; strace -vvtf -s 256 -p $process

    Fungsi :
    Mencari tahu process apa saja yg sedang dilakukan / dijalankan oleh si user .
    Ex : ganti username dengan nama user yg mau anda strace intip aktifitasnya.

    =========================================================

    7.) ps -o rss -C httpd | tail -n +2 | (sed 's/^/x+=/'; echo x) | bc


    Fungsi :

    Untuk mengetahui berapa banyak ram yang sedang dipakai suatu process , dalam hal ini saya mengambil sample httpd .
    Ketika dijalankan cmd tsb maka akan auto calculate penggunaan memory dari seluruh process httpd tersebut diserver .

    Info : anda bisa mengganti httpd dengan process lain untuk count memory usage seperti imap , mysqld , ftpd dll :)

    =========================================================


    8.) du -sk * |sort -rn |head


    Fungsi :
    Untuk melihat 10 list ukuran size terbesar dalam suatu folder / files

    =========================================================

    9.) Mencari string / kata yg kita ingin cari dalam suatu files , baik PHP , GIF , HTML , CGI dsb .


    A.) find /home/username/ -name "*".php -type f -print0| xargs -0 grep "powered by rapidleech" | uniq -c | sort -u | cut -d":" -f1 | awk '{print "Penting - tolong check files berikut " $2}' | uniq

    Fungsi :
    cmd diatas berfungsi untuk scanning php files dalam path si username dan mencari 1 kata / strings dalam files php yg sesuai dengan "powered by rapidleech" .

    ( jika ketemu maka akan ada dilistnya beserta warning ) .


    B.) find /home/username/ -name "*".php -type f -print0| xargs -0 egrep "rapidleech|c99" | uniq -c | sort -u | cut -d":" -f1 | awk '{print "Penting - tolong check files berikut " $2}' | uniq

    Fungsi :
    cmd diatas berfungsi untuk scanning php files dalam path si username dan mencari beberapa kata / strings dalam files php yg sesuai dengan rapidleech dan c99
    ( ini salah satu method yg saya gunakan untuk membuat plugin antivirus dalam cpanel) .

    berbeda dengan A yg hanya dapat mencari 1 pattern kata , di B ini bisa memasukan beberapa :) .

    -> anda bisa memodifikasi dengan mencari kata yg sesuai untuk antisipasi misal untuk virus / rapidleech / shell attacker c99, r57 dsb.

    content yg di ubah nama filesnya :) akan ketahuan juga nanti , jadi buka dan copas aja isi script didalamnya dan masukan query yg terkandung di dalamnya beberapa ke string pattern searching .

    jadi walaupun dia rubah nama files / dir nya yg failed di locate / di find berdasarkan nama files tetep akan ke scan melalui method ini karena scan ini mencari pattern text dalam isi filesnya dan bukan dari nama filesnya.

    =========================================================

    10.) cat /proc/cpuinfo


    Fungsi :

    Untuk melihat detail cpu information .
    =========================================================

    11.) Tracking ddos attack berdasarkan jumlah urutan IP dengan koneksi terbanyak


    netstat -ntu | awk '{print $5}' | tail --lines=+3 | cut -s -d: -f1 | sort | uniq -c | sort -n -b -r

    Fungsi :
    Untuk tracking ddos attack value connection > 150

    ex hasil :
    # IP
    ------------------
    129 114.58.67.xx
    20 114.58.67.xx

    dimana 129 adalah jumlah koneksi yg di dapat dari ip 114.58.67.xx

    =========================================================

    12.) env LANG=C pstree -c

    Fungsi :
    Untuk melihat process server berdasarkan tree status

    =========================================================

    13.) ps aux --sort=%mem,%cpu

    Fungsi:
    Sortir process bedasarkan penggunaan memory dan cpu .

    14.) chown -R username:username dir

    Fungsi :
    Fixed nobody user yang run wrong permission right uid .

    ex : folder test pada home user andi jalan / run tanpa right permission .
    untuk fix lakukan hal sbb :

    # cd /home/andi/public_html
    # chown -R andi:andi test

    setelah selesai lakukan test eksekusi editing dan upload data pada dir tersebut .

    =========================================================
    Demikian sedikit tutorial saya mengenai beberapa bash cmd yg mungkin bisa membantu anda dalam sistem administrasi server .

    Tutorial lanjutan nanti akan saya tulis kembali berikut sensor server , dan beberapa cmd2 lainnya .
     
    Last edited by a moderator: 6 Nov 2009
  2. hostnic.id

    hostnic.id Hosting Guru Web Hosting (Company)

    Messages:
    1,099
    Likes Received:
    30
    Trophy Points:
    48
    keyen bgt :D. tapi pernah di coba di server om lum?:)
     
  3. vishualhost

    vishualhost Expert 2.0

    Messages:
    813
    Likes Received:
    81
    Trophy Points:
    28
    semua yg saya tulis sudah saya tester dan ini merupakan aktivitas rutin administrasi server kami mas .

    tester di centos, freebsd , dan opensuse
     
  4. rendy

    rendy Hosting Guru DWH Guardian Web Hosting (Company)

    Messages:
    2,794
    Likes Received:
    241
    Trophy Points:
    63
    karena amat bermanfaat dan dirasa amat perlu diketahui hoster lain
    threadnya di stick
     
  5. PusatHosting

    PusatHosting Hosting Guru Web Hosting

    Messages:
    3,345
    Likes Received:
    326
    Trophy Points:
    83
    kalau saya yang sering ini,

    kalau di mesin Directadmin - Centos

    untuk melihat nilai current koneksi berdasarkan IP. yang punya tips command line lain tambahin yook supaya ramai jadi how to juga.
     
  6. Moefid

    Moefid Beginner 2.0

    Messages:
    31
    Likes Received:
    0
    Trophy Points:
    6
    Mohon maaf, untuk command diatas ini bukan flush cache tapi malah membuat file sebesar 1.1GB.

    Code:
    root@shell:~# dd if=/dev/zero of=junk bs=1M count=1K
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 40.4962 s, 26.5 MB/s
    root@shell:~# ls
    junk
    root@shell:~# du -h junk 
    1.1G	junk
    
    Untuk keperluan flush cache memory, saya biasa menggunakan perintah :
    Code:
    root@shell:~# echo 1 > /proc/sys/vm/drop_caches
    cmiiw ya mas
     
  7. vishualhost

    vishualhost Expert 2.0

    Messages:
    813
    Likes Received:
    81
    Trophy Points:
    28
    dh bro mufid benar sekali , ini penjelasan mengenai hal tsb :

    Perintah membuat file sebesar 1 gb yang dibuat dari nol dan lalu menyingkirkannya, dengan begitu membebaskan cache yang terdapat di besaran file tsb. Di contoh ini, urutan akan membebaskan sampai 1GB (1M * 1K) dari cache RAM yg tidak terpakai. dan method ini tidak akan merelease ram jika memang sedang digunakan oleh process2 aktif lainnya.
     
  8. vishualhost

    vishualhost Expert 2.0

    Messages:
    813
    Likes Received:
    81
    Trophy Points:
    28
    update command :

    Watch base command

    15. watch vmstat -sSM
    Fungsi :
    Realtime Memory usage monitoring realtime

    Output display:
    - total memory
    - used memory
    - active memory
    - inactive memory
    - free memory
    - buffer memory
    - swap cache
    - otal swap
    - used swap
    - free swap
    - non-nice user cpu ticks
    - nice user cpu ticks
    - system cpu ticks
    - idle cpu ticks
    - IO-wait cpu ticks
    - IRQ cpu ticks
    - softirq cpu ticks
    - stolen cpu ticks
    - pages paged in
    - pages paged out
    - pages swapped in
    - pages swapped out
    - interrupts
    - CPU context switches
    - boot time
    - forks

    16. watch -d -n 2 'df; ls -FlAt;'
    Fungsi :
    Hardisk filesystem monitoring realtime

    17. watch mysqladmin pr
    Fungsi :
    Realtime mysql status monitoring


    18. lsof -Pni4 | grep LISTEN

    Fungsi :
    Check monitoring open / listening port realtime

    Security Updates Centos

    19. yum list-security

    Fungsi :
    Menampilkan list security yg bisa update

    yum update --security

    Fungsi :
    Download dan install update security server

    20. awk '$3 ~ /^cwd/{print $3}' /var/log/exim_mainlog | sort | uniq -c | sed "s|^ *||g" | sort -nr

    Fungsi :

    Mencari / Analysis siapa saja yg mengirim mail terbanyak yg ada di top relaying mail serta menampilkan di path apa dia mengirim mail tersebut .
    ini berguna untuk mencari spammer user dan mecari path folder tempat eksekusi send mail tersebut sehingga bisa dilakukan analysis serta monitoring rutin diserver.

    Sample output :


    1041 cwd=/home/bb/public_html/tester
    154 cwd=/home/aa/public_html/beta

    Penjelasan :

    1041 dan 154 ini adalah total mail yg terkirim
    sebelah kanan merupakan path tempat mail tersebut dikirimkan

    Demikian lanjutan beberapa command , semoga bermanfaat .
    jika berkenan mohon minta bantuan mod untuk menaruh list lanjutannya dipage pertama agar lebih rapi .
     
    Last edited: 16 Dec 2009
    BikinDesainSitus and Sanisa like this.
  9. hostingceria

    hostingceria Expert 1.0 Web Hosting

    Messages:
    673
    Likes Received:
    50
    Trophy Points:
    28
    mau nambahain beberapa command lagi, sebagian besar sudah ada diatas ;) (thanks buat referensinya juga)

    Cek jumlah proses httpd:
    Code:
    ps -def | grep httpd | grep -v grep | wc -l
    Cek jumlah koneksi httpd per IP address, diurutkan dari kecil ke paling besar:
    Code:
    netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n


    Cek proses httpd yang berstatus SYN_RECV (untuk melihat tipe serangannya SYN FLOOD atau bukan):

    Code:
    netstat -an | grep SYN
    tiga syntax diatas sangat berguna untuk membantu diagnosis masalah ddos berdasarkan pengalaman
     
    Sanisa likes this.
  10. capoengx

    capoengx Beginner 2.0

    Messages:
    28
    Likes Received:
    0
    Trophy Points:
    1
    Thread bermutu...
    Ctrl + D dulu.. :D
     
Loading...

Share This Page

Loading...