Tuesday, March 31, 2015

การติดตั้ง Google Authenticator สำหรับบริการ Remote SSH บน Linux



การติดตั้ง Google Authenticator สำหรับบริการ Remote SSH บน Linux

ขั้นตอนแรกสำหรับการติดตั้ง จะแบ่งออกเป็นสองส่วน โดยแยกตาม Linux distribution ซึ่งทำมาสองแบบ คือ  Debian7 กับ CentOS7


สำหรับ Debian7  ให้ Config ตามนี้ครับ

1.     Login  เข้าระบบด้วย Root

2.     ติดตั้ง Module ต่างๆ
      aptitude install libpam0g-dev make gcc bzip2

3.     Download google authenticator มาไว้ที่เครื่อง

4.     แตกไฟล์ zip ออกมา
      tar -xvf libpam-google-authenticator-1.0-source.tar.bz2

5.     เข้าไปที่ Folder ที่ extract ออกมาแล้ว
           cd libpam-google-authenticator-1.0
 
6.     ทำการติดตั้ง ด้วยคำสั่ง  make และ make install ตามลำดับ
      make

      make install

 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


สำหรับ CentOS7 ให้ Config ตามนี้ครับ

1.     Login  เข้าระบบด้วย Root

2.     ติดตั้ง Module ต่างๆ และเปิดการใช้งาน NTP
     
      yum -y groupinstall "Development Tools"
      yum -y install pam-devel wget
      yum -y install ntp

      systemctl start ntpd
      systemctl enable ntpd

3.     Download google authenticator มาไว้ที่เครื่อง

4.     แตกไฟล์ zip ออกมา
      tar -xvf libpam-google-authenticator-1.0-source.tar.bz2

5.     เข้าไปที่ Folder ที่ extract ออกมาแล้ว
           cd libpam-google-authenticator-1.0
 
6.     ทำการติดตั้ง ด้วยคำสั่ง  make และ make install ตามลำดับ
      make

      make install

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

7.      เรียกใช้งานโปรแกรม
      google-authenticator
 
8.     สำหรับคำถามแรก ให้ตอบ y ระบบจะทำการสร้าง Secret key เพื่อให้นำไปใช้กับโปรแกรม Google authen  บนมือถือ สำหรับ emergency code ใช้ในกรณีที่มือถือหายและต้องการเข้าระบบ ดังนั้นข้อมูลส่วนนี้ จะต้องเก็บไว้ และเก็บเป็นความลับด้วย
Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@dreamwork%3Fsecret%3D73CV3CXD2HMRZIXX
Your new secret key is: 73CV3CXD2HMRZIXX
Your verification code is 257858
Your emergency scratch codes are:
  46776405
  18571266
  98256248
  59004138
  98459948

9.     คำถามที่เหลือ ให้ตอบ y ทั้งหมด
Do you want me to update your "/root/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

10.  ทำการแก้ไขไฟล์ Pam ของ SSH
vi /etc/pam.d/sshd
            เพิ่ม auth       required     pam_google_authenticator.so ลงไป

# /etc/security/pam_env.conf.
auth       required           pam_google_authenticator.so
auth       required     pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth       required     pam_env.so envfile=/etc/default/locale

11.  ทำการแก้ไขไฟล์ SSH Config
vi /etc/ssh/sshd_config
            เปลี่ยนค่า            ChallengeResponseAuthentication no
            ให้เป็น               ChallengeResponseAuthentication yes

12.  Restart SSH Service
สำหรับ debian7 ให้ใช้คำสั่งนี้        /etc/init.d/ssh restart
สำหรับ CentOS7  ให้ใช้คำสั่งนี้      systemctl reload sshd

ขั้นตอนของทางฝั่ง Server เสร็จแค่นี้

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

ขั้นตอนฝั่งมือถือ

1.     ที่มือถือ ให้โหลดโปรแกรม Google authenticator มาลงในเครื่องก่อน
App Atore 
 
Play Store
     
            Windows store

2.     ที่โปรแกรม เลือก Add entry จากนั้น เลือก Manual Entry

3.      ช่อง Account ให้ใส่ชื่อของ Server หรือชื่ออะไรก็ได้ เพื่อให้รู้ว่า นี่เป็น Code ของ SSH เครื่องนี้นะ

4.     ช่อง Key ให้ใส่ Secret key ทีได้จาก Server

เวลา Login ระบบจะเตือนให้ใส่ Verification code ก่อน จากนั้นค่อยใส่ password

เท่านั้ก็สามารถใช้งานได้แล้วครับ

Monday, January 20, 2014

ntpdate: Adjust time or Step time

ในบางครั้งที่เราทำการ Update time โดยใช้คำสั่ง ntpdate ก็จะแสดงผลลัพธ์ว่า  time จะมีการ offset ไปมากน้อยเท่าไหร่ จาก Log ด้านล่าง

20 Jan 09:50:49 ntpdate[4732]: adjust time server 202.28.214.2 offset 0.021757 sec

20 Jan 09:51:04 ntpdate[4733]: step time server 202.28.214.2 offset 0.015320 sec


ทุกอย่างก็ดูเหมือนจะปกติ แต่ว่า มีบางอย่างที่แตกต่างกันคือ คำว่า adjust time กับ step time ซึ่งบางครั้งที่เราใช้คำสั่ง ก็จะขึ้นว่า  adjust time แต่บางครั้งเหมือนกันก็จะขึ้นข้อความว่า  step time ทั้งสองคำนี้ มีความหมายแตกต่างกันอย่างไร

step time
เป็นอะไรที่เราคาดหวังว่า เมื่อเราใช้คำสั่ง ntpdate แล้ว เวลาใน server ของเรา จะเปลี่ยนไปตามเวลาของที่เราไป Update โดยทันที

adjust time
หากว่า Log ขึ้นประโยคนี้ นั่นหมายความว่า เวลาของ Server ของเรานั้น จะไม่ได้เปลี่ยนแปลงทันทีตามเวลาที่เราไปขอ Update แต่จะค่อย ๆ ปรับเปลี่ยนทีละน้อยจนกระทั่งเวลาทั้งสองที่ตรงกัน

หากค่า Offset ระหว่าง Server เรา กับ Time server มีค่าแตกต่างกันมาก ๆ (หมายถึง แตกต่างกันหลาย ๆ วินาที) Step time จะมีข้อเสียเรื่องของเวลาที่ Diff กันอย่างกระทันหัน  ทั้งในเรื่อง Timestamps ของ Log file ที่อาจจะผิดพลาดไป รวมถึง Application บางอย่างที่มีการอ้างอิงกับเวลาในเครื่อง อาจจะทำงานผิดพลาดได้

ในการที่เราจะบังคับว่า ทุก ๆ ครั้งที่เราใช้คำสั่ง ntpdate จะให้ทำการ update time แบบ Step time หรือ Adjust time นั้น ให้เราเพิ่ม option ลงไปหลังคำสั่ง ntpdate ดังนี้

-b  เป็นการบังคับให้ update time แบบ Step time
-B  เป็นการบังคับให้ update time แบบ Adjust time

ตัวอย่าง

root@localhost:~# ntpdate -b pool.ntp.org
20 Jan 10:11:33 ntpdate[5150]: step time server 124.109.2.169 offset 0.046398 sec

root@localhost:~# ntpdate -B pool.ntp.org
20 Jan 10:11:44 ntpdate[5156]: adjust time server 124.109.2.169 offset 0.000313 sec


ที่มา:http://www.noah.org/wiki/Ntpd

Friday, January 3, 2014

คำถามเกี่ยวกับ IPv6 part1

ลองตอบคำถามเหล่านี้ดูเพื่อทดสอบความรู้เกี่ยวกับ IPv6

1. อะไรคือปัญหาของ IPv4 บน Internet ในปัจจุบัน?

2. จากปัญหาข้อแรก IPv6 จะแก้ปัญหานี้ได้อย่างไร?

3. IPv6 สามารถรองรับ QOS ได้ดีกว่า IPv4 อย่างไร?

4. อะไรที่ทำให้ IPv6 มีประสิทธิภาพกว่า IPv4?

5. NAT มีข้อเสียอย่างไรสำหรับการทำงานแบบ P2P?

6. ข้อดีของการปรับเปลี่ยนมาใช้เป็น IPv6?

Thursday, January 2, 2014

ความสามารถใหม่ ๆ บน IPv6

    ถ้าจะบอกว่า IPv6 มีความสามารถพิเศษเหนือกว่า IPv4 ก็อาจจะไม่ผิดนัก เนื่องจากว่า หลังจากการที่นักพัฒนา ได้ทำการพัฒนา IPv4 ขึ้นมานั้น เขาได้มองเห็นข้อผิดพลาดหลายอย่างบน IPv4 และได้ทำการปรับปรุงและแก้ไขให้ดีขึ้นใน IPv6 เพื่อให้เป็น Protocol ที่เหมาะสมสำหรับการติดต่อสื่อสารกันบน Internet

    ความสามารถใหม่ๆ ของ IPv6 มีดังนี้

จำนวนของ IP address มากกว่าเดิม 

    IPv6 จำนวน 1 IP นั้น มีขนาดเท่ากับ 128 บิท ซึ่งหมายความว่า ปริมาณของ IPv6 นั้นมีได้ถึง 3.4x1038 เลยทีเดียว

    หากมีคำถามว่า ค่าตัวเลขขนาด 3.4x1038 มีจำนวนเท่าไหร่ หรือมากแค่ไหน ลองเปรียบเทียบกับ ขนาดของ IPv4 หรือขนาดประชากรบนโลกเราทั้งหมดดู ซึ่งขนาดของ IPv4 ทั้งหมด จะมีจำนวนอยู่ที่ 4.2 พันล้าน IP ซึ่งเปรียบเทียบกับประชากรของโลก ซึ่งมีถึง 7.1 พันล้านคน แต่ IPv6 มีขนาดมากถึง 340 พัน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน IP จึงเป็นสาเหตุว่า ทำไม IPv4 ถึงขาดแคลนและต้องเปลี่ยนมาใช้ IPv6 แทน

    และเนื่องจากการที่มีขนาดใหญ่และมีจำนวน IP มาก ในการออกแบบ IPv6 จึงสามารถที่จะแบ่ง IP ออกเป็นลำดับชั้น หรือที่เรียกว่า Sub netting เพื่อสะดวกในการใช้งาน

    ข้อดีอีกอย่างหนึ่งของการที่มีปริมาณ IP ให้ใช้งานได้อย่างมากมายนั้น คือการที่ไม่จำเป็นต้องใช้เทคนิคในการแปลงค่า Address หรือที่เรียกว่า Network address translation (NAT) อีกต่อไป ซึ่งนับเป็นเรื่องดีมาก เพราะว่า NAT นั้น ก่อให้เกิดปัญหาทางด้าน Security และ Network หลายอย่างมาก

IP Header รูปแบบใหม่

    IPv6 ได้มีการออกแบบ Header รูปแบบใหม่ เพื่อลดความสูญเสียเวลาในการทำงาน หรือกล่าวได้อีกอย่างนึงว่า ทำงานได้รวดเร็วยิ่งขึ้น ทั้งนี้ เกิดจากการออกแบบให้ตัดในส่วนของ Option และส่วนของ Extension ออกไป และคงเหลือแค่ส่วนที่จำเป็นกับการใช้งานเท่านั้น

    IP Header ของ IPv4 และ IPv6 จะแตกต่างกันอย่างสิ้นเชิง และไม่สามารถใช้ทดแทนกันได้เลย ถึงอย่างไรก็ตาม Base Header ของ IPv6 จะมีขนาดคงที่ (40 ไบท์) ซึ่งจะมีขนาดใหญ่กว่าสองเท่าของ IPv4 เนื่องจาก Address ของ IPv6 มีขนาดใหญ่กว่านั่นเอง

แจก IP ให้แบบอัตโนมัติเมื่อเข้ามาในเครือข่าย


    เพื่อความสะดวกในการแจก IP ให้กับเครื่องลูกข่ายที่เข้ามาใช้งาน IPv6 รองรับการแจก IP ที่เป็นทั้ง Stateful (ใช้ DHCP Server) และ Stateless (ไม่ใช้ DHCP Server) โดยเฉพาะอย่างยิ่ง การทำงานแบบ Stateless จะอำนวยความสะดวก และลดค่าใช้จ่ายสำหรับ Server ที่จะต้องนำมาทำเป็น DHCP Server โดย  Router จะทำหน้าที่แจก IPv6 ให้กับอุปกรณ์ที่มาต่อเข้าในระบบเนทเวิร์คโดยอัตโนมัติ
  
ระบบความปลอดภัยที่พร้อมใช้งาน

    ด้วยความสามารถของ Extension header ซึ่งมีส่วนขยายด้านความปลอดภัยมาให้ถึง 2 ตัวคือ Authentication Header และ Encapsulation Protocol ทำให้ IPv6 มีความปลอดภัยสูง เนื่องจากสามารถป้องกันการเข้าถึงด้วยรหัสผ่านแล้ว ข้อมูลทั้งหมด ยังถูกเข้ารหัสเอาไว้ด้วย

รองรับการทำงานแบบ QOS ดีขึ้น

    บน IPv6 จะมีฟิลด์ขื่อ Traffic class ซึ่งจะทำหน้าที่แบ่งแยกและกำหนดประเภท Traffic ต่าง ๆ และมีฟิลด์ที่ชื่อ Flow label ที่จะส่งต่อไปยัง Layer ต่อไป ซึ่งทั้สองฟิลด์นี้ ทำงานอย่างมีประสิทธิภาพมาก ถึงแม้ว่า  Payload นั้น จะถูก Encrypt ด้วย IPSEC  ก็ตาม

ส่วนขยาย

    IPv6 สามารถที่จะเพิ่มความสามารถใหม่ ๆ ได้โดยการเพิ่มส่วนขยายหรือที่เรียกว่า Extension header โดยที่ไม่กระทบกับ Base Header แต่อย่างใดทำให้การรับส่งข้อมูลเป็นไปด้วยความรวดเร็ว วิธีการนี้จะแตกต่างจากบน IPv4 ซึ่งจะต้องเพิ่มส่วนขยายไว้ใน Option ทำให้ขนาดของ IP ไม่คงที่เป็นผลทำให้การทำงานช้าลงอย่างมาก

    ที่กล่าวมาข้างต้น เป็นความสามารถหลัก ๆ ของ IPv6 ซึ่งยังมีความสามารถอื่นๆ อีกมากที่ยังไม่ได้นำมาเขียนไว้ และด้วยความสามารถหลาย ๆ อย่าง เป็นที่ต้องการในปัจจุบัน แต่ IPv4 ที่มีอยู่ ไม่สามารถรองรับได้ จึงเป็นเหตุผลที่ว่า ทำไมเราจึงควรจะเปลี่ยนมาใช้ IPv6 ในอนาคต.


Friday, December 27, 2013

การรับมือกับปัญหาเรื่อง IPv4 ขาดแคลน

    สืบเนื่องจากปัจจุบัน  IPv4 เริ่มจะขาดแคลน ในบางภูมิภาค จะไม่สามารถขอ IPv4 จากผู้ให้บริการ IP ในแต่ละภูมิภาคได้แล้ว เนื่องจากได้ทำการแจกจ่ายไปหมดแล้ว
    ปัญหาใหญ่จึงตกอยู่กับผู้ที่ต้องการใช้งาน IP ในปริมาณมาก ๆ เช่น ผู้ให้บริการด้าน Internet หรือที่เรียกว่า ISP (Internet service provider) ทั้งแบบมีสาย และแบบไร้สาย รวมถึงหน่วยงานหรือบริษัทใหญ่ ๆ ที่มีการขอ IP เองโดยไม่ผ่าน ISP ด้วย ว่าจะมีวิธีการรับมือกับปัญหานี้อย่างไร
    โดยส่วนใหญ่ ISP ต่าง ๆ จะมีการวางแผนรองรับสำหรับเรื่องนี้เอาไว้อยู่แล้ว (รึเปล่า) โดยจะแบ่งออกเป็นวิธีการต่าง ๆ ดังนี้
    1. ไม่ต้องทำอะไรเลย
    เป็นวิธีการที่ดีที่สุด ใช้ค่าใช้จ่ายน้อยที่สุด และมีผลกระทบในปัจจุบันน้อยที่สุด แต่ ระบบเนทเวิร์คจะขยายต่อไปได้อีกเล็กน้อย จึงเหมาะกับบริษัทใหญ่ ๆ ที่มีการวางระบบไว้ดีแล้ว และไม่ต้องการขยายระบบออกไปอีกมากนัก
    วิธีการนี้ มีข้อเสียอยู่บ้าง นั่นคือ เมื่อระบบส่วนใหญ่บนโลกนี้ เข้าสู่ IPv6 เต็มตัวแล้ว ระบบ  IPv4 ที่เป็นอยู่ปัจจุบันจะไม่สามารถติดต่อกับระบบ IPv6 ได้
    แต่ก็มีวิธีแก้ไขอยู่บ้าง หากว่าจะมีการ Implement IPv6 คู่ขนานไปกับการใช้งาน IPv4 โดยที่ไม่กระทบกับการทำงานปกติ อาจจะมีค่าใช้จ่ายบ้างสำหรับการเริ่มระบบใหม่ และเรื่องของการ Migration ในกรณืที่ต้องการย้ายระบบจากระบบเก่ามาสู่ระบบใหม่ แต่ในช่วงที่พัฒนา ระบบ IPv4 จะสามารถใช้งานได้อย่างเต็มประสิทธิภาพ
    2. พยายามใช้ IPv4 ต่อไป
     สำหรับบางบริษัท ที่มีการขยายตัวอย่างต่อเนื่อง มีความจำเป็นที่จะต้องขยายระบบเนทเวิร์ค เพื่อรองรับการขยายตัวของบริษัท  แต่ก็ไม่อยากที่จะเปลี่ยนระบบที่มีอยู่เดิม จึงต้องหาทางที่จะทำอย่างไรก็ได้ เพื่อที่จะให้สามารถใช้งาน IPv4 ได้ต่อไป ก็จะมีวิธีการที่จะทำให้สามารถใช้ IPv4 ต่อไปได้อีก ดังนี้
    2.1 IP Trading
    ปัจจุบัน ผู้ให้บริการ IP (NIC - Network information center) เริ่มจะมีข้อเสนอใหม่ ๆ  คือการเป็นคนกลางในการแลกปลี่ยนซื้อขาย IPv4 จากผู้ให้บริการรายหนึ่ง ไปยังผู้ให้บริการอีกราย ซึ่งหลังจากผู้ให้บริการ ตกลงราคาเรียบร้อยแล้ว  NIC จะทำหน้าที่เปลี่ยนผู้ถือครอง IPv4 ชุดนั้น
    2.2 CGN (Carrier grade NAT) ,SP-NATหรือ NAT44
    วิธีการนี้ โดยมากจะใช้กับผู้ให้บริการ Internet ตัวอย่างเช่น เดิมที ในการให้บริการลูกค้า ที่เป็นลักษณะ  Individual หรือลูกค้า ADSL แพคเกจ ปกติ ที่ไม่ได้ขอ Fix IP ทาง ISP ก็จะแจกเป็น Public IP ไปถึง ADSL Router ของลูกค้า และ ตัว Router ของลูกค้าจะแจก Private IP ให้กับเครื่องลูกค้าที่ต่ออยู่หลัง Router เหล่านั้น เวลาที่จะใช้งาน Internet เครื่องลูกค้าที่เป็น Private IP  ก็จะทำ NAT ผ่าน Router ของลูกค้าและเชื่อมต่อไปยังปลายทางได้ ซึ่ง Public IP ที่ทาง ISP แจกให้นั้น จะเปลี่ยนไปเรื่อยๆ ทุกครั้งที่ลูกค้ามีการปิด Router ของลูกค้า (เรียกว่า Dynamic IP)
    แต่เนื่องจากปริมาณการใช้งานของลูกค้ามากขึ้น จนกระทั่ง Pool Public IP ของ ISP หมดลง ทำให้ ไม่สามารถที่จะเพิ่มลูกค้าได้อีกด้วยวิธีนี้  CGN จึงเป็นทางออกอีกทางหนึ่ง วิธีการทำงานคือ ISP จะแจก PrivateIP ให้กับลูกค้า แทนที่จะเป็น Public IP เมื่อลูกค้าต้องการใช้งาน Internet ลูกค้าจะ NAT ออกมาที่ Router ของลูกค้าเอง และเมื่อถึงทีฝั่ง ISP จะต้องมีการทำ NAT อีกชั้นหนึ่ง หรือที่เราเรียกว่า NAT ซ้อน NAT ซึ่งทาง ISP จะต้องลงทุนอุปกรณ์ CGN เพิ่มเติมเพื่อรองรับการทำงานนี้
    3. เปลี่ยนมาใช้ IPv6
    เนื่องจาก IPv6 มีขนาดใหญ่มาก จนสามารถรองรับการใช้งานในปัจจุบันได้ทั้งหมด ถ้าเรามีการเปลี่ยนมาใช้ IPv6 จะแก้ปัญหาเรื่อง IP ขาดแคลนได้

Thursday, December 19, 2013

IPv6 ความเป็นมา ความหมาย และคุณสมบัติ




ถ้าจะกล่าวถึงเรื่องของIP หลายๆ คนที่ทำงานด้าน IT อาจจะทราบว่า นั่นย่อมาจาก Internet Protocol และถูกนำไปใช้งานในการติดต่อสื่อสารกันในระบบเนทเวิร์ค โดยเฉพาะอย่างยิ่ง บน Internet
แต่นับว่าเป็นเรื่องใหม่สำหรับหลาย ๆ คน ถ้าจะพูดถึงเรื่องของ IPv6 เนื่องจากเป็นอะไรที่ยังค่อนข้างใหม่มาก สำหรับผู้ใช้งานทั่วไป ซึ่ง IPv6 ได้ถือกำเนิดขึ้นมานานแล้ว ตั้งแต่ปี 1994 แต่เพิ่งมาเป็นที่กล่าวถึงไม่นานนี้
แล้วเหตุใด ทำไมถึงต้องมีการนำIPv6 มาใช้? แล้ว IPv6 คืออะไร? แตกต่างจากIP ที่เราใช้งานกันในปัจุบันอย่างไร? เราจะมาหาคำตอบกัน



ความเป็นมา
เมื่อเราย้อนเวลากลับไปยังสมัยแรกๆประมาณ ปลายทศวรรษที่ 80 (1988-1989) ที่เราเริ่มจะมีการติดต่อสื่อสารกันบน Internet ในการที่เราจะติดต่อสื่อสารให้เข้าใจนั้น เราจำเป็นจะต้องคุยด้วยภาษาเดียวกัน การคุยด้วยภาษาเดียวกันนี้ เรียกว่าProtocol ซึ่ง Protocol ที่เป็นที่นิยมใช้สำหรับการติดต่อสื่อสารกันบน Internet เรียกว่า Internet Protocol หรือเรียกสั่้นๆว่า IP ซึ่งในสมัยแรกๆ เวอร์ชั่นของIPที่ใช้ จะเป็นเวอร์ชั่น 4 เราจึงเรียก Protocol นั้นว่า IPv4



กำเนิด IPv6
เมื่อปี 1990 เป็นช่วงที่Internet เติบโตอย่างก้าวกระโดด มีการใช้งานInternetอย่างแพร่หลายในวงกว้าง ซึ่งทำให้ปริมาณการใช้งาน IPAddress มีมากขึ้นเป็นเงาตามตัว จนกระทั่ง RIR หรือ Regional Internet Registry ได้ออกมาประกาศว่า จากการที่มีคนมาร้องขอ IP address และมีการแจกจ่ายไปเป็นจำนวนมากแล้วนั้น ขณะนี้ IP address Class B เริ่มจะไม่พอแจกแล้ว
เมื่อเป็นเช่นนั้น องค์กรที่ดูแลด้านInternet ที่ชื่อ IETF หรือ Internet Engineering Task Force ได้ประกาศคณะทำงานเพื่อแก้ไขปัญหาที่เกิดขึ้นนี้ เพราะเขาได้คิดแล้วว่า หากปล่อยให้มีการร้องขอการใช้งานแบบนี้เรื่อย ๆ IP Address ที่มีอยู่ ก็อาจหมดไปในระยะเวลาอันสั้นแน่นอน
ผ่านไปสี่ปี หลังจากที่ได้ทำงานอย่างหนัก คณะทำงานก็ได้ข้อสรุปของ IPAddress แบบใหม่ ซึ่งจะเปลี่ยนรูปแบบการใช้งาน IP แบบเดิมๆไปอย่างมากมาย ซึ่งมีชื่อเรียก IP แบบใหม่นี้ว่า Ipng หรือ IP Next Generation นั่นเอง
พอถึงปี 1995 ข้อกำหนดของ Ipng ก็เรียบร้อย พร้อมจะประกาศใช้และตั้งชื่อให้เป็นIP Versionถัดไป แต่ทว่า... IP version 5 ได้ถูกนำไปใช้เรียบร้อยแล้ว โดย Protocol ที่ชื่อว่า Internet streaming protocol ทาง IETF จึงไม่มีทางเลือก ต้องกำหนดชื่อให้เป็น IPv6 แทน ซึ่งเราสามารถดูข้อกำหนดและ Spec ของ IPv6 ได้จาก RFC1883



แรงผลักดันที่ทำให้มีการคิดค้น IPv6
ปกติ การที่เราจะเริ่มต้นใช้งานเทคโนโลยีใหม่ๆ ขณะที่เรายังสามารถใช้งานของเก่าได้ เป็นเรื่องค่อนข้างยาก การที่จะเปลี่ยนไปสู่สิ่งใหม่ๆ จำเป็นจะต้องมีแรงจูงใจให้เราเข้าไปศึกษาและทดสอบ เรื่องของ IPv6 ก็เช่นเดียวกัน ซึ่งแรงจูงใจที่จะทำให้เราเปลี่ยนไปใช้งาน IPv6 มีดังนี้

1. ความต้องการไอพีแอดเดรสที่มากขึ้น เพื่อให้สามารถรองรับกับอุปกรณ์สื่อสารสมัยใหม่ เช่น Smart phone และ Tablet เป็นต้น
    ปัจจุบัน พฤติกรรมการใช้งานโทรศัพท์มือถือของคนเราเปลี่ยนไปจากเดิมมาก เพราะว่า โทรศัพท์มือถือในยุคนี้ สามารถ ทำอะไรได้มากกว่า โทรศัพท์มือถือในยุคก่อน ๆ มากนัก หรือที่เราเรียกกันว่า  Smartphone ซึ่ง Smartphone นี้เอง ต้องการใช้งาน IPAddress เพื่อเชื่อมต่อ Internet 
    ไม่เพียงเท่านั้น อุปกรณ์ Tablet ก็ได้มีการพัฒนา ให้มีความเบาและบางขึ้นเป็นอย่างมาก ทำให้เราสามารถพกไปที่ไหน ๆ ได้สะดวก
    ณ ขณะที่เขียนบทความนี้ ประชากรในโลกเรา มีอยู่ประมาณ 7.13 พันล้านคน(ข้อมูลจาก http://www.census.gov/popclock/) ถ้าหากว่า 60% ของประชากรทั้งหมด ใช้งาน Smartphone เพียงคนละเครื่อง ก็จะไม่มี IPAddress เพียงพอกับการใช้งาน
2. การสื่อสารระหว่างกันโดยไม่ต้องพึ่งพา NAT เช่นการทำ Online transaction เป็นต้น
     NAT (Network address translation) คือการทำให้ Private IPAddress หลาย ๆ IP สามารถใช้งานผ่าน  Public IPAddress เพียง IP เดียวได้ ซึ่งแนวคิดนี้เกิดขึ้นเนื่องจาก IPAddress ที่แจกจ่ายไป ไม่เพียงพอกับการใช้งาน 
    การใช้งาน NAT มีข้อเสียอย่างมากในการติดต่อสื่อสารกัน คือ ฝั่งปลายทางจะไม่มีทางทราบได้เลยว่า กำลังติดต่ออยู่กับใคร เนื่องจากว่า Public IPAddress ที่มีการ NAT ออกมานั้น โดยทั่วไป จะไม่สามารถระบุได้ว่า มาจาก Private IPAddress ใด 
3. ความต้องการความปลอดภัย ความน่าเชื่อถือ และความรวดเร็วในการติดต่อสื่อสาร
    เหตุต่อเนื่องจากข้อ 2 หากว่า เราไม่สามารถตรวจสอบว่า  IPAddress ปลายทางที่คุยกับเรานั้นเป็นใคร ความน่าเชื่อถือของการใช้งาน ก็จะลดลงอย่างมาก

    จะเห็นได้ว่าจากแรงผลักดันทั้งหลาย ทำให้เราต้องมุ่งไปสู่การใช้งาน IPv6 ซึ่งจะแก้ปีญหาทั้งหมดที่กล่าวมาข้างต้นได้

โปรดติดตามตอนต่อไป

Monday, December 16, 2013

ขั้นตอนการ Backup ไฟล์ Configuration ของ Juniper Firewall (ISG Series) และ Fortigate Firewall รวมถึงการทำ Compare Configuration. Part2/2




    หลังจากที่เราทำการทดสอบ Script ทั้งสองเรียบร้อยแล้ว ก็ให้เรานำ Script ทั้ง 2 ไปวางไว้ที่ /root
และเขียน Script เพื่อทำการเก็บ Config ของไฟร์วอลล์ทั้งสองนั้นในรูปแบบของไฟล์ที่มีการบีบอัดข้อมูล

compress.sh

/root/fortigate.sh
/root/juniper.sh
gunzip /tftpboot/*.gz
chmod 644 /tftpboot/*
chown root:root /tftpboot/*
BASELOG="/tftp/log"
BASEDIR=${BASELOG}/`date +%d-%b-%y`
[ ! -d ${BASEDIR} ] && mkdir -p ${BASEDIR}
mv /srv/tftp/ru* ${BASEDIR}



หลัง จากนั้น ให้เราเขียน Script เพื่อทำการตรวจสอบว่า  File config ของเมื่อวาน และของปัจจุบันที่เราเพิ่งได้ backup ไปนั้น มีความแตกต่างกันอย่างไร มีการเพิ่มอะไรใหม่ ๆ หรือมีการลบอะไรออกไปบ้าง และให้ทำการส่งเมล์ออกไปยัง Admin   

checkdiff.sh

#!/bin/bash
BASELOG="/tftp/log/"
BASEDIR=${BASELOG}/`date +%d-%b-%y`
[ ! -d ${BASEDIR} ] && mkdir -p ${BASEDIR}
mv /tftpboot/* ${BASEDIR}
TODAY=`date +%d-%b-%y`
YESTERDAY=${BASELOG}/`date --date='1 day ago' +%d-%b-%y`

FILENAME="
juniper
fortigate

echo "Date - " ${TODAY} >> /tftp/report.log
echo "------------------------------------------------------------------------" >> /tftp/report.log
ls -l ${BASEDIR} >> /tftp/report.log
echo "*************************************************" >> /tftp/report.log
for filename in ${FILENAME}
do
    FILENAME=`echo ${filename}
    cut -f 1`
    SUBDIR=${BASEDIR}
    YSUBDIR=${YESTERDAY}
    echo "File" ${filename} " " >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "Check Differential configuration" >> /tftp/report.log
    diff ${SUBDIR}/${FILENAME} ${YSUBDIR}/${FILENAME} >> /tftp/diff.log
    echo "............... New configuration added ............." >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    cat /tftp/diff.log
    grep "<" >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo ".............. Old configuration Remove ............." >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    cat /tftp/diff.log
    grep ">" >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "End of file" ${filename} " " >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "******************************************" >> /tftp/report.log
    rm -f /tftp/diff.log
    touch /tftp/diff.log
done

SUBJECT="Firewall differential configuration"
EMAIL= “taveesak@gmail.com"
EMAILMESSAGE="/tftp/report.log"
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
rm -f /tftp/report.log


สุดท้าย

ตั้ง Crontab ให้รัน script compress.sh และ checkdiff.sh ทุกๆ วัน ในเวลาที่เราต้องการ
เท่านั้น

เหมือนเดิม หากว่าเราจะทดสอบว่า Script ที่เขียนนั้น ใช้งานได้จริงหรือไม่ ก็แค่ รัน Script นั้นขึ้นมา
หากใช้งานได้ เราก็จะเห็นเมล์ส่งเข้ามายัง Inbox ของเราครับ

 --------------------------------------------------------------------------------------------------
PS. Part2 นี้ รีบไปหน่อย หากมีข้อสงสัย ก็ส่งเมล์มาถามนะครับ