Professional Documents
Culture Documents
ประกอบการฝกอบรมปฎบตงาน
Linux Server Security
คน
เทคโนโลยอนเตอรเนตยคปจจบนนมการพฒนาอยางตอเนองทงด าน Hardware
และดาน Software เฉพาะในสวนของการน4า Linux มาใชท4า Internet Server ในประเทศไทย
ก4าลงไดรบความนยมเพราะเป?น Open source ผEดEแลระบบต องมนศFกษาค นคว าการใช งาน
และการปHองกนระบบใหด หนงสอเลมนจดท4าขF นเพอใช ประกอบการอบรม Linux Server
Security เหมาะส4าหรบผEดEแลระบบน4าไปปรบใช ให ตรงกบการจดการภายในเครอขายของ
ตนเองในการใหบรการแตละชนด อาจมบางบททตองมการน4าเครองมอ (Tools) มาใชในการ
ปHองกน กเป?น Software ประเภท Open source เชนเดยวกนสามารถศFก ษาเพมเตมได จาก
เวบไซตทให บรการพร อมกบการปรบปรงรน (Update) ใหทนสมยตลอดเวลาได อยางตอ
เนอง จFงมความจ4าเป?นอยางยงทผEดEแลระบบต องศFกษาและน4าไปใช เพอปHองกนปญหาเรอง
อาชญากรรมทางคอมพวเตอรบกรกเข าระบบเพอกระท4า ความผดในรEปแบบตาง ๆ และ
รองรบการประกาศใช พรบ.วาดวยการกระท4าความผดทางคอมพวเตอร พ.ศ. 2550 อกดวย
อนF งในภาคผนวกได เรยบเรยงขนตอนการท4 า Centralize Log Server ตามหลก
เกณฑการเกบรกษาขอมEลจราจรทางคอมพวเตอรของผEใหบรการ ท4าตามขนตอนอยางงายท
เหมอนกบการท4างานตามระบบปกตเพยงแตแก ไขคา Configuration เพยงเลกน อยใหมการ
เกบคาใหครบถวนตามขอก4าหนดเทานน หวงวาคงเป?นประโยชนและน4าไปใชทนกอนเดอน
สงหาคม 2551 หากมสวนในทไมตรงตามโปรแกรมทใช งานอยEกใหใช หลกการเดยวกนไป
ประยกตใหสามารถจดเกบไดเชนเดยวกน
บญลอ อยEคง
กมภาพนธ 2551
Linux Server Security
สารบญ
บทท 1 Overview 1
บทท 2 Network Model 17
บทท 3 Kernel Harden 43
บทท 4 Web Server Security 81
บทท 5 Mail Server Security 99
บทท 6 DNS Server Security 115
บทท 7 FTP Server Security 135
บทท 8 Secure Shell 147
บทท 9 Firewall Using IPTABLES 155
บทท 10 sXid 189
บทท 11 Log check 195
บทท 12 Port Sentry 203
บทท 13 Tripwire 221
บทท 14 Snort (IDS) 233
บทท 15 Backup and Restore 255
ภาคผนวก 279
บรรณานCกรม
Linux Server Security
บทท) 1 Overview
วตถประสงค
➢ เพอใหรความเปนมาของระบบรกษาความปลอดภยให Server
➢ เพอใหเขาใจภาพรวมระบบการป#องกนเครอข$ายคอมพ%วเตอร'
➢ เพอใหสามารถน*าหลกการไปประย,กต'ใชงานจร%งได
เรองโดยสงเขป (Overview)
ในบทน/0เปนการรวบรวมแนวค%ดจากท/ต$าง ๆ เพอเชอมโยง ข0นตอนต$าง ๆ ในการท*า
ระบบรกษาความปลอดภยใหกบระบบเครอข$าย Internet ซ9งม/องค'ประกอบต$าง ๆ แต$ละข0น
ตอนใหสามารถท*าการป#องกนและแกไขป:ญหาไดอย$างต$อเนองเพอสรางความแข<งแรงใหกบ
ระบบท/แต$ละองค'กรก*าลงใชงานอย$อย$างเหมาะสมและเปนพ0นฐานในการประย,กต'ใ ชใน
อนาคตท/ม/ภาระในการแกป:ญหาท/ยากข90นเรอย ๆ เนองจากการพฒนาดานเทคโนโลย/ท0ง
Hardware และ Software ม/การแข$งขนสงในขณะท/ผไม$หวงด/ต$าง ๆ ก<ม/ความรความสามารถ
สงข90นตามไปดวยดงน0นการป#องกนหรอแนวค%ดต$าง ๆ ในวนน/0อาจช$วยแกป:ญหาไดไม$ตลอด
ไปจ9งแนะน*าใหผดแลระบบควรต%ดตามข$าวสารและปรบปร,งพฒนาตนเองอย$ตลอดเวลา
ไม$ใช$มนใจว$าไดท*าหรอจดการวางระบบความปลอดภยไวอย$างด/แลวไม$ตองไปดอะไรอ/ก
ปล$อยท%0งใหระบบท*างานต$อไปเองเมอม/เหต,ไม$ปกต%เก%ดข90นในระบบอาจไม$ทราบสาเหต,ท/แท
จร%งหรอแกป:ญหาไม$ตรงจ,ดก<เปนได ดงน0นจ9งเปร/ยบเสมอนการคนหากลย,ทธ'ในการต$อสกน
สองฝIายระหว$างผบ,กร,กกบผท/ตองป#องกนระบบใหด/พอท/จะสามารถปกป#องขอมลท/ส*าคญ
เอาไวใหนานท/ส,ดเท$าท/จะท*าได หากทราบท/มาท/ไปแบบน/0แลวแสดงว$าผดและระบบท/ด/ตอง
- ค,ณคนพบความสมด,ลระหว$างความเส/ยงกบความปลอดภยหรอยง
ใครคอผท/ท*าการพฒนานโยบายดานความปลอดภยตามแผนท/ก*าหนด เมอม/ผพบ
ป:ญหาควรใหร/บแจงกบผรบผ%ดชอบทนท/ เพอน*าป:ญหาไปปรบปร,งระบบใหทนเหต,การณ'จะ
ไดไม$เก%ดความสญเส/ยมากเก%นไป
10. ผดแลระบบควรม/การจดท*าเอกสารแสดงรายละเอ/ยดเก/ยวกบการท*าระบบให
รองรบการท*างานท/ปลอดภยไวครอบคล,มส$วนใดบางเช$น เครองภายในระบบ ขอมล ผใชงาน
รวมไปถ9งส$วนต$าง ๆ ของระบบเครอข$าย เปนตน ใหสมม,ต%ว$าหน$วยงานหรอองค'กรของค,ณ
ม/ชอเส/ยงมาก ถาม/ผบ,กร,กสามารถเขามาในระบบแลวท*าการลบขอมลของลกข$ายท%0งหรอ
บ,กร,กเขาในระบบท*าการเปล/ยนแปลงหนาเว<บหรอเขามาเพอแกไขเปล/ยนแปลงแผนงานท/
ส*าคญบางอย$างใหผ%ดพลาดไปจากก*าหนดเวลาเด%มเปนตน ดงน0นก$อนท*าการวางแผนต%ดต0ง
ระบบเครอข$ายใหกบองค'กรหรอหน$ ว ยงาน ควรค*า น9 งถ9 งองค' ป ระกอบต$า ง ๆ เหล$า น/0ไ ป
ประกอบการพ%จารณาก$อนท/จะต%ดต0งเครองคอมพ%วเตอร'เขาในระบบแต$ละเครอง ควรศ9กษา
เรอง host security และ network security มาประกอบดวย
11. ผดแลระบบท/ด/ควรม/การบนท9กการเปล/ยนแปลงท/เก%ดข90นในระบบชวคราวแลว
ท*า การทดสอบป:ญหาในแต$ละคร0งใหเสร<จ จ9งน*า ผลไปลงบนท9กแบบถาวรเพอเปนแฟ# ม
ประวต%เก<บไวป#องกนการลมเพราะป:ญหาคอมพ%วเตอร'เก%ดข90นอย$างรวดเร<วและบ$อยคร0งมาก
ถาไม$ท*า การบนท9กจะกลบไปแกไขภายหลงอาจจ*า ไม$ได จะส$งผลเส/ยสะสมท*า ใหระบบ
อ$อนแอถกโจมต/ไดโดยง$าย
หลงจากทราบแนวค%ดพ0นฐานต$าง ๆ ในการท*าระบบความปลอดภยท0ง 11 ขอท/ผ$าน
มาถาจะสร,ปใหใกลตวเพอสามารถน*าไปส$การปฏ%บต%จร%งได ใหดการแบ$งประเภทจากค$ายท/
ผล%ตระบบปฏ%บต%การดง ๆ ท/รวบรวมไวใหศ9กษา จดแบ$งออกไดเปน 6 หวขอใหญ$ ๆ ไดดงน/0
1. Server Security เปนส$วนท/เก/ยวของกบผดแลระบบโดยตรงเพราะระบบท/ม/ใช
งานกนอย$ท,กวนน/0ตองการส$วนท/ท*าหนาท/ใหบร%การลกข$ายมากท/ส,ดเปนอนดบแรก ท,กหน$วย
ๆ เหล$าน/0มกเปนการทาทายและแจงข$าวใหกบผท/จะโจมต/ใหสามารถพฒนาหรอเสาะหา
เครองมอในการเจาะเขาระบบปฏ%บต%การไดเร<วและง$ายข90น หากมองเรองระบบปฏ%บต%การท/ม/
ใชในบานเราก<คงหน/ไม$พนค$ายดง ๆ เช$น Microsoft และ UNIX หรออาจม/บางระบบท/ใชของ
Novell อย$บาง ท0งน/0เรามกตองการใหระบบท*างานอย$อย$างม/เสถ/ยรภาพหากเปนระบบปฏ%บต%
การท/ซ0อมาในราคาแพงตองม/ค$าใชจ$ายในการปรบปร,งเรองป:ญหาต$าง ๆ เช$น Bug หรอป:ญหา
ท/ถกโจมต/ไดง$ายซ9งขดแยงกบหน$วยงานบางแห$งท/ม/งบประมาณจ*า กด จ9งไดม/การน*า เอา
ระบบปฏ%บต%การประเภท Open Source เขามาใชกนเปนจ*านวนมากซ9งนอกจากจะไม$เส/ยเง%น
แลวยงสามารถพฒนา ปรบปร,งแกไขในส$วนต$าง ๆ เองไดหรออาศยช,มชนกล,$มผท/ใชงาน
โปรแกรมท/เหมอนกนร$วมกนพฒนาแกป:ญหาและหาทางป#องกนใหระบบปฏ%บต%การม/ความ
เขมแข<งและสามารถท*างานอย$ไดอย$างด/และเก%ดป:ญหานอยท/ส,ดหรอท/เรามกค,นเคยกบค*าว$า
"Harden" ซ9งจะม/รายละเอ/ยดใหศ9กษาในบทต$อไป
3. Communications Security เรองน/0เร%มไกลตวผดแลออกไปอ/กน%ดเพราะเปนเสน
ทางเด% นของขอมลท/ ว% งเขาออก Server ส*าหรบการสอสารขอมลในป: จ จ, บ นม/ ก ารพฒนา
เทคโนโลย/อย$างรวดเร<วเพอรองรบความตองการขอมลและบร%การท/เพ%มข90น ดงน0นผท/รบผ%ด
ชอบในดานน/0มกม/การสรางผล%ตภณฑ'ต$าง ๆ ท/ม/ข/ดความสามารถในการรบส$งขอมลข$าวสาร
ท/ใหความถกตองแม$นย*าและม/ความปลอดภยขอมลสงตามไปดวย ท/กล$าวเช$นน/0เพราะระบบ
สอสารมกม,$งเนนทางดาน Hardware เปนหลกดงน0นในส$วนของ Hardware ในหนงสอน/0จะ
ไม$กล$าวถ9งเพราะเปนส$วนท/ผผล%ตจะน*าเสนอและสรางระบบป#องกนมาใหอย$แ ลว เราจะ
ศ9กษากนเฉพาะในส$วนท/ผดแลระบบจะท*าไดนนก<คอเรองการใชหลกการ Digital Certificate
ในการเขารหสขอมลท/จะรบส$งถ9งกนระหว$างตนทางกบปลายทาง
Digital Certificate คออะไรในท/น/0จะสร,ปใหเปนขอ ๆ ไดดงน/0
3.1 เปน Electronic ID อย$ท/ Server หรอ Site ท/ตองการท*า งานท/เก/ยวกบความ
ปลอดภยของขอมลหรอท*าการถ$ายโอนขอมลผ$านเว<บ
1. Authentication
2. Confidentiality (Privacy)
3. Integrity
4. Availability
5. Non-Repudation
6. Auditing
บทสรป
ส*าหรบผดแลระบบท/ด/ควรม/การพฒนาตนเองอย$างสม*าเสมอ เพราะการอ$านทฤษฎ/
หรอศ9กษามาเปนเวลานาน ๆ ไม$สามารถหย,ดย0งการบ,กร,กท/เก%ดข90นใหม$ ๆ ในป:จจ,บนและ
อนาคตได ในบทน/0เปนเพ/ยงแนะแนวทาง จากการสร,ปแนวค%ดจากแหล$งความรต$าง ๆ รวมไป
ถ9งแนวค%ดของบร%ษทผผล%ตระบบปฏ%บต%การชอดงท/ม/ใชกนในป:จจ,บน เพอเปนตวอย$างการน*า
ไปประย,กต'ศ9กษาเพ%มเต%มและม/ล*าดบข0นตอนท/เปนสากล ด/กว$าต$างคนต$างค%ด ต$างคนต$างท*า
ในรปแบบของน%สยคนไทย ท/ชอบท*างานแบบตวใครตวมน เก$งเท$ากนหมดเลยไม$ม/ระบบ
เวลาม/การเปล/ยนคนดแลระบบกนคร0งใด ท,กหน$วยงานก<จะเร%มป:‡นปIวนและว,$นวายเก/ยวกบ
ระบบ Network ภายในองค'กรกนมากเพราะคนใหม$ไม$ไดรบการถ$ายโอนขอมลท/ม/การท*างาน
ในรปแบบเอกสาร ไม$ม/การส$งมอบงานใด ๆ เนองจากคนแรกท*า งานแบบน9กไปวน ๆ ม/
ป:ญหาท/ก<แกไขกนท/ ยงม/ใหเห<นกนเปนจ*านวนมาก จ9งใคร$ขอแนะน*าใหผดแลระบบช$วย
ท*า งานแบบม/ล*าดบข0นตอนม/การบนท9กงานลงในเอกสารอย$างต$อเนองเพอประโยชน'ใ น
ระบบภาพรวมขององค'กรต$อไป
วตถประสงค
เพอใหรจกวธการออกแบบและวางระบบ Internet Server ใหปลอดภย
เพอใหสามารถเลอกแบบทตรงกบการใชงานจรง
สามารถน,าไปใชงานจรงและปรบปร.งระบบไดอย/างมประสทธภาพ
Network Model
ส,าหรบบทนIจะกล/าวถGงพIนฐานการวางแผนตดตIงระบบเครอข/าย หลงจากทไดอ/าน
ความหลากหลายจากบทท 1 มการจดท,าเอกสาร เกLบรายละเอยดในส/วนทตองการท,าระบบ
รกษาความปลอดภยอย/างมขIนตอนและมระบบไปเรยบรอยแลว จGงตองท,าระบบใหรองรบกบ
การใชงานตามทผดแลระบบคาดหวงไว อาจมองภาพในเชงทฤษฎแลวน,าไปประย.กต=ใหเขา
กบระบบภายในหน/วยงานหรอองค=กรมากกว/าการทจะลองไปทIงหมด เพราะผงต/าง ๆ ทน,า
มาอธบายไวเปEนเพยง Model ย/อย ๆ ทตองการเนนส/วนทตองการท,าระบบความปลอดภย
Response ในองค=กรทมความตองการพฒนาวางแผนงานเกยวกบระบบรกษาความ
ปลอดภยเครอข/ายมความจ,าเปEนตองใชผลทไดรบจากการปSองกนและการตรวจพบปXญหาและ
เมอมการแกไขปXญหาต/าง ๆ ทตรวจพบแลวผลทไดรบหรอตอบกลบออกมาจากระบบเปEนไป
ในทศทางใดจะเปEนขอมลในการปรบปร.งและพฒนาระบบในอนาคตไดเปEนอย/างดและมการ
ปรบแผนใหสามารถรองรบระดบการปSองกนทสงขGIนอกดวย
ต/อไปลองมาพจารณา ISO/OSI Model ทค.นเคยกนบาง ผดแลระบบมกค.นเคยกบ
OSI Model 7 Layers กนมานานแลวเวลาท,าระบบความปลอดภยตองน,า Model นIมาออกแบบ
ว/าจะปSองกนระบบใหแขLงแรงไดตองปSองกนในระดบใดบาง แต/ Model ต/อไปนIไม/เหมอนใน
อดตมเพมมาใหอก 1 ชIนเปEน Layer 8 มชอว/า People Layer ดงภาพ
การปSองกนใหเครอข/ายจากการโจมตทไม/ไดตIงใจจากทอน ๆ สามารถท,าไดหลาย
วธดงต/อไปนI
1. Filter packets ทเขามาในระบบทาง broadcast address
2. สงปzดเสนทางของ broadcasts ของเสนทาง Network ภายใน
3. Block ท.ก packet ทเขามาจาก Internet ทไม/ม address จากตนทาง
4. Block โดย firewall ท.ก packet ทใช protocol หรอ port ทไม/ไดใชในการตดต/อ
สอสารส,าหรบ Internet ในระบบ network
5. Block packets ทมการระบ.คา/ source address จรงทมอย/ในระบบเครอข/ายจรง
รปท 2.16 แสดง Two layer with merge bastion host & exterior
แบบทหาส.ดทายกLมลกษณะคลายกบแบบทสอง เพยงแต/ตดตIงเครองมอตรวจจบ
การบ. ก ร. ก Bastion host ไวรวมกบเครอง Firewall ช. ด แรก เปE น การประหยดเครอง
คอมพวเตอร=ทใชปSองกนระบบไดอกหนGงช.ด
ทI ง 5 แบบทกล/ า วมาแลวจะเปE น การท, า Configuration firewall บนอ. ป กรณ= ท ท, า
หนาท Gateway ของระบบส/ว นใหญ/ เ ปE น Router หรอ Manage Switch บางร./ นทม Option
บทสรป
ในการวางแผนตดตIงระบบเครอข/ายใหกบองค=กรหรอหน/วยงาน แนะน,าใหศGกษา
คนควาหาขอมลจากทฤษฎร/วมกบขอมลผผลตอ.ปกรณ=เครอข/าย และศGกษาการใช Operating
System ทเหมาะสมกบการใชงานรวมไปถG ง การเลอกใช Software ทมความยดหย./ น สง
สามารถปรบเปลยน Configuration ใหสามารถรองรบการเปลยนแปลงในอนาคตไดเปEนอย/าง
ด ไม/ ค วรยG ด ตดกบค/ า ยผผลตหรอ Version ควรศG ก ษาความเหมาะสมกบการใชงานให
ครอบคล.ม โดยเฉพาะหนงสอนIเนน Software ประเภท Open Source ทIงหมด ตวอย/างต/าง ๆ
ไดน,ามาจากค/มอและค,าอธบายของผผลต Software ทเกยวของกบระบบรกษาความปลอดภย
ทIงสIน หากมส/วนใดทไม/ละเอยดมากพอใหไปศGกษาไดจากค/ายผผลต Software ทเลอกใชเพม
เตมใหมากพอทจะใชท,างานจรงได
วตถประสงค
เพอใหรจกระบบความปลอดภยของ Kernel
เพอใหเขาใจว!ธ#ป$องกนในส'วนต'าง ๆ ของ Kernel
สามารถเลอกการป$องกนในส'วนต'าง ๆ ใหเหมาะสมกบการใชงานได
สามารถน-าไปใชงานจร!งไดอย'างม#ประส!ทธ!ภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
ในท# น# E จ ะกล' า วให เหM น ภาพของการด แล Server ในส' ว นของผด แลระบบ
(Administrator) ควรท-า การวางแผนการป$องกนภยท# จะมาคS กคามระบบเครอข' า ยทEง หมด
ตEงแต' Router ไปจนถAงเครองลกข'าย ดงนEนในหนงสอเล'มน#Eจะเนนใหผดแลท-าเป:นขEนตอน
เพอใหระบบม#เสถ#ยรภาพมากท#สSดเท'าท#จะท-าได แต'ตองไม'ลมว'าส!งท#เราท-าได ฝVายตรงขามกM
ย'อมท-าไดเช'นกน ดงนEนการต!ดตามขอมลข'าวสารเก#ยวกบความปลอดภยของระบบน'าจะเป:น
เร(1มกนท!1 BIOS
ส!งแรกท# ไม'ควรมองขามกMค อการตEงค'าท# BIOS ใหไม'สามารถ Boot จาก Floppy
Disk, USB, CD ROM หรอ Remove media อน ๆ ไดและตองไม'ล มใส' password ใหกบ
BIOS เพอป$องกนไม'ใหผอนสามารถเขาไปแกไขค'าท#ตEงไวได ค-าแนะน-าน#Eผอ'านตองเปaดค'ม อ
การตEงค'า BIOS จากเครองท#ใชงานเองนะครบ ควรอ'านใหละเอ#ยดในค'มอว'านอกจากตEงค'าไม'
อนSญาตให Boot จากอSปกรณcต'าง ๆ ท#กล'าวมาไดแลวยงม#เมนส'วนของ Security อน ๆ ใหตEง
Password อ#กหรอไม'จากนEนควรก-าหนดบSคคลท#ม#ส!ทธ!ในการรบร Password น#Eไดเป:นบางคน
เท'านEน การป$องกนน#EจะถกบSกรSกไดว!ธ#เด#ยวคอเปaดเครองเพอปลด Battery Backup ออกหรอ
ใช Reset CMOS Switch จะม#ผลท-าให BIOS ถก Reset กลบเป:นค'าเร!มตนใหม'ทนท#
portmap
rhnsd
ถาพบ service ตามตวอย'างน#Eใหลบโดย
# /etc/init.d/<ชL1อ service> stop
# chkconfig <ชL1อ service> off
และอย'าเผลอไปลบ service ท#ส-าคญท#ระบบตองใชเช'น
crond, anacron, haldaemon, mcstrans, messagebus, network, restorecond, smartd, syslogd
และทSก service ท#ใชงานตองสงใหท-างานใน Mode 3 เท'านEนอ#กดวย
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 <- พ! มพcต ' อ ตรง
บรรทดน#E
minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
ตามตวอย'า งจะส'ง ผลใหการเปล# ยน password ของลกข' า ยดวยค-าสง passwd ถก
บงคบใหม#ค'าตามท#อธ!บายไวในตารางขางบน แต'จะไม'ม#ผลกบการ login ดวย root นอกจากน#E
ควรม# ก ารห ามใช password ซE- าก บค' า เด! มท# เคยใช ไปแล วต' อ ไปน# E ใหด เท# ย บก บค' า
PASS_MIN_DAYS = 7 ในไฟลc /etc/login.defs เป:นการก-าหนดจ-านวนวนต-าสSดท#ตองท-าการ
เปล# ยน password = 7 วน ถาตองการใหเครองจ-า password เด!ม ไว 26 ครEงกMใหก-า หนดค' า
remember=26 และสามารถก-าหนดใหการเปล# ยน password ใหม'ตองม#อกขระต'างกนกบใน
password เด!มจ-านวน 3 ตวใหเพ!ม difok=3 เพ!มทEงสองค'าน#Eลงไปในไฟลcเด!มดงน#E
# vi /etc/pam.d/system_auth
……….
password requisite pam_cracklib.so try_first_pass retry=3
HISTSIZE=1000
TMOUT = 3600
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE TMOUT
INPUTRC
** ก รแก%ไขไฟลน!*จะม!ผลกsตCอเมL1อได%ท ก ร logout แล%ว login ด%วย root กลบเข% ม ใหมC **
ค'า 3600 ว!นาท# หมายความว'าให login ดวย root account ท!Eงไวโดยไม'ม#การท-างาน
ใด ๆไดนาน 1 ชวโมง ( 60 x 60 = 3600 ว!นาท#) หากไม'ม#การท-างานใด ๆ linux จะ logout ตว
เองทนท# ถาตองการใหเรMวหรอชากว'าน#EกMเปล#ยนเลขไดตามตองการ หลงจากเปล#ยนค'าเสรMจให
logout เมอท-าการ login ดวย root ใหม'จะรบค'า profile ใหม'มาท-างานทนท#
# grub-md5-crypt
Password: <พ!มพcรหสผ'านท#ตองการ>
$1$0WXVJ$siSTEUxO.X7qx56RIwggD1 <- รหสผ'านถกเขารหสแลว
หลงจากใชค-าสง grub-md5-crypt เสรMจแลวจะม#การเขารหสใหกบรหสผ'านท# เรา
พ!มพcลงไป เป:นรปแบบ MD5 ท#ไม'สามารถเดาไดว'าค'ารหสผ'านท#แทจร!งคอค-าว'าอะไร เมอท-า
ขEนตอนเขารหสเสรMจดงตวอย'างแลวจะส'งผลใหค'าดงกล'าวไปแทนท#ในไฟลc grub.conf ดงน#E
# vi /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda9
# initrd /initrd-version.img
#boot=/dev/hda
password --md5 $1$0WXVJ$siSTEUxO.X7qx56RIwggD1
default=0
timeout=5 <- แก%ให%เปOน 0 ถ% ไมCรอเวล ให%เข% เมน'หรLอให% boot ทนท!
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Linux Server (2.6.22.14-72.fc6)
root (hd0,0)
2:2345:respawn:/sbin/mingetty tty2
# 3:2345:respawn:/sbin/mingetty tty3
# 4:2345:respawn:/sbin/mingetty tty4
# 5:2345:respawn:/sbin/mingetty tty5
# 6:2345:respawn:/sbin/mingetty tty6
บนทAกไฟลcแลวสง
# /sbin/init q
ส! งท# ตองท- าค'ก นในการควบคS ม การ login เขาใชงานทาง virtual console (vc or
ttys)ม#การควบคSมอ#กไฟลc หนA งซA งจะถกเร#ย กใชเมอม# การใชงานค-าสง login นนกMค อไฟลc
/etc/securetty ใหไปแกไขดงน#E
# vi /etc/securetty
# console
vc/1
# vc/2
# vc/3
# vc/4
# vc/5
# vc/6
# vc/7
# vc/8
# vc/9
# vc/10
# vc/11
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
# userdel mailnull
# userdel games
# userdel gopher
# userdel ftp
# userdel vcsa
การใชค-าสง userdel จะไม'ลบ home directory ใหกบระบบ ถาตองการลบ home
directory ใหใช parameter -r ร'วมดวย เป:น userdel -r username หลงจากนEนใหลบ group
ดงน#E
# groupdel adm
# groupdel lp
# groupdel news
# groupdel games
# groupdel dip
# groupdel pppusers
# groupdel popusers
# groupdel slipusers
หากเป:น Version อนใหลองตรวจสอบดว'าม# User หรอ Group ใดไม'ใชงานตรงตาม
ตวอย'างกMใหลบท!Eงไดเลย หลงจากนEนควรสราง user account ท#ท-าหนาท# แทน root เพอใช
login เขาระบบแทนการใช root login จะท-าใหปลอดภยมากขAEน (ปกต!กMคอ user คนแรกตอน
ต!ดตEง ) ใหท-าดงน#E
# useradd admin
# passwd admin
/dev/sda1/boot ext3 ro 0 0
บางครEงคงเคยไดย!นว'าผดแลระบบบางคนไม'อยากเร#ยนรหรอคอยต!ดตามข'าวสาร
การป$องกน server ใหปลอดภยเพราะไม'ม#เวลาหรออาจบ'นว'ามนยากเก!นไป น'าจะท-า Linux
แบบท#ท-างานบนแผ'น CD ROM เวลา Hacker เจาะเขามาจะไดเข#ยนขอมลไม'ได กMเป:นความ
ค!ดท#น'าสนใจแต'คงใชจร!งไม'ไดเพราะบาง partition ตองม#การเข#ยนขอมลของลกข'าย ขอยก
ตวอย'างการป$องกนในเรองน#EกMคอถาต!ดตEงโปรแกรมทSกอย'างเสรMจแลวไม'เพ!มอะไรแลว ลอง
mount ให /usr เป:น ro เพอป$องกนผไม'หวงด#น-าโปรแกรมส'งเขามา compile ใน server กMน'าจะ
เป:นผลด#คลายกบท-างานบน CD แต'ถาผดแลจะต!ดตEงอะไรลงไปกMตองท-าการ mount ใหเป:น
default แบบเด!มก'อน
ควรปMดก รแสดงข%อม'ล OS
ในการ boot หรอขณะท# login เขาระบบมกจะม#ค-าอธ!บายเรองของคSณสมบต! OS
เช'น เป:น Fedora Release 8.x หรอขอมลอน ๆ แลวแต'ละ version จะก-าหนด จะเป:นช'องทาง
ใหผไม'ประสงคcด#สามารถน-าไปคนหาทางบSกรSกเขา Server ไดเป:นอย'างด# คSณควรท-าการปaด
การแสดงค'าเหล'าน#E โดย
# rm -f /etc/issue
# rm -f /etc/issue.net
ใหลอง logout แลวท-า การ login เขาระบบมาใหม'จ ะพบว'า หนาจอม#แต'ข อความ
login ไม'ม#การโฆษณาเก#ยวกบ version ต'าง ๆ ใหเหMนอ#ก
ว!ธ#การคนหาและยกเล!กท-าไดดงน#E
ข*นท!1 1 คนหา file ท#ม# flag +s ดวยค-าสง find ตามตวอย'าง ส-าหรบบรรทดท#ม#ต วอกษรเขม
หมายถAงไฟลcท#ม#ความส-าคญ ควรเปaดปaด flag +s ส-าหรบให su ใชงานดวยความระมดระวง
Parameter ใหกบ kernel ท# boot ไปแลวจะม# ผ ลท- า ให kernel รบค' าดวยการบงคบ จA ง ไม'
สามารถใชค-าสง Restart network เพอยกเล! กค' าท# ส' งเขาไป เช' นส' งค' า 1 ไม' ให ping ตาม
ตวอย'างท# 1 หากตองการยกเล!กตองส'งค'า 0 ไม'ใช'การใส'เครองหมาย # )
บนทAกแลวอย'าลมว'าตอง
#/etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
บนทAกแลวอย'าลมว'าตอง
# /etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.conf.all.accept_redirects=0
# sysctl -w net.ipv4.conf.default.accept_redirects=0
บทสรป
แมว'าจะม#การแนะน-าการปรบค'าต'าง ๆ ใหกบ kernel กMยงไม'สามารถท-าใหเก!ดความ
ปลอดภยไดอย'างครบถวน 100% เนองมาจาก kernel แต'ละ version จะม# bug ต'าง ๆ เก!ดขAEน
เมอม#การน-าไปใชงานแลวเท'านEนรวมไปถAงเมอม#ผบSกรSกโจมต#เขาถAง kernel ไดเมอไรกMจะม#
การน-าปoญหาเหล'านEนไปสราง patch เพอใหสามารถใชงานกนไดต'อเนอง ดงนEนหากม# Linux
ค'ายไหนพบปoญหาก'อนกMม กจะ patch ใหกบ kernel ของค'ายตนเองก'อน ผดแลระบบควร
ต!ดตามข'าวสารจากเวMบของผผล!ตตลอดเวลา ไม'ควรไปฟoงจากค'ายอน เพราะปoญหาของค'าย
อนอาจไม'เก#ยวของหรอไม'ใช'ปoญหาของ kernel ท#เราใชงานอย'ได ผเข#ยนแนะน-าใหอ'านดแลว
น-า ไปเปร#ยบเท#ยบว'าใน Server ท#ก-าลงปฏ!บต!งานอย'ม#ปoญหาท# ตองแกไขปรบปรSงตรงกบ
หวขอใดบาง ถาพบว'าไม'ม#หรอยงไม'ไดแกไขกMใหเลอกท-าตามท#พบจร!งเท'านEน ส-าหรบ Linux
Version ใหม' ๆ จะแกปoญหาเรองความปลอดภยเพ! มเต!มมาใหแลว จAงท-าใหม#ความแขMงแรง
มากขA E น กว' า เด! ม ถาผดแลระบบไม' ไดใช Version ใหม' ๆ กM ค วรท- า การ Update kernel กM
สามารถใชงานไดด#เหมอนกน
วตถประสงค
➢ เพอใหรจกวธปองกนการบกรก Web Server
➢ เพอใหเขาใจการยายทอย$เพอความปลอดภย
➢ สามารถน,าไปประยกต0ใชกบงานจรงไดอย$างถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
ในการตดตBง Web Server ท,า ไดง$า ยเพราะในขณะทตดตBง Linux เพอท,า Internet
Server นBน ค$าทตBงมามกจะก,าหนดใหตดตBง Apache Web Server ลงมาดวย หลงตดตBงเสรRจ กR
จะได Web Server ทนท ผดแลระบบทวไปกRมกจะก,าหนดค$าใหใชงานไดทนทดวยการ add
user ใหกบ webmaster ของตนเองแลวท,าการเปลยนเจาของ ( Change Owner ) /home/httpd
ใหเป:นของ webmaster เพอให webmaster สามารถ Upload Webpage ดวย ftp ได ความง$าย
ดงกล$าวอาจท,าใหเกดความเสยหายไดอย$างง$ายดายเช$นกน ถาผบกรกมความสามารถทจะบก
สวนกลบมาทาง Port 80 เขามาฝากไฟล0บางอย$างและท,าการใด ๆ ซ` งรบกวนหรอก$อใหเกด
Bad Request
Your browser sent a request that this server could not understand.
หลงแกไขแลวจะไม$แสดงบรรทดล$างเพอปองกนไม$ใหผทจบกรกรว$าเครองเปา
หมายใช OS อะไรและใช Apache Version ไหนท,า Web Server
3. ตรวจสอบใหแน$ ใ จว$ า โปรแกรม httpd ก, าลงท, า งานภายใต User และ Group
apache เพราะหากปล$อยใหท,างานดวย User nobody จะส$งผลใหลกข$ายสามารถโจมต mail
server ผ$านทางเวRบได ใหตรวจสอบในไฟล0 httpd.conf
User apache
Group apache
4.ใหตรวจสอบและปองกนไม$ใหบรการไฟล0ทอย$นอก Web root โดยเดRดขาด แกไข
ไฟล0 httpd.conf ดงนB
# vi /etc/httpd/conf/httpd.conf
จากเดม
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
แกไขเป:น
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
:wq
จากตวอย$างขางบนเป:นการยกเลกทBง Options และ Override ดงนBนหากตองการให
Directory ใดท,างานแบบทตองระบบค$า Option กRใหระบเฉพาะ Options เท$านBน
5. ใหปsดการเรยกดขอมลใน Directory ต$าง ๆ ดวยการ ก,าหนดค$าใน tag Options
ในกรณทค$าใน tag นBไม$ไดมค$าเป:น None เหมอนขอ 4 ใหก,าหนดดงนB
Options -Indexes
6. หากไม$มการใชงานเรอง SSI (Server Side Include) กRใหสงยกเลกการใชงาน ดวย
การก,า หนดค$า ใน tag Options ในกรณทค$า ใน tag นBไม$ไดมค$าเป:น None เหมอนขอ 4 ให
ก,าหนดดงนB
Options -Includes
7. หากไม$ม การใช cgi ใหท,าการยกเลกการท,างานของ CGI ดวยการก,าหนดค$าใน
tag Options ในกรณทค$าใน tag นBไม$ไดมค$าเป:น None เหมอนขอ 4 ใหก,าหนดดงนB
Options -ExecCGI
8. ปองกนไม$ให apache อนญาตใหท,างานไปตามการเชอมโยงของ link ต$าง ๆ เอง
ดวยการ ก,าหนดค$าใน tag Options ในกรณทค$าใน tag นBไม$ไดมค$าเป:น None เหมอนขอ 4 ให
ก,าหนดดงนB
Options -FollowSymLinks
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/useragents.conf
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/rootkits.conf
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/apache2-rules.conf
จากนBนใหแกไขไฟล0 mod_security.conf ดงนB
# vi /etc/httpd/conf.d/mod_security.conf
วธการทสะดวกคอใหไป copy ตวอย$างจากเวRบหนาเดยวกนกบทใช wget download
ไฟล0 conf หรอคดลอกจากตวอย$างนBไปใชไดเลย
# Example configuration file for the mod_security Apache module
LoadFile /usr/lib/libxml2.so.2
LoadModule security2_module modules/mod_security2.so
#LoadModule unique_id_module modules/mod_unique_id.so
#<IfModule mod_security2.c>
# This is the ModSecurity Core Rules Set.
# Basic configuration goes in here
# Include modsecurity.d/modsecurity_crs_10_config.conf
# Protocol violation and anomalies.
# These are disabled as there's a bug in REQUEST_FILENAME handling
# causing the "+" character to be incorrectly handled.
# Include modsecurity.d/modsecurity_crs_20_protocol_violations.conf
# Include modsecurity.d/modsecurity_crs_21_protocol_anomalies.conf
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
SecFilterNormalizeCookies On
# enable version 1 (RFC 2965) cookies
SecFilterCookieFormat 1
SecServerResponseToken Off
#If you want to scan the output, uncomment these
SecFilterScanOutput On
SecFilterOutputMimeTypes "(null) text/html text/plain"
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
#fake server banner - NOYB used - no one needs to know what we are using
SecServerSignature "NOYB"
#SecUploadDir /tmp
#SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug_log
Timeout 45
15. ปองกนการ Upload ไฟล0ขนาดใหญ$ เพราะเป:นสาเหตในการโจมตแบบ Denial
of Service ค$า default ของโปรแกรมเป:น Unlimited ใหแกไขเป:นไม$เกน 1 MB โดยเพมไปใน
ไฟล0 httpd.conf ดงนB
LimitRequestBody 1048576
ถาไม$ต องการใหมการ Upload ไฟล0ไดควรก,าหนดค$านBใหนอยทสด และยงมการ
ก,า หนดค$ า บางอย$ า งทเกยวของกนอกคอ LimitRequestFields และ LimitRequestFieldSize
รายละเอยดศ`กษาเพมเตมไดจาก http://httpd.apache.org/docs/2.0/mod/core.html
16. ใหท,าการจ,ากดขนาดของไฟล0 XML ค$า default จะก,าหนดไวท 1 MB ถาไม$ม
การใชงาน mod_dav หรอไม$ม การใช WebDAV ใหก, า หนดค$ า เป: น 0 แต$ถ ามการใชงาน
WebDAV สามารถก,าหนดไดสงถ`ง 10 MB ดวยการใช tag เพมไปในไฟล0 httpd.conf ดงนB
LimitXMLRequestBody 10485760
17. ใหก,าหนดค$าในการจ,ากดการเขาดเวRบพรอม ๆ กน ดวย tag MaxClients ในไฟล0
httpd.conf ถาก,าหนดค$ามากเกนไปจะมผลกระทบกบการใชหน$วยความจ,ามากตามไปดวย ถา
Server มหน$วยความจ,านอยกRจะหยดบรการ tag ทมความส,าคญสอดคลองกนกบหวขอนBมอย$
ดงต$ อ ไปนB MaxSpareServers, MaxRequestPerChild, ThreadsPerChild, ServerLimit และ
MaxSpareThreads ซ`งค$าต$าง ๆ เหล$านBตองก,าหนดตามระบบปฏบตการและ Hardware ทใช
18. ก,าหนดใหจ,ากดหมายเลข IP Address ทจะอนญาตใหเขา Server ได กรณทเวRบ
ท,าข`Bนเพอใหคนในประเทศไทยดเท$านBนใหแกไขเป:นกล$ม Network ทม IP Address 203.172
ใหดเวRบไดเช$น 203.172.0.0/16 ไปแกไขไฟล0 httpd.conf ดงนB
Order Deny,Allow
Deny from all
Allow from 203.172.0.0/16
Syntax OK
ถามข อความ Syntax OK แสดงว$ า ไม$ม บรรท ดไหนผ ด หากม การพ มพ0ผ ด
โปรแกรมจะแสดงออกมาในบรรทดทผดพลาดใหกลบไปแกไขใหม$ใหเรยบรอยก$อนจนได
Syntax OK จ`งจะสามารถสงให Server เรมท,างานใหม$
# /etc/init.d/httpd restart
หลงจากแกไขและทดสอบการท,างานเสรRจเรยบรอยแลวใหท,าการปองกนการบกรก
เขามาแกไขค$า Configuration File ทส,าคญดงนB
# chattr +i /etc/httpd/conf/httpd.conf
# chattr +i /etc/httpd/conf.d/ssl.conf
บทสรป
สงทท,าใหเกดปcญหาอย$างมากในปcจจบนมกพบว$าการเปsดใหบรการขอมลข$าวสาร
เกอบทกประเภทไดกระท,าผ$า น Web Server ไม$ว $าจะเป:นดานการศ`กษา การคา หรอการ
บรหารงานต$าง ๆ เมอมการน,าขอมลไปเกRบบน Server เพอใหลกข$ายสามารถ Access ผ$าน
Web Browser กRจะไดยนข$าวตามมาคอ Hacker สามารถบกโจมตเขาทาง Port 80,443 ซ`งเป:น
Port ทใหบรการดาน HTTP, HTTPS ไม$ว$าจะใช OS อะไร หรอใช Software ยหอใดกRมกเป:น
เปาโจมตของ Hacker ทBงสBน ในบทนBจ`งไดหาวธการใหผดแลระบบน,า ไปใชปองกนการ
บกรก ใหทดลองท,าตามขBนตอนโดยละเอยด วธการทผเขยนแนะน,าอาจเป:นวธทคนเคยเช$น
ปองกนดวย SSL ซ`งในโปรแกรม Apache หรอปcจจบนใชชอว$า httpd ทมมาใหใน Linux ทก
ค$ายมการ Compile รวมกบ module SSL ไวแลวทBงสBน
ค ส1งท!1จ เปnนต%องใช%ง น
ifup <ethx> ; eth0 or eth1 สงให ethernet ท,างาน
ifdown <ethx> ; eth0 or eth1 สงให ethernet หยดท,างาน
chkconfig <ชอ service> [on,off] สงให service on,off ตอนเรม boot
chattr [+,-] i file/dir เปลยน attributes ไม$ใหแกไขอกได
useradd <username> สงเพม user account
passwd <username> ก,าหนด/เปลยนรหสผ$าน
userdel <username> สงลบ user account
groupdel <groupname> สงลบ group
mount ค,าสงตดตBงอปกรณ0เช$น CD Drive,USB
unmount ค,าสงยกเลกตดตBงอปกรณ0ทถก mount
mv ค,าสงยายไฟล0หรอ directories
chmod +,- r,w,x [file,dir] ก,าหนดค$า permission ให file/dir
rm -f(r) file/dir สงลบ file หรอ directories
find ค,าสงคนหา file/dir
วตถประสงค
➢ เพอใหรจกวธปองกนการบกรกเขาระบบเครอขายจาก Mail Server
➢ เพอใหเขาใจวธการแกป)ญหาเกยวกบชองโหวของ Mail Server
➢ สามารถน0าไปประยกต3ใชในงานจรงไดอยางถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
ในบทนNจ ะกลาวถDง การรกษาความปลอดภยใหกบ Mail Server เพอใหสามารถ
รบมอกบผบกรกได การท0า Mail Server ดวยโปรแกรม Sendmail ทตดตNงมาใหพรอมกบการ
Install Linux แล วนN น ใช protocol SMTP รบส งผ าน port 25 หล งท0 า การต ดตN ง เสร\ จนN น
เป<นการก0าหนดใหโปรแกรมสราง Configure พรอมทจะใหบรการกบสมาชกไดเทานNน หาก
ไมมการปรบแตงคาใด ๆ หรอบางครNงผดแลระบบอาจคดวา เครองทท0างานอยไมไดท0าหนาท
PATH=/usr/bin:/bin
SHELL=/bin/bash
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
DROPPRIVS=yes
ข*นท!1 4 สงให service saslauthd ท0างาน
# /etc/init.d/saslauthd restart
# chkconfig saslauthd on
ข*นท!1 5 แกไขไฟล3 access
# vi /etc/mail/access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
# เพมบรรทดนNลงไป < ใส IP Address ของคณลงไป >
Connect:192.168.1.0/24 RELAY
บนทDกไฟล3 ออกจาก vi
:wq
….
dnl # Do not advertize sendmail version.
dnl #
define(`confSMTP_LOGIN_MSG',`unknown')dnl
….
define(`SMART_HOST', `mail.sample.co.th')dnl
…..
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN
PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5
CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl
…..
FEATURE(`blacklist_recipients')dnl
# ไปดรายการ blacklist ไดท http://www.technoids.org/dnsbl.html
FEATURE(dnsbl,`relays.ordb.org')dnl
FEATURE(dnsbl,`list.dsbl.org')dnl
FEATURE(dnsbl,`sbl-xbl.spamhaus.org')dnl
dnl EXPOSED_USER(`root')dnl
….
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
…..
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
….
dnl # that do not have 24x7 DNS do need this.
dnl #
dnl FEATURE(`accept_unresolvable_domains')dnl
….
LOCAL_DOMAIN(`localhost.localdomain')dnl
define(`confDOMAIN_NAME', `mail.sample.co.th')dnl
dnl #
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
MASQUERADE_AS(`sample.co.th')dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
FEATURE(masquerade_envelope)dnl
dnl #
# /etc/init.d/sendmail restart
Shutting down sm-client: [ OK ]
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
ข*นท!1 13 ก0าหนดผทท0าหนาทรบ mail แทน root
# vi /etc/aliases
……
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
root: admin,admin@sample.co.th
บนทDกไฟล3ออกจาก vi
:wq
เสร\จแลวใหเรยกค0าสง newaliases เพอรบคาทเพมเขาไป
# newaliases
ท0าการปรบแตงจนเสร\จสมบรณ3ผ านไป 13 ขNนตอนแลวเป<นการท0า ให sendmail
ท0างานไดอยางครบสมบรณ3เทานNนหากตองการเพมเตมความปลอดภยเขาไปอกตองหาจด
ออนของโปรแกรมแลวปรบแตงคา Configure อกครNงหรอหลายครNงก\ไดใหตรงกบความ
ตองการในการแกป)ญหาดงตวอยางตอไปนN
1. ควรลบ account ทมความเสยงออกจากไฟล3 aliases เหลอไวเทาทจ0าเป<น ใหไป
แกไขไฟล3 aliases ใหลบบรรทดทเป<นตวหนา (Bold) ตามตวอยางทNงทNงหมด 9 บรรทด ดงนN
# vi /etc/aliases
2. ตอจากนNนคณควรปeดการสงขอความไปทกทายกบผทสงจดหมายเขามายงเครอง
Server ดวย SMTP เพอมใหโปรแกรม Sendmail สงชอเครองและขอมลของ localhost ไปให
ผอน ท0าดงนN
แกไขไฟล3 sendmail.cf (vi /etc/mail/sendmail.cf) แกไขตามตวอกษรหนาดงนN
# vi /etc/mail/sendmail.cf
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
แกไขเป<น
O SmtpGreetingMessage=$j
บนทDกไฟล3แลวท0าการ restart เพอใหรบคาใหม
# /etc/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
3. สงสดทายทตองท0าทกครNงของการรกษาความปลอดภย คอตอง set flag ใหกบ
ไฟล3ทหามผอนเขามาแกไขปรบปรงอก ดงนN
# chattr +i /etc/mail/sendmail.cf
# chattr +i /etc/mail/local-host-names
# chattr +i /etc/aliases
# chattr +i /etc/mail/access
คว มปลอดภยแบบท!1 2 ออกแบบให Sendmail ท0างานดวย smtps แบบ SSL ท Port 465 รวม
กบ Dovecot ทก0า หนดใหบรการ imaps ท0า งานท Port 993 เหมาะส0า หรบผทนยมท0า Web
Base e-mail ซDงมขอแนะน0าและเพมเตมในแตละขNนตอน ใหดอยางละเอยดแลวท0าตามดงนN
ข*นท!1 1 หลงตดตNง Linux Server เสร\จโปรแกรม Sendmail จะถกตดตNงลงไปดวย
… เปลยนจาก smtp port 25 เป<น smtps port 465 ใหลบ dnl หนาบรรทดนNออก
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
… กรณทยงมการใชงาน smtp แบบ unsecure ใหมบรรทดนNอยอยางเดม
DAEMON_OPTIONS(`Port=smtp, Addr=127.0.0.1, Name=MTA')dnl
เสร\จแลวก\บนทDกไฟล3ออกจาก vi
:wq
จากนNนใหสรางไฟล3 sendmail.cf
# make -C /etc/mail
ข*นท!1 3 ใหไปสรางไฟล3 sendmail.pem
# cd /etc/pki/tls/certs
# make sendmail.pem
Country Name (2 letter code) [GB]:TH
State or Province Name (full name) [Berkshire]:Boonlue Yookong
Locality Name (eg, city) [Newbury]:Phitsanulok
Organization Name (eg, company) [My Company Ltd]:No Company
Organizational Unit Name (eg, section) []:Linux Server
Common Name (eg, your name or your server's hostname) []:test.sample.co.th
Email Address []:admin@sample.co.th
… ถาบรรทดไหนไมตองการเตมคาก\กด Enter ผานไดเลย
ข*นท!1 4 แกไขไฟล3 dovecot.conf
# vi /etc/dovecot.conf
… ส0าหรบไฟล3นNบรรทดทม # หมายถDงไมใชถาตองการใชใหลบออก
… ทกบรรทดมในขอมลอยแลวไมตองพมพ3เพมใหม
ssl_disable = no
ssl_verify_client_cert = no
ssl_parameters_regenerate = 168
ssl_cipher_list = ALL:!LOW
ssl_cert_file = /etc/pki/tls/certs/sendmail.pem <- ตรงนNดใหด
ssl_key_file = /etc/pki/tls/certs/sendmail.pem <- ตรงนNดใหด
disable_plaintext_auth = yes <- ตรงนNแก no เป<น yes
protocols = imaps pop3s
… บนทDกไฟล3แลวออกจาก vi
:wq
ข*นท!1 5 เสร\จแลวใหท0าการ restart service
# /etc/init.d/sendmail restart
# /etc/init.d/dovecot restart
ข*นท!1 6 สดทายทส0าคญคอเมอสรางระบบใหท0างาน port 465 และ 993 ตองไปเพม
ให Firewall รองรบการท0างานสอง Port นNดวย
# vi /etc/sysconfig/iptables
.. ใหเพม port 25, 465 และ 993 ดงนN
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --syn --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --syn --dport 465 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --syn --dport 993 -j ACCEPT
เสร\จแลวบนทDกออกจาก vi
:wq
สง restart service ใหม
# /etc/init.d/iptables restart
ส0าหรบผทสราง Firewall ดวยตนเองก\ใหเพม 3 port นNลงไปเหมอนกนดงนN
iptables -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --syn --dport 25 -j
ACCEPT <-- for TLS encryption (and basic SMTP)
iptables -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --syn --dport 465 -j
ACCEPT <-- for SSL encryption
iptables -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --syn --dport 993 -j
ACCEPT <-- for SSL encryption
เสร\จแลวบนทDกและใหสง restart firewall ใหม
บทสรป
เป<นอนวาคณปองกน sendmail server ไวไดตามตองการแลวครบ ไมตองกงวลวา
ใครจะมาแอบท0ารายเมอคณไมอยเฝา Server หรอไมตองระแวงคนในหนวยงานทชอบใช
Password Sniffer ดกเอารหสผานคนอนไปเปeดจดหมายหรอท0าการอน ๆ ทผดกฎหมายไดอก
** แถมทายดวยสงใหม ๆ ส0า หรบคนทใช sendmail-8.13.x ขDNน ไป ในสวนของ
sendmail.cf จะใหคา default มาเป<น Addr=127.0.0.1 หมายความวาคณสามารถทดสอบ port
25 ไดเฉพาะ localhost เทานNน ไมสามารถใหบรการในสวนของ host address ทท0า Server ได
เขาออกแบบมาเพอให local server ท0า หนาทสง mail รองรบการท0 า Web base e-mail ถา
ตองการใหบรการท Host คณตองเปลยนเป<น Addr=x.x.x.x (ip address mail server) หรอไมก\
ตองระบ IP จDงจะสามารถใชไดทNง localhost และ IP Address ของเครอง Server ครบเป<นแบบ
ทอนญาตให user ใชงาน sendmail สงจดหมายดวยตนเอง ในกรณใชโปรแกรมประเภท Web
base email ตองท0างานบน localhost เทานNนนะครบ***
วตถประสงค
➢ เพอใหรจกวธปองกน DNS Server
➢ เพอใหเขาใจการปองกนและแกไข Configuration
➢ สามารถน0าไปประย2กต4ใชงานจรงไดอย7างถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
ผดแลระบบทก0าลงใช Linux ท0า หนาท DNS Server กนอย7น7า จะก0าลงพบปXญหา
หรอสงผดปกตกนตลอดเวลา สงทว7านMนกZคอเมอมมอดเจาะเขาระบบเครอข7ายค2ณไดแลวสง
แรกทเขาอยากท0ากZค อป\ดบรการ DNS เพราะจะส7งผลให Domain Name ล7มทMงหมดคนทว
โลกไม7สามารถเรยก Web site เป>นชอ Domain ทค2ณไปจดทะเบยนมาไดเลย บางครMงกZเขาไป
แกไขค7าให DNS ชMค7าไปทอน อาจเป>นการท0าเพอธ2รกจหรอการกลนแกลงกZแลวแต7จะคด ผล
เสยดงกล7าวผดแลระบบทดควรรบตดสนใจจดการดแลปองกน หรอรบออกแบบระบบรกษา
192.0.2.0/24;
224.0.0.0/3;
169.254.0.0/16;
// Enterprise networks may or may not be bogus.
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};
options {
directory "/var/named";
allow-transfer { none; };
allow-query { trusted; };
allow-recursion { trusted; };
blackhole { blocked; };
tcp-clients 32;
forwarders { 192.168.1.5; 192.168.1.6; };
version "New version";
};
logging {
category lame-servers { null; };
};
// Root server hints
zone "." { type hint; file "db.cache"; };
Kns1-ns2.+157+45508
โปรแกรมจะสรางไฟล4ทเกZบ key ใหชอ
Kns1-ns2.+157+45508.key และ
Kns1-ns2.+157+45508.private
ข*นท!1 2 เป\ดไฟล4 private เพอจดหรอคดลอก key ออกมาใชงาน
# cat Kns1-ns2.+157+45508.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: EJF5ryfnLcD6XwUbh+JE4g= = <- ลอกตวอกษรหนา (Bold)
ข*นท!1 3 ลบไฟล4ทไดทMงใหหมด
# rm -f Kns1-ns2.+157+45508.key
# rm -f Kns1-ns2.+157+45508.private
ข*นท!1 4 น0าค7า key ทไดไปกรอกใน named.conf
แกไขไฟล4 named.conf (vi /var/named/chroot/etc/named.conf) ทMง Primary และ
Secondary โดยการใส7ขอความ 3 บรรทดขางล7างไวส7วนแรกของไฟล4
key ns1-ns2 {
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
#vi /var/named/chroot/etc/named.conf
key ns1-ns2 {
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
// Authorized source addresses.
acl "trusted" {
localhost;
192.168.100.0/24;
192.168.0.0/24;
};
// Known fake source addresses shouldn't be replied to.
acl "blocked" {
0.0.0.0/8;
1.0.0.0/8;
2.0.0.0/8;
192.0.2.0/24;
224.0.0.0/3;
169.254.0.0/16;
// Enterprise networks may or may not be bogus.
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};
options {
directory "/var/named";
allow-transfer { 192.168.100.5; };
allow-query { trusted; };
allow-recursion { trusted; };
blackhole { blocked; };
tcp-clients 1024;
forwarders { none; };
version "New version";
};
logging {
category lame-servers { null; };
};
// Root server hints
zone "." { type hint; file "db.cache"; };
// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
type master;
file "db.127.0.0";
notify no;
};
zone "sample.co.th" {
type master;
file "db.sample";
allow-query { any; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "db.192.168.100";
allow-query { any; };
};
logging {
category lame-servers { null; };
};
// Root server hints
zone "." { type hint; file "db.cache"; };
// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
type master;
file "db.127.0.0";
notify no;
};
zone "sample.co.th" {
type slave;
file "db.sample";
masters { 192.168.100.4; };
allow-query { any; };
};
zone "100.168.192.in-addr.arpa" {
type slave;
file "db.192.168.100";
masters { 192.168.100.4; };
allow-query { any; };
};
#vi /var/named/chroot/etc/named.conf
key ns1-ns2 {
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
server 192.168.100.5 {
keys { ns1-ns2 ;};
};
ข* นท! 1 6 ขM นส2 ดทายคงไม7พ นการก0 า หนด Permission ใหไฟล4 แ ละสงให named
ท0างานทMง Primary และ Secondary นะครบ
# chmod 600 /var/named/chroot/etc/named.conf
# /etc/init.d/named restart
Shutting down named: [OK]
Starting named: [OK]
ข*นท!1 3 ใหลบไฟล4ทMงสองทMงใหหมด
# rm -f Krndc.+157+44283.key
# rm -f Krndc.+157+44283.private
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
server 192.168.100.4 {
keys { ns1-ns2 ;};
};
key rndckey {
algorithm hmac-md5;
secret "
RzfsvIRU0DY8/tC0OcXXISiYUO0rWtizlEoP49cw6PTTYB
WVhh4hjiCxcKo=";
};
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; };
};
บทสรป
จากประสบการณ4การท0า DNS Server ของผเขยนทผ7านมาไม7ค 7อยค0านEงถEงความ
ปลอดภย จEงถก Hacker เขามาป\ดบรการอย7เป>นประจ0า ถาค2ณใชงาน Internet อย7ในระบบ
เครอข7าย โดยเฉพาะทใช Internet โดยผ7า น Proxy Server มกไม7ค 7อยสนใจว7า DNS ยงดอย7
หรอไม7 เพราะ Proxy Server จะไปรองขอ Name Server จากภายนอกใหเอง แต7เวลาค2ณไปอย7
นอกระบบของค2ณเอง ใหลอง ping หรอเรยกเวZบไซต4ของค2ณ หรอตรวจสอบดวยวธทค2ณ
ถนด อาจพบว7าบางครMงไม7พบ Domain ของค2ณใน Internet กZได นนหมายถEง DNS ล7มไปแลว
ครบ ลองท0าตาม 4 วธในบทนMอาจเป>นประโยชน4ก บค2ณบางไม7มากกZน อยครบ ทส0าคญคด
อาชญากรรมทางคอมพวเตอร4ย2คใหม7พบว7าปXจจ2บนมการขโมย Domain Name ไปขายกนมาก
ถาผดแลระบบไม7ใส7ใจใหดอาจเป>นหนEงในคดเหล7านMนกZเป>นได
วตถประสงค
➢ เพอใหรวธการปองกนการบกรกเขา FTP Server
➢ เพอใหเขาใจวธต$งค&า Configuration อย&างปลอดภย
➢ สามารถน7าไปใชงานจรงไดอย&างมประสทธภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
การตดต$ง Linux เพอใชสราง Internet Server น$น ส&วนมากผใช Linux มกมความ
พอใจในระดบหนHงท Linux ตดต$งง&าย ใชงานไดครบทกบรการโดยเฉพาะเมอตดต$งจากเมน
Server จะได Server ทใหบร การ WWW, FTP, Proxy, Mail และอน ๆ อกมากท รอการ
configuration แลวจะท7างานทนท ดงน$นจHงเปCนเรองทตองพHงระมดระวง หากคณเปCนผดแล
ระบบตองไม&เป]ดบรการมากเกนไปจนควบคมไม&ได เปCนช&องทางใหผไม&ประสงค^ดสอดส&อง
หาช&องทางบกรกเขามาใน Server ไดอย&างง&ายดาย หากไม&มการปรบปรงหรอปองกนทดขH$นก_
rIv7gIakIT0y4HahOMZyMnl41DlDxKNcQJBAOzhsT4Yd/QWn94COAAuwX
3Yp2/fQVSNaR3ic1+m09xFF00Ybvwx+NEJoj3WWOCLijZv89DCGPArQRp
fJOn4kQJXNuNp9VJNaNf0CqBf9QtZTb1u1ofXmkpjayPi5t47R8+JoeoSxMl
UcgauqDSI+1qJW8E2wyRAkAtc5VWxAJkRJEMHerRTpyjznBav5BD/US8+
/FGh7L1/HdUikn2WJaSZt5oB6u/mjtcTvixg85zt6gKV
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIID1DCCAz2gAwIBAgIJAN+qqIj7BqKMA0GCSqGSIb3DQEBBQUAMIGj
VQQGEwJUSDEQMA4GA1UECBHQm9vbmx1ZTEUMBIGA1UEBxMLUG
EzARBgNVBAoTCk5vIGNvbXBhbnkxGAXBgNVBAsTEGZ0cC5zYW1wbG
GTAXBgNVBAMTEGZ0cC5zYW1wbGUuY28udGgxITAfBgkqhkiG9w0BCQ
QHNhbXBsZS5jby50aDAeFw0wNzEyzAxMzU4NTFaFw0wOTEyMjkxMzU
MQswCQYDVQQGEwJUSDEQMA4A1UECBMHQm9vbmx1ZTEUMBIGA1
bnVsb2sxEzARBgNVBAoTCk5vIGNbXBhbnkxGTAXBgNVBAsTEGZ0cC5z
Y28udGgxGTAXBgNVBAMTEGZ0cC5zYW1wbGUuY28udGgxITAfBgkqhki
EmFkbWluQHNhbXBsZS5jby50aDBnzANBgkqhkiG9w0BAQEFAAOBjQAw
5u+qo6DU4uzO10lH9UZowRyWjvWrNVpSrGv0qX1+BNV61L/yBULjAAzZ
kpiPoze0nSwnPKSLEZrSozRETV/P5lfOYengDrhp/1DgXKLd2KdHAL5SYcu
cE/pf2SFsfoMRP9V3uxdWGDwRv4to1BwLYvQNk5Ho0CAwEAAaOCAQw
A1UdDgQWBBSIpEdNg2Y0U70jGzm0k8QMMAXB3TCB2AYDVR0jBIHQM
g2Y0U70jGzm0k8QMMAXB3aGBqSBpjCBozELMAkGA1UEBhMCVEgxED
B0Jvb25sdWUxFDASBgNVBAcT1BoaXRzYW51bG9rMRMwEQYDVQQKE
YW55MRkwFwYDVQQLExBmdHAuc2FtcGxlLmNvLnRoMRkwFwYDVQQD
cGxlLmNvLnRoMSEwHwYJKoZIcNAQkBFhJhZG1pbkBzYW1wbGUuY28u
gKqiI+waijAMBgNVHRMBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBA
pQto7C4GGMiCs04GNob+x7+npl5Eo6eNSnIFYnt4TxS6be+GMUDUpnA
jqwly2zQhlOue7H6/a8aPth5EgRvgYUZtV6v9+NySwibVnyILmSw07/C0gy6
maBPC6t5ejK3uAiC+cyDaU5eR7tzSNDH
-----END CERTIFICATE-----
จากน$นใหดรายละเอยดการเขารหสแต&ละส&วนว&าถกตองครบถวนหรอไม& ดงน$
# openssl x509 -in /etc/pki/tls/certs/vsftpd.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
df:80:aa:a2:23:ec:1a:8a
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=TH, ST=Boonlue, L=Phitsanulok, O=No Company, OU=Linux
Srever, CN=ftp.sample.co.th/emailAddress=admin@sample.co.th
Validity
Not Before: Dec 30 13:58:51 2007 GMT
Not After : Dec 29 13:58:51 2009 GMT
Subject: C=TH, ST=Boonlue, L=Phitsanulok, O=No company, OU=Linux
Server, CN=ftp.sample.co.th/emailAddress=admin@sample.co.th
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
5f:13:bf:c3:c9:ae:55:34:a5:0b:68:ec:2e:06:18:c8:82:b3:
4e:06:36:86:fe:c7:bf:a7:a5:4a:96:97:91:28:e9:e3:52:9c:
81:58:9e:de:13:c5:2e:9b:7b:e1:8c:50:35:29:9c:0c:35:00:
29:56:8e:ac:25:cb:6c:d0:86:53:ae:7b:b1:fa:fd:af:1a:3e:
d8:79:13:07:60:46:f8:18:51:9b:55:ea:ff:7e:37:24:b0:89:
b5:67:c8:82:e6:4b:0d:3b:fc:2d:20:cb:a3:5d:99:a0:4f:0b:
ab:79:7a:32:b7:b8:08:82:f9:cc:83:69:4e:5e:47:bb:73:48:
d0:c7
เมอตรวจสอบครบถวนถกตองตามตองการแลวใหเปลยนไฟล^ Mode เปCน 600
# chmod 600 /etc/pki/tls/certs/vsftpd.pem
หลงจากสรางไฟล^ vsftpd.pem เสร_จสมบรณ^แลวใหไปแกไขไฟล^ vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
… ถามขอมลเดมใหลบเครองหมาย # หนาบรรทดออก แกไขใหตรงกบตวอย&าง
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES <- ถา NO มผลใหใชหรอไม&ใช SSL ก_ได
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem <-ดใหด ๆ
เสร_จแลวบนทHกไฟล^ออกจาก vi
:wq
บทสรป
จากขอมลข&าวสารเกยวกบเรอง Security และ Hacker ทวโลกพบว&า พฤตกรรมการ
บกโจมตส&ว นใหญ&มาจากการทผดแลระบบไม&ไดมการปองกน Port 21 ทดพอ และยงไม&
พยายามออกแบบระบบเครอข&ายใหมระดบการปองกนทถกตอง เช&น ตดต$ง NOS เสร_จก_เป]ด
บรการ FTP, WWW, Mail หรอเป]ดทกอย&างตามทโปรแกรมต$งมา แถมยงท7าเปCน File Server
ใหหน&วยงานตนเองอก ปdญหาหลกคอเมอใดก_ตามทมการเป]ด Port 21 ผบกรกมกใชการส&ง
ไฟล^ Script เขามาไวใน Server เพอท7าการบางอย&างตามตองการ ใหผดแลระบบใชวธสงเกต
อย&างง&ายดวยการ FTP ไปหาเครอง Server เมอ Login ส7าเร_จก_ลองท7าการเปลยน Directory
หรอตรวจด Directory ปdจจบนทคณสามารถเขา ใชงานไดดวยค7าสง pwd หากพบว&าทคณ
ก7าลงอย&ขณะท Login ไดเปCน / แสดงว&าระบบ FTP Server มการปองกนไม&ใหลกข&ายออกไป
ยง Directory อน ๆ ใน Server ได แต&ถ าพบว&าคณอย&ท /home/username , /home/ftp/ หรอ
วตถประสงค
➢ เพอใหรจกโปรแกรมทใชในการรกษาความปลอดภยให Server
➢ เพอใหเขาใจการต%ดต&งและแกไขค*า Configuration ไดอย*างถกตอง
➢ สามารถน7าไปใชงานจร%งไดอย*างมประส%ทธ%ภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
ว%ธการดแลความปลอดภยใหกบ Server นอกจากจะแกไขหรอปTองกนในส*วนต*าง ๆ
ต&งแต*ภายในตวเครอง (Hardware) และไปจดการกนถCงระดบ Kernel ใหแขXงแกร*งแลวกXตาม
แต*ในขณะเดยวกนส%งทตองระมดระวงเป?นอนดบตนไม*แพกนกXค อการปกปTองหรอปTองกน
ในการทจะอนZญาตใหลกข*ายเขามาท7าการใด ๆ ใน Server ซCงในอดตเราอาจคZ นเคยกบการ
#ListenAddress 0.0.0.0
#ListenAddress ::
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 1h
ServerKeyBits 1024
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
LogLevel INFO
# Authentication:
LoginGraceTime 30s
PermitRootLogin no
#StrictModes yes
MaxAuthTries 4
#RSAAuthentication yes
#PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
#UsePAM no
UsePAM yes
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE
LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE
LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
............
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
AllowUsers admin
AllowGroups admin
DenyUsers hacker hack
DenyGroups hackgroup
บทสรป
จากการใชงานและทดสอบพบว*าป\จจZบน Hacker ไดพยายามเจาะเขา Port 22 ตลอด
เวลาและในบางคร&งกXสามารถเขาระบบไดส7าเรXจ เนองมาจาก ผดแลระบบส*วนใหญ*ไม*เคย
ท7าการแกไขค*า Configuration ใหโปรแกรม Secure Shell กนเลย โดยเฉพาะเมอต%ดต&งเสรXจกX
มกม นใจว* า โปรแกรมไดท7 าค* า Default มาให ใช งานได อย* แล ว ใหคZ ณส งเกตดว* าค* า
sshd_config ทต%ดต&งมาใหยงไม*ไดท7าการปeดหรอปTองกนอน ๆ นอกจากเปeดใหท7างานดวย
Port 22 เท*าน&น อย*าลมทดลองท7ากนดนะครบ จะไดท7าให Server ของคZณมความแขXงแกร*ง
มากขC&นเวลาคZณปeด Port 23 ไม*ให telnet หรอปeด Port 21 ไม*ให ftp คZณกXสามารถใชการเขาถCง
Server ดวยโปรแกรม SSH client เช*นใช slogin แทนการ login และใช sftp แทน ftp หากอย*
ในเครองลกข*ายทใช OS ของ Microsoft กXสามารถไปหา download โปรแกรม Secure Shell
for windows ไดจาก http://www.ssh.com/ คZณกXสามารถเขาถCง Server จากทใด ๆ กXได โดยม
ความปลอดภยมากกว*าการ telnet ปกต%ครบ ส%งทส7าคญและน*าจะผ%ดพลาดทพบบ*อยคอการใช
Secure Shell จะท7า งานร*วมกนในระบบรกษาความปลอดภยอก 2 เรองคอ TCP Wrappers
และ Firewall ผดแลระบบบางคนอาจท7าการเปลยนค*าหมายเลข Port จาก 22 เป?นค*าอน แต*ลม
ไปแกค*าท TCP Wrappers และ Firewall ส*งผลใหไม*สามารถใชงานไดควรตรวจสอบข&นตอน
ทไดวางแผนไวใหละเอยดเพอไม*ใหเก%ดความผ%ดพลาด
วตถประสงค
➢ เพอใหเขาใจหลกการนา IPTABLES มาใชสราง Firewall
➢ เพอใหจาแนกการป)องกนแต+ละ Server ไดอย+างถ2กตอง
➢ สามารถนาไปใชงานจร3งไดอย+างม4ประส3ทธ3ภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
ปX จจYบ นน4 N ค นท4 ก าล งสนใจท4 จะท า Firewall จาก Free Software มกหน4 ไม+พ น
IPTABLES ท4ม4 ม าให บน Linux OS อย2 + แล ว บางคนอาจค3 ดว+ า ยากเลยเสาะแสวงหา
Application ตวอนมาช+วยผ+อนแรงในการทา Configuration เช+น Openwall, IPCOP หรอตว
อน ๆ ท4 แลวแต+ความชอบส+วนบYคคล ทNง ๆ ท4 แต+ละตวท4นามาใชก^ล วนแลวแต+ท างานดวย
IPTABLES เกอบทNงนNน เพ4ยงแต+ออกแบบเมน2หรอหนาตาในการช+วยใหทา Configure ง+ายขGNน
NAT ยง support การท างานทN ง SNAT (Source NAT) และ DNAT (Destination
NAT) ซGงประกอบดวย build-in chains 3 แบบ คอ
- PREROUTING ใชระบYการเปล4ยนแปลงท4 destination ไปยง
incoming packet ก+อนส+ง packet ไปยง routing function (DNAT)
เปล4ยน Address ปลายทางไปยง localhost เช+น transparent proxy,
port redirection
- OUTPUT ใชระบYค+าการเปล4ยนท4ปลายทางไปสราง packet จากตว
local ก+อนท4จะส+งออกไปภายนอก (DNAT, REDIREC)
- POSTROUTING ใชระบYการเปล4ยนแปลงจากตนทางไปยง
Outgoing packet ตามท4กาหนด (SNAT, MASQUERADE)
- PREROUTING
- POSTROUTING
คYณอาจเคยใชใน ipchains มาแลวใน Version ท4ผ+านมา ทYกครNงท4 อยากกาหนดค+า
Firewall ดวยตนเอง คYณตองแจงใหโปรแกรมทราบว+าคYณตองการใหแต+ละ Chain ม4ค+าเป?น
อย+างไรเช+น
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
ร2ปแบบคาสงท4จะใชงานม4ดงน4N
iptables [-t|--table table] -command [chain] [-i interface] [-p protocol]
[-s address [port[:port]]] [-d address [port[:port]]] -j policy
ในการสงใชงานตามร2ปแบบท4เห^นถาเป?นตวอกษรตวเอ4ยง แสดงว+าใหคYณกรอกค+าท4
ตองการลงไปแทน ส+วนตวท4ม4เครองหมาย Pipe [|] ขNนกลางแสดงว+าใหเลอกว+าจะใชอย+างใด
อย+ า งหนG งเช+ น -t หรออาจใช --table ก^ ไดม4 ค วามหมายเช+ น เด4 ย วก น และท4 น+ า จะงงค อ
[port[:port]] หมายถGงใหกาหนดค+าหมายเลข port ตNงแต+ port : จนถGง port สYดทาย เช+น 0:1023
หมายถGง ตNงแต+ port 0 ถGง port 1023 หรออาจเข4ยนร2ปแบบสNน ๆ เช+น 1024: แบบน4NหมายถGง
port 1024 เป?นตนไปครบ ต+อไปด2ค+าอน ๆ กนบางจะไดใชกนเป?น
table หมายถGงใหเต3มค+าไดทNงหมด 4 ค+าตามท4อธ3บายผ+านมาขางตน คอ
filter เป?นค+า default คอโปรแกรมจะทางานในโหมดกรอง packet
หากไม+ระบYค+าหลง -t โปรแกรมจะถอว+าเป?นค+าน4N
nat เป?นการเร4ยกใช Network Address Translation
mangle ใชกบ QOS (Quality of Service) และการเลอกเสนทางท4ด4ท4สYด
raw ใชเมอตองการใหการทางานด4และเร^วท4สYดโดยลดขNนตอนการ
ทางานของ kernel ในขณะท4ม4การเร4ยกใชงาน port ท4ตรงกนจะ
ไม+ม4การแปรค+าใด ๆ
command [chain] หมายถGงคาสงท4ตองการใหทางานใหใชไดเพ4ยงค+าเด4ยวเท+านNน
ส+วน chain ก^คอค+า chain ท4ม4มาในโปแกรมทNง 5 chain และรวมถGง chain ท4สรางขGNนเอง ด2ค+า
command ก+อนม4ทNงหมดดงน4N
-A หรอ --append หมายถGงการเพ3ม rule ใหกบ chain
-D หรอ --delete หมายถGงการลบ rule ออกจาก chain
-I หรอ --insert หมายถGง การแทรก rule ตามตาแหน+งท4ตองการ
-R หรอ --replace หมายถGง การแทนท4 rule
-F หรอ --flush หมายถGง การสงใหเร3มรบค+าใหม+เพอทางานพรอมกน
ทNงหมด
-L หรอ --list หมายถGง เร4ยกด2 rule ทNงหมด
-N หรอ --new-chain หมายถGงการสราง chain ใหม+
-X หรอ --delete-chain หมายถGงการลบ chain ท4สรางขGNนเอง
-P หรอ --policy หมายถGง การตNงค+าหลกใหกบ chain
-E หรอ --rename-chain หมายถGงการเปล4ยนชอ chain ส+วนท4ต+อจาก command
ก^คอ command option ม4ค+าท4จาเป?นคอ
-i หมายถGง interface ท4รบ packet เขามา
-o หมายถGง interface ท4ส+ง packet ออกไป
-p หมายถGง protocol เช+น tcp, udp, icmp
-s หมายถGง หมายเลข IP ของ packet ตนทาง (Source)
-d หมายถGง หมายเลข IP ของ packet ปลายทาง (Destination)
อางอ3งจากของต+างประเทศด2ไดจากตารางขางล+าง
Common options used in Rule Specifications
Option Description
Match if the packet originated from sourceIP. sourceIP may be an IP
-s sourceIP address (e.g., 192.168.200.201), network address (e.g.,
192.168.200.0/24), or hostname (e.g., woofgang.dogpeople.org). If not
specified, defaults to 0/0 (which denotes "any").
Match if packet is destined for destinationIP. destinationIP may take
-d destinationIP
the same forms as sourceIP, listed earlier in this table. If not specified,
defaults to 0/0.
ต+อไปน4Nจะเป?นตวอย+างการป)องกนท4จะนาไปปรบปรYงแกไขใหตรงกบการใชงาน
จร3ง ซGงม4การนาเอากฎท4ถ2กตองในการสรางเพอรองรบการส+งค+าไปกลบท4ถ2กตองตามท4ผ2เข4ย น
โปรแกรมไดกาหนดมาให การทดลองแต+ละตวอย+างใหสรางเป?น script แลวสง Run จะด4กว+า
ลองแบบ Command line เพราะจะไดนาตวอย+างถดไปมาเพ3 มแลวทดลองต+อไดจนครบทYก
เรอง มาลองศGกษาด2ท4ละตวอย+างดงน4N
… เร3มพ3มพ_ตNงแต+ตรงน4Nเป?นตนไป…
#!/bin/sh
# Script Created by: Mr.Boonlue Yookong
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack_ftp
# กาหนดค+าตวแปรเร3มตน
IPTS="/sbin/iptables"
# Flush old rules, old custom tables
$IPTS -F
$IPTS -F -t nat
$IPTS -X
# Firewall ท4ด4ควรป‘ดทYกอย+างทNงท4เราร2และไม+ร2จกทYก Chain
$IPTS -P INPUT DROP
$IPTS -P FORWARD DROP
$IPTS -P OUTPUT DROP
เสร^จแลวใหบนทGกแลวออกจาก vi
:wq
จากนNนใหเปล4ยน mode file เป?น 700
# chmod 700 /root/test_firewall
การทดสอบใหสง run script ไดโดย
# /root/test_firewall
ลองตรวจสอบไดจาก
# iptables -L -n
ถาตองการส+ ง packet ในแต+ ล ะ service ใหระบY state เป? น NEW หมายถG ง ใหส+ ง
เฉพาะ connection ท4เก3ดขGNนใหม+เท+านNน ลองด2ตวอย+าง DNS Server ตอบรบการรองขอ IP ให
ระบYดงน4N
$IPTS -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
บรรทดสYดทายของการกาหนด rule ของทYก chain ควรเก^บค+าท4 ไม+ผ+านการตรวจ
สอบจาก rule ท4กาหนดมาขางบนไวท4 log file เสมอ
$IPTS -A OUTPUT -j LOG --log-prefix "Dropped by default:"
กรณ4ท4ม4ผ2ด2แลระบบบางคนพยายามหล4กเล4ยงการใช port มาตรฐานหรอ Privilege
port แต+กลบไปใช Non-privileged port แทนคอ port 1024 ขGNนไปตองกาหนดค+าให INPUT
และ OUTPUT chain ตรงกนดวย เช+น
$IPTS -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state \
ESTABLISHED -j ACCEPT
$IPTS -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state \
ESTABLISHED,RELATED -j ACCEPT
nmap ไดชอว+าเป?น World champion port scanner สามารถใช scan port ไดหลาย
ชน3ดดงน4N
1. TCP Connect scan
2. TCP SYN scan
3. TCP FIN scan
4. TCP NULL scan
5. TCP Xmas Tree scan
6. UDP scan
7. RPC scan
ม4ร2ปแบบการใชงานดงน4N
nmap [-s scan-type] [-p port-range]|-F options target
-s ตามดวยตวอกษรดงน4N T = TCP Connect scan S = TCP SYN scan
U = UDP scan (can be combined with the previous flags)
R = RPC scan (can be combined with previous flags)
F, N, X, L, W, O, V, P คอ Fin, Null, Xmas Tree, List, Window, IP Protocol,
Version และ Ping scans
เวลาใชงานสามารถใชหลายตวปนกนไดเช+น -sSUR หมายถGง SYN scan, UDP scan
และ RPC scan ส+วนการใชงาน -p ตามดวย port เด4ยวหรอเป?นกลY+มหรอ range ไดเช+น -p 20-
23,80,53,600-1024 หมายถGง nmap จะ scan ตNงแต+ port 20 ถGง 23, 80, 53, และ 600 ถGง 1024
ส+วนการใช -F หมายถGง fast scan ส+วน target คอ ip address เป)าหมายกาหนดไดหลายแบบ
เช+น 192.168.1.* หมายถGงทNงหมด 255 IP addresses หรอท4น3ยมจะใชเป?น 192.168.17.0/24
ก^ได 10.13.[1,2,4].* หมายถGง 10.13.1.0/24, 10.13.2.0/24 และ 10.13.4.0/24 กรณ4ท4ไม+ตองการ
ตวอยV งท!1 1 การใช nmap อย+างง+าย (Simple scan against a bastion host )
# nmap -sT -F -P0 -O 192.168.1.11
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-01-03 13:03 ICT
Insufficient responses for TCP sequencing (0), OS detection may be less accurate
Insufficient responses for TCP sequencing (0), OS detection may be less accurate
Insufficient responses for TCP sequencing (0), OS detection may be less accurate
Interesting ports on 192.168.1.11:
Not shown: 1013 closed ports, 219 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
465/tcp open smtps
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
MAC Address: 00:C1:28:01:9C:4E (Unknown)
Too many fingerprints match this host to give specific OS details
Nmap finished: 1 IP address (1 host up) scanned in 38.046 seconds
เห^นตวอย+างขางบนกนแลวคงม4ประโยชน_กนบางไม+มากก^นอยสาหรบการใช string
matching สามารถใชเป?นค+าตวเลขฐานส3บหกไดโดยใช --hex-string เพอป)องกนไวรสใหม+ ๆ
ท4ม4การเป‘ดเผย Code ในเว^บ Antivirus ใครสนใจจะ Compile patch Layer7 ใชกนเองใหไปด2
รายละเอ4 ย ดไดท4 http://under-linux.org/ หร อด2ข อม2 ล พร อม download ไดท4 http://l7-
filter.sourceforge.net/ ตวอย+างสYดทายคอส3งท4ชอบใชกนอย2+แลวคอเรองการทา Port Forward
ดวย Command Option DNAT (Destination NAT)
$IPTS -t nat -A PREROUTING ! -i $INT_IF -p tcp --dport-port 80 \
-j DNAT --to 100.0.0.5:80
ถาทา Port forward ไปยง Server ท4เป?น Private IP เวลาจะทาการป)องกน virus ตอง
ใช FORWARD chain แบบน4N
$IPTS -A FORWARD -p tcp --dport 80 -m string \
--string "/default.ida?" --algo bm -j DROP
บทสรป
ร2ปแบบการใชงาน IPTABLES ม4ส+วนประกอบท4สาคญ 3 ส+วนคอ
Filter Table ประกอบดวย
o INPUT
o OUTPUT
o FORWARD
NAT Table ประกอบดวย
o PREROUTING (DNAT/REDIRECT)
o OUTPUT (DNAT/REDIRECT)
o POSTROUTING (SNAT/MASQUERADE)
Mangle table ประกอบดวย
o PREROUTING
o INPUT
o FORWARD
o POSTROUTING
o OUTPUT
ซGงหากม4การกาหนดค+าในการใชงานผ3ดพลาดหรอไม+ครบถวน ก^จะส+งผลเส4ยคอไม+
สามารถทางานไดสมบ2รณ_หรออาจทาใหระบบทางานชาลง เพราะม4การส+งค+าวนไปมาหรอหา
ทางออกไม+ได ผ2ด2แลระบบควรศGกษาเปร4ยบเท4ยบกบตวอย+าง Script ท4ม4มาใหด2ในบทน4Nแลว
นาไปเล อกใช งานใหเหมาะสมในแต+ ล ะ Service ท4 เคร อง Server ของตนเท+ านN น ไม+ม 4
Software ใดท4เป?นค+าคงท4 จGงไม+ควรอย+างย3งท4จะใชว3ธ4การคดลอกหรอจามาจากท4อนเพอนามา
ใชกบ Server จร3งของแต+ละหน+วยงานหรอองค_กรเด^ดขาด ยกเวนค+าพNนฐานท4 เก4 ยวของกบ
Port ท4ไม+อนYญาตเป?นค+าสากลท4ควรกาหนด และท4ยงเป?นปXญหากบผ2ด2แลระบบมอใหม+มกพบ
บทท!1 10 sXid
วตถประสงค
➢ เพอใหรจกการปองกนไฟลคาสงทมความสาคญของระบบ
➢ เพอใหเขาใจว"ธการคนหาและแกไขค%า Permission ทถกตอง
➢ เพอใหเขาใจการต"ดต3งและปรบแต%ง Configuration ใหกบโปรแกรม sXid
➢ สามารถนาไปประย>กตใชในงานจร"งไดอย%างถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
บางคนอาจเคยอ%านบทความหรอหนงสอเกยวกบช%องทางทผบ>กร>กจะบ>กโจมต
Server ไดดวยการบ>กเขาทาง file หรอ directory ทมการทา root-owned bits หรอทมการ set
bit ใหเปCน +s อาจทาใหมผลกบ suid หรอ sgid กWได เปCนการเปXดช%องทางใหบ>คคลภายนอกท
ไม%ใช% User ในระบบสามารถเขาถ[งไฟลหรอ directory ไดทนท
เราสามารถใชโปรแกรมช%วยในการตรวจสอบความเคลอนไหวใน Server ว%ามการ
เปลยนแปลง file หรอ directory ใดบางทมการเปลยน bit เปCน +s และยงกาหนดใหส%ง e-mail
ข*นท!1 1
แกไขไฟล sxid.conf ตามตวอกษรสเขม (ตวหนา)
# vi /et/sxid.conf
# Configuration file for sXid
SEARCH = "/"
# Which subdirectories to exclude from searching
EXCLUDE = "/proc /mnt /cdrom /floppy"
# Who to send reports to
EMAIL = "admin@sample.co.th"
# Always send reports, even when there are no changes?
ALWAYS_NOTIFY = "no"
# times based on KEEP_LOGS below
LOG_FILE = "/var/log/sxid.log"
# How many logs to keep
KEEP_LOGS = "5"
# Rotate the logs even when there are no changes?
ALWAYS_ROTATE = "no"
# Directories where +s is forbidden (these are searched
# even if not explicitly in SEARCH), EXCLUDE rules apply
FORBIDDEN = "/home /tmp"
# Remove (-s) files found in forbidden directories?
ENFORCE = "yes"
# This implies ALWAYS_NOTIFY. It will send a full list of
# entries along with the changes
LISTALL = "no"
# Ignore entries for directories in these paths
# (this means that only files will be recorded, you
# can effectively ignore all directory entries by
# setting this to "/"). The default is /home since
# some systems have /home g+s.
IGNORE_DIRS = "/home"
# Mail program. This changes the default compiled in
# mailer for reports. You only need this if you have changed
# it's location and don't want to recompile sxid.
MAIL_PROG = "/bin/mail"
บนท[กไฟล แลวกาหนด Permission
#chmod 400 /etc/sxid.conf
ข*นท!1 2
ต3งเวลาใหโปรแกรมตรวจสอบระบบดวย crontab -e
#crontab -e
# ต3งให run โปรแกรมท>ก ๆ 4 นาฬ"กา (ตส) ของท>กวน
0 4 * * * /usr/bin/sxid
หรbอ ค>ณสามารถกาหนดไวใน /etc/cron.daily/ โดย vi ดงน3
#vi /etc/cron.daily/sxid
#!/bin/sh
SXID_OPTS=
if [ -x /usr/bin/sxid ]; then
/usr/bin/sxid ${SXID_OPTS}
fi
ค>ณสามารถสงตรวจสอบดวยตวเองไดจากการสงดงน3
# sxid -k
sXid Vers : 4.0.1
Check run : Wed Oct 3 12:40:32 2002
This host : ns.sample.com
Spotcheck : /home/admin
Excluding : /proc /mnt /cdrom /floppy
Ignore Dirs: /home
Forbidden : /home /tmp
No changes found
บทสรป
ในบทน3 มกเปCนทละเลยหรอมองขามสาหรบผดแลระบบเสมอ เพราะผดแลระบบ
มกมนใจว%าโปรแกรม NOS ทนามาใชงาน ทางบร"ษ ทผเขยนน%า จะทามาใหดอย%แลว โดย
เฉพาะย"งเปCน Version ใหม% ๆ ย"งปลอดภยมากข[3นกว%าเด"ม แนวค"ดน3อาจถกเพยง 50% เพราะ
ถาเปCน OS ของเครอง Client คงจะมป•ญหาไม%มากเพราะใชงานคนเดยว แต%น3เปCน Server ตอง
มการใหบร"การ มการไหลของขอมล คาสงเขาออกตลอดเวลา มไฟลบางอย%างหรอไฟลคาสง
ทจาเปCนตองเปXดไวใหลกข%ายหรอบ>คคลภายนอกเขามาเรยกใชได เปCนเหต>ใหเก"ดการถกบ>ก
โจมตเขามาเรยกใชคาสงทจาเปCนในการจดการระบบ อาการแบบน3มกพบไดกบเครอง Server
ทถกบ>กเขามาแกไขไฟลเช%น login ทาใหผดแลตวจร"งไม%สามารถ login เขาเครองตวเองได
เปCนตน หากค>ณอ%านแลวนาไปตรวจสอบและแกไขตามคาแนะนาแลวจะไดประโยชนมาก
เก"นค>มอย%างแน%นอนครบ
วตถประสงค
➢ เพอใหรจกการดแล Log file อยางมออาชพ
➢ เพอใหต"ดต#งและก%าหนด Configuration ใหใชงานได
➢ สามารถน%าไปใชในงานจร"งไดอยางถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
ส"งส%าคญทผดแลระบบแบบมออาช พไมควรลม กOค อการเฝQาระวงตรวจสอบความ
เคลอนไหว การต"ดตอเขาออก Server อยางสม%าเสมอ นนคอส"งทลมท%าไมได แตความเป8นจร"ง
ผดแลระบบมกประมาท หากมเวลากOจะคอยตรวจดดวยค%าสงพ#นฐานเชน cat, tail, last เชน
# cat /var/log/secure
# tail /var/log/secure
# cat /var/log/message
# tail /var/log/message
# cat /var/log/maillog
# tail /var/log/maillog
# last
หรอบางคนอาจขยนเปUดด log file แตละบร"การอยางละเอยดใน /var/log เลยกOไดถา
พบส"งผ"ดปกต"กOจะท%าการแกไขไดทนเวลา ส%าหรบในบทน#จะใชโปรแกรม logcheck ในการ
เฝQาระวงภยใหกบผดแลระบบ ซ> งโปรแกรมน#ไป Download มาจากทเด ยวกนกบ Portsentry
แตคราวน # ได ไฟล]ท เป8 น source code มาจ> ง สามารถน% า มาต" ดต# งกนไดง าย ๆ ถ าค_ ณ ไป
Download มาเองตองมาท%าการแกไข configure ใหตรงตามความตองการ แตในทน#มมาใหใน
CD ROM ผเขยนไดเตรยมไวใหแลวท#งสองแบบ สามารถต"ดต#งไดทนท เหลอเพยงสวนการ
ปร บแต งค า Configuration อ กเลO กน อย จะใช งานได อย างสมบ รณ] ส% า หร บไฟล]ท ไป
download หรอม ใน CD มชอวา logcheck-1.1.1.tar.gz และ logcheck-1.1.1-8.i386.rpm ให
ต"ดต#งตามว"ธดงตอไปน#
สJวนท!9 1
# vi +34 systems/linux/logcheck.sh
แกไขจากเด"มบรรทดท 34
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin
แกเป8น
PATH=/bin:/sbin:/usr/bin:/usr/sbin
จากเด"มบรรทดท 47
LOGTAIL=/usr/local/bin/logtail
แกไขเป8น
LOGTAIL=/usr/sbin/logtail
จากเด"มบรรทดท 55
TMPDIR=/usr/local/etc/tmp
แกไขเป8น
TMPDIR=/tmp/logcheck$$-$RANDOM
จากเด"มบรรทดท 92
HACKING_FILE=/usr/local/etc/logcheck.hacking
แกไขเป8น
HACKING_FILE=/etc/logcheck/logcheck.hacking
จากเด"มบรรทดท 101
VIOLATIONS_FILE=/usr/local/etc/logcheck.violations
แกไขเป8น
VIOLATIONS_FILE=/etc/logcheck/logcheck.violations
จากเด"มบรรทดท 118
VIOLATIONS_IGNORE_FILE=/usr/local/etc/logcheck.violations.ignore
แกไขเป8น
VIOLATIONS_IGNORE_FILE=/etc/logcheck/logcheck.violations.ignore
จากเด"มบรรทดท 125
IGNORE_FILE=/usr/local/etc/logcheck.ignore
แกไขเป8น
IGNORE_FILE=/etc/logcheck/logcheck.ignore
จากเด"มบรรทดท 148
rm -f $TMPDIR/check.$$ $TMPDIR/checkoutput.$$ $TMPDIR/checkreport.$$
พ"มพ]เพ"มลงไปอก 2 บรรทด
rm -rf $TMPDIR
mkdir $TMPDIR
จากเด"มบรรทดท 224
rm -f $TMPDIR/check.$$
พ"มพ]เพ"มอก 1 บรรทด
rm -rf $TMPDIR
จากเด"มบรรทดท 274
# Clean up
rm -f $TMPDIR/check.$$ $TMPDIR/checkoutput.$$ $TMPDIR/checkreport.$$
พ"มพ]เพ"มอก 1 บรรทด
rm -rf $TMPDIR
สJวนท!9 2
# vi +9 Makefile
CC = cc <--- แก%ไขจ ก cc เปfน gcc
จากเด"มบรรทดท 14
CFLAGS = -O
แกไขเป8น
CFLAGS = -O3 -mtune=i686 -funroll-loops -fomit-frame-pointer
จากเด"มบรรทดท 22
#INSTALLDIR = /usr/local/etc
แกไขเป8น
INSTALLDIR = /etc/logcheck
จากเด"มบรรทดท 25
INSTALLDIR_BIN = /usr/local/bin
แกไขเป8น
INSTALLDIR_BIN = /usr/sbin
จากเด"มบรรทดท 30
INSTALLDIR_SH = /usr/local/etc
แกไขเป8น
INSTALLDIR_SH = /usr/sbin
จากเด"มบรรทดท 56
/bin/rm $(INSTALLDIR_SH)/logcheck.sh
แกไขเป8น
/bin/rm $(INSTALLDIR_SH)/logcheck
จากเด"มบรรทดท 66
@echo "Creating temp directory $(TMPDIR)"
@if [ ! -d $(TMPDIR) ]; then /bin/mkdir $(TMPDIR); fi
@echo "Setting temp directory permissions"
chmod 700 $(TMPDIR)
ใหลบท"#งหรอปiดการใชงานดวยเครองหมาย #
#@echo "Creating temp directory $(TMPDIR)"
#@if [ ! -d $(TMPDIR) ]; then /bin/mkdir $(TMPDIR); fi
#@echo "Setting temp directory permissions"
#chmod 700 $(TMPDIR)
จากเด"มบรรทดท 75
cp ./systems/$(SYSTYPE)/logcheck.sh $(INSTALLDIR_SH)
แกไขเป8น
cp ./systems/$(SYSTYPE)/logcheck.sh $(INSTALLDIR_SH)/logcheck
จากเด"มบรรทดท 78
chmod 700 $(INSTALLDIR_SH)/logcheck.sh
แกไขเป8น
chmod 700 $(INSTALLDIR_SH)/logcheck
จากน#นใหท%าการบนท>กไฟล]
:wq กด Enter
# Daily check Log files for security violations and unusual activity
/usr/sbin/logcheck
EOF
จากน#นใหท%าการก%าหนด permission ใหกบโปรแกรมเพอความปลอดภย
# chmod 700 /etc/cron.daily/logcheck
แบบท!9 2 กรณทใชงาน Linux คาย RedHat หรอ Fedora สามารถ Download ไฟล] .rpm ไดจาก
http://rpm.pbone.net/ เมอไดไฟล]มาแลวใหต"ดต#งจากค%าสง rpm ไดทนท
# rpm -ivh logcheck-1.1.1-6.i386.rpm
กOสามารถใชงานไดทนทโดยจะต#งคาท cron.daily ไวใหตรวจสอบท_กวนอยแลว
บทสรป
จากการทผเขยนมประสบการณ]ในการดแลระบบ Internet Server ส"งทไมอยากท%า
คอเรองทตองเสยเวลามาคอยตรวจสอบ Log file ใน Server ท_กวนหรอท_กคร#งทรวามส" งผ"ด
ปกต"ในการใหบร"การ นนหมายถ>งตองร บตรวจดวาก%าลงถกค_กคามจากภายนอก หากค_ณ
สามารถต"ดต#งโปรแกรมในบทน#ไดกOจะประหยดเวลาในสวนน#ไดมาก เพราะค_ณเพยงแตไป
ตรวจสอบคาใน /var/logcheck แตละไฟล]จะบนท>กคาทแยกจากกนในแตละหนาท เพอใหค_ณ
สามารถตรวจสอบความผ"ดปกต"ของระบบ แตตองไมลมเขามาดนะครบ ไมใชวาโปรแกรม
สงความผ"ดปกต"มาบนท>กไวแจงใหทราบ แลวแตผดแลระบบไมเคยเปUดอานไฟล]ตาง ๆ เลย
แบบน#ต"ดต#งหรอไมต"ดต#งโปรแกรมชวย กOคงไมเก"ดประโยชน]เป8นแนครบ
บทท!1 12 Portsentry
วตถประสงค
➢ เพอใหรจกการปองกนการถกผบกรก Scan Port
➢ เพอใหเขาใจการต#ดต%งใชงานโปรแกรม Portsentry
➢ สามารถน.าไปประยกต2ใชในงานจร#งไดอย3างถกตอง
ก รต(ดต*งและใช%ง นโปรแกรม
ปMจจบนผดแลระบบ Internet Server มกพบปMญหาการถกผไม3หวงด6จากทกมมโลก
เขาโจมต6 Server ในหน3วยงานหรอองค2กรต3าง ๆ ซ>งถาผดแลระบบไม3ม6ความสามารถในการ
ปกปองหรอปองกน Server ในแต3ละ Service ดวยแลว ย3อมส3งผลใหถกโจมต6ไดโดยง3ายดาย
รวมถ>งผดแลบางคนไม3เคยสนใจท6จะศ>กษาเลยว3า NOS (Network Operating System) ท6น.ามา
ต#ดต%งใชงานน%นม6ช3องโหว3ตรงไหนบาง จ>งเป9นการเปWดโอกาสใหกบนกเร6ยน นกศ>กษา ท6ต3าง
ประเทศ ไดใช Server เหล3าน6%เป9นเครองมอทดลองการเจาะเขาระบบ ในการใชงาน NOS
แต3ละค3ายมกพบว3าค3มอการต#ดต%งใชงานจะเป9นเพ6ยงการบอกข%นตอนและว#ธ6การต#ดต%งลงใน
เครอง Server เพอใหสามารถใชงานในแต3 ล ะ Service เท3 าน% น ไม3 ไดม6 ก ารแนะน. า เรอง
Security ไวจ>งเป9นหนาท6 ของผดแลระบบท6ตองศ>กษา คนควาหาความรเรองความปลอดภย
ของ Server และความปลอดภยในแต3ละ Service ดวยตนเอง ในบทน6%ผ เข6ยนไดน.าเอาเครอง
มอ (Tool) ท6เป9นท6น#ยมใชกนอย3างแพร3หลายในการปองกนการ Scan Port ซ>งเป9นท6ทราบกนด6
ว3า การท6 จะบกรกเขา Server ใด ๆ น%นข%นแรกตองพยายามรใหไดว3าเครองเหยอท6 เป9นเปา
หมายน%นไดเปWดบร#การอะไรไวและเปWด Port หมายเลขใดไวบาง เพอเป9นช3องทางในการบก
เขาโจมต6 ย#งถาผดแลระบบคนใดไม3ค3อยม6เวลาดแลตลอดเวลา อาจเป9นเพราะม6ภาระงานมาก
หรอบางคร%งก[ไม3ใช3หนาท6 หลกเพ6ยงแต3อยากจะท.า Internet Server เพอใหหน3วยงานม6ไวใช
จ>งสมควรอย3างย#งท6ตองศ>กษาและต#ดต%งเครองมอท6ใชในการปองกนการ Scan Port ซ>งในบท
น6%จ ะม6 รายละเอ6 ยดการต# ดต% งและการแกไข Configuration ใหสามารถท.า การปองกนและ
ปกปอง Server ใหตรงกบความตองการและแข[งแรง เมอต#ดต%งเสร[จก[สามารถท6จะเปWด Server
ใหบร#การลกข3ายไดนานข>%นหรอท6 ชอบเร6ยกกนว3าแข[งแรงเปWดใชไดนานไม3ล3มตามภาษาท6
ชอบคยกนทวไป ส.าหรบโปรแกรมท6ใชในบทน6%คอโปรแกรม portsentry จะช3วยในการตรวจ
จบผท6ท.าการ Scan Port แลวจะน.าค3า IP Address จากผบกรกท6ก.าลง Scan ไปเปร6ยบเท6ยบกบ
ค3าท6ต%งไวว3าจะถก Block หรอไม3อนญาตใหสามารถเขาส3 Server ในคร%งต3อไปไดอ6ก ดงราย
ละเอ6ยดต3อไปน6%
ส. า หร บ Linux OS ท6น. า มาใชท. า Server ม6 ก ารน. า โปรแกรม Portsentry เป9 น
โปรแกรมท6สรางข>%นเพอตรวจสอบการ Scan Port แบบ real time และท6ส.าคญท6สด Portsentry
เป 9 นส 3 ว นหน> ง ข อ ง โ ป แ กร ม ป ร ะ เ ภ ท Open source ท6 ส า มา ร ถ Download ได จ า ก
http://sourceforge.net/projects/sentrytools/ ซ>งจะม6ใหเป9น Compress file อาจอย3ใ นรปแบบ
.gz หรอ .bz2 หากตองการน.าไปใชกบตระกล RedHat หรอ Fedora ตองน.าไป Compile ใหม3
ก รต(ดต*งใช%ง น
ในบทน6%จะแสดงการต#ดต%งท%งไฟล2แบบ .gz และแบบ .rpm เพอใหสะดวกในการน.า
ไปใชงานใน Linux แต3ละค3าย เร#มกนตามล.าดบดงน6%
ค เตIอน
กรณ6ท6ตองการ Compile โปรแกรมเองจาก Source Code ภาษาซ6 ตองตรวจดใน
เครอง Server ก3 อ นว3 าม6 ก ารต# ดต% ง โปแกรม gcc ไวหรอยงถายงไม3ต # ดต% ง ตองท. า การต# ด
โปรแกรมภาษาซ6ก3อนจ>งจะท.าตามข%นตอนในล.าดบต3อไปน6%ได
เนองจาก source code ในไฟล2 portsentry.c ม6ข อผ# ด พลาดจากการก. า Enter ข>% น
บรรทดใหม3ท.าให Compile ไม3ผ3านใหเขาไปแกไขบรรทดท6 1584 ดงน6%
# vi +1584 portsentry.c
printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
sourceforget dot net>\n");
พบว3าบรรทดท6 1584 และบรรทดท6 1585 เป9นขอความท6อย3คนละบรรทด ซ>งค.าสง
ในบรรทดท6 1584 ยงไม3จบ หลงค.าว3า dot ตองต3อดวยบรรทดท6 1585 ใหท.าการเลอน Cursor
ไปทายค.าว3า dot แลวเขาส3 Insert Mode เคาะ Space bar 1 คร%ง แลวใหกดแปน Del เพอด>งให
บรรทด 1585 ข>%นมาต3อทายค.าว3า dot ถาหากใชการ Remote จากภายนอกเขามาแกไขอาจกด
แปน Del ไม3ไดก[ใหเลอน Cursor ไปท6ตวแรกของบรรทดท6 1585 แลวกดแปน Back space ด>ง
ข>%นไปต3อทายค.าว3า dot เสร[จแลวกด ESC ออกจาก Insert Mode ท.าการบนท>กไฟล2
: wq กด Enter
จากน%นใหไปแกไขไฟล2ท6ใช Compile ชอว3า Makefile ดงน6%
# vi Makefile
แกไขบรรทดท6 23 ใหใส3เครองหมาย # หนาบรรทดน6%
#CC = cc
จากน%นใหไปลบเครองหมาย # หนาบรรทดท6 26 ออก
CC = gcc
เด#มบรรทดท6 29
CFLAGS = -O -Wall
แกไขเป9น
CFLAGS = -O3 -mtune=i686 –funroll-loops –fomit-frame-pointer -Wall
เด#มบรรทดท6 40
INSTALLDIR = /usr/local/psionic
แกไขเป9น
INSTALLBIN = /usr/sbin
LOGDIR = /var/log/portsentry
INSTALLDIR = /etc
เด#มบรรทดท6 68
/bin/rm $(INSTALLDIR)$(CHILDDIR)/*
/bin/rmdir $(INSTALLDIR)
แกไขเป9น
/bin/rm -rf $(INSTALLDIR)$(CHILDDIR)
/bin/rm -f $(INSTALLBIN)/portsentry
/bin/rm -rf $(LOGDIR)
เด#มบรรทดท6 79
@echo "Setting directory permissions"
ใหแทรกบรรทดก3อนหนาบรรทด 79 อ6ก 2 บรรทด
@if [ ! -d $(LOGDIR) ]; then /bin/mkdir\
$(LOGDIR); fi
เด#มบรรทดท6 86
cp ./portsentry $(INSTALLDIR)$(CHILDDIR)
แกไขเป9น
cp ./portsentry $(INSTALLBIN)
จากเด#มบรรทดท6 90
chmod 700 $(INSTALLDIR)$(CHILDDIR)/portsentry
แกไขเป9น
chmod 700 $(INSTALLBIN)/portsentry
จากน%นใหไปแกไขไฟล2 portsentry.conf
# vi portsentry.conf
เด#มบรรทดท6 83
IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"
แกไขเป9น
IGNORE_FILE="/etc/portsentry/portsentry.ignore"
เด#มบรรทดท6 85
HISTORY_FILE="/usr/local/psionic/portsentry/portsentry.history"
แกไขเป9น
HISTORY_FILE="/var/log/portsentry/portsentry.history"
เด#มบรรทดท6 87
BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"
แกไขเป9น
BLOCKED_FILE="/var/log/portsentry/portsentry.blocked"
จากน%นไปแกไขไฟล2 portsentry_config.h
# vi portsentry_config.h
จากเด#มบรรทดท6 25
#define CONFIG_FILE "/usr/local/psionic/portsentry/portsentry.conf"
แกไขเป9น
#define CONFIG_FILE "/etc/portsentry/portsentry.conf"
เสร[จแลวก[บนท>กไฟล2
:wq
จากน%นใหลบไฟล2ตนฉบบท#%ง
# rm -f /tmp/portsentry*
# ก.าหนดต.าแหน3งท6อย3ของไฟล2ต3าง ๆ
IGNORE_FILE="/etc/portsentry/portsentry.ignore"
HISTORY_FILE="/var/log/portsentry/portsentry.history"
BLOCKED_FILE="/var/log/portsentry/portsentry.blocked"
# ก.าหนดค3าท6จะปองกน
# 0 = ไม3 block การ Scan TCP/UDP
# 1= block ท%ง TCP/UDP
# 2= block external command เท3าน%น
BLOCK_UDP="1"
BLOCK_TCP="1"
# บรรทดน6%ใชกบ Linux Version ใหม3เท3าน%น ท6 ใช iptables ท.าหนาท6 Firewall จะ
ไม3ใหผอนบกรกเขามาท6 server ไดอ6กหลงจากตรวจพบแลว
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
# ก.าหนดใหม6การปองกนดวยการเพ#ม IP ท6ตรวจพบใส3เพ#มในไฟล2 hosts.deny
KILL_HOSTS_DENY="ALL: $TARGET$"
# ก.าหนดจ.านวน Port ท6ยอมให Connect เขาในระบบไดม6ค3าต%งแต3 1-2 ถาก.าหนด
เป9น 0 จะเป9นการสงใหบนท>กค3าใน Log file ทนท6เมอพบว3าม6การถก Scan port เพอ
ใหผดแลระบบทราบค3า default = 2 เป9นการลดจ.านวนคร%งในการเตอน โดยทวไป
จะใชค3า "0"
SCAN_TRIGGER="0"
# ก.าหนดขอความแจงเตอนว3าม6การบกรก อาจไม3จ.าเป9นตองใช เพราะจะท.าใหผ
บกรกทราบว3าเราปองกนระบบไว รายการน6%ใชไม3ไดกบการตรวจพบ Stealth scan
# portsentry -audp
จากน%นสามารถตรวจสอบว3าโปรแกรมท.างานหรอไม3ดวยค.าสง
# ps ax | grep portsentry
ถาตองการยกเล#กการท.างานก[สง
# killall portsentry
;;
stop)
stop
;;
status)
status portsentry
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/portsentry ]; then
stop
start
fi
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
เสร[จแลวบนท>ก
:wq กด Enter
จากน%นใหก.าหนด Permission ให Script
#chmod 700 /etc/rc.d/init.d/portsentry
ท.าการเพ#ม Script ใหระบบเพอสงใหท.างานขณะท6เครอง Reboot
# chkconfig - -portsentry
# chkconfig - -level 345 portsentry on
หลงจากแกไขค3าไดตามท6ตองการแลวก[ตองไม3ลมสงใหโปรแกรมท.างานนะครบ
#/etc/rc.d/init.d/portsentry restart
แต3ถ% ท ก รต(ดต*งจ กไฟล rpm ไม3ตองท.าอะไรมากเพ6ยงไปแก portsentry.conf ให
ตรงกบตวอย3างแลวสงใหโปรแกรมท.างาน
# /etc/rc.d/init.d/portsentry restart
ตรวจสอบในเมน ntsysv ใหกา [*] portsentry จะไดท.างานทกคร%งท6เครอง Reboot
สะดวกและง3ายกว3านะครบ
บทสรป
ส.าหรบบทน6%ผ เข6ยนพยายามแนะน.ามาต%งแต3การต#ดต%ง Internet Server ดวย Linux
แลว เพราะม6ความส.าคญอย3างมาก การบกโจมต6จาก Hacker น%นจะกระท.าไดก[ต3อเมอ Hacker
พยายาม Scan Port ของเปาหมายเพอตรวจสอบดในเบ%องตนว3า Server เปาหมายเปWดบร#การ
Port อะไรท#%งไวบาง หากผดแลระบบม6ประสบการณ2แลว ลองทดสอบดดวยตนเองดวยค.าสง
nmap
# nmap localhost และ
บทท!1 13 Tripwire
วตถประสงค
➢ เพอใหใชโปรแกรมเฝาระวงและตรวจสอบการเปลยนแปลงของไฟล"และ
ไดเร$กทอร
➢ เพอใหผ'ด'แลสามารถตรวจจบการเปลยนแปลงไฟล"และไดเร$กทอรใน Server
ได
➢ เพอใหเขาใจการต/ดต0งและแกไข Configuration อย:างถ'กตอง
ก รต(ดต*งและใช%ง นโปรแกรม
บทน0เป@นเรองทผ'ด'แลระบบไม:ควรละเลยเพราะผ'ใช OS หลายค:ายมกไม:น/ยมใชงาน
โปรแกรม SELinux เพราะมการใชงานทยR:งยาก แมว:าจะมการจดการทเก:งกาจในการตรวจ
ตราไฟล"และไดเร$กทอรไดอย:างละเอยดสามารถปองกนการบRกรRกเขา Server ไดดมากตวหนSง
เมอไม:ชอบใชงานก$ตองหาโปรแกรมอนทมความสามารถในการจดการเรองน0ซSงต0งแต:อดต
จนถSงปTจจRบนโปแกรมทมความน/ยมในกลR:มผ'ด'แลระบบตวหนS งคอ Tripwire เป@น Software
ข*นท!1 2 ในทางปฏ/บต/หลงต/ดต0งเสร$จใหลบไฟล"ตนฉบบท/0งไม:ควรคางไวในเครอง
Server จากน0นใหทLาการสรางไฟล"รหสกRญแจ (Key File) ดงน0
# tripwire-setup-keyfiles
โปรแกรมจะมการใหกรอกรหสสLาหรบนLาไปสราง keyfile ใหกรอกเหมอนกนท0ง
สองบรรทด
Enter the site keyfile passphrase: <ไม:นอยกว:า 8 ตวอกขระ>
Verify the site keyfile passphrase: <กรอกใหเหมอนกนกบบรรทดก:อนหนา>
ใหสงเกตขอความจะมคLาว:า site keyfile เพราะหลงจากรบค:า passphrase ครบแลว
โปแกรมนLาไปสราง site keyfile เสร$จจากน0นจะสราง local keyfile ก$ตองกรอกรหสอกคร0งซSง
ไม:ใช:รหสเดยวกนก$ไดแต:ตองบนทSกไวหรอจLาได ตองนLารหสน0ไปทLาข0นตอนอนอก
Enter the local keyfile passphrase: <ไม:นอยกว:า 8 ตวอกขระ>
Verify the local keyfile passphrase: <กรอกใหเหมอนกนกบบรรทดก:อนหนา>
พอรบค: า ครบแลวโปรแกรมจะเร/ มสรางไฟล" Configuration และ Policy (tw.cfg
และ tw.pol) จะมการใหกรอก site passphrase อกสองคร0 งตองไม: ก รอกผ/ ด บางคนเห$ น
ขอความคลาย ๆ กนเลยใส:มวเอาค:า local passphrase มากรอกโปแกรมมนไม:รบมนจะถามวน
ไปมา คนทหดทLาใหม: ๆ นSกว:าโปรแกรมเสยเลยพาลเล/กใชไปเลยก$ม
หากมการทLางานไม:ผ/ดพลาดใด ๆ โปรแกรมจะสรางไฟล" tw.cfg และ tw.pol ไวท
/etc/tripwire และจะมขอความเตอนเต$มไปหมดว:าไม:ควรท/0งไฟล" Configuration ทมนามสกRล
while (<POL>) {
chomp;
if (($thost) = /^HOSTNAMEs*=\s*(.+)\s*;/) {
$myhost = `hostname` ; chomp($myhost) ;
if ($thost ne $myhost) {
$_="HOSTNAME=$myhost;" ;
}
}
elsif ( /^{/ ) {
$INRULE=1 ;
}
elsif ( /^}/ ) {
$INRULE=0 ;
}
elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+-
>\s+.+)$/) {
$ret = ($sharp =~ s/\#//g) ;
if ($tpath eq '/sbin/e2fsadm' ) {
$cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
}
if (! -e $tpath) {
$_ = "$sharp#$tpath$cond" if ($ret == 0) ;
}
else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;
เสร$จการสราง Script ใหสงบนทSกไฟล"ดวย
:wq
# vi /etc/tripwire/twpol.txt
…………..
…………..
ใหคนหาบรรทดทมขอความตามขางล:างน0
SIG_MED=66; # Non-critical files that are of significant security impact
SIG_HI= 100; # Critical files that are significant points of vulnerability
ใหพ/มพ"เพ/มตรงน0 อกสองบรรทด
( emailto = root )
{
จากน0นใหคนหาคLาว:า disabled-entries ใหเพ(1มวงเล|บป}กก ป~ดก:อนหนาบรรทดทพบขอความ
}
# disabled-entries: 184
เสร$จเรยบรอยอย:าลมบนทSกไฟล"ก:อนออกจาก vi
:wq
ส:วนน0จะมการรายงานขอม'ลอย:างละเอยดจากไฟล"ทโปรแกรมสรางมาให พยายาม
เลอนจอภาพด'หาบรรทดทมขอความว:า
Tripwire Data Files 100 0 0 0
ใหผลของบรรทดน0เป@น 100 % เพราะเป@นการรายงานว:าตรวจสอบเครองจากกฎท
ต0งในไฟล" tw.pol ครบถวนเรยกว:ามการรกษาความปลอดภยไดระดบ 100 % ส:วนทายจะเป@น
Error Report ควรอย:างย/งทตองรายงานออกมาว:า No Errors
บทสรป
ในขณะต/ดต0งโปรแกรมเสร$จจะมการสรางไฟล"ต วอย:างมาให 2 ไฟล"ค อ twcfg.txt
และ twpol.txt เพอใชศSกษาแนวทางการแกไข Configuration และการสราง Policy ใหกบ
โปรแกรมทตรงกบการใชงาน ส/ งทตองระวงก$ค อหลงต/ดต0งเสร$จอย:ารบลบไฟล" twpol.txt
และ twcfg.txt ท/0งเพราะจะตองใชสราง policy ใหม:ตามข0นตอนต:าง ๆ ในบทน0ใหครบก:อน
หลงเสร$จส/0นภาระการปรบแกไขจSงจะลบท/ 0งหรอใชว/ธ การเขารหสไฟล" เพอไม:ใหมผ'อน
สามารถเป‰ดอ:านได และถาคLานSงถSงความปลอดภยส'งสRดของโปรแกรมน0ตองกLาหนด path ท
จดเก$บไฟล"ท0งสองน0ไวในสอทเป@น ชน/ ด Read Only เช:น CD ROM จะไดไม:ม ใครเขาไป
แกไขเปลยนแปลงค:าอกได
วตถประสงค
➢ เพอใหรจกการใชเครองมอตรวจจบการบกรกใหกบ Linux Server
➢ เพอใหเขาใจการต#ดต%งใชงานโปรแกรม Snort และ Snort MySql
➢ สามารถน4าไปใชงานจร#งไดอย7างม8ประส#ทธ#ภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
ส4าหรบบทน8%กLยงคงเป>น Open source และ Free Software ตวเก7งอ8กตวหนQงท8ผดแล
ระบบท8 ใช Linux OS ใชงานก นอย7 า งแพร7 ห ลายในการใชท4 า IDS (Intrusion Detection
System) นนกLคอโปรแกรม Snort ปUจจบนไดม8การพฒนาอย7างต7อเนองใหรองรบกบ OS ท8เร7ง
พฒนาตาม Hardware กนอย7างดเดอด ผดแลระบบคงไม7ต องกงวลว7าจะไม7ม8ใชงานหรอไม7
สามารถ Update ใหทนสมยได ส4าหรบผท8ไม7เคยต#ดต%งใชงานควรศQกษาข%นตอนใหด8เพราะม8
การใชงานท8หลากหลาย เช7นอาจพบว7าบางแห7งแนะน4าเพ8ยงให Download โปรแกรมมาแลวกL
ต#ดต%งสง Start Service ไดทนท8กLใชงานได บางแห7งกLแ นะนะใหต# ดต%งร7ว มกบฐานขอมล
ข*นตอนก รต(ดต*ง
ข*นท!1 1 หลงจากท8ไป Download โปรแกรม snort มาจากเวLบไซต^
http://www.snort.org/dl/binaries/linux/
ยงไม7สามารถท4าการต#ดต%งไดทนท8เพราะโปรแกรมน8%ตองใช libpcap ร7วมดวยจQงตองท4าการ
ตรวจสอบว7าม8การต#ดต%งโปรแกรม libpcap หรอยงถายงใหท4าการต#ดต%งลงไปก7อนดงน8%
# rpm -q libpcap
ถายงไม7ต#ดต%งใหท4าการต#ดต%งดงน8%
# rpm -ivh libpcap-0.9.4-10.fc6.i386.rpm
Preparing... ######################################### [100%]
#include $RULE_PATH/local.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
#include $RULE_PATH/finger.rules
#include $RULE_PATH/ftp.rules
#include $RULE_PATH/telnet.rules
#include $RULE_PATH/rpc.rules
#include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
#include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
#include $RULE_PATH/web-coldfusion.rules
#include $RULE_PATH/web-iis.rules
#include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-php.rules
#include $RULE_PATH/sql.rules
#include $RULE_PATH/x11.rules
#include $RULE_PATH/icmp.rules
#include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
#include $RULE_PATH/oracle.rules
include $RULE_PATH/mysql.rules
#include $RULE_PATH/snmp.rules
include $RULE_PATH/smtp.rules
#include $RULE_PATH/imap.rules
#include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules
#include $RULE_PATH/nntp.rules
include $RULE_PATH/other-ids.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
# include $RULE_PATH/policy.rules
:wq
ข*นท!1 3 จากน%นใหไปแกไขค7าการสราง log file เร# มจากการสงใหม8การ rotate log
ใหไปแกไขไฟล^เด#มตามบรรทดท8เป>นตวอกษรหนา ดงน8%
# vi /etc/logrotate.d/snort
# /etc/logrotate.d/snort
# $Id$
# /var/log/snort/alert /var/log/snort/*log /var/log/snort/*/alert /var/log/snort/*/*log
{
/var/log/snort/alert /var/log/snort/*log {
daily
rotate 7
missingok
compress
sharedscripts
postrotate
/etc/init.d/snortd restart 1>/dev/null || true
endscript
}
:wq
ข*นท!1 4 จากน%นใหไป Download โปรแกรม Oinkmaster เพอใชในการจดการเก8 ยว
กบการ Download rule ต7าง ๆ ท8 Snort สรางไวใหโดยท8ผดแลไม7ตองไปคอย Download เพอ
-> bleeding-botcc-BLOCK.rules
-> bleeding-botcc.rules
-> bleeding-dos.rules
-> bleeding-drop-BLOCK.rules
-> bleeding-drop.rules
-> bleeding-dshield-BLOCK.rules
-> bleeding-dshield.rules
-> bleeding-exploit.rules
-> bleeding-game.rules
-> bleeding-inappropriate.rules
-> bleeding-malware.rules
-> bleeding-p2p.rules
-> bleeding-policy.rules
-> bleeding-scan.rules
-> bleeding-sid-msg.map
-> bleeding-virus.rules
-> bleeding-voip.rules
-> bleeding-web.rules
-> bleeding.conf
-> bleeding.rules
ข*นท!1 12 เมอ Download Rule ของ Bleedingsnort.com มาแลวตองไปแกไข
snort.conf ใหรบรว7าม8การน4า Rule มาใชงานร7วมดวย ดงน8%
# vi /etc/snort/snort.conf
พ#มพ^เองต7อทายไฟล^ดงน8%
# Bleeding Edge rules
include $RULE_PATH/bleeding.conf
include $RULE_PATH/bleeding-attack_response.rules
include $RULE_PATH/bleeding-botcc.rules
include $RULE_PATH/bleeding-dos.rules
include $RULE_PATH/bleeding-drop.rules
include $RULE_PATH/bleeding-dshield.rules
include $RULE_PATH/bleeding-exploit.rules
include $RULE_PATH/bleeding-game.rules
include $RULE_PATH/bleeding-inappropriate.rules
include $RULE_PATH/bleeding-malware.rules
include $RULE_PATH/bleeding-p2p.rules
include $RULE_PATH/bleeding-policy.rules
include $RULE_PATH/bleeding-scan.rules
include $RULE_PATH/bleeding-virus.rules
include $RULE_PATH/bleeding-voip.rules
include $RULE_PATH/bleeding-web.rules
include $RULE_PATH/bleeding.rules
:wq
ข*นท!1 13 เสรLจแลวใหสง restart
# /etc/init.d/snortd restart
Snort + MySQL
ก รว(เคร ะห Log file ด%วย BASE (Basic Analysis and Security Engine)
หลงจากต#ดต%ง Snort ร7วมกบ MySQL ท8ผ7านมาเสรLจสมบรณ^แลวกLย งเก#ดความย7ง
ยากในการว#เคราะห^ผล เนองจากค7าต7าง ๆ ท8 Snort ตรวจจบไดถกบนทQกไวในฐานขอมล
MySQL หากผดแลไม7ม8ความรดานฐานขอมลตวน8% อาจย7งยากในการอ7านค7าและน4าขอมลมา
ใชงาน จQงตองหาว#ธ8หรอน4าเครองมอว#เคราะห^ท8ใชงานง7ายและสะดวกในการตรวจสอบค7า
โปรแกรมท8น4ามาใชงานน8%จะแสดงผลต7าง ๆ ผ7านเวLบท4าใหผดแลสามารถดผลการท4างานของ
Snort ไดทกท8ผ7าน Web Browser แต7ตองไม7ลมว7าเครองท8จะท4าแบบน8%ไดตองม8การเป–ดบร#การ
httpd + php + MySQL ท8ท4างานไดอย7างสมบรณ^อย7แลวจQงจะไป Download โปรแกรมมาต#ด
ต%งใชงานได ลองดข%นตอนและล4าดบข%นการต#ดต%งไดดงน8%
# rpm -q php-mysql
# rpm -q php-gd
# rpm -q php-adodb
ถายงไม7ไดต#ดต%งใหท4าการต#ดต%งใหครบส4าหรบ php-mysql และ php-gd ใหใส7แผ7น
CD แลวสง
# mount /dev/cdrom /mnt/cdrom
# rpm -ivh /mnt/cdrom/Fedora/RPMS/php-mysql-5*
# rpm -ivh /mnt/cdrom/Fedora/RPMS/php-gd*
# eject
ส7วนอ8ก 1 ไฟล^ใหต#ดจาก /tmp
# rpm -ivh /tmp/php-adodb*
หลงต#ดต%งเสรLจใหลบไฟล^ตนฉบบท8 Download มาท#ง%
# rm -f /tmp/php-adodb*
<Directory "/var/www/html/base">
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.11 <- ใสw IP หร|อกลwมของ IP ท!1ให%ด'ผลท งเวiบได%
</Directory>
:wq
ทดสอบว7าไฟล^ base.conf ม8ขอผ#ดพลาดหรอไม7
# apachectl configtest
Syntax OK
ภาพหนาจอท8ปรากฏหลงเร8ยกผ7านเวLบท8 http://192.168.1.11/base
รปท8 14.1
รปท8 14.2
รปท8 14.3
ในรปท8 14.3 แสดงรายการสราง BASE table ส4าเรLจแลวใหคล#ก Main page
รปท8 14.4
แสดงขอมลพรอมรายการต7าง ๆ ใหสามารถคล#กเขาดไดทกส7วนและยงม8เมนหลก
ดานล7างตามรปท8 14.5 ใหสามารถศQกษาและเขาไปต%งค7าต7าง ๆ ไดอ8กมากมาย ใหศQกษาเพ#ม
เต#มจากค7มอโปรแกรม BASE
รปท8 14.5
บทสรป
โปรแกรม Snort เป>นโปรแกรมหนQงท8ใชท4า IDS ท8น#ยมใชงานกนอย7างแพร7หลายใน
ปUจจบน ผดแลระบบสนใจจะน4าไปใชควรศQกษารายละเอ8ยดการจดผง Network ใหเหมาะสม
กบหน7วยงานของตนเองและท8ส4าคญหากน4า Snort ไปต#ดต%งใหท4าหนาท8 IDS ตองไม7ควรเอา
ไปรวมไวกบ Service อน ๆ ท8 Server ตองรบภาระหนกอย7แลว เพราะการน4า Software ตรวจ
จบความผ#ดปกต#แบบ Real time มกจ4าเป>นท8ตองใชทรพยากรส7วนหนQง ผเข8ยนทดลองใชกบ
เครองท8ม8หน7วยความจ4านอย จะเก#ด Error จนเครองหยดท4างานไปเลยกLม8เพราะมนจะคอย
Scan packet ต7าง ๆ ท8ว#งเขาออกตลอดเวลา ปUญหาท8พบบ7อยคอท8เวLบของ www.snort.org มก
ไม7ค 7อยยอมให download update rule อาจเป>นเพราะ Internet ประเทศไทยชามากเวลาไป
download มนจะฟ”องว7า หาไฟล^ไม7พบ หมดเวลาตองรออ8กสามนาท8ค7อย download ใหม7 กLไม7
ตองเส8 ยใจนะครบ ความพยายามอย7ท8 ไหนกLม 8 ข องฟร8ด8 ๆ ใหใชตลอดเวลาไม7 เ ปลองงบ
ประมาณ
วตถประสงค
➢ เพอใหรจกวธการ Backup และ Restore ขอมลใน Server
➢ เพอใหเขาใจการใชงานค,าสงทใช Backup และ Restore
➢ สามารถน,าไปใชงานจรงไดอย4างมประสทธภาพ
ก รต(ดต*งและใช%ง นโปรแกรม
ปQจจRบนมผเขยนหนงสอเกยวกบ Server มากมายใหคนไทยไดอ4านและน,าไปใชงาน
แต4ไม4เหSนผเขยนเหล4านHนสนใจเรองการ Backup/Restore ขอมลใน Server ทHง ๆ ท ขอมลต4าง
ๆ ทเกSบอย4ใน Server ลวนมความส,าคญและเป=นสาระทหายาก บางหน4วยงานสะสมขอมล
ตามก,าหนดระยะเวลา แต4กลบสนใจกนแต4จะซHอเครอง Server ด ๆ เลอก NOS ด ๆ หรอทตน
ชอบ ไม4เหSนคดถBงเรองความเสยหายเมอวนหนBง Server มปQญหาไม4สามารถเรยกหาขอมลใน
ส4วนทตองการได ยงบางหน4วยงานใหงบประมาณมากมายในการซHอเครองแม4ข4าย เครองลก
ก4อนอนตองอย4ทไดเรSกทอรราก “/”
# cd /
ตวอย4างนHจะเรม backup partition /home ตHงแต4วนศRกรd ดวยเทปมวนท 1
มวนท 1
# cd /
# cd /
# tar cpf /archive/full-backup-`date '+%d-%B-%Y'`.tar \
--directory / --exclude=proc --exclude=mnt --exclude=archive \
--exclude=cache --exclude=*/lost+found .
การใช Parameter --exclude แสดงถBงการยกเวนไม4ต องการ Backup partition และ
ถาคRณตองการสราง Script ส,าหรบใช backup แบบอตโนมตกSสามารถท,าไดดงนH
# vi /etc/cron.daily/backup
#!/bin/sh
#
COMPUTER=ns1
DIRECTORIES="/home"
BACKUPDIR=/backups
TIMEDIR=/backups/last-full
TAR=/bin/tar
PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a`
DOM=`date +%d`
DM=`date +%d%b`
# Monthly Full Backup
if [ $DOM = "01" ]; then
NEWER=""
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar
$DIRECTORIES
fi
# Weekly full backup
if [ $DOW = "Sun" ]; then
NEWER=""
NOW=`date +%d-%b`
# Update full backup date
echo $NOW > $TIMEDIR/$COMPUTER-full-date
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar
$DIRECTORIES
# Make incremental backup - overwrite last weeks
else
# Get date of last full backup
NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`" $TAR
$NEWER -cf
fi
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ถาไม4เหมอนกSจดการใหเสรSจ บนทBกไฟลdแลวสง restart
# /etc/init.d/sshd restart
เพยงเท4านHกSพรอมใชงานไดใหทดลอง login ดวยค,าสงนH
[root@ns1 ~]# ssh bkuser@192.168.1.20
Last login: Tue Jan 15 11:49:28 2008 from 192.168.1.1
[bkuser@backup ~]$
ใหสงเกตดว4าเครองหมาย prompt เปลยนและชอ user@host หนาบรรทดเปลยน
แสดงว4าท,าไดส,าเรSจสมบรณd ไปใชค,าสง tar ตามตวอย4างทผ4านมาส4งไฟลd backup.tar.gz ขาม
ไปเกSบยงเครอง backup ไดเลย
ผทตองการท,า backup ลงบน CD-R, CD-RW หรอ DVD ดตวอย4 า งนHแลวน,า ไป
ทดลองดว4าสามารถใชไดหรอไม4 ถาท,าไดกSน,าไปรวมกบ Script ตวอย4างทเป=น tape เปลยน
จาก tape มาเป=น CD จะไดราคาประหยด ลองดวธการบนทBกไฟลd backup ลง CD
ก4อนอนทเครอง backup ตองตดตHงโปรแกรม cdrecord และ mkisofs ลงไปก4อ น
จากนH นยอนกลบไปดวธทท, า backup ดวยค, าสง tar เมอส4 ง ไฟลd home.tar.gz มาทเครอง
backup แลวอาจส4งมาแบบธรรมดาหรออาจเขารหสดวย openssh มาแลวกSไม4เป=นไรเพราะ
ถอว4าเป=นไฟลdเหมอนกน ใหทดลองสงดงนH
ทเครอง backup
$ mkisofs -R -l home.tar.gz | cdrecord speed=8 -
ถาเป=น CD-RW ตองการลบแผ4นก4อนบนทBกใหเพม
$ mkisofs -R -l home.tar.gz | cdrecord blank=fast speed=8 -
หลงตดตHงเสรSจใหเรยกใชงานดวยค,าสง
# partimage กด Enter จะไดเมนดงรป
เพยงรปแบบการท,างานผ4านเมนง4าย ๆ แบบนHผดแลระบบคงพอมองออกว4าจะน,าไป
ใชประโยชนdไดอย4างไร ส4วนการ Restore กSท,ากลบกนตามเมนเดม เพยงแต4บอกว4า image file
อย4ท ไหน ช ออะไร ซB งเป= น เคร องม อทม ไวอ, า นวยความสะดวกก บ Server ทตองการ
เสถยรภาพของระบบควรน,าไปใชประโยชนdไดเป=นอย4างด
บทสรป
การท,า backup และ restore จากเนHอหาและตวอย4างในบทนH ถาดแลวเขาใจยากกSให
นBกถBงการใชค,าสง tar cvfz และ tar xvfz แบบทเคยใชบบอดขอมลเหมอนกบโปรแกรม Zip
และ Unzip ใน DOS หรอใน Windows นนเองไม4ไดมความยR4งยากอะไร เพยงแต4ในตวอย4าง
ท,าใหยาวขBHนเพราะตองการใหคRณบนทBกชอไฟลdเป=นค,าอธบายว4าเป=น Full-backup วนทเท4าไร
เดอนอะไรเท4านHน เพอความสะดวกในการเรยกขอมลกลบคนไดตรงตามวน เดอนทตองการ
จะไดไม4ตองไปคนหากนใหวR4นวาย เหมอนกบคนไทยใช Word พมพdงานเวลา Save กSตHงชอ
ภาคผนวก
Log Server
วตถประสงค
➢ เพอใหวางแผนตดตง Centralize Log Server ได
➢ เพอใหร&จกวธ*การจดเก+บ Log file ใหตรงตามกฎหมายก1าหนด
➢ เพอใหสามารถเก+บ Log file อย4างปลอดภยตามท*กฎหมายก1าหนด
ประกาศกระทรวงเทคโนโลย%สารสนเทศและการส'อ( สาร
เร'(อง หลกเกณฑการเก.บรกษาขอม4ลจราจรทางคอมพ7วเตอรของผ4ใหบร7การ
พ.ศ. ๒๕๕๐
---------------------------------------------------------------
ขอ ๘ การเก+บรกษาขอม&ลจราจรทางคอมพวเตอร ผ&ใหบรการตองใชวธ*การท*มนคงปลอดภย
ดงต4อไปน*
(๑) เก+บในสอ (Media) ท*สามารถรกษาความครบถวนถ&กตองแทจรง (Integrity)
และระบFตวบFคคล (Identification) ท*เขาถHงสอดงกล4าวได
(๒) ม*ระบบการเก+บรกษาความลบของขอม&ลท*จดเก+บ และก1าหนดชนความลบใน
การเขาถHงขอม&ลดงกล4าว เพอรกษาความน4าเชอถอของขอม&ล และไม4ใหผ&ด&แลระบบสามารถ
แกไขขอม&ลท* เก+บรกษาไว เช4น การเก+บไวใน Centralized Log Server หรอการท1า Data
Archiving หรอท1า Data Hashing เปนตน เวนแต4 ผ& ม*หนาท*เก*ยวของท* เจาของหรอผ&
บรหารองค ก ร ก1 า หนดใหสามารถเขาถH ง ขอม& ล ดงกล4 า วได เช4 น ผ& ตรวจสอบระบบ
ถาตองการศHกษารายละเอ*ยดของโปรแกรมท*ใชงานใหไปศHกษาไดจากค&4มอหรอท*ม*ผ&แปลไว
แลวเพมเตม ท1าตามขนตอนดงต4อไปน*
คงไม4ตองอธบายรายละเอ*ยดมากเกนไปเพราะผ&ด&แลระบบท*จะท1าขนน*ไดคงไม4ตอง
บอกวธ*การ mount cd หรอการตดตงผ4าน Internet และก4อนท*จะท1าการแกไข Configuration
ใหท1 า การตรวจสอบวนเวลาท* server ท* อางองในประเทศไทยตามตาราง NTP Server ท*
แนะน1าตามตาราง
28 Jan 14:28:20 ntpdate[2693]: step time server 192.43.244.18 offset -0.092687 sec
ตวอย4าง NTP Server ของ Nectec
# ntpdate -b clock.nectec.or.th
# ntpdate -b clock2.nectec.or.th
# ntpdate -b clock.thaicert.nectec.or.th
ท*ตองใหท1าการทดสอบค4าเวลาระหว4างเครองของเรากบ Server ภายนอกเพอให
เลอกหา Server ท*เวลาอางองใกลเค*ยงกนมากท*สFด (ด&ผลค4า offset ตองม*ค4านอยท*สFดถาเปน
ไปไดควรเลอก Server ในประเทศไทย เลอกมาจดอนดบท* 1, 2, 3 ใน configuration) และตอง
ไม4พบปoญหา no server suitable for synchronization found เพราะถาไม4ม* host ท*อางถHงก+จะ
ไม4สามารถใชเปนมาตรฐานเวลาได
จากภาพจะเห+นว4าท*เครองล&กข4ายจะม*ส4วนของการตงเวลาอตโนมต นนคอม*การให
กรอกค4า Network Time Server (NTP) เพอใหเครองสามารถตงเวลาตรงกบเวลาสากลไดอย4าง
ถ&กตอง แต4คา4 หลก (Default) ท* Microsoft Windows XP ก1าหนดใหมาเปนการ Update เวลา
ทFก ๆ 7 วน ท1าใหเวลาท*ตงไวอาจไม4ตรงหรอคลาดเคลอนไดเมอเครองล&กข4ายม*เวลาไม4ตรง
กบเวลามาตรฐานท1าใหการบนทHก Log file การใชงานคลาดเคลอนไม4เปนไปตามกฎหมาย คง
ไม4สามารถไปบงคบล&กข4ายว4าก4อนเล4นตองคลกท* Update Now คงไม4ม*ใครยอมท1าตามเปนแน4
ใหจดการกบเครองล&กข4ายทFกเครองโดยการไปแกไข Registry (คดเองว4าจะใชวธ*อะไรแกไข
ทFกเครอง) ดงน*
ไปท*เมน& Start -> Run -> regedit กด Enter เขาไปแกท*ต1าแหน4ง
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProvide
rs\NtpClient]
จอภาพดานขวามอจะม*ค1าว4า SpecialPollInterval เมอดบเบลคลกจะปรากฏค4าเปน
เลขฐานสบหก (Hex) "SpecialPollInterval"=dword:00093a80 ใหเลอกเป น decimal จะ
เปล* ยนจาก 93a80 เป น 604800 ค4 า น* ม* ห น4 ว ยเป น วนาท* ม* ค4 า เท4 า กบ 7 วน ( 1 วน = 86400
วนาท* ) ตองการใหม*การ Update ก*วนาท* ก*นาท* หรอก*ชวโมง ก+ใ หแกไขเลขน*ไดเลยตาม
ตองการและท*ส1าคญคอใหพมพลงไปในช4อง Server ของเดมเปน time.windows.com เปล*ยน
เปนเลข IP Address ของเครอง NTP Server ท*ตงขHนเองแลวทดลองคลก Update Now ถาท1า
ส1าเร+จบรรทดต4อลงมาจะเปนรายงานว4าเวลาได Sync กบ Server เร*ยบรอยแลว และตองไม4ลม
เปนสงสFดทายคอตองตงให Windows Time Service อย&4ท* Automatic เพอให start service ทFก
ครงท*เครอง Boot
};
# This is the actual Squid Logging
log { source(src); filter(f_squid); destination(d_squid); };
# Remove the 'squid' Log entries from 'user' Log facility
filter f_remove { not program("squid"); };
# Log everything else less the categories removed
# by the f_remove period
log {
source(src);
filter(f_remove);
destination(logs);
};
Client Log Server Configuration
# /etc/syslog-ng/syslog-ng.conf
# All sources
source src {
pipe("/proc/kmsg");
unix-stream("/dev/log");
file("/proc/kmsg" Log_prefix("kernel: "));
internal();
};
# The filter removes all entries that come from the
# program 'squid' from the syslog
log {
source(src);
filter(f_remove);
destination(logserver);
};
ขIนท%( 4 สงใหโปรแกรมเรมท1างาน
# /etc/init.d/syslog stop
# /etc/init.d/syslog-ng start
# chkconfig syslog off
# chkconfig syslog-ng on
ตรวจสอบการท1างานดวยค1าสง
# ps ax |grep syslog-ng
# vi /etc/squid/squid.conf
…ของเดม
access_log /var/log/squid/access.log squid
แกไขเปน
access_log syslog squid
อย4าลมแก Logformat ใหตรงกบความตองการเส*ยก4อน
:wq
# squid -k reconfigure
ส1าหรบระบบท*ยF4งยากหรอซบซอน หน4ว ยงานท*ม*งบประมาณมากอาจม*การวาง
ระบบเครอข4ายท*ใชอFปกรณ Hardware ราคาแพงเช4นการวาง Manage Switch การท1า VLAN
การท1า NAT ท*อFปกรณต4าง ๆ รวมไปถHงการวางอFปกรณป ระเภท WiFi Hotspot เช4นระบบ
เครอข4ายของมหาวทยาลยต4าง ๆ แบบน*ตองด&ค&4มอของอFปกรณประกอบในเรองการเก+บ Log
และการท1า Forward Log ไปยง Log กลางเพอเปนขอม&ลประกอบกบ user account ในการ
ระบFหมายเลขเครองหรอชอ host ท*ใชงานในขณะนน
ข. ขอม& ล อนเตอร เ น+ ต บนเครองท* ใหบรการจดหมายอเล+ ก ทรอนกส (e-mail
servers) ปoจจFบนหน4วยงานต4าง ๆ ก+เรมสนใจท*จะท1า Mail Server ของตนเองก+จะเขาข4ายเปน
เครองใหบรการ จ1าเปนตองท1าการเก+บ Log ตามท*กฎหมายก1าหนด ในส4วนน*ไม4ม*ปoญหาอะไร
เพราะ Mail Server ท*ม*ใ ชงานกนอย&4เ ปน Protocol มาตรฐานเช4น pop, imap และ smtp ซHง
ถอว4าเปนส4วนหนHงของระบบม*การบนทHก Log อย&4แลวสามารถท*จะตดตง syslog-ng ในส4วน
client ก+จะส4ง Mail Log ไปเก+บยง Log กลางไดทนท* แต4ถาเปนกรณ*การใช Free e-mail ท*ม*ให
บรการในเว+บต4าง ๆ ขอม&ลก+จะไปอย&4ท* Log ของผ&ใหบรการ mail นน ๆ ระบบของเราเพ*ยง
เก+บรายละเอ*ยดการใชงานผ4านเว+บไดจาก Access Log ท* proxy ก+จะร&ว4าใครออกไปใชบรการ
LogLevel notice
:wq
# /etc/init.d/httpd restart
หลงจากตดตง syslog-ng เร*ยบรอยแลว Log จาก Web Server จะถ&กส4งไปเก+บ ยง
Log กลางตามร&ปแบบท*ก1าหนดใน Log format ครบถวน
จ. ชนดของขอม&ลบนเครอข4ายคอมพวเตอรขนาดใหญ4 (Usenet) หวขอน*ไม4ม*เปŸด
ใหบรการในหน4วยงานบานเราจHงไม4ม*ตวอย4างการเก+บ Log File
ฉ. ขอม&ลท*เกดจาการโตตอบกนบนเครอข4ายอนเตอรเน+ตเช4น Internet Relay Chat
(IRC) หรอ Instant Messaging (IM) เปนตน คงจะหน*ไม4พนเรองของการตดต4อสอสารกน
ระหว4างบFคคลของสมาชกในองคกรต4าง ๆ มกนยมใชการสนทนาดวยโปรแกรมท*ม*ไวบรการ
ฟร* ๆ กนอย4างแพร4หลายเช4น MSN, Yahoo, ICQ ซHงม*โอกาสท*จะใชกระท1าความผดไดจHงตอง
ม*การเก+บขอม&ลระหว4างผ&ท*ก1าลงสนทนาไวใน Log file เช4นกน รวมไปถHงประเภทในการ
ตดต4อเช4นพมพขอความ ใชกลองหรอส4งไฟล ระบบตองจดเก+บ เฉพาะในส4วนท*กฎหมาย
ก1 า หนดคอ user account ของผ& สนทนา หมายเลขเครอง วนเดอนป£ เ วลาท* ใชตดต4 อ และ
ประเภทในการตดต4อ สามารถท1าไดง4ายโดยอาศยหลกการ Transparent Proxy เหมอนกบเรอง
Web Proxy Server แต4 ห วขอน* ตองเป น IM Transparent Proxy นนคอใหไป download
โปรแกรม imspector เปนโปรแกรมประเภท Open source มาตดตงไวบนเครอง Gateway ท*
จ4ายสญญาณอนเตอรเน+ตใหล&กข4าย จากนนก+แกไข Configuration ใหท1าการส4ง Log file ไป
เก+บยง Log กลางเหมอนเรองอน ๆ แต4ตองพHงระวงเพราะ software ท*ท1าหนาท* Transparent
Proxy จะเก+บขอม&ลท*ก1าลงสนทนาไดอาจผดกฎหมายละเมดสทธmส4วนบFคคลได
บทสรป
ในส4วนของการท1า Centralize Log Server ตามท*ไดรวบรวมสรFปวธ*การท1าอย4างง4าย
แต4ครอบคลFมตามท*กฎหมายก1าหนดโดยไม4ตองลงทFนหรอจดสรรงบประมาณจ1านวนมากมาย
นก ระบบท*แนะน1าตองการเพ*ยงเครอง Log Server ท*ไม4ม*การใหบรการอน ๆ ท1างานเพ*ยง
หนาท*เด*ยว ม*ผ&ด&แลคนเด*ยวและท*ส1าคญผ&ท*ไดรบมอบหมายตองสามารถอ4าน Log file เปน
สามารถน1าส4วนท*ถ&กรองขอส4งเจาพนกงานเพอใชเปนขอม&ลในชนศาลไดอย4างครบถวนเพอ
ลดขนตอนตงแต4การสบสวนไปจนถHงลดขนตอนการโตแยงต4า ง ๆ หากม*การระบFตวตน
สถานท* วนเวลาท*กระท1าความผดได แต4กฎหมายก+เปŸดทางไวว4าใหเก+บเฉพาะส4วนท*ใหบรการ
เท4าท*ท1าได ผ&ด&แลระบบก+คงไม4ตองกงวลจนลาออก หรอไม4กลาท*จะรบภาระในการด&แล Log
ใหกบหน4วยงานของตนเอง เพราะการเตร*ยมการท*ด* การจดการท*ด*จะส4งผลด*ในตอนท*เกด
เหตFการณกระท1าความผดเท4านน จนบางหน4วยงานอาจมองว4ายงไม4ตองท1าก+ไดคงไม4ม*ปoญหา
อะไร ใชงานมาตงนานแลวยงไม4เกดปoญหาเลยแบบน*ก+แลวแต4จะคด เพราะกฎระเบ*ยบเปน
เพ*ยงการก1าหนดใหประชาชนปฏบตตาม แต4ก+เปนปกตธรรมดาท*ตองม*ผ&ปฏบตบางไม4ปฏบต
บางแลวแต4นโยบายหรอการบรหารจดการของหน4วยงานนน ๆ หวงว4าขนตอนและขอแนะน1า
ในภาคผนวกน*คงจะไดน1าไปใชประโยชนกบหน4วยงานแต4ละแห4งของประเทศไทย (ท*ม*งบ
ประมาณนอยไม4ม*เงนจางผ&อนท1าให)
ชอ-สกล
บญลอ อยคง
การศกษา
- ค.อ.บ. วศวกรรมไฟฟากาลง วทยาลยเทคโนโลยและอาชวศ$กษา
วทยาเขตเทเวศร(
- กศม. อตสาหกรรมศ$กษา มหาวทยาลยนเรศวร
ททางาน
แผนกวชาชางไฟฟากาลง วทยาลยเทคนคพษณโลก
ประสบการณ"ดานคอมพวเตอร"
- ออกแบบระบบเครอขายคอมพวเตอร(
- ทาระบบ Internet Server ให6กบหนวยงานราชการและเอกชน
- วทยากรระบบเครอขาย (Networking System) การสร6าง Webpage
CAI , Internet Server Security ให6กบสานกพฒนาสมรรถนะครและ
บคลากรอาชวศ$กษา กระทรวงศ$กษาธการ และหนวยงานภาครฐ