Tag: ubuntu server

  • ติดตั้ง Ubuntu Server 20.04 ใน VM ของ miniONE KVM

    เป็นขั้นตอนสร้าง VM ที่เป็น Ubuntu Server 20.04 ใน VM ของ miniONE KVM

    ขั้นตอน

    1. เลือกใช้ภาษาอังกฤษในการติดตั้ง
    2. เลือก keyboard layout 
    3. ตั้งค่า IP Address แบบ static เลือก Interface name และ คลิก Edit IPv4
    4. เลือก Method แบบ Manual
    5. ใส่ค่า IP Address
    6. ไปต่อ คลิก Done
    7. ไปต่อ คลิก Done
    8. ตั้ง Mirror address มาที่ http://th.archive.ubuntu.com/ubuntu
    9. Storage configuration เลือก Use an entire disk 
    10. ไปต่อ คลิก Done
    11. Confirm destructive action เลือก Continue
    12. กำหนดค่า name, username และ password
    13. เลือก Install OpenSSH server และคลิก Done
    14. Featured Server Snaps ไม่เลือก ไปต่อ คลิก Done
    15. รอ
    16. เมื่อเสร็จ คลิก Reboot
    17. ในขั้นตอน downloading and installing security updates หากนานมาก จะไม่รอ ก็คลิก Cancel update and reboot
    18. เมื่อกลับเข้าใช้งาน ต้อง update เองสักรอบ เพื่อลงโปรแกรมอื่น ๆ ได้
    19. และอาจเป็นผลให้ติดตั้ง ssh host key ไม่สำเร็จ ตรวจสอบด้วยคำสั่ง ls -l /etc/ssh
    20. แก้ไขโดยสร้าง ssh host key ด้วยคำสั่ง ssh-keygen -A

    จบขั้นตอนสร้าง Ubuntu Server

  • ตั้งค่า iproute2 ให้ ubuntu server ที่มี 2 interfaces

    ผมมี server สำหรับห้องบริการคอมพิวเตอร์ ที่ทำหน้าที่จ่าย dhcp IP และ cloning Windows และใช้ pGina for Windows ในการ Login ก่อนเข้าใช้เครื่อง

    เริ่มแรก server ก็มีการ์ดแลนเพียง 1 ใบ สำหรับห้องบริการคอมพิวเตอร์ห้องที่ 1 (eth0) ต่อมามีความต้องการให้ห้องบริการคอมพิวเตอร์ห้องที่ 2 ซึ่งจะเป็นอีก network ใช้ server ตัวเดียวกันนี้ด้วย จึงเพิ่มการ์ดแลนอีก 1 ใบ (eth1) ทำให้ตอนนี้มี eth0 และ eth1

    ipmultihomed

    ปัญหาคือ เมื่อ Windows ในห้องคอมฯ ห้องที่ 2 ตั้งค่า pGina RADIUS plugin ชี้ไปยัง IP ของ eth0 (192.168.99.20) ก็ทำงานไม่ได้ แต่ถ้าตั้งค่าชี้ไปยัง IP ของ eth1 (192.168.99.251) อย่างนี้ใช้งานได้ หรือใช้คำสั่ง ping 192.168.99.20 อย่างนี้ก็ไม่ได้ เช่นกัน

    จึงค้นหาคำตอบ google search อยู่หลายวัน มีบทความที่ให้คำตอบใกล้เคียงที่สุด แต่ผมก็ต้องมาแต่ง config ใหม่ จนสำเร็จ โดยหลักใหญ่ ๆ คือ เครื่อง server ที่มีการ์ดแลน 2 การ์ดนี้จะเรียกว่า multi-homed server จำเป็นจะต้องตั้งค่าเพิ่มโดยใช้ iproute2 ซึ่งมีให้แล้วบน ubuntu server ที่ผมทดสอบนี้คือ ubuntu server 16.04 ครับ คือ ปรกติแล้วเครื่อง 1 เครื่อง จะมี default gateway เพียง 1 เท่านั้น เราจะใช้ iproute2 เพื่อแยกให้มี gateway สำหรับ IP ของ eth0 และ eth1 เพิ่มขึ้น

    เรามาดูตัวอย่างกันครับ

    เครื่องที่ทดสอบ มี 2 subnets (อันนี้ที่ต้องใช้ /25 เพราะผมไม่มี net class C ถึง 2 net จึงไปขอความช่วยเหลือทีมเครือข่ายให้ช่วยแบ่งครึ่ง net class C ให้ครับ)
    1. net 192.168.99.0/25
    IP 192.168.99.1 – 192.168.99.126 broadcast 192.168.99.127 gateway 192.168.99.1
    2. net 192.168.99.128/25
    IP 192.168.99.129 – 192.168.99.254 broadcast 192.168.99.255 gateway 192.168.99.129

     

    1. ตรวจสอบ network interfaces ได้ผลลัพธ์ดังนี้

    root@ubuntu:~# ifconfig
    eth0 Link encap:Ethernet HWaddr 00:4d:60:1e:fb:ab
     inet addr:192.168.99.20 Bcast:192.168.99.127 Mask:255.255.255.128
    
    eth1 Link encap:Ethernet HWaddr 00:04:a5:fd:a4:9c
     inet addr:192.168.99.251 Bcast:192.168.99.255 Mask:255.255.255.128
    
    lo Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0

     

    2. เพิ่ม 2 บรรทัดนี้ต่อท้ายในไฟล์ /etc/iproute2/rt_tables (ผมตั้งชื่อ routing table 1 ว่า rt1 และ routing table 2 ว่า rt2)

    1 rt1
    2 rt2

    ผลลัพธ์ได้ดังนี้

    root@ubuntu:~# cat /etc/iproute2/rt_tables
    #
    # reserved values
    #
    255 local
    254 main
    253 default
    0 unspec
    #
    # local
    #
    #1 inr.ruhep
    1 rt1
    2 rt2

     

    3. เพิ่ม 4 บรรทัดนี้สำหรับ eth0

    post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1
    post-up ip route add default via 192.168.99.1 dev eth0 table rt1
    post-up ip rule add from 192.168.99.20/32 table rt1
    post-up ip rule add to 192.168.99.20/32 table rt1

     

    4. และเพิ่ม 4 บรรทัดนี้สำหรับ eth1
    post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2
    post-up ip route add default via 192.168.99.129 dev eth1 table rt2
    post-up ip rule add from 192.168.99.251/32 table rt2
    post-up ip rule add to 192.168.99.251/32 table rt2

     

    จากข้อ 3 และ ข้อ 4 ผลลัพธ์ได้ดังนี้

    root@ubuntu:~# cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
    address 192.168.99.20
    netmask 255.255.255.128
    gateway 192.168.99.1
    dns-nameservers 192.100.77.10 192.100.77.11
    post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1
    post-up ip route add default via 192.168.99.1 dev eth0 table rt1
    post-up ip rule add from 192.168.99.20/32 table rt1
    post-up ip rule add to 192.168.99.20/32 table rt1
    
    auto eth1
    iface eth1 inet static
    address 192.168.99.251
    netmask 255.255.255.128
    post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2
    post-up ip route add default via 192.168.99.129 dev eth1 table rt2
    post-up ip rule add from 192.168.99.251/32 table rt2
    post-up ip rule add to 192.168.99.251/32 table rt2

     

    5. ทำการ restart server
    แค่นี้ครับ

     

    References:

    1. Two Default Gateways on One System

    (URL https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System)
    2. Linux iproute2 multiple default gateways

    (URL https://www.iodigitalsec.com/2014/10/05/linux-iproute2-multiple-default-gateways/)

    3. Number of IP Addresses and Multihoming

    (URL http://www.tcpipguide.com/free/t_NumberofIPAddressesandMultihoming.htm)

  • เทคนิคการเพิ่ม user ในระบบ linux คราวละมากๆ

    มีผู้สนใจ linux ได้สอบถามเข้ามาทางอีเมลว่า จะเพิ่ม user ในระบบ linux คราวละมากๆ พอจะมี shell scripts ให้นำไปใช้งานหรือเปล่า ผมก็มีอยู่แล้ว แต่ก็ปรับแต่งเล็กน้อย

    shell script นี้มีดังนี้
    1. makeusername.sh เพื่อสร้างไฟล์รายชื่อตามจำนวนที่ต้องการ เลขเริ่มต้น min และสิ้นสุด max
    2. bulkuseradd.sh เพื่อเพิ่ม user และ password แบบ random และสร้างไฟล์ .csv เก็บ user:password นำไปพิมพ์แจก user ได้
    3. bulkuserdel.sh เพื่อลบ user

    ผมเขียนไว้ในเว็บไซต์ opensource.cc.psu.ac.th หัวข้อ เทคนิค+scripts (
    http://opensource.cc.psu.ac.th/เทคนิคการเพิ่ม_user_ในระบบ_linux_คราวละมากๆ)

  • ช่องโหว่ซอฟต์แวร์ Bash Vulnerability วิธีตรวจสอบและแก้ไข

    ช่องโหว่อันตรายของซอฟต์แวร์ Bash
    ————————————————–
    -การตรวจสอบช่องโหว่ซอฟต์แวร์ Bash Vulnerability ในระบบปฎิบัติการ Unix & Linux
    ทดสอบโดยพิมพ์คำสั่ง
    env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

    หากปรากฎข้อความว่า Bash is vulnerable! แสดงว่าต้องรีบปรับปรุงซอฟต์แวร์ bash ทันที
    -วิธีการป้องกันและแก้ไขอัปเดตซอฟต์แวร์ bash
    หากใช้ Ubuntu / Debian ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability

    sudo apt-get update && sudo apt-get install --only-upgrade bash

    ปรับแก้ไขอัปเดตทั้งระบบ

    sudo apt-get update && apt-get upgrade

    หากใช้ CentOS / Redhat / Fedora ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability

    sudo yum update bash

    ขอบคุณครับ ^_^

  • แก้ปัญหา update ubuntu server แล้วแจ้ง error ว่า perl: warning: Setting locale failed.

    update Ubuntu Server แล้วมี error message แจ้งดังนี้

    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LC_TIME = "th_TH.UTF-8",
    LC_MONETARY = "th_TH.UTF-8",
    LC_ADDRESS = "th_TH.UTF-8",
    LC_TELEPHONE = "th_TH.UTF-8",
    LC_NAME = "th_TH.UTF-8",
    LC_MEASUREMENT = "th_TH.UTF-8",
    LC_IDENTIFICATION = "th_TH.UTF-8",
    LC_NUMERIC = "th_TH.UTF-8",
    LC_PAPER = "th_TH.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
    (more…)