Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Thursday, November 12, 2015

How to manage a DDoS or DoS attempt directed at your linux server

พอดีอ่านใน facebook ของรุ่นพี่คนนึง แล้วบังเอิญตรงกับเหตุการณ์ที่กำลังพบอยู่พอดีเลยเอามาแบ่งกันนะครับ ยังไงก็ขออนุญาตพี่ด้วยนะครับ

วิธีการตรวจจับ DDoS ใน Linux Server
1. Website ช้าลง
2. สังเกตุพบว่า Process แฮงค์
3. มีการเรียกมาจาก IP เดิมๆซ้ำไปซ้ำมาเยอะๆ
4. Resource ของระบบมีการนำไปใช้ใน Process เยอะ
5. ตรวจจับได้ว่ามี Connection มากผิดปกติโดยใช้คำสั่ง
# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
ส่งผลให้
1. Web Server down
2. System load
สูงมากๆ
3. Server
ไม่ตอบสนอง
4. SSH
ไป server ไม่ได้
5.
เข้าถึงเครื่องไม่ได้เลยจนกระทั่งต้องไป reboot เครื่อง
วิธีป้องกันและแก้ไขปัญหา
1. Enable SYN COOKIES at the kernel level
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

2. Enable and Configure iptables to prevent the attack or at least work to identify the attack
/sbin/iptables -N syn-flood

/sbin/iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN

/sbin/iptables -A syn-flood -j LOG --log-prefix "SYN flood: "

/sbin/iptables -A syn-flood -j DROP

3. Install APF firewall เพื่อเอาไว้ตรวจสอบพฤติกรรมที่น่าจะเป็นอันตราย
APF ย่อมาจาก Advanced Policy Firewall. สามารถ download ได้จากhttp://www.rfxn.com/projects/
4. ติดตั้ง Script DDoS Deflate เพื่อเอาไว้ป้องกัน DoS แบบ Auto
โดย DDoSDflate สามารถทำได้ดังนี้
It is possible to whitelist IP addresses, via /etc/ddos/ignore.ip.list.
It is possible to whitelist hostnames, via /etc/ddos/ignore.host.list.
Simple configuration file: /etc/ddos/ddos.conf
IP addresses are automatically unblocked after a preconfigured time limit (default: 600 seconds)
The script can run as a cron job at chosen frequency via the configuration file (default: 1 minute)
The script can run as a daemon at chosen frequency via the configuration file (default: 5 seconds)
You can receive email alerts when IP addresses are blocked.
Control blocking by connection state (see man netstat).
Auto-detection of firewall.
Support for APF, CSF and iptables.
Logs events to /var/log/ddos.log
โดยสามารถ download และดูข้อมูลเพิ่มเติมได้ที่ https://github.com/jgmdev/ddos-deflate



แบบของพี่ผมครับ : https://www.facebook.com/hackandsecbook/photos/a.314873568541354.90859.308570299171681/1149404378421598/?type=3&fref=nf&pnref=story

Thursday, July 16, 2015

How to Share ZFS on NFS protocol

How to Share ZFS on NFS protocol.

หลังจากที่เราได้สร้าง zpool และ zfs dataset แล้ว เราจะแชร์ไฟล์ให้เครื่องอื่นๆใน network ได้ใช้ ก็สามารถทำได้โดยใช้คำสั่งตามนี้ครับ

zfs set sharenfs=rw=host1:host2:host3,root=host1:host2:host3 {zpoolname}


แค่นี้ก็สามารถ share ไฟล์ให้ client ต่างๆได้แล้ว

credit : http://zfsonlinux.org/

Wednesday, July 8, 2015

How to install ZFS on Linux(zol) on Debian

          ZFS zeta byte file system คือ file system ชนิดหนึ่งเป็นของ Sun ซึ่งต่อมาทำเป็น open source
 Install package
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_4_all.deb
# dpkg -i zfsonlinux_4_all.deb
# wget http://zfsonlinux.org/4D5843EA.asc -O - | apt-key add -
# apt-get update
# apt-get install debian-zfs parted
Prepare disk
# parted /dev/sd{X} mklabel gpt
Create zpool(Disk)
# zpool create -m none -o ashift=12 {poolname} /dev/sd{X}
Check pool status
# zpool status
or
# zpool get {all,poolname}
Create zfs(partition)
# zfs create iqpool/data
# zfs set dedup={on,off} iqpool/data
# zfs set atime={on,off} iqpool/data
Check zfs status
# zfs list
# zfs get iqpool/data

Monday, September 8, 2014

การ config ให้ใช้ ssh ได้โดยไม่ถาม password

การ Config ssh ให้ไม่ต้องถาม password

วิธีนี้เป็นวิธีที่ไม่ค่อยจะแนะนำนะครับ จุดประสงค์จริงๆก็คือเอาไว้ใช้สำหรับระบบ automate นะครับ

เช่น autodeploy autoemate-testing etc.

ส่วนวิธีการก็ไม่มีอะไรยากครับ ก่อนเริ่มมาอธิบายกันก่อนครับว่าเราจะทำอะไร

- ใช้ user : test ของเครื่อง1 secure shell เข้าไปที่ user : test2 ของเครื่อง 2 โดยไม่ต้องใช้ password ครับ

มาเริ่มกันเลยครับ


  1. เข้าเป็น user : test ของเครื่อง 1 ครับ

    # su - test

  2. สร้าง path ที่ไว้เก็บ key ครับ

    [test@server1]$ mkdir /home/test/.ssh
    

  3. genarate key ครับ

    [test@server1]$ ssh-keygen -t rsa -b 2048
    

  4. จากนั้นก็โยนไฟล์ไปให้ เครื่อง 2 ครับ

    [test@server1]$ ssh-copy-id test2@server2

  5. ทีนี้ก็ลองใช้ได้เลยครับ ถ้าได้ก็จะขึ้น prompt มานะครับ ถ้าไม่ได้จะเป็นชื่อ user เดิม

    [test@server1]$ ssh test2@server2
    -bash-4.1$


เป็นไงบ้างครับ ไม่ยากเลยนะครับ สำหรับครั้งนี้ก็ขอลาไปเพียงเท่านี้ครัช สวัสดีครัช 555

Saturday, August 23, 2014

การติดตั้ง และคอนฟิก virtual DNS Primary(master) Server บน VMware (CentOS6.4)

การติดตั้ง และคอนฟิก DNS Server บน VMware

     dns server คืออะไร
     dns ก็คือ domain name system
     server ก็คือ เครื่องแม่ข่าย
     virtual ก็คือ การจำลอง
     เมื่อเอามารวมกันก็ได้ว่า เครื่องแม่ข่าย dns เสมือนนั่นเองงง **ยิ่งแปลยิ่งงง อิอิ

DNS มีหน้าที จับคู่ IP address กับ hostname แล้วแปลงไปกลับนะครับ จะว่ายังไงดีล่ะ ก็ประมาณเป็นเหมือนหน่วยงานหนึ่งที่ทำหน้าที่ เก็บข้อมูลของคนไทย แล้วบันทึกว่าคนไหนใช้เบอร์โทรศัพท์อะไรประมาณนั้นอ่ะครับ เวลาเราเรียกเครื่องจากปกติ เราจะต้องเรียกเป็น ip addr เช่น
     - ping [ipaddr]
     - http://[ipaddr]
เป็นต้นนะครับ เจ้าตัวนี้จะช่วยให้เราเรียกเป็นชื่อได้ เราจึงไม่ต้องจำเป็น ipaddr ครับ เช่น
     - http://www.google.co.th
     - http://virtualitinfra.blogspot.com
แล้ว primary คืออะไร ก็คือการทำ redundancy กันครับ เผื่อว่าตัวนึงร่วงจะได้ไม่กระทบกับระบบครับ

ทีนี้เรามาดูกันดีกว่าว่าจะใช้เจ้านี่ได้ยังไง

อ่อ! ลืมบอกไป วิธีนี้ใช้ได้กับทั้ง virtual server และ physical server เลยนะครับ

  • ก่อนอื่นก็ mount แผ่น CentOS 6.4 ก่อนเลยครับ
  • mount cd ครับ

    # mkfir /mnt/cdrom
    # mount /dev/sr0 /mnt/cdrom
  • ไปแก้ไขไฟล์ repo ครับ

    # vi /etc/yum.repos.d/CentOS-Media.repo


    ตรงบรรทัด 
    baseurl=file:///media/CentOS/
    ให้แก้เป็น 
    baseurl=file:///mnt/cdrom/

    จากนั้นกด ESC และ :wq เพื่อเซฟไฟล์ครับ
  • update repos

    # yum update -y
  • install bind ครับ

    # yum install bind bind-utils -y
  • จากนั้นก็ไปคอนฟิกไฟล์ /etc/named.conf ครับ

    # vi /etc/named.conf


    ดูในส่วนของ option ก่อนนะครับ

    options {
    listen-on port 53 { 127.0.0.1; 10.224.202.11;}; #ip master server
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { localhost; 10.224.202.0/24;}; #IP Range client
    allow-transfer  { localhost; 10.224.202.12;};   #DNS Slave server
            recursion yes;
            dnssec-enable yes;
            dnssec-validation yes;
            dnssec-lookaside auto;
    
            /* Path to ISC DLV key */
            bindkeys-file "/etc/named.iscdlv.key";
    
            managed-keys-directory "/var/named/dynamic";
    };
    
    จากนั้นประกาศ zone ใหม่ขึ้นมาท้ายไฟล์ครับ ต่อจาก zone "." IN ... นะครับ ในที่นี้จะใช้ว่า demo.local นะครับ      ส่วนของ forward zone ก่อนเลยครับ forward zone ก็คือ การ mapping hostname -> IPADDR ครับ
    zone "demo,local" IN {
            type master;
            file "f.demo.local";
            allow-transfer { 10.224.202.12; };     #IP slave server
    };
    
    จากนั้นก็ reverse zone ครับ ก็คือ ส่วนที่ทำหน้าที่ แปลง IPADDR -> hostname ครับ
    zone "202.224.10.in-addr.arpa" IN {
            type master;
            file "r.demo.local";
            allow-transfer { 10.224.202.12; };
    };

    จากนั้นก็ เซฟไฟล์และปิดไฟล์ครับโดยกด esc แล้วตามด้วย :wq และ enter ครับ
  • คอนฟิกไฟล์ f.demo.local

    # vi /var/named/f.demo.local

    พิมพ์ตามนี้ครับ

    $TTL    86400
    @       IN      SOA     ns1.demo.local.      root.demo.local. (
                    2014082002      ;Serial
                    3600            ;Refresh
                    1800            ;Retry
                    604800          ;Expire
                    86400           ;Minimum TTL
    )
    @                       IN NS   ns1.demo.local.
    ns1                     IN A    10.224.202.11
    @                       IN A    10.224.202.11
    ns2                     IN A    10.224.202.12
    


    เซฟ และปิดครับ
  • แก้ไฟล์ r.demo.local เลยครับ

    # vi /var/named/r.demo.local

    ตามด้านล่างนี้เลยครับ

    $TTL    86400
    @       IN      SOA     ns1.demo.local.        root.demo.local. (
                    2014082002      ;Serial
                    3600            ;Refresh
                    1800            ;Retry
                    604800          ;Expire
                    86400           ;Minimum TTL
    )
    @       IN NS   ns1.demo.local.
    ns1     IN A    10.224.202.11
    11      IN PTR  ns1.demo.local
    ns2     IN A    10.224.202.12
    12      IN PTR  ns2.demo.local
    


    เซฟและปิดครับ
  • จากนั้นคอนฟิกที่ตัว secondary ครับ

    # vi /etc/named.conf


    options {
    listen-on port 53 { 127.0.0.1; 10.224.202.11;}; #ip master server
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { localhost; 10.224.202.0/24;}; #IP Range client
            recursion yes;
            dnssec-enable yes;
            dnssec-validation yes;
            dnssec-lookaside auto;
    
            /* Path to ISC DLV key */
            bindkeys-file "/etc/named.iscdlv.key";
    
            managed-keys-directory "/var/named/dynamic";
    };
    
    

    จากนั้นประกาศ zone ส่วนของ forward zone ก่อนเลยครับ จะคล้ายกันครับต่างกันเล็กน้อย

    zone "demo,local" IN {
            type slave;
            file "slaves/f.demo.local";
            allow-transfer { 10.224.202.12/24; }; #IP slave server
            masters { 10.224.202.11; };   #master ipaddr
    };
    
    

    จากนั้นก็ reverse zone ครับ

    zone "202.224.10.in-addr.arpa" IN {
            type slave;
            file "slaves/r.demo.local";
            allow-transfer { 10.224.202.12/24; };
            masters { 10.224.202.11; };
    };
    


    เซฟและออกครับ
    ส่วนไฟล์ f.demo.local และ r.demo.local ไม่ต้องคอนฟิกครับ เดี๋ยวมันจะทำการ sync กันเองครับ
  • จากนั้นก็ไปแก้ไขไฟล์ /etc/resolv ของทั้งสองตัวเลยครับ

    # vi /etc/resolv.conf
    


    ให้ลบบรรทัดอื่นให้หมด และใส่แค่

    nameserver     127.0.0.1
    
  • จากนั้นก็ start service โลดเลยครับ

    # service named start

    หรือ
    # /etc/init.d/named start
    
  • จากนั้นก็ทดสอบครับ

    # nslookup ns1.demo.local
    


    ต้องได้ประมาณ
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Name:   ns1.demo.local
    Address: 10.224.202.11
    
    # nslookup ns2.demo.local
    
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Name:   ns2.demo.local
    Address: 10.224.202.12
    
  • หรือจะตรวจสอบจากการเช็ค serial ก็ได้ครับ

    # dig demo.local +nssearch | cut -d ' ' -f 4 | sort | uniq -c
    
    ผลลัพธ์ประมาณนี้ครับ

    1 2014082002


    ถ้าตรงกันทั้งสองฝั่งก็ใช้ได้ครับ
เป็นไงบ้างครับ ไม่ยากเกินไปใช่มั้ยครับ หวังว่าจะมีประโยชน์นะครับ สวัสดีครับ

Saturday, August 16, 2014

สิ่งที่ควรทำหลังจาก clone vm linux(CentOS) guest

การที่เราโคลน vm สักตัวมาใช้ จะช่วยลดระยะเวลาในการติดตั้ง OS ได้มากเลยทีเดียวนะครับ แต่เมื่อโคลนเสร็จแล้วเราต้องทำอะไรบ้างล่ะ เรามาดูกันดีกว่าครับ

  1. แก้ชื่อเครื่อง
    # vi /etc/sysconfig/network

    แก้ไขตรง

    HOSTNAME=[New_Hostname]
  2. แก้ไขไฟล์ hosts
    # vi /etc/hosts

    ใส่ xx.xx.xx.xx(ip address ใหม่)     hostname(ใหม่)
    ส่วนอันเก่าก็ลบได้เลยครับถ้าไม่ได้ใช้
  3. แก้ mac address
    # vi /tc/udev/rules.d/70-persistent-net.rules

    ลบ mac address ที่ไม่ใช่ตัวปัจจุบัน
    ** เช็คได้จาก vm->edit setting->network adapter แล้วดูตรง mac address ครับว่าตรงกับอันไหน ก็ลบอันอื่นทิ้งครับ
  4. แก้ IP Address ครับ
    # vi /etc/sysconfig/network-scripts/ifcfg-eth(n)

    แก้ตรง

    IPADDR=
    NETMASK=
    GATEWAY=
เพียงเท่านี้ vm guest ตัวนี้ก็พร้อมใช้งานแล้วครับ

Wednesday, July 23, 2014

add new virtual disk to vmware linux guest no reboot

     When you add new disk to linux guest virtual machine. You cannot see new disk. But You must be re-scan new scsi device or rebooting OS.

     In this tutorial. I will re-scan disk without rebooting OS. Please follow this step

  • click edit VM you want add new disk.

  • In this window.Click add.

  • Select Hardisk and click next.

  • choose Create new virtual disk.

  • Assign disk size, Choose disk provisioning
    - Thick provision lazy zeroed is Creates a virtual disk in a default thick format. Space required for the virtual disk is allocated when the virtual disk is created. Data remaining on the physical device is not erased during creation, but is zeroed out on demand at a later time on first write from the virtual machine.
      Using the default flat virtual disk format does not zero out or eliminate the possibility of recovering deleted files or restoring old data that might be present on this allocated space. You cannot convert a flat disk to a thin disk.
    - Thick provision eager zeroed is A type of thick virtual disk that supports clustering features such as Fault Tolerance. Space required for the virtual disk is allocated at creation time. In contrast to the flat format, the data remaining on the physical device is zeroed out when the virtual disk is created. It might take much longer to create disks in this format than to create other types of disks.
    - Thin provinsion is Use this format to save storage space. For the thin disk, you provision as much datastore space as the disk would require based on the value that you enter for the disk size. However, the thin disk starts small and at first, uses only as much datastore space as the disk needs for its initial operations.

  • Click next.

  • Verify disk option and click finsh.

  • open console of VM guest.
  • runcommand
    # ls /sys/class/scsi_host/
  • output
    host{x}
  • rum command for re-scan disk.
    # echo "- - -" > /sys/class/scsi_host/host{x}/scan
  • run command for format disk.
    # fdisk -l /dev/sdb
    # mkfs.ext3 /dev/sdb
  • make directory for mount point.
    # mkdir /data
  • mount disk.
    # mount /dev/sdb /data
  • follow next step to auto mount.
    # vi /etc/fstab
  • type this text to last line file.
    /dev/sdb     /disk3     ext3     defaults     1 2
     Congraturation!!! You add new virtual disk to Linux VM guest complete.

Monday, July 21, 2014

How to install phpMyAdmin on debian7 or ubuntu

phpMyAdmin is a free web software to work with MySQL on the web. It provides a convenient visual front end to the MySQL capabilities.

Before working with phpMyAdmin, you need to have LAMP installed on your server. If you don't have the Linux, Apache, MySQL, PHP stack on your server, you can find the tutorial for setting it up here.

Install phpMyAdmin

In Debian and Ubuntu it simple.You can use apt-get for setup it.

# su -
# apt-get install phpmyadmin
or

# sudo apt-get install phpmyadmin


if you enabled sudo

During the installation, phpMyAdmin will walk you through a basic configuration. Once the process starts up, follow these steps:
Select Apache2 for the server
Choose YES when asked about whether to Configure the database for phpmyadmin with dbconfig-common
Enter your MySQL password when prompted
Enter the password that you want to use to log into phpmyadmin

After the installation has completed, add phpmyadmin to the apache configuration.
# sudo Include /etc/phpmyadmin/apache.conf > /etc/apache2/apache2.conf

Restart apache2 Service.
# sudo /etc/init.d/apache2 restart

You can then access phpmyadmin by going to youripaddress/phpmyadmin.

Sunday, July 20, 2014

How to install GlusterFS on Debian 7 wheezy

This tutorial I will explain GlusterFS configuration in Debian 7.6.0 and You can use this tutorial for ubuntu. GlusterFS is an open source distributed file system which provides easy replication over multiple storage nodes. Gluster File System is a distributed filesystem allowing you to create a single volume of storage which spans multiple disks, multiple machines and even multiple data centres.

How to use it? It simply.Please follow this step below.

Prerequisites
  • 2 x Debian 7 Server
  • IPaddr and hostname for all server
    I use :
  • Server 1 ipaddr : 192.168.207.129
    Server 1 hostname : debian7n1
  • Server 2 ipaddr : 192.168.207.130
    Server 2 hostname : debian7n2
     Install GlusterFS
The next step is to make the all machines server.
     


$ su -
# wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.1/Debian/pubkey.gpg | apt-key add -
# echo deb http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.1/Debian/apt wheezy main > /etc/apt/sources.list.d/gluster.list
# apt-get install glusterfs-server glusterfs-client -y
# update-rc.d glusterd defaults
# gluster --version

glusterfs 3.5.1 built on Jun 28 2014 04:14:49

Repository revision: git://git.gluster.com/glusterfs.git

Copyright (c) 2006-2011 Gluster Inc. <http://www.gluster.com>

GlusterFS comes with ABSOLUTELY NO WARRANTY.

You may redistribute copies of GlusterFS under the terms of the GNU General Public License.


Now it is mandatory that both machines must listen to each other with their hostname
   
# vi /etc/hossts

192.168.207.129         debian7n1
192.168.207.130         debian7n2

Now step : run this command gluster peer probe [hostname] in debian7n1 for connect both machine

# gluster peer probe devian7n2
peer probe: success

# gluster peer status

Number of Peers: 1

Hostname: debian7n2
Uuid: 58e8bbb2-6067-47b3-b1c7-1f2316d55013
State: Peer in Cluster (Connected)

Now I will create a common folder on both debian virtual machine at /data

# fdisk -l /dev/sd*
Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table 
# mkfs.ext3 /dev/sdb
mke2fs 1.42.5 (29-Jul-2012)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n)  y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
# mkdir /data
#mount /dev/sdb /data

If you wish you can use any other mount points on both machines.
Now we need to create the volume where the data will reside. The volume will be called GlusterVol. Now run on any machine.
please follow this step on one machine:
# gluster volume create GlusterVol replica 2 transport tcp debian7n1:/data debian7n2:/data force
volume create: GlusterVol: success: please start the volume to access data

run this command to start volume

# gluster volume start GlusterVol volume start: GlusterVol: success # gluster volume info 
Volume Name: GlusterVol
Type: Replicate
Volume ID: 63bc4f7e-beb1-47b5-9cb9-9f111cb6b510
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: debian7n1:/data
Brick2: debian7n2:/data

Saturday, July 19, 2014

How to install LAMP on Debian 7

     หลังจากที่เราติดตั้ง Debian 7 กันไปแล้ว คราวนี้เรามาทำ web server หรือที่เค้าเรียกกันว่า LAMP(Linux, Apache, My Sql, PHP) กันดีกว่าครับ

     ว่าแล้วเราก็มาเริ่มกันเลยดีกว่าครับ
  • ก่อนอื่นเราต้องเข้าเป็น root ของระบบก่อนนะครับ
    $ su -
  • จากนั้นเรามาทำการอัพเดตกันหน่อยครับ
    root@debian:~# apt-get update
  • จากนั้นก็ติดตั้ง my sql ครับ
    root@debian:~# apt-get install mysql-server mysql-client
  • ตั้งรหัสผ่าน root ของ mysql ครับ

  • ยืนยันรหัสผ่านครับ

  • ติดตั้ง apache ครับ
    root@debian:~# apt-get install apache2 -y
  • ต่อไปก็ติดตั้ง Php, perl และ pyton ครับ

    root@debian:~# apt-get install php5 php-pear php5-mysql libapache2-mod-php5 -y
    root@debian:~# apt-get install perl libapache2-mod-perl2 -y
    root@debian:~# apt-get install python libapache2-mod-python -y
  • รีสตาร์ท service อีกทีครับ

    root@debian:~# /etc/init.d/apache2 restart
  • ทดสอบการใช้งาน php

    root@debian:~# nano -w /var/www/test.php
  • ใส่ Code นี้ลงไปครับเป็น code แสดงข้อมูลต่างๆของ php ที่ติดตั้งไปครับ

    <?php
         phpinfo();
    ?>
  • ทดสอบโดยการเปิด browser แล้วไปที่ http://<IP-address or Server name>/test.php ถ้าขึ้นก็เป็นอันใช้ได้ครับ

**หมายเหตุ
ถ้าจะเข้าใช้จากชื่อเครื่องต้องไปใส่ที่ไฟล์ /etc/hosts ก่อนนะครับโดยเพิ่ม

ip-address            hostname

เข้าไปครับ
เสร็จเรียบร้อยแล้วครับสำหรับการติดตั้ง ถ้าจะเอาหน้าเพจไปใส่ก็ใส่ที่ /var/www/ ได้เลยครับ

credit by : https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

Thursday, July 17, 2014

How to install Debian 7.5 on VMware ESXi 5.5

     Debian Linux(เดเบียน ลินุกซ์)

     Debian คือ Linux Distro เจ้าหนึ่งที่มีผู้ใช้งานมากมายทั่วโลก ไม่แพ้ตัวอื่นๆเลย แต่ยังไม่มากนักในไทย = = และที่สำคัญเจ้าตัวนี้ยังเป็นต้นแบบของตัวอื่นๆ เช่น Ubuntu ครับ

     How to install Debian 7.5 on VMware ESXi 5.5

     ในครั้งนี้ผมขอข้ามขั้นตอนการสร้าง virtual machine ปไเลยนะครับ เนื่องจากเคยลงไว้แล้ว ก็แค่เลือก OS ให้ตรงกับที่เราต้องการในครั้งนี้ นั่นก็คือ Debian 7 ครับ ถ้าเสร็จแล้วก็มาเริ่มกันเลยครับ

download link www.debian.org
  • เปิดเครื่องก่อนครับ เมื่อเปิดขึ้นมาแล้วจะได้หน้าตาแบบนี้ครับ ถ้าใครไม่ได้แบบนี้ให้รีสตาร์ท VM 1 ทีครับ แล้วเลือก install หรือ Graphic install ครับ แต่ในที่นี้ผมจะเลือก install ครับ

  • จากนนั้นเลือกภาษาครับ เป็น English หรือใครถนัดภาษาอื่นก็แล้วแต่ครับ ฮี่ๆๆ (ไม่มีภาษาไทยนะครับ)

  • เลือก location ครับ

  • เลือกภาษาคีย์บอร์ดครับ

  • ใส่ชื่อเครื่องครับ

  • ใส่ชื่อโดเมนครับ

  • ตั้งรหัสผ่านของ user root ครับ

  • อีกครั้งครับ

  • สร้างบัญชีผู้ใช้งาน(user account) ครับ

  • ตั้ง user name ของบัญชีผู้ใช้ที่เราสร้างเมื่อสักครู่ครับ

  • ตั้งรหัสผ่านครับ

  • เลือก Time zone ครับ

  • กำหนด partition ครับ เลือกบรรทัดแรกไปได้เลยครับ

  • Enter เลยครับ

  • เลือกว่าจะแยก /home /usr /var ... หรือไม่ ถ้ายังไม่รู้คืออะไรให้เลือกบรรทัดแรกไปก่อนครับ

  • ตรวจสอบ และเลือก finish ได้เลยครับ

  • เลือก yes เพื่อยืนยันการเปลี่ยนแปลงครับ

  • จากนั้นก็จะถามว่าต้องการติดตั้ง package เลยหรือไม่ ถ้าต้องการก็ตอบ ใช่ ได้เลยครับ หรือจะรอติดตั้งเองหลังจากติดตั้ง OS เสร็จแล้วก็ได้ครับ

  • เลือก package ที่ต้องการติดตั้งครับ

  • เสร็จแล้วก็รอครับ
  • จากนั้นจะถามว่าต้องการติดตั้ง grub boot loader หรือไม่ ตอบ ใช่ ไปเลยครับ

  • กด Continue เพื่อสิ้นสุดการติดตั้งครับ หลังจากนั้นเครื่องจะรีสตาร์ทครับ

  • หน้าตาหลังจากรีสตาร์ทเสร็จ ก็ล็อกอินเข้า user ที่เราได้สร้างเอาไว้เพื่อเข้าใช้งานได้เลยครับ





  • เท่านี้ก็เป็นอันเสร็จเรียบร้อยแล้วครับสำหรับการติดตั้ง Debian 7.5 ครับ
    ก็ขอให้สนุกกับการใช้งานกันนะครับ ^ ^

Wednesday, July 9, 2014

How to config Bonding network interface on CentOS

1. เรียง interface ใหม่ โดยเข้าไปแก้ไฟล์
vi /etc/udev/rules.d/70-persistent-net.rules
2. แก้ไข modprob
vi /etc/modprobe.d/bonding.conf
โดย mode ที่เราจะใช้ จะเป็น mode 0 ซึ่งจะ config ดังนี้
options bond0 mode=1 miimon=100
อ้างอิง mode (https://wiki.centos.org/TipsAndTricks/BondingInterfaces)
mode=0 ==> Round-robin (Balance RR)
mode=1 ==> Active-Standby
mode=2 ==> Balance XOR
mode=3 ==> Broadcast
mode=4 ==> IEEE 802.3ad (Dynamic Link Aggregation or Cisco EtherChannel)
mode=5 ==> Adaptive Transmit Load Balancing (Balance TLB)
mode=6 ==> Adaptive Load Balancing (Balance ALB)
3. จากนั้น ให้ไปสร้างไฟล์ bonding ขึ้นมา ซึ่งโดยปกติแล้ว จะใช้ชื่อไฟล์ประมาณ ifcfg-bond0 ซึ่งจะสร้างไว้ใน /etc/sysconfig/network-scripts/
vi /etc/sysconfig/network-scripts/ifcfg-bond0
ตัวอย่าง config
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE="Unknown"
IPADDR=10.217.202.13
NETMASK=255.255.255.0
GATEWAY=10.217.202.254
DEFROUTE=yes
IPV6INIT=no
NAME="System bond0"
USERCTL=no
4. จากนั้น จะต้องไป config ไฟล์ ifcfg-eth0, ifcfg-eth1 เพื่อให้ทั้ง 2 Interface นั้น เป็น bonding interface โดย config ดังนี้
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:50:56:A2:55:01
IPV6INIT=no
NAME="System eth0"
USERCTL=no
MASTER=bond0
SLAVE=yes
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:50:56:A2:55:02
ONBOOT=yes
MASTER=bond0
SLAVE=yes
IPV6INIT=no
USERCTL=no
5. จากนั้น reboot ก็เป็นอันเสร็จเรียบร้อยแล้วครับ

Monday, July 7, 2014

How to install GlusterFS 3.5.1 on CentOS6.4

วิธีติดตั้ง และ ใช้งาน glusterFS แบบ replicate volume ทั้ง Server และ Client บน CentOS
Server(ใช้การติดตั้งแบบ rpm)

ข้อ 1-4 ต้องทำทุกเครื่อง

1.Download ตัวติดตั้ง glusterFS lasted version จาก
http://download.gluster.org/pub/gluster/glusterfs/LASTED

2.ติดตั้ง glusterfs server โดยใช้คำสั่งตามนี้

rpm -ivh glusterfs-libs-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-fuse-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-cli-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-api-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-extra-xlators-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-devel-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-api-devel-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-server-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-debuginfo-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-geo-replication-3.5.1-1.el6.x86_64.rpm

2.1 ติดตั้ง glusterfs client โดยใช้คำสั่ง

rpm -ivh glusterfs-libs-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-fuse-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-cli-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-api-3.5.1-1.el6.x86_64.rpm
rpm -ivh glusterfs-rdma-3.5.1-1.el6.x86_64.rpm

3. Start service ด้วยคำสั่ง
/etc/init.d/glusterd start หรือ service glusterd start


4. ทำ auto start เมื่อ boot เครื่อง
chkconfig --level 235 glusterd on

ตั้งแต่ข้อนี้ไปทำแค่เครื่องเดียว

5.เชื่อม server แต่ละ node เข้าด้วยกัน (มีกี่เครื่องก็ใส่ทุกเครื่อง แต่ไม่ต้องใส่ตัวมันเอง)
[root@SERVER1]# gluster peer probe [SERVER2]
[root@SERVER1]# gluster peer probe [SERVER3]

ตรวจสอบการตั้งค่าด้วย
[root@SERVER1]# gluster peer status


6. create volume
[root@SERVER1]# gluster volume ctreate [VolName] replica [count replica] transport tcp [Host1Name]:/data [Host2Name]:/data [Host3Name]:/data


[count replica] : ใส่ตามจำนวน server
/data1 : คือ mount point ที่ mount disk ให้แต่ละ server เพื่อทำ replicate volume
replica : คือโหมดของ glusterFS สามารถเปลี่ยนเป็น stripe หรือถ้าไม่ใส่ จะเป็นแบบ distribute

ตรวจสอบการสร้าง volume
[root@SERVER1]# gluster volume info


7.start volume
[root@SERVER1]# gluster volume start [VolName]

ถ้าเรียบร้อยก็แสดงว่า gluster พร้อมใช้งานแล้ว

Client

1.ใช้งานด้วยการ mount เหมือน device ธรรมดาได้เลย
[root@CLIENT]# mkdir /data/glusterfs-share
[root@CLIENT]# mount -t glusterfs [host1]:/[volName] /data/glusterfs-share


2.auto mount โดยการแก้ไขไฟล์ /etc/fstab/
[root@CLIENT]# vi /etc/fstab/

เพิ่ม
[host1]:/[volName]          MountPoint          glusterfs          default,_netdev          0 0

เข้าไปท้ายไฟล์

ข้อมูลเพิ่มเติม http://www.gluster.org/

Monday, June 23, 2014

ทำความรู้จักกับลินุกซ์(Linux) หนึ่งในระบบปฏิบัติการที่คนบางคนยังไม่รู้จัก




         ลินุกซ์ (Linux) และรู้จักในชื่อ จีเอ็นยู/ลินุกซ์ (GNU/Linux)เป็นระบบปฏิบัติการที่คนทั่วไปไม่ค่อยรู้จักนัก เพราะส่วนใหญ่จะเคยใช้แต่ windows ของ microsoft ลินุกซ์ (Linux) โดยทั่วไปเป็นคำที่ใช้ในความหมายที่หมายถึงระบบปฏิบัติการแบบยูนิกซ์ โดยใช้ลินุกซ์ เคอร์เนล เป็นศูนย์กลางทำงานร่วมกับไลบรารีและเครื่องมืออื่น ลินุกซ์เป็นตัวอย่างหนึ่งในฐานะซอฟต์แวร์เสรี และซอฟต์แวร์โอเพนซอร์สที่ประสบความสำเร็จและมีชื่อเสียง ทุกคนสามารถดูหรือนำโค้ดของลินุกซ์ไปใช้งาน, แก้ไข, และแจกจ่ายได้อย่างเสรี ลินุกซ์นิยมจำหน่ายหรือแจกฟรีในลักษณะเป็นแพคเกจ โดยผู้จัดทำจะรวมซอฟต์แวร์สำหรับใช้งานในด้านอื่นเป็นชุดเข้าด้วยกัน เริ่มแรกของของลินุกซ์พัฒนาและใช้งานในเฉพาะกลุ่มผู้ที่สนใจ ซึ่งในปัจจุบันลินุกซ์ได้รับความนิยมเนื่องมาจากระบบการทำงานที่เป็นอิสระ ปลอดภัย เชื่อถือได้ และราคาต่ำ จึงได้มีการพัฒนาจากองค์กรต่าง ๆ เช่น ไอบีเอ็ม ฮิวเลตต์-แพคการ์ด และ โนเวลล์ ใช้สำหรับในระบบเซิร์ฟเวอร์และพีซี เริ่มแรกลินุกซ์พัฒนาสำหรับใช้กับเครื่อง อินเทล 386 ไมโครโพรเซสเซอร์ หลังจากที่ได้รับความนิยมปัจจุบัน ลินุกซ์ได้พัฒนารับรองการใช้งานของระบบสถาปัตยกรรมคอมพิวเตอร์ในระบบต่าง ๆ รวมถึงในโทรศัพท์มือถือ และกล้องวิดีโอ ลินุกซ์มีสัญญาอนุญาตแบบ GPL ซึ่งเป็นสัญญาอนุญาตที่กำหนดให้ผู้ที่นำโค้ดไปใช้ต้องใช้สัญญาอนุญาตแบบเดิมต่อคือใช้สัญญาอนุญาต GPL เช่นเดียวกัน ซึ่งลักษณะสัญญาอนุญาตแบบนี้เรียกว่า copyleft

ความเป็นมา



          ผู้เริ่มพัฒนาลินุกซ์ เคอร์เนลเป็นคนแรก คือ ลินุส โตร์วัลดส์ (Linus Torvalds) ชาวฟินแลนด์ เมื่อสมัยที่เขายังเป็นนักศึกษาคอมพิวเตอร์ ที่มหาวิทยาลัยเฮลซิงกิ โดยแรกเริ่ม ริชาร์ด สตอลแมน (Richard Stallman) ได้ก่อตั้งโครงการจีเอ็นยูขึ้นในปี พ.ศ. 2526จุดมุ่งหมายโครงการจีเอ็นยู คือ ต้องการพัฒนาระบบปฏิบัติการคล้ายยูนิกซ์ที่เป็นซอฟต์แวร์เสรีทั้งระบบ ราวช่วงพ.ศ. 2533 โครงการจีเอ็นยูมีส่วนโปรแกรมที่จำเป็นสำหรับระบบปฏิบัติการเกือบครบทั้งหมด ได้แก่ คลังโปรแกรม (Libraries) คอมไพเลอร์ (Compiler)โปรแกรมแก้ไขข้อความ(Text Editor) และเปลือกระบบยูนิกซ์(Shell) ซึ่งขาดแต่เพียงเคอร์เนล(Kernel) เท่านั้น ในพ.ศ. 2533โครงการจีเอ็นยูได้พัฒนาเคอร์เนลชื่อ Hurd เพื่อใช้ในระบบจีเอ็นยูซึ่งในขณะนั้นมีปัญหาเกี่ยวกับความเร็วในการประมวลผล ในพ.ศ. 2534 โตร์วัลดส์เริ่มโครงการพัฒนาเคอร์เนล ขณะศึกษาในมหาวิทยาลัยแล้ว โดยอาศัย Minix ซึ่งเป็นระบบที่คล้ายกับ Unix ซึ่งมากับหนังสือเรื่องการออกแบบระบบปฏิบัติการ มาเป็นเป็นต้นแบบในการเขียนขึ้นมาใหม่โดย Torvalds เขาพัฒนาโดยใช้ IA-32 assembler และภาษาซี คอมไพล์เป็นไฟล์ไบนารี่และบูทจากแผ่นฟลอปปี้ดิสก์ เขาได้พัฒนามาเรื่อยๆจนกระทั่งสามารถบูทตัวเองได้ (กล่าวคือสามารถคอมไพล์ภายในลินุกซ์ได้เลย) และในปัจจุบันมีนักพัฒนาจากพันกว่าคนทั่วโลกได้เข้ามามีส่วนรวมในการพัฒนาโครงการ Eric S. Raymond ได้ศีกษากระบวนการพัฒนาดังกล่าวและเขียนบทความเรื่อง The Cathedral and the Bazaar ในรุ่น 0.01 นี้ถือว่ามีเครื่องมือที่เพียงพอสำหรับระบบ POSIX ที่ใช้เรียก ลินุกซ์ ที่รันกับ จีเอ็นยู Bash Shell และมีการพัฒนาอย่างต่อเนื่องและอย่างรวดเร็ว โตร์วัลดส์ยังคงมุ่งมั่นพัฒนาระบบต่อไป ซึ่งต่อมาก็สามารถรันบน X Window System และมีการเลือกนกเพนกวินที่ชื่อ Tux ให้เป็นตัวนำโชคหรือ Mascot ของระบบลินุกซ์

การใช้งาน
          การใช้งานดั้งเดิมของลินุกซ์ คือ ใช้เป็นระบบปฏิบัติการสำหรับเครื่องเซิร์ฟเวอร์ แต่จากราคาที่ต่ำ ความยืดหยุ่น พื้นฐานจากยูนิกซ์ ทำให้ลินุกซ์เหมาะกับงานหลาย ๆ ประเภท
          ลินุกซ์ ถือเป็นส่วนสำคัญของซอฟต์แวร์เซิร์ฟเวอร์ที่เรียกว่า LAMP ย่อมาจาก Linux, Apache, MySQL, Perl/PHP/Python ซึ่งเป็นที่นิยมใช้เป็นเว็บเซิร์ฟเวอร์ และพบมากสุดระบบหนึ่ง ตัวอย่างซอฟต์แวร์ซึ่งพัฒนาสำหรับระบบนี้คือ มีเดียวิกิ ซอฟต์แวร์สำหรับวิกิพีเดีย เนื่องจากราคาที่ต่ำและการปรับแต่งได้หลากหลาย ลินุกซ์ถูกนำมาใช้ในระบบฝังตัว เช่นเครื่องรับสัญญาณโทรทัศน์ โทรศัพท์มือถือ และอุปกรณ์พกพาต่าง ๆ ลินุกซ์เป็นคู่แข่งที่สำคัญของ ซิมเบียนโอเอส ซึ่งใช้ในโทรศัพท์มือถือจำนวนมาก และใช้แทนวินโดวส์ซีอี และปาล์มโอเอส บนเครื่องคอมพิวเตอร์พกพา เครื่องบันทึกวิดีโอก็ใช้ลินุกซ์ที่ดัดแปลงเป็นพิเศษ ไฟร์วอลล์และเราเตอร์หลายรุ่น เช่นของ Linksys ใช้ลินุกซ์และขีดความสามารถเรื่องทางเครือข่ายของมัน ระยะหลังมีการใช้ลินุกซ์เป็นระบบปฏิบัติการของซูเปอร์คอมพิวเตอร์มากขึ้น ในรายชื่อซูเปอร์คอมพิวเตอร์ TOP500 ของเดือนพฤศจิกายน พ.ศ. 2548 เครื่องซูเปอร์คอมพิวเตอร์ที่เร็วที่สุดสองอันดับแรกใช้ลินุกซ์ และจาก 500 ระบบ มีถึง 371 ระบบ (คิดเป็น 74.2%) ให้ลินุกซ์แบบใดแบบหนึ่ง เครื่องเล่นเกม โซนี่ เพลย์สเตชัน 3 ที่ออกในปี พ.ศ. 2549 รันลินุกซ์ โซนียังได้ปล่อย PS2 Linux สำหรับใช้กับเพลย์สเตชัน 2 อีกด้วย ผู้พัฒนาเกมอย่าง Atari และ id Software ก็เคยออกซอฟต์แวร์เกมบนลินุกซ์มาแล้ว

สำหรับทความนี้คงจบเพียงเท่านี้ แล้วครั้งต่อไปเราค่อยมาเรียนรู้วิธีใช้เจ้าลินุกซ์กันครับบ ^^