udhcp client script hooking

Hooking เป็นเทคนิคหนึ่งซึ่งทำให้ซอฟต์แวร์สามารถ ปรับเปลี่ยน หรือเพิ่มเติม ได้ในภายหลัง โดยผ่านการดักจับ (intercept) function call, message หรือ event

การที่ต้องมีความสามารถนี้เนื่องจาก เพื่อให้ซอฟต์แวร์สามารถปรับเปลี่ยนไปตามเหตุการณ์ หรือค่าบางอย่างที่เกิดขึ้นในโปรแกรมในขณะ run-time ได้ในภายหลังโดยที่ไม่ต้องไปแก้ไขที่ source code ต้นฉบับ ซึ่งอาจทำโดยบุคคลที่ไม่ใช่ผู้พัฒนาโปรแกรมนั้นๆ ทำให้โปรแกรมมีความยืดหยุ่นสูง สามารถเปลี่ยนแปลงในภายหลังได้ง่าย

โปรโตคอล DHCP เองนั้นมีความยืดหยุ่นสูง สามารถใส่ค่า option ไว้ได้หลายค่า การจะเขียนโปรแกรมเพื่อประมวลผล option ต่างๆที่ใส่มาใน โปรโตคอล DHCP จึงไม่ใช่เรื่องง่าย เนื่องจากบางครั้งเราไม่รู้ว่า option ที่ใส่มานั้นต้องการจะทำอะไรกับมัน ใน DHCP client หลายๆตัว จึงได้ออกแบบให้นักพัฒนา หรือ ผู้ดูแลระบบสามารถเขียน script ง่ายๆในการประมวลผล DHCP option เหล่านั้นได้โดยไม่ต้องแก้ไข source code หลักของโปรแกรม และ script เหล่านั้นเป็นสิ่งที่ผู้ดูแลระบบคุ้นเคยอยู่แล้ว เช่น shell script เป็นต้น

udhcp เป็น dhcp client ที่นิยมใช้ใน embedded system เนื่องจากมีขนาดเล็ก ประมาณ 19KB เราจึงเห็น udhcp ถูกใส่ไว้ใน busybox ซึ่งเป็น UNIX utility suite ที่มักใช้ใน embedded system

DHCP protocol นอกจากจะช่วยแจก IP address ให้แก่ client ได้แล้ว ยังสามารถ ส่งค่าต่างๆไปให้ client ได้ ยกตัวอย่างเช่น DNS server ip address และ gateway address เป็นต้น

dhcp client ส่วนมาก จะรับค่ามาตรฐานเหล่านี้มาแล้วทำการเซ็ทให้กับ client อัตโนมัติ แต่ค่าบางค่า อย่างเช่น hostname dhcp client จะไม่ทำอะไรให้ เนื่องจากไม่ใช่เรื่องปกติที่ client จะรับค่า hostname มาจาก dhcp server
อ่านเพิ่มเติม

รักษาความปลอดภัยอย่างง่ายๆบน Gentoo Linux ด้วย glsa-check

Gentoo เป็น Linux distribution ประเภท source-based ซึ่งการจะลงโปรแกรมต่างๆ จะต้องทำผ่าน source repository ของตัวเอง ซึ่งใน Gentoo เรียก portage ซึ่งหลักการจะคล้ายกับ FreeBSD ซึ่งใช้ port ในการจัดการ software package

สิ่งที่ผมชอบใน Gentoo คือความตรงไปตรงมา และไม่ลงอะไรเกินจำเป็น ซึ่งเป็นสาเหตุของปัญหาความปลอดภัยในระบบส่วนใหญ่ ความปลอดภัยในระบบปฏิบัติการ หลายๆคนคิดว่า พอมี Firewall แล้วจะปลอดภัย แต่จริงๆแล้ว firewall แค่ช่วยป้องกันในระดับหนึ่งเท่านั้น เหมือนประเทศที่มีขุนศึกชั้นดี แต่การบริหารภายในประเทศเน่าเฟะ ไม่นานข้าศึกก็เจาะเมืองก็แตกจนได้

ปัญหาความปลอดภัยหนึ่งที่พบ ในระบบปฏิบัติการคือ การที่ไม่เคย update software เลย เช่นลง web server ตัวไหน อีกห้าปีก็ใช้ตัวเดิม จึงไม่แปลกที่จะเห็น server ตัวนั้นโดนเจาะระบบอยู่เรื่อยๆ พอโดนเจาะทีก็ update ทีนึง ดังนั้นเรื่องความปลอดภัยจึงเกี่ยวกับการบริหารจัดการ ไม่ใช่เรื่องของเทคโนโลยีเพียงอย่างเดียว ซึ่งในบทความนี้จะพูดถึง เครื่องมือตัวหนึ่งที่จะคอยตรวจสอบว่า ซอฟต์แวร์ตัวไหนในระบบปฏิบัติการมี ความเสี่ยงเรื่องความปลอดภัย

Gentoo หรือ Linux distribution อื่นๆจะมีสิ่งที่เรียกว่า Security Advisories ซึ่งต้องเข้าไปดูที่หน้าเว็บของ Distribution นั้นๆเอาเอง ซึ่งของ Gentoo Linux สามารถเข้าไปดูได้ที่ http://www.gentoo.org/security/en/glsa/ Gentoo มีเครื่องมือตัวหนึ่งที่คอยตรวจสอบได้ว่า ซอฟต์แวร์ตัวไหนที่มีความเสี่ยง โดยเครื่องมือตัวนี้เรียกว่า glsa-check GLSA เป็นตัวย่อของ Gentoo Linux Security Advisories อยู่ในชุดเครื่องมือที่ชื่อ gentoolkit

อ่านเพิ่มเติม

G-Cpan

หากเคยเขียนโปรแกรมภาษา Perl คงจะเคยได้ยินคำว่า CPAN ซึ่งย่อมาจาก Comprehensive Perl Archive Network CPAN เป็นที่เก็บ Perl module จำนวนมาก ซึ่งถูกพัฒนาโดยชุมชนนักพัฒนาโปรแกรมภาษา Perl

บน Gentoo Linux มี portage ของ Perl module มาให้จำนวนหนึ่ง แต่ก็ไม่ได้มากมายอะไร ถ้าหากต้องการติดตั้ง Perl module จาก CPAN เราสามารถทำได้โดยใช้ โปรแกรมที่ชื่อว่า g-cpan

การติดตั้ง g-cpan ก็ทำได้โดย

$ emerge g-cpan

การค้นหา Perl module สามารถทำได้โดยใช้คำสั่ง (ยกตัวอย่าง ต้องการหา module ที่มีคำว่า grep)

$ g-cpan -s grep

 * No ebuild exists, pulling up CPAN listings for grep
/CPAN: Storable loaded ok
Going to read /var/tmp/g-cpan/.cpan/Metadata
  Database was generated on Fri, 03 Apr 2009 10:27:10 GMT
Author          GREP ("Christian Brink" <cbrink@flylines.org>)
Author          VIGREP ("Alireza Aghamohammadi" <aghamohammadi@hotmail.com>)
Distribution    D/DC/DCOPPIT/grepmail-4.80.tar.gz
Distribution    D/DC/DCOPPIT/grepmail-5.10.tar.gz
Distribution    D/DC/DCOPPIT/grepmail-5.30.1.tar.gz
Distribution    E/EL/ELLIOTJS/PPIx-Grep-v0.0.6.tar.gz
Distribution    G/GR/GREP/Acme-Yoda-0.02.tar.gz
Distribution    L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz
Distribution    M/MN/MNEYLON/File-Grep-0.02.tar.gz
Distribution    O/OV/OVID/App-Grepl-0.01.tar.gz
Distribution    S/SB/SBURKE/File-Findgrep-0.02.tar.gz
Distribution    T/TH/THECRAMPS/Acme-Grep2D-0.01.tar.gz
Module          Acme::Grep2D    (T/TH/THECRAMPS/Acme-Grep2D-0.01.tar.gz)
Module          App::Grepl      (O/OV/OVID/App-Grepl-0.01.tar.gz)
Module          App::Grepl::Base (O/OV/OVID/App-Grepl-0.01.tar.gz)
Module          App::Grepl::Results (O/OV/OVID/App-Grepl-0.01.tar.gz)
Module          App::Grepl::Results::Token (O/OV/OVID/App-Grepl-0.01.tar.gz)
Module          Bio::Grep       (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Backend::Agrep (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Backend::BackendI (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Backend::GUUGle (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Backend::RE (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Backend::Vmatch (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Filter::FilterI (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Filter::FilterRemoveDuplicates (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::Root (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::SearchResult (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Grep::SearchSettings (L/LI/LIMAONE/Bio-Grep-0.10.5.tar.gz)
Module          Bio::Tools::Run::PiseApplication::cpgreport (B/BI/BIRNEY/bioperl-run-1.4.tar.gz)
Module          Bio::Tools::Run::PiseApplication::newcpgreport (B/BI/BIRNEY/bioperl-run-1.4.tar.gz)
Module          DS::Transformer::Grep (M/MA/MADZ/DSlib-2.13.tar.gz)
Module          Data::Pipeline::Action::StringReplace (J/JS/JSMITH/Data-Pipeline-0.01.tar.gz)
Module          File::Findgrep  (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Findgrep::I18N (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Findgrep::I18N::en (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Findgrep::I18N::en_us (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Findgrep::I18N::fr (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Findgrep::I18N::i_default (S/SB/SBURKE/File-Findgrep-0.02.tar.gz)
Module          File::Grep      (M/MN/MNEYLON/File-Grep-0.02.tar.gz)
Module          Goo::Grepper    (N/NI/NIGE/Goo-0.09.tar.gz)
Module          Mail::Box::Search::Grep (M/MA/MARKOV/Mail-Box-2.088.tar.gz)
Module          Mail::Mbox::MessageParser::Grep (D/DC/DCOPPIT/Mail-Mbox-MessageParser-1.5000.tar.gz)
Module          POE::Filter::Grep (R/RC/RCAPUTO/POE-1.004.tar.gz)
Module          PPIx::Grep      (E/EL/ELLIOTJS/PPIx-Grep-v0.0.6.tar.gz)
Module          Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep (E/EL/ELLIOTJS/Perl-Critic-1.098.tar.gz)
Module          Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep (E/EL/ELLIOTJS/Perl-Critic-1.098.tar.gz)
Module          Perl::Critic::Policy::BuiltinFunctions::RequireBlockGrep (E/EL/ELLIOTJS/Perl-Critic-1.098.tar.gz)
Module          Pipe::Tube::Grep (S/SZ/SZABGAB/Pipe-0.03.tar.gz)
Module          Plagger::Plugin::Search::Grep (M/MI/MIYAGAWA/Plagger-0.7.17.tar.gz)
Module          SVK::Log::Filter::Grep (C/CL/CLKAO/SVK-v2.2.1.tar.gz)
Module          Test::ConfigureGrepmail (D/DC/DCOPPIT/grepmail-5.30.1.tar.gz)
Module          Text::Pipe::List::Grep (M/MA/MARCEL/Text-Pipe-0.08.tar.gz)
Module          XMLTV::Grep     (E/ED/EDAVIS/xmltv-0.5.33.tar.gz)
53 items found

สมมติว่าต้องการ install module File::Grep การ install ใช้คำสั่ง

$ g-cpan -i File::Grep

ข้อมูลเพิ่มเติม g-cpan Guide

Debian Sarge Repostory

มีเหมือนกันที่ software version เก่าๆ จะระบุว่ามัน ต้อง ใช้กับ OS ตัวนี้ version นี้ ซึ่งก็น่าจะเป็นเรื่อง Dependency ของ library ระดับต่ำบางตัว อย่าง libc หรือ glibc

เนื่องจากมี software ที่ต้องใช้ Debian Sarge ซึ่งเก่าพอสมควร และ mirror ทั่วๆไปก็ไม่เก็บ Sarge เอาไว้แล้ว พยายามตามล่าหา Sarge Repository มาวันนึงเต็มๆ สุดท้ายไปเจอที่ http://archive.debian.org ค่อยโล่งใจหน่อยว่าคงทำงานต่อได้

Debian Sarge ตัวนี้ลงใน KVM ของ Gentoo อีกที ไว้วันหลังจะมาเขียนวิธีทำให้ดูกัน รู้สึกสะดวกดีเหมือนกันนะเรื่อง Virtualization เนี่ย

เสวนา TLUG หัวข้อ อนาคตโอเพนซอร์สไทย

305813249_eedeabd64a.jpg

เมื่อวานไปงาน เสวนา TLUG หัวข้อ อนาคตโอเพนซอร์สไทย ได้เจอหลายคนที่เห็นชื่อแต่ในโลก cyber เช่นพี่เทพ bact’ แต่ก็มีหลายคนรู้จักอยู่แล้ว เช่นพี่สมิท พี่กานต์ พี่โดม อ.ภุชงค์ ผู้ร่วมงานก็มีรู้จักบ้างเช่นคนที่ี่เคยไปงาน NJUG ด้วยกัน จริงๆงานพวกนี้ผมไม่เคยไปเลย อาจจะเพราะไม่รู้จะไปมีส่วนร่วมตรงไหน ถึงตอนนี้ก็ยังไม่รู้อยู่ดี แต่ยังไงก็ดีกว่าแต่ก่อน เพราะได้โจทย์ที่ผมสรุปได้จากงานในครั้งนี้อยู่สองข้อคือ

  1. ทำอย่างไรจะเพิ่มจำนวน open source user ในประเทศไทยได้
  2. ทำอย่างไรจะเพิ่มจำนวน open source developer ในประเทศไทยได้

อ่านเพิ่มเติม

เมื่อถูก Brute-Force Attack ที่ sshd

Unix server ส่วนมาก เปิด secure shell daemon (sshd) ไว้เพื่อให้ admin สามารถ access เข้ามาจัดการ server และส่วนมากก็ไม่ได้ตั้ง ACL ใดๆไว้ เพราะต้องการที่จะ remote จากที่ไหนๆก็ได้ แต่ผลที่ตามมาคือ มักจะมีผู้ไม่ประสงค์ดีลักลอบมาเดา username และ password ของ account ในเครื่องเรา วันดีคืนดีเกิดมันเดาถูกขึ้นมา อาจจะซวยได้ ถ้าจะให้ดีก็ควรเปลี่ยน password บ่อยๆ

อ่านเพิ่มเติม