วันอังคารที่ 13 มกราคม พ.ศ. 2558

คำสั่ง Linux

คำสั่งตรวจสอบ Log

หาเฉพาะข้อความ  " killed process " ใน messages log
# grep -i 'killed process' /var/log/messages

วันพฤหัสบดีที่ 8 มกราคม พ.ศ. 2558

วิธีการใช้งาน filter แบบต่างๆใน tcpdump

Credit  http://www.techsuii.com/2015/01/07/วิธีการใช้งาน-filter-แบบต่างๆ/



แม้จะมีหลายคนที่ชอบใช้ Wireshark ในการทดสอบและวิเคราะห์ traffic ของเครื่องเรา อีกทั้ง Wireshark ยังมีปัญหากับการรับ traffic ขนาดใหญ่มากๆอีกด้วย และที่สำคัญหลายๆเครื่องไม่ได้มีหน้า GUI ให้ได้ใช้งาน ดังนั้นคนจึงนิยมเปลี่ยนไปใช้ tcpdump แทน(แม้ว่า Wireshark version command line อย่าง tshark อยู่ก็ตาม)
ความที่ tcpdump นั้นมีในหลากหลาย OS ทั้งใน Unix, Linux และ Windows รวมถึง Appliance ต่างๆมากมายก็มี tcpdump อยู่เช่นกัน ดังนั้นก็เป็นการดีหากเรารู้วิธีการใช้งาน tcpdump ไว้ก่อนครับ
โดยวิธีการใช้งาน tcpdump มีต่างๆดังนี้
1. การใช้งานโดยระบุ interface ในการดักจับข้อมูลจะใช้เป็น (หากเราไม่ได้ระบุ tcpdump จะใช้เป็น interface แรกโดยอัตโนมัติ ซึ่งปกติจะเป็น eth0)
# tcpdump -i eth1
2. การ filter ให้แสดงเฉพาะ ip ตามที่ต้องการโดยไม่สนใจว่าจะเป็น source, destination ip เช่นหากต้องการให้แสดงเฉพาะ 192.168.1.1 เป็นต้น
# tcpdump -i eth1 host 192.168.1.1
3. การ filter ให้แสดงเฉพาะ source ip ตามที่ต้องการ เช่นหากต้องการให้แสดงเฉพาะ source ip เป็น 192.168.1.1 เป็นต้น
# tcpdump -i eth1 src host 192.168.1.1
4. การ filter ให้แสดงเฉพาะ destination ip ตามที่ต้องการ เช่นหากต้องการให้แสดงเฉพาะ destination ip เป็น 192.168.1.1 เป็นต้น
# tcpdump -i eth1 dst host 192.168.1.1
5. การ filter ให้แสดงเฉพาะ port ตามที่ต้องการ เช่นหากต้องการให้แสดงเฉพาะ port 80 เป็นต้น
# tcpdump -i eth1 port 80
6. การ filter ให้แสดงเฉพาะ source port ตามที่ต้องการ เช่นหากต้องการให้แสดงเฉพาะ source port เป็น 80 เป็นต้น
# tcpdump -i eth1 src port 80
7. การ filter ให้แสดงเฉพาะ destination port ตามที่ต้องการ เช่นหากต้องการให้แสดงเฉพาะ destination port เป็น 80 เป็นต้น
# tcpdump -i eth1 dst port 80
8. หากเราต้องการ filter ให้แสดงเฉพาะ network วง 192.168.1.0/24 ให้เราใช้เป็น
# tcpdump -i eth1 net 192.168.1
9. หากเราต้องการ filter ให้แสดงเฉพาะ source network วง 192.168.1.0/24 ให้เราใช้เป็น
# tcpdump -i eth1 src net 192.168.1
10. หากเราต้องการ filter ให้แสดงเฉพาะ destination network วง 192.168.1.0/24 ให้เราใช้เป็น
# tcpdump -i eth1 dst net 192.168.1
11. หากต้องการ filter โดยเฉพาะ MAC Address  ที่ต้องการจะใช้เป็น
# tcpdump -i eth1 ether host 00:11:22:33:44:55
12. หากต้องการ filter โดยเฉพาะมาจาก MAC Address  ที่ต้องการจะใช้เป็น
# tcpdump -i eth1 ether src host 00:11:22:33:44:55
13. หากต้องการ filter โดยเฉพาะที่จะส่งไปยัง MAC Address  ที่ต้องการจะใช้เป็น
# tcpdump -i eth1 ether dst host 00:11:22:33:44:55
เราสามารถ filter แบบที่ผสม condition หลายๆอันได้โดยใช้คำสั่งดังนี้
- ! หรือ “not” เพื่อให้ได้ผลตรงข้ามกับที่เรากำหนด filter
– && หรือ “and” ใช้เพื่อ and ระหว่าง condition
– || หรือ “or” ใช้เพื่อ or ระหว่าง condition
14. หากเราต้องการให้แสดงผลเฉพาะ traffic ที่มาจาก IP 192.168.1.1 และมี destination port 80 จะได้เป็น
# tcpdump -i eth1 ‘(src host 192.168.1.1)’ and ‘(dst port 80)’
15. หากเราต้องการให้แสดงผลเฉพาะ traffic ที่มาจาก Mac Address 00:11:22:33:44:55 และเป็น icmp traffic จะได้เป็น
# tcpdump -i eth1 ‘(icmp)’ and ‘(ether src host 00:11:22:33:44:55)’
16. หากเราต้องการ traffic ของวง 192.168.1.0/24 แต่ไม่แสดงผลของที่มาจาก 192.168.1.2 และเป็น tcp จะได้เป็น
# tcpdump -i eth1 ‘(net 192.168.1)’ and tcp and ‘(not src host 192.168.1.2)’
Screen Shot 2558-01-07 at 11.26.23 PM

วันพฤหัสบดีที่ 25 ธันวาคม พ.ศ. 2557

รวมคำสั่งการ Set Router ยี่ห้อ CISCO

รวมคำสั่งการ Set Router ยี่ห้อ CISCO 

1. การตั้ง Channel Group ใหม่  

Router(config)# controller e1  

เช่น # controller e1 4/0 

Router(config)# ch_group timeslots  

เช่น # ch_group 4 timeslots 4-16 

2. การ Set การ Route IP  

Router(config)# ip route  

เช่น # ip route 61.19.88.8 255.255.255.254 61.19.47.254 

3. การตั้งค่า rate limit  

Router(config)# rate-limit dscp conform-action transmit exceed-action drop 

เช่น # rate-limit output dscp 1 16000 16000 160000 conform-action transmit exceed-action drop 

4. การใส่ password 

Console Passwword  

Router(config)# line console 0 

Router(config-line)# login 

Router(config-line)# password cisco 

Virtual Terminal Password  

Router(config)# line vty 0 4 (for switch use line vty 0 15) 

Router(config-line)# login 

Router(config-line)# password cisco 

Enable Password  

Router(config)# enable password cisco 

Secret Password  

Router(config)# enable secret cisco 

Service Password-Encryption Commands (การทำ secret vty ให้เป็นรหัส)  

Router(config)# service password-encryption 

Router(config)# no service password-encryption 

5. การใส่ Banner  

Router(config)# banner motd # 

พิมพ์ข้อความที่ต้องการใส่ แล้วจบด้วย enter # 

6. การทำ SSH (Secure Shell) คือการเข้ารหัสในการ Remote เข้า Router แทนการ Telnet  

Router(config)# username cisco password cisco 

Router(config)# ip domain-name เช่น cattelecom.com 

Router(config)# crypto key generate rsa 

Router(config)# ip ssh version 2 

Router(config)# line vty 0 4 

Router(config-line)# login 

Router(config-line)# transport input ssh 

การเข้าใช้งานใช้คำสั่ง 

# ssh –l  

7. การตั้งเวลา login  

Router(config)# line console 0 

Router(config-line)# exec-timeout 20 30 (เลข 20 คือค่านาที 30 คือค่าวินาที) 

จากคำสั่งเป็นการตั้งค่าให้สามารถ login เข้า router ได้ 20 นาที 30 วินาที 



8. การป้องกันการเลื่อนคำสั่ง โดยปกติเมื่อเรากำลัง config router มักมีการแจ้ง up down ของ router ทำให้มีการเลื่อนข้อความคำสั่ง ทำให้สับสนในการ config เพื่อเป็นการป้องกันการเลื่อนคำสั่งให้ใช้ 

Router(config)# line console 0 

Router(config-line)# logging synchronous 

9. การสลับการเข้า function local หรือ remote โดยปกติเมื่อเรา set router มักมีการเข้า local (router ตัวต้นทาง) และมักมีการ remote เข้าไปตัวปลายทางด้วย ทำให้เราต้องใช้คำสั่ง exit เพื่อทำการ login หรือ logout สลับไปมา เพื่อให้สะดวกขึ้น โดยไม่ต้องใช้คำสั่ง exit ให้ใช้การกด Control+shift+6 แล้วปล่อย และกด x ตาม จะเป็นการสลับ function ดังกล่าว 

10. การตั้งค่าเวลาเมื่อมีการ debug หรือ log massage ครั้งล่าสุด  

Router(config)# service timestamps debug datetime msec 

11. การป้องกันเมื่อมีการพิมพ์คำสั่งผิดแล้ว router จะถาม domain  

Router(config)# no ip domain-lookup 

12. การดู MAC Address ใน Router 

Router(config)# sh arp 

13. การตั้งเวลา (Set Date & Time) 

Router # clock set 10:00:00 Dec 21 2009 

14. การ Set ให้ Router Show Logfile 

Router(config) # logging buffered 8096 debugging 

credit  http://samui.south.cattelecom.com/catcare/index.php?wt=show&pfile=webboard.php&Category=catcare&No=177

วันศุกร์ที่ 3 ตุลาคม พ.ศ. 2557

แจ้งเตือนช่องโหว่ BASH (CVE-2014-6271)

BASH หรือ Bourne Again Shell เป็นเชลล์ในระบบปฏิบัติการยูนิกซ์ (UNIX) เป็นที่นิยมใช้อย่างมากใน
ระบบปฏิบัติการลินุกซ์หลากหลายค่ายอีกด้วย ซึ่งในระบบปฏิบัติการลินุกซ์เองยังไม่โปรแกรมจำนวนมากที่อาศัย Bash รันอยู่เบื้องหลัง ใ ห้บริการเชลล์ผ่านการเข้าถึงจากระยะไกล (เช่น ssh แ ละ telnet เป็นต้น) ให้บริการ parser สำหรับสคริปส์ CGI (Apache ห รื อ อื่ นๆ ) หรือแม้กระทั่งการสนับสนุนการเอ็กซิคิวต์คำสั่งอย่างจำกัด (เช่น git หรือ อื่นๆ)  จากรายงานช่องโหว่ CVE-2014-6271 หรือ Shellshock ซึ่งเป็นช่องโหว่ของเชลล์ BASH (โปรแกรมในการรันคำสั่งบนระบบปฏิบัติการลินุกซ์) ส่งผลทำให้ผู้โจมตีสามารถรันโค้ดจากระยะไกลได้ ผ่านสคริปส์ C G I ที่รันอยู่ในApache ที่ติดตั้ง mod_cgi ด้วย ดังนั้นช่องโหว่นี้จึงมีผลกระทบต่อระบบปฏิบัติการลินุกซ์หรือยูนิกซ์ที่ติดตั้งเชลล์ดังกล่าว

วิธีการตรวจสอบ
รันคำสั่ง env x='() { :;}; echo vulnerable' bash -c "echo this is a test" ถ้าหากเซิร์ฟเวอร์มีช่องโหว่
จะแสดงผลดังรูปที่ 1



แต่ถ้าหากไม่พบช่องโหว่ จะแสดงข้อความดังรูปที่ 2


วิธีการแก้ไข

1. สำหรับระบบปฏิบัติการ Ubuntu ให้ใช้คำสั่ง # apt-get install bash ดังรูปที่ 3 ซึ่งทดสอบบนระบบปฏิบัติ
การ Ubuntu 14.04.1 LTS

2. สำหรับระบบปฏิบัติการ CentOS ให้ใช้คำสั่ง # yum install bash -y ดังรูปที่ 4 ซึ่งทดสอบบนระบบปฏิบัติการ CentOS 7.0


สรุป
จากตัวอย่างจะแสดงผลการแก้ไขบนระบบปฏิบัติการ Ubuntu และ CentOS เท่านั้น อย่างไรก็ตามยังมี
ระบบปฏิบัติการลินุกซ์และยูนิกซ์ตระกูลอื่นๆ ที่ใช้ BASH ดังนั้นจำเป็นจะต้องอัพเดตเวอร์ชั่นของโปรแกรม BASH
ด้วย

วันพฤหัสบดีที่ 2 ตุลาคม พ.ศ. 2557

ให้ server linux ส่งเมล ผ่าน php ได้

ใช้คำสั่ง

setsebool -P httpd_can_sendmail=1

เข้าเว็บ ไม่ได้ ติด Forbidden You don't have permission to access

ใช้ คำสั่ง เพื่อดู
ls -laZ /var/www/html/


คำสั่งเปลี่ยน
chcon -R --reference=/var/www/html /var/www/html/Joomla

วันพุธที่ 1 ตุลาคม พ.ศ. 2557

Linux Server (CentOS) : คำสั่งตรวจสอบฮาร์ดแวร์ของเครื่อง !!!

    หลังการติดตั้งลีนุกซ์เสร็จทุกครั้่ง ก่อนจะคอนฟิกแล้วนำไปใช้งาน แนะนำให้ใช้คำสั่งลีนุกซ์ ดูฮาร์ดแวร์ของเครื่อง เพื่อตรวจสอบความถูกต้องว่าเราลงถูกต้อง ครบถ้วนไหม
    ในที่นี้จะแนะนำคำสั่งเพื่อตรวจสอบฮาร์ดแวร์หลัก 3 ส่วนคือ CPU, Memory และ Disk

    CPU

    ใช้คำสั่ง lscpu เพื่อดูข้อมูลโดยรวมของ CPU เครื่องได้
    ตัวอย่างผลลัพธ์ที่ได้
    [root@cent6 ~]# lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    CPU(s):                4
    Thread(s) per core:    1
    Core(s) per socket:    4
    CPU socket(s):         1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 15
    Stepping:              11
    CPU MHz:               2659.626
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              4096K

    หรือหากต้องการดูรายละเอียดของ CPU ในแต่ละ core เลย สามารถทำได้โดยใช้คำสั่ง cat อ่านไฟล์ /proc/cpuinfo
    ผลลัพธ์จะแสดงรายละเอียดขึ้นมาทั้งหมด (ในตัวอย่างนี้ตัดมาเฉพาะ 2 core แรก)
    [root@cent6 ~]# cat /proc/cpuinfo
    processor       : 0
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 15
    model name      : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    stepping        : 11
    cpu MHz         : 2659.626
    cache size      : 4096 KB
    physical id     : 0
    siblings        : 4
    core id         : 0
    cpu cores       : 4
    apicid          : 0
    initial apicid  : 0
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 10
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi
    bogomips        : 5319.25
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 38 bits physical, 48 bits virtual
    power management:
    processor       : 1
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 15
    model name      : Intel(R) Xeon(R) CPU X5355  @ 2.66GHz
    stepping        : 11
    cpu MHz         : 2659.626
    cache size      : 4096 KB
    physical id     : 0
    siblings        : 4
    core id         : 1
    cpu cores       : 4
    apicid          : 1
    initial apicid  : 1
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 10
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi
    bogomips        : 5320.01
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 38 bits physical, 48 bits virtual
    power management:
    ...

    Memory

    สำหรับหน่วยความจำ หากต้องการดูแค่ขนาดรวม memory ที่ลีนุกซ์เห็นและใช้งานได้ ให้ใช้คำสั่ง free แล้วดูส่วน total จะเป็นขนาดของหน่วยความจำรวมของเครื่อง ผลลัพธ์ที่แสดงโดยดีฟอลต์จะเป็นหน่วย kB (kilo bytes)
    [root@cent6 ~]# free
                 total       used       free     shared    buffers     cached
    Mem:       1020756     258060     762696          0      20140     106752
    -/+ buffers/cache:     131168     889588
    Swap:      2097144          0    2097144
    เช่น เครื่องนี้มีขนาดหน่วยความจำ (memory) 1020756 kB หรือประมาณ 1 GB
    แต่หากต้องการดูรายละเอียดถึงฮาร์ดแวร์เลยว่า มี memory กี่แผง กี่สล๊อต ต้องใช้คำสั่ง dmidecode ซึ่งค่อนข้างดูยากพอสมควร และแตกต่างกันตามชนิดของฮาร์ดแวร์
    แนะนำให้ดูจาก BIOS หรือพอร์ต Management (out-of-band) ของเครื่องจะง่ายกว่า แล้วใช้คำสั่ง free เพื่อดูผลรวมของ memory ที่ลีนุกซ์เห็น

    Disk

    ใช้คำสั่ง fdisk -l เพื่อดูดิสก์ทั้งหมดที่ต่ออยู่ ผลลัพธ์ที่ได้ จะแสดงชื่อดิสก์ที่ลีนุกซ์ใช้ เช่น /dev/sda ขนาดฮาร์ดดิสก์ (500 GB) และข้อมูลการแบ่งพาร์ทิชั่น
    [root@cent6 ~]# fdisk -l
    Disk /dev/sda: 500 GB, 500007860016 bytes
     255 heads, 63 sectors/track, 60800 cylinders
     Units = cylinders of 16065 * 512 = 8225180 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
    Device Boot      Start         End      Blocks   Id  System
     /dev/sda1   *           1          25      204800   83  Linux
     /dev/sda2              26       12773   102400000   83  Linux
     /dev/sda3           12774       14804    16380000   82  Linux swap / Solaris

    หากต้องการดูรายละเอียดของฮาร์ดดิสก์ เช่นยี่ห้อ รุ่น serial number ต้องใช้คำสั่ง hdparm ออปชั่น ‘-I’ แล้วตามด้วยชื่อดิสก์ที่ต้องการดู
    [root@cent6 ~]# hdparm -I /dev/sda
    /dev/sda:
    ATA device, with non-removable media
     Model Number:       ST3500640A
     Serial Number:      123456789
     Firmware Revision:  3.0
    เช่นเดียวกับการตรวจสอบหน่วยความจำ (memory) ผลลัพธ์ที่ได้ อาจแตกต่างกันไป บางเครื่องหรือดิสก์บางรุ่นก็ดูไม่ได้  ขึ้นอยู่กับชนิดของฮาร์ดแวร์ เพื่อความง่ายแนะนำให้ใช้ BIOS ของเครื่องตรวจสอบรายละเอียด