You are on page 1of 310

คมอ

ประกอบการฝกอบรมปฎบตงาน
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แลวแสดงว$าผดและระบบท/ด/ตอง

บทท) 1 Overview .....: 1


Linux Server Security

ไม$น%งนอนใจ ตองต%ดตามข$าวสารต0งแต$การ Update patch จนถ9งการเฝ#าต%ดตามขอมลในเว<บท/


เก/ยวของกบการทดสอบ Security ของ OS และ Application แต$ละตวท/น*ามาใชในการเปTด
บร%การต$าง ๆ ในเครอง Server หรอแมกระทงต%ดตามข$าวสารตามเว<บบอร'ด หรอกล,$มผใช
Linux ดวยกนเพอใหทราบข$าวล$าส,ดท/พบช$องโหว$ของโปรแกรม และจะไดต$อสกบการเจาะ
ระบบของฝIายตรงขาม บางคนขยนต%ดตามข$าวแต$ไม$สนใจการ Update patch เพราะอาจค%ดว$า
เปนเรองยากส*าหรบ Linux เลยไม$สนใจแบบน/0รบรองว$าระบบของค,ณตองตกเปนเป#าน%งอย$าง
หล/กเล/ยงไม$ได ก$อนท/จะท*าการใด ๆ ลองมาดภาพรวมกวาง ๆ กนก$อนว$าม/อะไรท/เก/ยวของ
กบเราท/ตองท*าไดบาง โดยภาพรวมผดแลระบบควรตองม/การจดท*ารายละเอ/ยดต0งแต$ระบบ
เอกสารไปจนถ9งการแบ$งระดบการป#องกนเพอเปนขอมลระบบอย$างม/ข0นตอน
1. ระบบท/ด/ตองม/การจดแบ$งการจดการและระดบการป#องกนออกใหละเอ/ยดเปน
สดส$วนท/ชดเจนและครอบคล,มในส$วนของการใหบร%การ (Service) ท,กดานเปนเอกสารเก<บ
ไวอย$างม/ระบบเพอใหผรบหนาท/ดแลระบบต$อไปสามารถด*าเน%นงานไดอย$างต$อเนองและแก
ป:ญหาไดอย$างถกตองตรงจ,ดอย$างแทจร%งม/รายการท/ตองท*าดงน/0
1.1 ความปลอดภยทางกายภาพ (Physical Security) ตองจดท*ารายละเอ/ยดให
ครอบคล,มการบ,กร,กเขาท/ตวเครอง Server หรออ,ปกรณ' Network
1.2 ความปลอดภยเก/ ยวกบไฟล' แ ละระบบไฟล' (Files and File System
Security) ตองม/การแสดงรายละเอ/ยดในการต%ดต0งระบบไฟล'และส%ทธ%ต$าง ๆ ในการเขาถ9ง
ไฟล'
1.3 การเขารหสขอมลรวมถ9งว%ธ/การท/ใชเขารหสและการรบรองความถกตอง
(Data Encryption, Cryptography and Authentication) ควรม/การบอกถ9ง รายละเอ/ย ดในการ
ตดส%นใจเลอกว%ธ/การเขารหสขอมลและว%ธ/ท/ด/ท/ส,ดท/เลอกใชในระบบ
1.4 Kernel Security ควรม/การแจกแจงรายละเอ/ยดท/ไดถกเถ/ยงเพอหาว%ธ/การ
ในการป#องกนตวเองใหปลอดภยของ Kernel รวมถ9งข0นตองการปรบปร,งอย$างต$อเนอง

บทท) 1 Overview .....: 2


Linux Server Security

1.5 Network Security ม/การบนท9กรายละเอ/ยดเก/ยวกบเรองม/ว%ธ/การอย$างไรท/


เปนว%ธ/การท/ด/ท/ส,ดในการท*าระบบความปลอดภยเพอป#องกนระบบปฏ%บต%การ Linux ท/จะถก
โจมต/จากระบบ Network
1.6 การควบค,มเหต,การณ'ท/เก%ดข90น (Incident Control) ควรม/การร$วมกนหาว%ธ/
การควบค,มเหต,การณ'ท/จะเก%ดกบระบบไม$นอยกว$า 6 ข0นตอน ภายใน 6 ข0นตอนตองม/ข0น
การเตร/ยมการก$อนท/จะถ9งข90นเหต,การณ'เก%ดข90นจร%งรวมอย$ดวย
1.7 Exploits ผดแลระบบควรม/ความพยายามเร/ยนรการบ,กร,กเขาระบบแต$ละ
ชน%ดเพอจะไดรบรหรอตรวจพบเมอม/การบ,กร,กในแต$ละคร0งไดทนท$วงท/และตองจดบนท9ก
ไวอย$างละเอ/ยดครบถวน
1.8 Security Sources ควรม/การจดท*ารายการแหล$งขอมลท/ม/เครองมอในการ
ดแลความปลอดภยระบบส*าหรบผดแลระบบ (Linux Security Administrator)
1.9 Firewall and Border Patrol ควรม/การจดท*ารายละเอ/ยดเก/ยวกบชน%ดของ
Firewall ท/ใชงานไดด/ส*าหรบ Linux พรอมขอมลรายละเอ/ยดในแต$ละจ,ด
1.10 ค*าศพท'ท/ใช ควรม/การเข/ยนรายละเอ/ยดของค*าศพท' ตวย$อ และรายละเอ/ยด
ของระบบความปลอดภยเพอใหผดแลระบบสามารถอ$านและน*าไปใชงานอย$างถกตองตรง
กน
1.11 ควรม/การจดบนท9กค*าถาม ค*าตอบและประเด<นป:ญหาต$าง ๆ ท/เก%ดข90นไว
ท,กคร0งเพอใชเปนขอมลในการแกไขป:ญหาในคร0งต$อไป
1.12 ควรทราบขอมลของระบบ โดยท*าการตรวจสอบดไดจากค$าของ log file
ใน /var/log/messages และบนท9กค$าท/จ*าเปนตองใชในการท*างานแต$ละคร0ง
1.13 ควรม/ ก ารจดเก< บ รายละเอ/ ย ดของการ Update และรายละเอ/ ย ดของ
โปรแกรมท/ต%ดต0งลงไปแต$ละคร0งท/ม/การเตอนเก/ยวกบความปลอดภย ไดท*าการ Update และ
ปรบปร,งส$วนใดของโปรแกรมบาง

บทท) 1 Overview .....: 3


Linux Server Security

2. Host Security ในส$วนน/0คงค,นเคยกนเปนอย$างมากเพราะเปนส$วนท/ใกลตวผดแล


ระบบมากท/ส,ด เปนการดแลท,กอย$างท/เก%ดข90นกบ Server โดยตรง ท*าใหตองม/การป#องกนใน
ส$วนท/เร/ยกว$า host-based ใหม/ความแข<งแรงและปลอดภยจากผบ,กร,ก เช$นการก*าหนดรหส
ผ$านท/ด/ ม/การป#องกนในแต$ละ Service ป#องกนระดบ User account ม/การ Update โปรแกรม
และท/ส*าคญคอตองระวงการถกโจมต/จากภายในดวย ในส$วนน/0ใหดรายละเอ/ยดท/จะกล$าวใน
ตวอย$างต$อไป
3. Network Security ในขอน/0ก<ม/ความส*าคญไม$นอยไปกว$าขอ 2 เพราะไม$ว$าจะเปน
เพ/ยงระบบเด/ยวหรอม/การท*างานเปนระบบท/ใหญ$โตม/จ*านวนเครองในเครอข$ายจ*านวนมาก
ๆ รวมไปถ9งการเชอมโยงกบระบบ Internet ถาไม$ม/การท*าระบบรกษาความปลอดภยใหกบ
Network แลวก<จะเปนเสนทางท/จะน*าผบ,กร,กเขาไปถ9งยง host-based ไดอย$างง$ายดาย จ9งควรม/
การท* า การป# อ งกนต0 ง แต$ ร ะดบการก* า หนดส% ท ธ% ใ นการใหเขาใชเครอข$ า ย ไปจนถ9 ง การ
ออกแบบต%ดต0ง Firewall ม/การเขารหสท/แข<งแรงเพ/ยงพอ และตองแน$ใจว$าไม$ม/ส$วนใดส$วน
หน9งในระบบลมท*าการป#องกนเด<ดขาด ในขอน/0ใหถอเปนส$วนหน9งของงานหลกส*าหรบผ
ดแลระบบอ/กดวย
4. ยงคงม/ระบบความปลอดภยอ/กชน%ดหน9ง ท/ยงเปนท/ถกเถ/ยงกนเปนอย$างมากว$า
จะจดไวในประเภทใด เช$นบางคร0งพบว$าม/ผดแลระบบบางคนใชว%ธ/การเปล/ยนแปลง login
name จาก root กลายเปน toor ท*าให root ไม$สามารถ login เขาระบบได ซ9งถอว$าเปนความ
เขาใจผ%ดอย$างมากเพราะการท*าแบบน/0จะส$งผลใหระบบท*างานผ%ดพลาดเนองจาก root ตอง
ควบค,ม การท*างานในส$ว นต$ าง ๆ ของ OS และ Application ถาไม$ม/ root อย$ใ นระบบการ
ท*างานจะผ%ดพลาดและใชงานต$อไปไม$ได อย$างไรก<ตามถาตองการท*าแบบน/0จร%ง ๆ ก<สามารถ
ท*าไดแต$ตองแจงในส$วนท/ root ตองท*างานในเครองใหครอบคล,มท0งหมด เช$นถาใน service
ท/ root สงงานสามารถดไดจาก /var/log/secure แต$แนวความค%ดแบบน/0อาจเปนส%งท/ผบ,กร,ก

บทท) 1 Overview .....: 4


Linux Server Security

สามารถเจาะเขาถ9ง Server ไดอย$างง$ายดายเพราะถอไดว$าเปนระบบท/ม/ช$องโหว$ใหโจมต/ง$าย


ท/ส,ด อาจทดลองใชกบ site ขนาดเล<กได
5. ท*าไมจ9งตองการระบบรกษาความปลอดภย ในขณะท/โลกเราม/การพฒนาดาน
Data communication ม/ ก ารเชอมต$ อ สญญาณ Internet ท/ ยงม/ ร าคาแพง ม/ ก ารพฒนาดาน
Software ระบบความปลอดภยจ9งม/ความจ*าเปนอย$างมาก ระบบความปลอดภยจ9งเปนความ
ตองการข0นพ0นฐานเนองมาจากคอมพ%วเตอร'ท วโลกโดยทวไปไม$ม/ความปลอดภยอย$แลว
ตวอย$างเช$นถาตองการส$งขอมลจากคอมพ%วเตอร'เครองหน9งไปยงอ/กเครองหน9งผ$านระบบ
Internet ท/ม/การใหบร%การไปยงจ,ดอน ๆ ทวโลก ตองม/การก*าหนดส%ทธ%ดวย User account เพอ
ใหม/การตรวจสอบส%ทธ%ในการเขาใชขอมลร$วมกนหรอตรงกนกบผใหบร%การก*าหนด หากม/
account อนท/ไม$ไดรบอน,ญาตเขามาในระบบก<จะถกปฏ%เสธ จ9งเปนสาเหต,ท/เก%ดม/กล,$มท/เร/ยก
ตวเองว$า Cracker ปลอมตวหรอท*าตวปะปนกบ account อน ๆ เขาระบบเพอเขาถ9งขอมลใน
ส$วนต$าง ๆ บนเครองคอมพ%วเตอร'เป#าหมาย บางคร0งมกพบว$าม/ค*าถามท/พบบ$อยเก/ยวกบค*าว$า
Cracker กบ Hacker ว$าตกลงใครอย$ฝIายขาวหรอใครอย$ฝIายด*า ใครเปนผช$วยเหลอใครเปนผ
ท*าลายขอมลกนแน$ คงตองศ9กษาใหด/เพราะการเจาะเขาระบบไดมกเปนเรองด/ส*าหรบผดแล
ระบบท/จะไดรช$องโหว$หรอป:ญหาของระบบว$าม/ความอ$อนแอหรอไม$ปลอดภยส$วนใดบางจะ
ไดท*าการป#องกนใหถกจ,ด แต$ถาเจาะเขาไปแลวไปลบหรอท*าลายขอมลแบบน/0ถอว$าไม$ใช$ผ
ประสงค'ด/และยงผ%ดกฎหมายอ/กดวย
6. เราค%ดว$าระบบมนม/จ,ดอ$อนอย$างไร ในขณะท/การคนหาจ,ดอ$อนของระบบค$อน
ขางเปนการยาก ดงน0นควรท/จะใชตวบ$งช/0ท/จะช$วยใหทราบจ,ดอ$อนไดดงน/0
- อ$านจากรายงานตาม web site ท/ม/กล,$มเฝ#าระวงและตรวจสอบจ,ดอ$อนและการ
เจาะเขาระบบเช$น The Computer Emergency Response Team หรอ web site ของหน$วยงาน
อน ๆ ท/ม/ไวบร%การใหกบผดแลระบบ

บทท) 1 Overview .....: 5


Linux Server Security

- เรองของโปรโตคอล TCP และ UDP ถกสรางข90 น มาแบบไม$ ม/ ร ะบบความ


ปลอดภยต0งแต$เมอสามส%บกว$าปzมาแลว
- ป:ญหาของ Version ของ Software ท/ใชงานกนในเครองคอมพ%วเตอร'เครองเด/ยว
ท/ม/จ,ดอ$อน ก<จะเปนป:ญหาเด/ยวกนกบการใชงานโปรแกรมเด/ยวกนบนเครองอน ๆ ทวโลก
ท*าใหผบ,กร,กสามารถน*าว%ธ/การเด/ยวกนมาใชบ,กเขาเครองเป#าหมายไดทวโลกเช$นกน
- ผดแลระบบจ*านวนมากท/ไม$สนใจแกป:ญหาระบบความปลอดภยอย$างง$าย ไม$
ท*าการป#องกนระบบหรอไม$เขาใจการท*างานในบาง Service ม/หลายคนท/ไม$เห<นความส*าคญ
และไม$มค/ วามจ*าเปนท/จะน*าไปท*าระบบความปลอดภยใหด/ข90นอ/กดวย
7. ท*าอย$างไรถ9งจะเร/ยกว$าระบบม/ความปลอดภย ส%งแรกท/ตองค*าน9งหรอเก<บไวใน
ใจเสมอคอไม$ม/ระบบคอมพ%ว เตอร'ใ ด ๆ ท/ม/ความปลอดภยท/ สมบรณ' คนส$ว นมากค% ด ว$ า
เปนการท*าส%งท/ยากเพ%มเต%มลงไปในระบบคอมพ%ว เตอร' กรณ/ท/เปนผใช Linux มกไม$ค$อย
ใส$ใจกบป:ญหา Cracker ท/ม/ในระบบบางโดยบงเอ%ญ การก*าหนด profile ใหกบ linux user มก
ท*ากบพวกระบบธนาคาร บร%ษทท/ท*าเก/ยวกบการสอสารขอมล เปนตน ท/ม/ความตองการ
ระบบความปลอดภยมากกว$าปกต% ส$วนองค'ประกอบอน ๆ มกจะเก%ดข90นกบ account ท/ไม$ม/
การดแลเรองความปลอดภยใหด/พอยกตวอย$างกรณ/หม,นโมเด<มเชอมโยงกบระบบธนาคารถา
เปนการหม,นจากบาน กรอกรหสผ$าน เพอท*าธ,รกรรมกบธนาคารจะไม$ปลอดภย ถาตองการ
ใหเก% ด ความปลอดภยควรเลอกว% ธ/ ก ารหม, น ไปรองขอใหทางธนาคารเร/ ย กกลบมายง
คอมพ%วเตอร'ท/บานแลวกรอกรหสผ$านจะด/กว$าเพราะระบบความปลอดภยของธนาคารจะด/
กว$ า เครองคอมพ% ว เตอร' ส$ ว นบ, ค คลเปนตน หรออ/ ก กรณ/ เ ช$ น การท/ ค, ณ login เขาเครอง
คอมพ%วเตอร'หรอในระบบ ควรศ9กษาเก/ยวกบ security policy และท*าการปรบปร,ง policy ให
เหมาะสมกบการใชงาน เพอตดส%นใจเลอกระหว$างความปลอดภยสงกบความง$ายในการใช
งาน ค,ณตองท*าการก*าหนดระดบของความปลอดภยใหกบระบบโดยค*าน9งถ9งส%งต$าง ๆ ดงน/0

บทท) 1 Overview .....: 6


Linux Server Security

- ม/การเปล/ยน password บ$อยคร0งหรอไม$


- ม/การปรบปร,งเรองความปลอดภยอย$างไรบาง
- ม/จ*านวนผใช guess password ในระบบมากแค$ไหน
- ม/ Backdoor ในระบบในส$วนใดบาง
ถ9งแมค,ณจะท*าการปรบปร,งความปลอดภยใหกบ site เสร<จแลวก<ไม$ใช$ว$าจะท*าให
account ในระบบปรบตวไดในวนเด/ยวไดหมด บางคนอาจไม$สนใจท/จะปฏ%บต%ตามกต%กาก<ได
เช$นไม$ยอมเปล/ยน password เพราะกฎบางอย$างอาจขดต$อความรส9กกบผใชงานท/มองเห<น
ความย,$งยากท/ตองปรบเปล/ยนส%งต$าง ๆ เหล$าน/0ก<เปนไดซ9งก<จะส$งผลในการปรบปร,งระบบ
ความปลอดภยเช$นเด/ยวกน
8. ผดแลระบบพยายามป#องกนอะไรใหระบบบาง ก$อนท/จะพยายามท*าระบบความ
ปลอดภย ควรม/การก*าหนดระดบความยากในการป#องกนเส/ยก$อน อนไหนคอความเส/ยงอน
ไหนไม$ใช$ และส,ดทายระบบของค,ณอ$อนแอตรงส$วนใด ค,ณควรว%เคราะห'ระบบใหรว%ธ/การ
ป# อ งกน และรว$ า ท* า ไมตองป# อ งกน อะไรม/ ค$ า ใครบางท/ ม/ ผ ลกระทบกบขอมลและผล
ประโยชน'ดานอน ๆ ท/เก/ยวของ ใหลองดจากส%งต$าง ๆ ต$อไปน/0
- ความเส/ยง (Risk) ใหพ%จารณาความเปนไปไดท/ผบ,กร,กพยายามจะเจาะเขาระบบ
ไดส*าเร<จ แลวสามารถอ$าน เข/ยนไฟล'หรอ execute โปรแกรม และยงสามารถลบขอมลและท/
ไม$ควรลมว$าอาจม/คนใดคนหน9งสามารถใช account ของค,ณเขาระบบก<เปนได
- การค,กคาม (Threat) ตามปกต%จะเปนผท/ไม$ไดรบอน,ญาตใหม/ส%ทธ%|เขาระบบ ควร
ตดส%นใจใหด/ว$าจะใหใครท/จะไดรบส%ทธ%ในการเขาระบบไดบาง เราสามารถแบ$งชน%ดของผ
บ,กร,กไดตามลกษณะค,ณสมบต%ทแตกต$ / างกนไดดงน/0
1. พวกอยากรอยากเห<น พวกน/0จดเปนพวกท/ตองการคนหาว$าเครองเป#า
หมายใช OS อะไรและม/ขอมลอะไรอย$ภายในเครองบาง

บทท) 1 Overview .....: 7


Linux Server Security

2. พวกประสงค'ราย พวกน/0ไม$ใช$คนด/แน$ ๆ เปนพฤต%กรรมท/ม,$งเขามาเพอ


ปTดระบบ เปล/ยนหนาเว<บ หรอเปล/ยนตวเลขเง%นต$าง ๆ ในระบบธ,รก%จ
3. พวกโรคจ%ต พวกน/0ร,นแรงมากข90นชอบโจมต/เป#าหมายเพอสรางความ
เสอมเส/ยใหกบองค'กร ดวยการประกาศความสามารถใหผคนจ*านวนมากไดรบรในส%งท/ท*า
4. พวกชอบการแข$งขน พวกน/0เปนกล,$มนกพนนหรอท*าธ,รกรรมดานการ
เง%น ท/ตองการโจมต/เขาไปเพอชยชนะหรอโกงจ*านวนเง%น
- ความอ$อนแอ นอกจากความเส/ยงและภยค,กคามแลวยงตองยอนกลบมาดท/ระบบ
ของตนเองว$าม/ข/ดความสามารถท/จะป#องกนผบ,กร,กจากภายนอกไดด/แค$ไหนอ/กดวย อะไรคอ
ขอบเขตท/จะหย,ดย0งผบ,กร,ก อะไรเปนส%งท/ม/ค$ามากเมอม/การประเม%นความเส/ยหาย ใหม/การ
พ%จ ารณาเปนส$ว น ๆ เช$น Hardware, Software แบ$งตามกล,$ม ผใชรวมไปถ9ง ทรพยากรของ
ระบบต$าง ๆ เช$น Network bandwidth, disk space เปนตน
9. ผดแลระบบควรม/การพฒนานโยบายดานความปลอดภยโดยค*าน9งถ9งความง$าย
เปนหลก โดยทวไปควรก*าหนดนโยบายใหกบระบบท/ลกข$ายสามารถอ$านง$ายและยอมท*าตาม
เนนป#องกนขอมลใหม/ความปลอดภย โดยเนนความเปนส$วนตวของลกข$าย ในบางคร0งการ
พ%จารณาว$าจะใหใครสามารถเขาถ9งระบบเครอข$ายไดง$ายเช$นยอมใหเพอนใช account ของ
ตนเองเขาระบบ ควรอน,ญาตใหใครสามารถเขาไปต%ด ต0งโปรแกรมในระบบได ใครเปน
เจาของขอมล การกคนขอมลเมอระบบล$มและสมควรท/จะเขาใชงานระบบได ควรต0งค*าถาม
เพอท/จะตองการหาค*าตอบท/สมบรณ'ในการพฒนานโยบายดานความปลอดภยดงน/0
- ระดบความปลอดภยอะไรบางท/ลกข$ายควรตองม/
- อะไรเปนส%งท/ม/ค$าและตองการป#องกนมากนอยแค$ไหน
- ค,ณสามารถท/จะยอมเส/ยเวลาเมอเครองหย,ดท*างานเพราะม/ผบ,กร,ก
- ควรแบ$งระดบความปลอดภยตามความแตกต$างของแต$ละกล,$มผใชงาน
- ค,ณไววางใจลกข$ายภายในไดหรอไม$

บทท) 1 Overview .....: 8


Linux Server Security

- ค,ณคนพบความสมด,ลระหว$างความเส/ยงกบความปลอดภยหรอยง
ใครคอผท/ท*าการพฒนานโยบายดานความปลอดภยตามแผนท/ก*าหนด เมอม/ผพบ
ป:ญหาควรใหร/บแจงกบผรบผ%ดชอบทนท/ เพอน*าป:ญหาไปปรบปร,งระบบใหทนเหต,การณ'จะ
ไดไม$เก%ดความสญเส/ยมากเก%นไป
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ตองการส$วนท/ท*าหนาท/ใหบร%การลกข$ายมากท/ส,ดเปนอนดบแรก ท,กหน$วย

บทท) 1 Overview .....: 9


Linux Server Security

งานหรอท,กองค'กรจ9งมกต0ง Server ข90นเพอเก<บและใหบร%การขอมลข$าวสารต$าง ๆ การท/ผไม$


หวงด/จะบ,กโจมต/มกตองการท/จะเจาะเขาหา Server เพอจ,ดประสงค'ท/เก/ยวกบขอมลเปนหลก
ซ9งม/การเขาถ9ง Server ได 2 ว%ธ/ดงน/0
1.1 Physical Access ว%ธ/น/0คงพอจะเขาใจไดง$ายมากเพราะส%งท/จะท*าไดคอผท/จะ
บ,กร,กตองรก$อนว$า Server ต0งอย$ท/ไหนเท$าน0น ถ9งจะสามารถเขาถ9งดวยว%ธ/น/0ได การป#องกน
หรอรกษาความปลอดภยว%ธ/น/0สามารถป#องกนไดเช$นกนใหศ9กษาไดจากบทต$อไป
1.2 Remote Access การเขาถ9ง Server ดวยว%ธ/น/0เปนส%งท/ตองพ9งระมดระวงเปน
อย$างมากเพราะผดแลระบบกบผบ,กร,กไม$ไดพบกนโดยตรงแต$ม/การโจมต/เขาหา Server ไม$
เลอกเวลาและไม$รว$าผโจมต/จะมาจากส$วนใดในโลกของ Internet ท/เราต%ดต$อเชอมโยงระบบ
อย$เปร/ยบเสมอนภยมด ท/เรามกไดย%นบ$อย ๆ ว$าเราอย$ในท/แจงแต$ขาศ9กอย$ในท/มดค$อนขาง
ระวงยาก แต$ก<คงไม$สรางป:ญหามากนกส*าหรบผดแลระบบเพราะเราก<ตองหาทางป#องกนใหด/
มากพอท/จะรบมอ หากเปนระดบมอใหม$ก<คงจะเขาถ9ง Server ไดยากหน$อยยกเวนมออาช/พท/
ใชความพยายามและเวลาเจาะระบบนาน ๆ ก<อาจเอาชนะก*าแพงท/เราท*าไวป#องกนไดเหมอน
กน ผดแลระบบท/ด/มกต0งค*าถามใหกบตนเองเสมอว$า
1.2.1 Server ควรม/การอน,ญาตให Access จากภายนอกมาไดหรอไม$
1.2.2 ใครเปนผท/จะม/ส%ทธ%ในการต%ดต$อเขาถ9ง Server ได
จากตวอย$างขางบนจะเห<นไดว$าความหวาดระแวงท/ควรค%ดตลอดเวลาจะเปนตว
กระต,นใหเราสามารถท/จะค%ดหาว%ธ/การใหม$ ๆ เพอรบมอกบผไม$หวงด/ ส%งท/ตองท*าและเตร/ยม
การป#องกนส*าหรบว%ธ/น/0ก<สามารถศ9กษารายละเอ/ยดไดในบทต$อไป
2. Operating System Security ระบบปฏ%บต%การท/ม/ใหใชงานกนอย$ในป:จจ,บนม/ไม$
ก/บร%ษท แต$ละค$ายก<พยายามหาจ,ดขายเพอการแข$งขนดานการตลาดมาต$อสกน งดกลย,ทธ'ใน
การเช%ญชวนความสามารถในการท*างานแต$ละดานรวมถ9งการอวดอางเรองความปลอดภยว$า
ผล%ตภณฑ'ของตนเองม/ความโดดเด$นในเรองความม/เสถ/ยรภาพในการท*างานด/เย/ยม อะไรต$าง

บทท) 1 Overview .....: 10


Linux Server Security

ๆ เหล$าน/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 Overview .....: 11


Linux Server Security

3.2 ระบบจะออกรหสโดย Certification Authority (CA) ใหกบผท/ตองการต%ดต$อ


ขอขอมลท/ไดรบส%ทธ%เท$าน0น
3.3 รหสท/ออกใหน/0จะประกอบไปดวยส$ว นประกอบส*า คญต$าง ๆ ของ Server
เช$น Domain Name, Serial Number, Expiration Date รวมถ9งคดลอก Public Key ท/ม/การเขา
รหสขอมลและลายเซ<นด%จ%ตอลอ/กดวย
3.4 Certificate-issuing Authority (CA) จะม/การตรวจสอบค$ารหสต$าง ๆ ท/ถกส$ง
มาจากเครองของผรองขอขอมลเพอใหไดรหสท/ถกตองและเปนจร%งเท$าน0น
3.5 ระบบน/0ใชมาตรฐานเด/ยวกนกบ X.509

รปท/ 1.1 จ*าลองการเขารหสขอมล

บทท) 1 Overview .....: 12


Linux Server Security

รปท/ 1.2 การใชงาน Secure Socket Layer (SSL)

4. Service Security หวขอน/0คงค,นเคยกนด/ส*าหรบผดแลระบบท/ต0งอกต0งใจท*างาน


อย$หนาเครอง Server เพราะตองออกแบบและควบค,มการใหบร%การต$าง ๆ ท/หน$วยงานหรอ
ระบบตองการใหบร%การกบสาธารณะท/ท*างานร$วมกนอย$ภายใตระบบเครอข$ายเด/ยวกน ใน
หนงสอน/0จะม/การออกแบบและว%ธ/การป#องกนใน Service ท/ใชงานกบระบบ Internet เท$าน0น
ซ9งม/ Service หลก ๆ ท/แต$ละหน$วยงานม/ใชงานกนอย$อย$างแพร$หลายในป:จจ,บนเช$น Web
Server, Mail Server, DNS Server และ FTP Server เปนตน เพอใหสามารถป#องกนและรกษา
ความปลอดภยขอมลไดด/และม/การใชงานท/ม/เสถ/ยรภาพลดป:ญหาต$าง ๆ ท/ตองท*าใหผดแล
ระบบท*างานหนกเก%นไป
5. Application Security ส* า หรบหวขอน/0 ค งตองศ9 ก ษากนใหละเอ/ ย ดในส$ ว นท/
เก/ยวของกบการน*า Application ต$าง ๆ มาใชในการใหบร%การขอมลผ$านระบบ Internet โดย

บทท) 1 Overview .....: 13


Linux Server Security

เฉพาะการท*างานผ$านเว<บ เช$น การใชงาน PHP ร$วมกบ MySQL หรอการใชงาน Java Web


Application บางคร0งผท/น*าเอาโปรแกรมส*าเร<จรปต$าง ๆ มาต%ดต0งใชงานโดยไม$ศ9กษาใหด/ว$า
โปรแกรมน0นม/ท/มาท/ไปอย$างไร ในขณะท*างานม/การใชงาน Protocol หรอ Port หมายเลข
อะไร รวมถ9งตองศ9กษาว%ธ/การป#องกนเฉพาะเรองของ Application ตวน0น ๆ อย$างละเอ/ยดดง
จะเห<นไดจากการท/ม/ผใชงานโปรแกรม PHP Nuke กนอย$างแพร$หลายในบานเราซ9งม/ช$อง
โหว$ใหผไม$หวงด/โจมต/ไดอย$างง$ายดาย หากไม$รว%ธ/ป#องกน ซ9งการท/จะออกแบบระบบใหม/
ความปลอดภยใหกบ Application Server ไดน0นตองเร/ยนรหรอศ9กษาการป#องกนระบบใหญ$
ของหน$วยงานเส/ยก$อนจ9งค$อยเจาะล9กเขาถ9งตวบร%การย$อยต$าง ๆ จ9งจะปลอดภยย%งข90น การ
ป#องกนตองสอดคลองกนไม$ใ ช$เ ก$งในการป#องกน Application แต$ใ หท*า งานอย$บ นระบบ
ปฏ%บต%การท/อ$อนแอ แบบน/0คงตองปวดหวกนมากข90นและมกไดย%นผใชงานมกบ$นกนเสมอว$า
โปรแกรมไม$ด/ใชไดไม$นานก<ถก Hack ระบบล$มเปนประจ*า แบบน/0แสดงว$าตองส*ารวจขอ
บกพร$องของผดแลกนหน$อยว$าไดท*าระบบป#องกนครบถวนหรอยง ถาระบบใหญ$ยงไม$แข<ง
แรงคงไม$ตองไปคาดหวงว$าตว Application Server จะสามารถท*างานไดอย$างม/เสถ/ยรภาพ
ดวยเช$นกน
6. User Security โดยทวไปเมอกล$าวถ9งในส$วนของ User มกจะไม$ค$อยเห<นความ
ส*าคญมากนกกบน%สยคนไทย เพราะผใชงานระบบคอมพ%วเตอร'เครอข$ายไม$ว$าจะเปนการใช
ในหน$วยงานหรอการใชงาน Internet สาธารณะต$าง ๆ พฤต%กรรมการใชงานท/ตองม/การกรอก
Username และ Password มกเปนเรองย,$งยากส*าหรบการขอใชบร%การ คนส$วนใหญ$มกค%ดว$า
ไม$ใช$ส%งส*าคญอะไรมากมายก<เลยท*าตวตามสบายกบความปลอดภยดานน/0ยกตวอย$า งเช$น
ความปลอดภยดานรหสผ$ า น (Password Policy) ผดแลระบบมกต0 ง ค$ า Policy ใหกบ User
แต$ละคนตามระบบความปลอดภยเสมอดงน/0
6.1 ความยากของรหสผ$าน (Password strength) ม/การออกรหสผ$านท/ยากต$อการ
เดาใหม/ตวอกษรปนกบตวเลขหรอสญลกษณ'พ%เศษรวมท0งม/ความยาวท0งหมดไม$นอยกว$า 8

บทท) 1 Overview .....: 14


Linux Server Security

ตวอกขระ ต$าง ๆ เหล$าน/0เปนไปตามทฤษฎ/ระบบความปลอดภยของ User ท0งส%0นแต$น%สยคน


ไทยกบมองว$าต0งรหสผ$านยากไปท*าใหจ*าไม$ไดถาไม$เข/ยนไวใกล ๆ เครองคอมพ%วเตอร'ก<
เปล/ยนรหสเองท/ง$าย ๆ เช$น หมายเลขโทรศพท' วนเดอนปzเก%ดหรอเลขทะเบ/ยนรถ เปนตน
การใชงานแบบน/0จ9งเปนตนเหต,ใหกล,$มผไม$หวงด/ม/การสรางไฟล'ฐานขอมลส*าหรบเดารหส
ผ$านไวจากค$าพ0นฐานเหล$าน/0ไวแจกจ$ายกนทวโลกเพอน*าไปใชร$วมกบโปรแกรม Login แบบ
Random รหสผ$านจากฐานขอมลท/ม/อย$ถาตรงกนพอด/ ก<ส ามารถ Login เขาระบบไดอย$า ง
ง$ายดาย
6.2 การก*าหนดค$าใหรหสผ$านหมดอาย, ผดแลระบบมกก*าหนดใหรหสผ$านของ
User แต$ละคนหมดอาย,ภายในก/วนเช$น ตองม/การเปล/ยนรหสผ$านท,ก ๆ 45 วนเพอใหผบ,กร,ก
ไม$สามารถใชความพยายามไดนานเก%นไปในการเดาจนกว$าจะหาพบ ก<กลบเปนป:ญหากบผ
ใชคนไทยอ/กเช$นกนว$าพอใหเปล/ยนรหสผ$านจากเด%มเปนรหสใหม$ก<มกจะบ$นว$าไม$รจะต0ง
อะไร บางคนก<ต0งค$าเด%มอ/กหรอบางคนก<หนกลบไปใชเลขท/ตนเองชอบเหมอนตวอย$างท/ผ$าน
มาก<อาจไม$ค$อยไดผลนกส*าหรบการเปล/ยนรหสผ$านบ$อย ๆ
6.3 ควรปรบปร,งขอมลท/เก/ยวของกบ User Security ของ Server ใหครบถวนและ
ต$อเนองอย$างสม*าเสมอ
6.4 แนะน*าใหเครองลกข$ายท*าการ Update โปรแกรม anti-spy ware หรอ anti-
virus อย$างต$อเนองและสม*าเสมอเช$นเด/ยวกน
6.5 ถาเปนเรองของตวบ,คคลผปฏ%บต%งานคอมพ%วเตอร'ควรตองม/การจดอบรม
สมมนาเรองความปลอดภย การฝ†กบนท9กป:ญหาเพอการตรวจสอบ(Audit) รวมถ9งการไดรบ
ส%ทธ%ต$าง ๆ ของ User แต$ละคน ใหม/ความรเพ/ยงพอท/จะสามารถปฏ%บต%งานได
ส%งท/ผดแลระบบม/ความตองการท/จะใหระบบม/ความแข<งแรงน0นม/องค'ประกอบ
ส*าคญอย$ 6 ประการ ดงน/0

บทท) 1 Overview .....: 15


Linux Server Security

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กงานลงในเอกสารอย$างต$อเนองเพอประโยชน'ใ น
ระบบภาพรวมขององค'กรต$อไป

บทท) 1 Overview .....: 16


Linux Server Security

บทท!2 2 Network Model

วตถประสงค
 เพอใหรจกวธการออกแบบและวางระบบ Internet Server ใหปลอดภย
 เพอใหสามารถเลอกแบบทตรงกบการใชงานจรง
 สามารถน,าไปใชงานจรงและปรบปร.งระบบไดอย/างมประสทธภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. ควรมความรเกยวกบเรอง Data communication มาก/อน
2. ควรมความรเกยวกบรายละเอยดของอ.ปกรณ= (Specification)
3. ควรรค/าพกดต/าง ๆ ทางกายภาพของอ.ปกรณ=เครอข/าย
4. รปแบบต/าง ๆ ในตวอย/างเปEนกรณศGกษาเพอน,าไปใชงาน

Network Model
ส,าหรบบทนIจะกล/าวถGงพIนฐานการวางแผนตดตIงระบบเครอข/าย หลงจากทไดอ/าน
ความหลากหลายจากบทท 1 มการจดท,าเอกสาร เกLบรายละเอยดในส/วนทตองการท,าระบบ
รกษาความปลอดภยอย/างมขIนตอนและมระบบไปเรยบรอยแลว จGงตองท,าระบบใหรองรบกบ
การใชงานตามทผดแลระบบคาดหวงไว อาจมองภาพในเชงทฤษฎแลวน,าไปประย.กต=ใหเขา
กบระบบภายในหน/วยงานหรอองค=กรมากกว/าการทจะลองไปทIงหมด เพราะผงต/าง ๆ ทน,า
มาอธบายไวเปEนเพยง Model ย/อย ๆ ทตองการเนนส/วนทตองการท,าระบบความปลอดภย

บทท!2 2 Network Model .....: 17


Linux Server Security

เท/า นI น ในแต/ ล ะแบบจะมการยกตวอย/ า งเชอมโยงไปยงเนI อ หาบทอน ๆ ต/ อ ไปเพอให


ครอบคล.มเนIอหาทIงหมดในหนงสอนI

รปท 2.1 แสดงสามเหลยมระบบความปลอดภย

Prevention ในส/วนทเปEนฐานของระบบความปลอดภยคอการปSองกน ถกก,าหนด


ใหเปEนไปตามระดบของความปลอดภย สงส,าคญอย/ทท,าอย/างไรถGงจะปSองกนไม/ใหมการ
โจมตเขามายงจ.ดทอ/อนแอของระบบได ในการพฒนาระบบรกษาความปลอดภยใหกบเครอ
ข/ายขององค=กรควรกระท,าอย/างเขมแขLงบนพIนฐานของการตรวจจบ (Detection) และผลทได
รบ (Response) มนดง/าย ค.มค/าและค.มราคาในการปSองกนช/องโหว/ทเกดขGIนในแต/ละครIงท
ตรวจพบ จงจ,าไวเสมอว/าไม/มกลไกความปลอดภยทไดท,าไวแลวสามารถทจะปSองกนการ
โจมตในอนาคตได
Detection อกดานหนGงของการปSองกนใหมความสมบรณ=ขGIนคอการตรวจจบหรอ
ตรวจหาปXญหาหรอช/องโหว/ทเกดขGIนในระบบในกรณทระบบการปSองกน (Prevention) ผด
พลาดหรอลมเหลว มนจ,าเปEนอย/างมากทตองมการตรวจพบปXญหาอย/างทนททนใด เพอจะได
ท,าการแกไขปXญหาทตรวจพบใหเสรLจสIนไดทนเวลา

บทท!2 2 Network Model .....: 18


Linux Server Security

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 ดงภาพ

รปท 2.2 แสดง OSI Model + People layer

บทท!2 2 Network Model .....: 19


Linux Server Security

ส,าหรบ Layer 8 เพมขGIนมาจาก OSI Model เดมทมอย/ 7 Layers เปEนทรจกกนดใน


ชอ People Layer เปEนชIนทท,าหนาทต/าง ๆ ตามการควบค.มของมน.ษย= ส/วนมากในทางทฤษฎ
และปฏบตจะมการกล/าวถGงการท,าระบบความปลอดภยในชIนล/าง ๆ ของ OSI Model แต/ลม
ไปว/าระบบทอ/อนแอมกเกดมาจาก People Layer เปEนตวกระท,าทIงสIนไม/ว/าจะเปEนบ.คคลใน
กล./ ม วศวกรรม กล./ ม บ. ค คลทวไปหรอกล./ ม ทมกตกเปE นเหยอของผลประโยชน= ท างธ. ร กจ
เปEนการสรางปXญหาและท,าใหระบบมความอ/อนแอทเกดมาจากการกระท,าของบ.คคลทIงสIน
ต/อไปเปEนเสนทางการจราจรทวงผ/าน Router ท,าใหเหLนการท,างานของ Router ว/า
ตองรบภาระในการหาเสนทางใหกบการรองขอบรการของลกข/าย ซGงเปEนภาระงานหลกท
ค/อนขางหนกอย/แลว ดงนIนผดแลระบบไม/ควรให Router ท,าหนาทอนเพมอก เช/น บางแห/ง
มกใชอ. ป กรณ= Router ท, า Packet filtering รวมเขาไปอกหนG งหนาท บางคนอาจคดว/ า เขา
ออกแบบมาใหใชกLตองใชจะไดค.มค/า ค.มราคา แต/ตองค,านGงถGงหลกความจรงว/าเฉพาะงานใน
ดาน Router กLตองใชเวลาค/าหนGงในการสบเปลยนหาเสนทางใหกบลกข/ายในการรองขอ
แต/ละ Protocol ท,าใหการบรการล/าชาไป 1 hop ซGงถา Router มค.ณสมบตทไม/สงหรอราคาถก
กLอาจเสยเวลาการท,างานทจะผ/านตวมนไปมากพอสมควร

รปท 2.3 แสดง IP Traffic flowing over a router

บทท!2 2 Network Model .....: 20


Linux Server Security

จG ง ควรหาวธการอนมาช/ ว ยในการท, า หนาท Packet Filtering นนกL ค อ ควรหา


อ.ปกรณ=ทท,าหนาท Firewall มาใชท,าหนาทแทน Router ซGงอาจไม/จ,าเปEนตองไปซIอ Firewall
แบบทเปEน Hardware engine ทมราคาสงแต/อาจใชเครองคอมพวเตอร=แ ลวใช Software ท,า
หนาท Firewall แทนจะท, า ใหราคาต, า กว/ า มากและสามารถปรบเปลยนทI ง Version และ
ค.ณสมบตของเครองคอมพวเตอร=ไดง/ายอกดวย
ลองมาดการบ.กร.กยอดนยมทรจกกนอย/างค.นเคย ส,าหรบผดแลระบบทตดตามข/าว
กนมาอย/างต/อเนอง มกพบว/ามการบ.กร.กเขาโจมตระบบเครอข/ายของหน/วยงานหรอองค=กร
ต/าง ๆ มากมายและต/อเนองมหลายรปแบบในบทนIจะน,ามาเปEนตวอย/างเพอประกอบการ
วางแผนตดตIงระบบเครอข/ายและใหรองรบกบการปSองกนในบทอนดงนI
Denial-of-Service Attacks (DoS)
ส/วนใหญ/เกดจากกรณทผไม/หวงดทIงหลายทเปEน User ภายในกระท,าใหระบบไม/
สามารถใชงานไดดวยวธการทหลากหลาย จนเปEนเรองปกตท,าใหเกดความเสยหายนบมลค/า
ไม/ได ส/วนมากมกกระท,าดวย 2 วธการคอ
1. SYN Flood เปEนการส/ง TCP packet เพอรองขอเขาเชอมต/อกบระบบ
ดวยวธการทเรยกว/า TCP three-way handshake หาก Server ไม/มการปSองกนหรอควบค.มใหม
การรบการเชอมต/อทเรยกว/า new TCP connections กLจะถกโจมตดวยวธนI ( วธปSองกนดเรอง
Firewall iptables:state NEW )

บทท!2 2 Network Model .....: 21


Linux Server Security

รปท 2.4 แสดงวธเชอมต/อระบบแบบ TCP three-way handshake

รปท 2.5 แสดงการโจมตแบบ SYN flood

บทท!2 2 Network Model .....: 22


Linux Server Security

รปท 2.6 แสดงการปฏเสธการโจมตแบบ SYN flood จาก Firewall

2. Smurf attack เปEนแบบ persistent เนองจากเปSาหมายการโจมตมผลกระทบใน


เวลาทมการโจมตเท/านIน ถาผโจมตหย.ดการโจมตแบบ smurfing เปSาหมายทถกโจมตกLจะ
สามารถใชงานอนเทอร=เนLตไดตามปกต ผไม/หวงด (Attacker) ใชวธการจ,าลองจ,านวนเครอง
ในเครอข/ายเปEนจ,านวนมากผ/าน Broadcast address ไปสราง ip address ปลอมขGIนใหม/แลวส/ง
ICMP packet ไปยงเครองเปSาหมายพรอม ๆ กนดงภาพ

บทท!2 2 Network Model .....: 23


Linux Server Security

รปท 2.7 แสดงตวอย/างการโจมตแบบ Smurf attack

IP Fragmentation Attacks: Ping of Death ชอบอกตรงตวอย/แลวว/าท,าการโจมต


เหยอดวยการใชเทคนค IP packet fragmentation คอท,าใหค/า packet ทส/งไปใน IP address ม
การแตกตวออกเปEนจ,านวนมาก ๆ แลวส/งไปยงเครองเปSาหมาย ส/งผลใหเครองเปSาหมายรบค/า
Packet ทถกส/งมาในเวลาเดยวกนเปEนจ,านวนทมากเกนไปไม/สามารถ Reply ไดทIงหมดท,าให
เครองหย.ดท,างาน ดงภาพ

บทท!2 2 Network Model .....: 24


Linux Server Security

รปท 2.8 แสดงตวอย/างการโจมตแบบ Ping of death

Distributed Denial-of-Service Attacks ใชวธยมมอเครองทท,า งานอย/ใน Internet หลาย ๆ


รอยเครองช/วยกนโจมตเหยอเปSาหมายพรอม ๆ กนในเวลาเดยวกนดงภาพ

รปท 2.9 แสดงตวอย/างการโจมตแบบ DdoS

บทท!2 2 Network Model .....: 25


Linux Server Security

การป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 จรงทมอย/ในระบบเครอข/ายจรง

Spoofing เปEนการโจมตแบบทใชวธการปลอมตวเขาไปในระบบเช/น IP address,


MAC address หรอค/าอน ๆ ทไม/ใช/ของจรง เช/น
1. IP address spoofing
2. ARP poisoning
3. Web spoofing
4. DNS spoofing

บทท!2 2 Network Model .....: 26


Linux Server Security

รปท 2.10 แสดงตวอย/างขIนตอนการตรวจสอบ packet แปลกปลอม

รปท 2.11 แสดงตวอย/างการโจมตแบบ Web spoofing

บทท!2 2 Network Model .....: 27


Linux Server Security

ต/อไปนIเปEนตวอย/างผงประกอบการวางระบบ กLจ ะเหLนภาพรวมเปEน 3 ส/วน คอ


ส/ว นแรกเปEนส/ว นทอย/ นอกระบบ (Internet or Network Uplink) ส/ว นท สองเปE น Firewall
และส/วนทสามจะเปEนระบบเครอข/ายภายใน (Internal Network) หากเราจดเรยงระบบการ
ปSองกนทเรยกว/า Firewall ใหตดตIงโปรแกรม IPTABLES ทมมาใหใน Linux ท,าการก,าหนด
ค/า Configuration ใหตรงตามวตถ.ประสงค=ของผดแลระบบ ดตวอย/างทIง 6 รปแบบ ดงต/อไป
นI
1. Single Layer Firewall

รปท 2.12 แสดง Single Layer Firewall


จากภาพเปEน การจดวางระบบเครอข/ า ยอย/ า งง/ า ย โดยท, า การปS อ งกนระบบดวย
Firewall เพยงระดบเดยวซGงมหลายหน/วงงานหรอหลายองค=กรทท,าแบบนI โดยท Firewall
อาจท,าเพยง packet filtering บน Router หรอตIงคอมพวเตอร=แลวใช IPTABLES ท,า หนาท

บทท!2 2 Network Model .....: 28


Linux Server Security

เปEน Firewall กLได แบบนIมความปลอดภยนอยเนองจากอาจถกบ.กร.กจากเครอข/ายภายในได


ง/าย เพราะการปSองกนจะท,าไวกนผทบ.กร.กจากภายนอกไม/ใหเขามายง Internal network และ
ยงตดตIง เครองมอตรวจจบการบ. ก ร. ก ไวทต, า แหน/ ง Bastion host ซGงอย/ ร ะดบเดยวกนกบ
Internal network เช/นเดยวกน
2. Two Layer Firewall

รปท 2.13 แสดง Two Layer firewall

ในแบบทสองเปEนแบบทมความแขLงแรงมากขGIนโดยเพม Firewall ไว 2 ระดบ(ตดตIง


Firwall 2 ช.ด) คอมปSองกนผบ.กร.กจากภายนอก และปSองกน Internal network ในการรบส/ง

บทท!2 2 Network Model .....: 29


Linux Server Security

packet ส/วนตรงกลางจดไวเปEนพIนท DMZ ใหใชส,าหรบตดตIง Server ทตองการใหบรการ


service ต/าง ๆ รวมถGงตดตIงเครองมอตรวจจบการบ.กร.กไวท Bastion host ในบรเวณ DMZ
ดวย
3. Merge Interior & Exterior

รปท 2.14 แสดง Merge interior & exterior

แบบทสามเปEนแบบประหยดโดยการรวม Firewall 2 ช.ดไวในเครองเดยวกน ผดแล


ระบบบางคนท,าแบบนIอย/แลว เปEนการใชเครองคอมพวเตอร=เครองเดยวใส/ NIC 3 ใบ โดย
แยกการท,างานเปEน Exterior, DMZ และ Interior แลวท,า Configuration ใหจดการในแต/ละ

บทท!2 2 Network Model .....: 30


Linux Server Security

Zone ใหท, า งานผ/ า น Firewall ใหครบถวนสมบรณ= ดวธการไดจากเรอง Firewall Using


IPTABLES ในแบบนIจะท,าใหไดเปรยบในเรองความเรLวในการใหบรการ เพราะการรบส/งค/า
packet ทIงเขาและออกจากระบบท,าทเครอง Firewall เพยงเครองเดยว ยกเวนมการท,างานผด
พลาดเนองจากการก,าหนดค/า Configuration ไม/ถกตองกLอาจเกดปXญหาคอขวดจากการใชงาน
โปรแกรม IPTABLES ไดอกดวย รวมทIงปXญหาของ NIC ทไม/สามารถรองรบการท,างานใน
กรณท Internal network ในระบบมจ,านวนเครองมาก ๆ
4. Two Layer with two internal network

รปท 2.15 แสดง Two layer with two internal network

บทท!2 2 Network Model .....: 31


Linux Server Security

แบบทสนIถาท,าตามผงจะเหLนว/าตองตดตIง Firewall 2 ช.ด มลกษณะคลายกบแบบท


สองแต/ Firewall เครองทสองม NIC สองใบแบ/ง Internal netwok เปEนสองช.ด
5. Two Layer with merge Bastion Host & Exterior

รปท 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

บทท!2 2 Network Model .....: 32


Linux Server Security

Firewall ดวย เปEนระบบทก,าลงนยมในปXจจ.บนซGงมค/าใชจ/ายสง หากระบบของค.ณตองการท


จะลดตนท.นในการท,าระบบ firewall ใหใชวธการตามแบบท 6
6. Packet filtering and stateful firewall (Gateway Server)

รปท 2.17 แสดง Linux gateway and firewall (Gateway Server)

ส,าหรบแบบทหกเปEนการใหบรการ Internet ทไดรบจาก ISP กระจายใหกบเครอ


ข/า ยภายในไดใชงาน มความจ, า เปE น มากทตองท, า การตดตI ง เครอง Server ท, า หนาทเปE น
gateway เพราะสามารถแจกจ/าย Private IP address ใหกบลกข/ายจ,านวนมาก ๆ ไดและยงท,า
หนาท Firewall ปSองกนเครอข/ายภายในไดอกดวย ถาไม/ท,าแบบนIตองรบค/า IP Address จาก
อ.ปกรณ= Router และค/าทก,าหนดไวในอ.ปกรณ=แทนไม/สามารถรองรบการใชงานจรงได

บทท!2 2 Network Model .....: 33


Linux Server Security

Network Model แบบตW ง ๆ


ต/อไปนIจะเปEนรปแบบในการตดตIงระบบเครอข/ายทมการใชงานกนอย/ตIงแต/อดต
จนถGงปXจ จ.บ น ซGงอาจเปEนระบบทไม/ม ความปลอดภยในการใชงาน หรอบางระบบมการ
วางแผนทยงไม/สมบรณ=ใหน,าไปประกอบเปรยบเทยบกบการจดรปแบบทIงหกแบบทผ/านมา

รปท 2.18 แสดงภาพ Home Network

รปท 2.19 แสดงภาพการ Share Broadband Internet

บทท!2 2 Network Model .....: 34


Linux Server Security

รปท 2.20 แสดงการ Share Broadband ผ/าน Proxy/Firewall

บทท!2 2 Network Model .....: 35


Linux Server Security

รปท 2.21 แสดงการ Share Broadband Internet จาก serial port

บทท!2 2 Network Model .....: 36


Linux Server Security

รปท 2.22 แสดงแบบ single layer ร/วมกบ Gateway/Firewall

แบบนIเปEน single layer เพยงแต/มการตดตIง firewall แยกในแต/ละ server รวมถGงการ


ตดตIง gateway server แต/ไม/ไดท,า firewall ซGงอาจเปEนระบบทไม/ค/อยแขLงแรงเท/าทควรเพราะ
ถามการท,า configuration ในแต/ละ server ไม/ครอบคล.มการปSองกนทIงผบ.กร.กภายนอกและ
ภายในระบบแลวจะท,าใหมช/องทางในการบ.กร.กมาก มความย./งยากในการเฝSาระวงและตรวจ
สอบระบบ

บทท!2 2 Network Model .....: 37


Linux Server Security

รปท 2.23 แสดงการท,า Packet filtering บน Router


แบบนIเปEนการท,า Packet Filtering ไวบน Router ซGงไม/ค/อยมผดแลระบบในหน/วย
งานหรอองค=กรขนาดเลLกท,ากนเพราะตองไปศGกษาคนควาการท,า Packet filtering บน router

บทท!2 2 Network Model .....: 38


Linux Server Security

บางครI งกL เ ปE นการเช/ าอ. ป กรณ= ม าพรอมกบการซI อ สญญาณจGง ไม/ ส ามารถเขาไปแกไขค/ า


Configure ต/าง ๆ บนตว Router ได
หลงจากวางผงการตดตIงระบบกนครบถวนตามตองการแลวหากตองการตดตIง
เครองทท,าหนาทตรวจจบผบ. กร. ก (Intrusion Detection System : IDS) ในบทต/อไป กL ตอง
ศGกษาจากค/มอโปรแกรมว/าตองวางเครองมอไวต,าแหน/งใดใน network เพอใหสามารถตรวจ
จบความเคลอนไหวของ packet ต/ าง ๆ ทวงเขาออกผ/ า นเครองมอตรวจจบ ในทนI จ ะน, า
ตวอย/างการวาง IDS ของโปรแกรม snort ซGงมการตดตIงใชงานในเล/มนI โดยวางตามต,าแหน/ง
ในภาพต/อไปนI

รปท 2.24 แสดงการเชอมต/อระบบผ/าน Firewall ดวย Switch ตวเดยว

บทท!2 2 Network Model .....: 39


Linux Server Security

รปท 2.25 แสดงการตดตIง IDS บน span port ของ switch

รปท 2.26 แสดงการตดตIง IDS ตรวจจบ packet ทเขาและออกจากระบบ

บทท!2 2 Network Model .....: 40


Linux Server Security

ในท,านองเดยวกนหากตองการตดตIง log server เพอเกLบ log file ตาม พรบ. ว/าดวย


การกระท,าความผดเกยวกบคอมพวเตอร= กLตองค,านGงถGงความปลอดภยของ log file ดวย ใหตIง
log server ไวในส/ ว นของ DMZ แลวท, า Configuration ใหกบ Firewall ควบค. ม การรบส/ ง
UDP packet ผ/าน port 514 หรอ port ทก,าหนดเองเพอใหปลอดภยจากการบ.กร.กเขาไปลบ
หรอแกไข log บางส/วนหลงเกดการกระท,าความผดไปแลว การวางผง log server กLมความ
ส,าคญไม/นอยไปกว/าการตดตIง server ใหบรการในเรองอน ๆ ดวยเช/นกนและยงตองมการเขา
รหส log file ทจดเกLบเพอเกLบรกษาไวตามระยะเวลาทกฎหมายก,าหนด

รปท 2.27 แสดงการวาง Centralize Log server ใน DMZ

บทท!2 2 Network Model .....: 41


Linux Server Security

บทสรป
ในการวางแผนตดตIงระบบเครอข/ายใหกบองค=กรหรอหน/วยงาน แนะน,าใหศGกษา
คนควาหาขอมลจากทฤษฎร/วมกบขอมลผผลตอ.ปกรณ=เครอข/าย และศGกษาการใช Operating
System ทเหมาะสมกบการใชงานรวมไปถG ง การเลอกใช Software ทมความยดหย./ น สง
สามารถปรบเปลยน Configuration ใหสามารถรองรบการเปลยนแปลงในอนาคตไดเปEนอย/าง
ด ไม/ ค วรยG ด ตดกบค/ า ยผผลตหรอ Version ควรศG ก ษาความเหมาะสมกบการใชงานให
ครอบคล.ม โดยเฉพาะหนงสอนIเนน Software ประเภท Open Source ทIงหมด ตวอย/างต/าง ๆ
ไดน,ามาจากค/มอและค,าอธบายของผผลต Software ทเกยวของกบระบบรกษาความปลอดภย
ทIงสIน หากมส/วนใดทไม/ละเอยดมากพอใหไปศGกษาไดจากค/ายผผลต Software ทเลอกใชเพม
เตมใหมากพอทจะใชท,างานจรงได

บทท!2 2 Network Model .....: 42


Linux Server Security

บทท!1 3 Kernel Harden

วตถประสงค
 เพอใหรจกระบบความปลอดภยของ Kernel
 เพอใหเขาใจว!ธ#ป$องกนในส'วนต'าง ๆ ของ Kernel
 สามารถเลอกการป$องกนในส'วนต'าง ๆ ใหเหมาะสมกบการใชงานได
 สามารถน-าไปใชงานจร!งไดอย'างม#ประส!ทธ!ภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตร#ยมโปรแกรมท#ใชงานชอ vsftpd เป:น Open source
2. ศAกษาการใชค-าสง ftp, telnet
3. เนEอหาในบทน#E ส'วนท#เป:นการต!ดตEง การแกไข จะเนนเป:นตวหนา (Bold)
4. ทดลองปฏ!บต!ตามขEนตอนท# เร#ยงไว หากท-าผ!ดพลาดใหเร! มตนใหม'ด วยการ
ถอนการต!ดตEงโปรแกรมเด!มออกจากเครองจะด#กว'าการท-าซE-า

ก รต(ดต*งและใช%ง นโปรแกรม
ในท# น# E จ ะกล' า วให เหM น ภาพของการด แล Server ในส' ว นของผด แลระบบ
(Administrator) ควรท-า การวางแผนการป$องกนภยท# จะมาคS กคามระบบเครอข' า ยทEง หมด
ตEงแต' Router ไปจนถAงเครองลกข'าย ดงนEนในหนงสอเล'มน#Eจะเนนใหผดแลท-าเป:นขEนตอน
เพอใหระบบม#เสถ#ยรภาพมากท#สSดเท'าท#จะท-าได แต'ตองไม'ลมว'าส!งท#เราท-าได ฝVายตรงขามกM
ย'อมท-าไดเช'นกน ดงนEนการต!ดตามขอมลข'าวสารเก#ยวกบความปลอดภยของระบบน'าจะเป:น

บทท!1 3 Kernel Harden .....: 43


Linux Server Security

ส!งท#ด#ท#สSด มากกว'าท# จะมนใจว'าเราไดท-าแลวและคงจะป$องกนไดตลอดไป เลยเก!ดความ


ประมาท ท!Eงเครอง Server ไวโดยไม'ดแลและปรบปรSงอะไรเลย อาจท-าใหเก!ดความเส#ยหายได
มากถAงขEนไม'สามารถกคนได บางกรณ#ถAงกบตอง format และต!ดตEง OS ใหม'เลยกMม#

เร(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 กลบเป:นค'าเร!มตนใหม'ทนท#

ถอดส ย Network ออกจ ก Server กCอน


ควรอย'างย! งท#ผดแลระบบตองพAงระวง อย'า ใชความเคยช!นในการท-า งานมาเป:น
มาตรวดความเส#ยงของระบบ ในขณะท#คSณก-าลงต!ดตEงระบบปฏ!บต!การใหระบบเครอข'าย ไม'
ควรต'อสายสญญาณเขาท# NIC เพราะจะท-า ใหระบบทวโลกหรอท#ต'อเชอมกบ Server คSณ
สามารถ Access เขามาในขณะท#คSณก-าลงจะเร!มจดการระบบรกษาความปลอดภย อย'ามนใจ
ว'า ”ขอเวลาแค'สองสามนาท# คงไม'เป:นไร” ความค!ดแบบน#Eแหละท#คนไทยชอบใช เช'นจอดรถ
ท#เขตหามจอด(ขาวแดง) ลงไปซEอของบอกว'าจอดแปhบเด#ยว ท-าใหการจราจรต!ดกนวS'นไปทEง
ถนน ผดแลระบบท#ด#ไม'ควรลมนะครบ ถาไม'อยากถอดสาย LAN กMควรสงใหมนหยSดบร!การ
ก'อน

บทท!1 3 Kernel Harden .....: 44


Linux Server Security

# ifdown eth0 กด Enter เมอตองการสงใหท-างานต'อกMสง


# ifup eth0 กด Enter หรอ
# /etc/rc.d/init.d/network stop เมอตองการสงใหท-างานต'อกMสง
# /etc/rc.d/init.d/network start
เพ#ยงเลMกนอยแค'น#Eคงไม'ท-าใหคSณเส#ยเวลามากมาย ด#เส#ยกว'าตองมานงปวดหวเพราะ
ผไม'ประสงคcด#ไดบSกเขามาฝากขอมลเพอเปaดประตหลงบาน (Back Door) ไดเร#ยบรอยตEงแต'
เร!มต!ดตEง คราวน#Eต'อใหคSณปaดประตลงกลอนก#ชEน ม#คนรายแอบอย'ในบาน เขากMสามารถเขา
ออกไดอย'างสบาย จร!งไหมครบ
ก รเลLอกปMดหรLอเปMด Service ท!1จ เปOน
หลงต!ดตEงเสรMจเร#ยบรอยอาจม# Service บางตวท#ไม'ไดใชงาน ถาปล'อยไวนอกจากจะ
ส!Eนเปลองทรพยากรในการท-างานแลว ยงอาจม#การเปaด Port ท#ไม'ปลอดภยเพราะไม'ไดม#การ
ป$องกนใด ๆ ท-าใหผไม'หวงด#แอบเจาะเขาระบบไดง'าย ใหลองดตวอย'าง service ต'าง ๆ ดงน#E
ตรวจสอบด'วC ม! Service อะไรบ% งท!1ก ลงท ง นอย'C (ใน mode 3)
# chkconfig --list | awk ‘/3:on/ { print $1}’
gpm
kudzu
netfs
atd
apmd
pcmcia
nfslock
isdn
autofs <- ถ% ไมCใช%อปกรณ usb ให%ปMด

บทท!1 3 Kernel Harden .....: 45


Linux Server Security

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นอ#กดวย

ก รก หนดรหสผC น (Password) อยC งปลอดภย


ผดแลระบบท#ด#ตองพยายามไปหา Download โปรแกรมท# Hacker ใชในการโจมต#
Server และท#ขาดไม'ไดคอตองไปหาโปรแกรมท#ใชในการ Crack Password มาท-าการ Crack
password ดสปดาหcละครEง หากพบว'า password ของใครม#ความง'ายต'อการเดาหรอม#อายSการ
ใชงานเก!นครA งของเวลาท#ก-าหนดใหท-าการเปล# ยนรหสผ'านใหคนนEนใหม'ท นท# ควรเลอก
เครองมอหรอโปรแกรมท#ม#ความสามารถตEงค'าในการตรวจเชMคว'า password ใครเก'าหรอง'าย
ตรงตามค-า ในพจนานSกรม จะเปล# ยน password ใหใหม'แต'ต องไม'ล มว'าเครองมอนEนตอง
ยอมรบการผสมตวเลขและอกษรสญลกษณcพ!เศษปนอย'ในจ-านวนแปดตวหรอแปดหลกนEน
ไดดวย

ว งแผนในก รออกรหสผC นท!1ด!


1. ควรม#ความยาวรหสผ'าน (Password Length) ไม'นอยกว'า 6 ตว ถาจะใหด#ควรให
ม#ความยาว 8 ตวอกขระโดยใหม#ตวอกษร ตวเลขหรอสญลกษณcพ!เศษรวมอย'ดวยอย'างนอยห
นAงตว ปoจจSบน PAM ก-าหนดค'าหลกใหไม'นอยกว'า 8 ตว

บทท!1 3 Kernel Harden .....: 46


Linux Server Security

2. ไม'ควรก-าหนดใหม#ความง'ายต'อการเดาและเป:นค-าท#ม#ใชกนปกต! เช'น ชอบSคคล


ครอบครว อาช#พการงาน ทะเบ#ยนรถ หมายเลขโทรศพทc หรอบSคล!กลกษณะของคนพ!เศษ
3. ควรม#การก-าหนดอายSของรหสผ'านใหม#การเปล#ยนรหสผ'านใหม'ตามก-าหนดเวลา
ท#ตEงไว
4. ควรม#การ Lock รหสไม'ใหใชงาน และถาม#การป$อนรหสผ!ดครบตามจ-านวนครEง
ท#ตEงไว

ว(ธก! รก หนดคว มย วของรหสผC น (Password Length)

ใน Version เก' า ๆ ท# การจดการเรองรหสผ' า นยงไม' แขM ง แรงเช' น ไฟลcท# ใชเกM บ


password ม#การเกMบทEง User name และ password ไวดวยกนต'อมากMม#การพฒนาใหแยกไฟลc
password ไปไวท# shadow เพอใหปลอดภยมากขAEน ในอด#ตผดแลระบบสามารถก-าหนดค'าตว
แปรส-าหรบลกข'ายท#จะ login เขาระบบไดโดยการไปแกไขไฟลcชอ login.defs ซAงภายในไฟลc
น#จE ะม#การก-าหนดค'าความยาวของรหสผ'านท#โปรแกรมก-าหนดมา (Default password length)
จะม#ค'าไม'นอยกว'า 5 ตว PASS_MIN_LENGTH = 5 ซAงไม'ม#ผลในการควบคSมเรองความยาว
ของ password ของลกข'ายได ดรายละเอ#ยดค'าตวแปรท#เก#ยวของทEงท#ใชงานไดและไม'ไดดงน#E
/etc/login.defs PASS_MAX_DAYS 60 Maximum number of days a password is
valid.
/etc/login.defs PASS_MIN_DAYS 7 Minimum number of days before a user can
change the password since the last change.
/etc/login.defs PASS_MIN_LEN n/a This parameter does not work. It is
superseded by the PAM module
"pam_cracklib"

บทท!1 3 Kernel Harden .....: 47


Linux Server Security

/etc/login.defs PASS_WARN_AGE 7 Number of days when the password change


reminder starts.
/etc/default/useradd INACTIVE 14 Number of days after password expiration
that account is disabled.
/etc/default/useradd EXPIRE Account expiration date in the format
YYYY-MM-DD.

ปoจจSบนการดแลระบบความปลอดภยในการเขารหสใหกบไฟลc shadow ตองท-างาน


ผ'าน PAM (Pluggable Authentication Module) ดงนEนผท#ตองการจะปรบเปล#ยนค'าตวแปรให
กบเรองรหสผ'านของลกข'ายใหเปล#ยนไปท-าท#ไฟลc /etc/pam.d/system_auth ซAงค'าตวแปรท#จะ
ใชงานไดจะเป:น module ท#ชอว'า pam_cracklib ดค-าอธ!บายค'าตวแปรท#จะใชงานดงน#E

pam_cracklib.so minlen=8 Minimum length of password is 8


pam_cracklib.so lcredit=-1 Minimum number of lower case letters is 1
pam_cracklib.so ucredit=-1 Minimum number of upper case letters is 1
pam_cracklib.so dcredit=-1 Minimum number of digits is 1
pam_cracklib.so ocredit=-1 Minimum number of other characters is 1

จากค'าต'าง ๆ ตามตารางใหน-าไปเพ!มเต!มลงในไฟลc system_auth เพอใหการท-างาน


เป:นไปตามท#ตองการไดโดยไปแกไขตามตวอย'างน#E
# vi /etc/pam.d/system_auth

บทท!1 3 Kernel Harden .....: 48


Linux Server Security

#%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

บทท!1 3 Kernel Harden .....: 49


Linux Server Security

minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=3 <- พ!มพcเพ!ม


password sufficient pam_unix.so nullok use_authtok md5 shadow
remember=26
จากนEนใหตรวจดว'าม#ไฟลc /etc/security/opasswd อย'หรอไม'เป:นไฟลcท# ใชเกMบค'า
password เก'าถาไม'ม#ตองสรางขAEนใหม'ดวยค-าสง touch แลวก-าหนด permission = 600
# ls -l /etc/security/opasswd
-rw------- 1 root root 0 Dec 8 06:54 /etc/security/opasswd

คว มปลอดภยเก!1ยวกบ root account


Root เป:น account ท#ม#ส !ทธ!ส งสSดของ OS ตระกล UNIX ดงนEนมนจAงไม'ม #ค วาม
ปลอดภยในทSก ๆ ดานถาคSณ log in ดวย root ท!Eงไว คSณอาจเส#ยใจเพราะผไม'ประสงคcด#จะ
ท-าการใด ๆ ดวยส!ทธ!สงสSดโดยไม'ม#ค-าเตอนจากระบบเลย ไม'ว'าจะเป:นการสงปaดเปaดบร!การ
ใด ๆ หรอการลบขอมล ลบไฟลcหรอไดเรกทอร# ระบบจะย!นยอมใหท-าการไดทSกอย'าง หาก
คSณไม'ไดอย'หนาเครองคงตองขอบอกดวยความห'วงใยว'าอย'า log in ท!EงไวเดMดขาดนะครบ
ฝรงเขาเตอนว'ามนเป:นส!งท#แย'มาก ๆ ๆ ๆ ส-าหรบการกระท-าเช'นนEนเลยท#เด#ยว

ก หนดเวล ให% root login


ผดแลระบบตองท-าการแกไขค'า login timeout ใหกบ root กรณ#ท#ผดแลระบบบาง
คนนงท-างานหนาเครองมก login ดวย root ควรตEงเวลากรณ#ไม'ม#การท-างานให login ท!Eงไวได
เป:นเวลาเท'าไร ใหเครอง logout กลบออกไปเองเพอความปลอดภยใหไปแกไขไฟลc profile
ดงน#E
# vi /etc/profile
….

บทท!1 3 Kernel Harden .....: 50


Linux Server Security

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 ใหม'มาท-างานทนท#

ปtองกน Boot loader (GRUB)


ปoจจSบน Boot loader ของ Linux น!ยมใช GRUB (GRand Unified Bootloader) แทน
LILO (Linux Loader) ซAงม#รปแบบการใชงานในลกษณะท#เป:นเมนใหเลอกแกไขเปล#ยนแปลง
ค'า ในการ boot ไดดวยการกดแป$นพ!มพcเช'นตองการแกไขกด e ตองการ boot กดแป$ น b
เป:นตนอย'างน#Eถอว'าสะดวกส-าหรบผใชงานเป:นอย'างมาก ถาตองการ boot แบบ single mode
กMท-าไดง'ายเพ#ยงเขาเมนแลวเลอนแถบไปยงบรรทดท#ม#ค-าว'า kernel แลวกดแป$น e พ!มพcค-าว'า
single ต'อทาย
kernel /vmlinuz-2.6.22.14-72.fc6 ro root=LABEL=/ single
เสรMจแลวกด enter แลวกดแป$น b เพอท-าการ boot เพ#ยงง'าย ๆ แบบน#EกMจะเขาท-างาน
แบบ single user เพอเขาไปแกไข root password (ใชกรณ#ล ม root password) กMเลยเป:นช'อง
ทางในการเขาระบบท#หนาเครองโดยผไม'หวงด#ได จAงตองท-าการป$องกนไม'ใหผอนสามารถ
เขาเมนของ GRUB ไดหากตองการเขาไปแกไขเปล#ยนแปลงค'าใด ๆ ตองม#การกรอกรหสผ'าน
(password) เส#ยก'อน ม#ขEนตอนดงต'อไปน#E

บทท!1 3 Kernel Harden .....: 51


Linux Server Security

# 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)

บทท!1 3 Kernel Harden .....: 52


Linux Server Security

kernel /vmlinuz-2.6.22.14-72.fc6 ro root=LABEL=/


initrd /initrd-2.6.22.14-72.fc6.img
title Linux Server 3.0 (2.6.22.4-45.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.22.4-45.fc6 ro root=LABEL=/
initrd /initrd-2.6.22.4-45.fc6.img
เสรMจแลวใหทดลองสง reboot แลวเขาเมนเพอแกไขขอมลในการ boot ดว'าม#การ
ถามรหสผ'านหรอไม'ส งเกตดว'าถาอย'ในเมนหลก รายการขอความท#ม#ใหเลอกดานล'างจะม#
เพ#ยงอนSญาตใหกดแป$น p เพอกรอกรหสผ'านเท'านEนจะไม'ม#ต ว e หรอตวอกษรอนใหเลอก
เหมอนเด!ม หลงกดแป$น p จะม#การใหกรอกรหสผ'าน ใหกรอกใหตรงกบตอนท# สรางดวย
grub-md5-crypt ถาเขาเมนหลกไดแสดงว' า ไดท- า การป$ อ งก นในส' ว นของ GRUB เสรM จ
เร#ยบรอย

ยกเล(กก รกดแปtน Ctrl+Alt+Del เพL1อ reboot


บางครEงคนใชงานคอมพ!วเตอรcอาจสงสยว'าว!ธ#น#Eจะเอามาแนะน-ากนท-าไม มนกMด#อย'
แลวว'าสามารถท#จะ Reboot เครองแบบ cold start ท-าใหเครองพงชาลงตามทฤษฎ# แต'ส-าหรบ
ผดแลระบบท# ใช Server จร!ง ๆ ราคาแพง ๆ คงจะรนะครบว'าหนาเครอง Server จะไม'ม#ปSVม
Reset ม#แต'ปSVมกด Power เท'านEนยกเวนผท#เอาเครอง PC มาท-า Server ม#ปSVมกดหนาเครองเพ#ยบ
ถาคSณท-า Internet Server คงตองเปaดบร!การ 24 ชวโมง แมแต'จอภาพยงไม'ตองการ ในระบบท#
ตองแขMงแรงคงม#แต' UPS และ Server เท'านEน ตวอย'างน#EจAงตองการใหคSณเหMนว'า หากม#ใครสก
คนเขามาเย#ยมเย#ยนหอง server อาจเป:นนกเล'นคอมพ!วเตอรcตวยง พอเหMนเครองคอมพ!วเตอรcท#
ไรกMจะเขาไปนงหนาจอ พ!มพcโน'นบางขยบเมาสcบางเพอใหคนท#มาดวยเหMนว'าเขาคนนEนใช
คอมพ!วเตอรcเป:นท-านองนEน พอเปaดจอ ขยบเมาสc มนไม'ม#อะไรเก!ดขAEนกMเล'นบทใบว'าเครองคง

บทท!1 3 Kernel Harden .....: 53


Linux Server Security

Hang มองหาปS V ม Reset ไม' พ บกM จ ะกดสามน! E วพ! ฆ าต Ctrl+Alt+Del ตามเคยเพอใหเครอง


Reboot จะไดเหMนหนาตาท#คS นเคย ค!ดออกหรอยงครบอาการน#Eแหละน'าเป:นห'วงมากเครอง
Server ของคSณจะหยSดบร!การและ Reboot ใหม'ท นท# ขอแนะน-า ใหปลดหรอยกเล!กการใช
Key อนตรายน#Eดวยการแกไขไฟลc inittab ดงน#E
# vi /etc/inittab
คนหาบรรทดท#ม#ขอความ ตามตวอย'างขางล'าง
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
ใหยกเล!กดวยการแทรกเครองหมาย # ขางหนาบรรทด
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now
บนทAกไฟลcแลวสง
# /sbin/init q

จ กดจ นวน terminal ท!1ใช%ง นบน Server


หลงจากต!ดตEง Linux Server เสรMจโปรแกรมจะยอมใหใช virtual console (ttys) บน
keyboard ไดรวมทEงหมด 6 ttys ซAงเป:นจ-า นวนท# มากเก!นไป ส'ว นมากผดแลระบบม#ค วาม
จ-า เป:นตองใชเพ#ยง 2 ttys เท'านEนคอเมอ tty1 ม#ปoญหากMจ ะ login ผ'า นทาง tty2 เพอจดการ
ปoญหา ตวอย'างน#Eใชเฉพาะผดแลระบบท#นงหนาเครองเท'านEน ถาตองการใหปลอดภยท#สSด
ควรใหท-างานไดเพ#ยง tty เด#ยวเท'านEน โดยใหไปแกไขค'าจ-านวน ttys ไดท# ไฟลc /etc/inittab
ดงน#E
# vi /etc/inittab
….. ไม'ใช ttys ไหนใหปaดดวยเครองหมาย # หนาบรรทด
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1

บทท!1 3 Kernel Harden .....: 54


Linux Server Security

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

บทท!1 3 Kernel Harden .....: 55


Linux Server Security

# vc/11
tty1
# tty2
# tty3
# tty4
# tty5
# tty6

ปtองกน user เร!ยกใช%โปรแกรมบ งอยC งผC น Console


หากม#การสงใหโปรแกรมท-างานผ'าน Console ไดกMจะเป:นช'องทางท# Hacker หรอ
user ทวไปสามารถเขามาสงค-าสงต'าง ๆ ท#ส-าคญของระบบเช'น poweroff, reboot และ halt จะ
ท-าใหเก!ดความเส#ยหายเนองจากเครอง Server ก-าลงใหบร!การลกข'ายอย'แต'กลบม#ลกข'ายบาง
คน login เขามาใชงานแลวเผลอไปสง reboot หรอ poweroff เครองจะปaดตวเองโดยไม'ร
สาเหตS Linux OS บางค'ายไดป$องกนจSดน#Eไวแลวบางค'ายยงปล'อยไวใหด-าเน!นการป$องกนทEง
สองแห'งคอลบไฟลcและเข#ยน script เพอยกเล!กการสงงานผ'าน console ท#ม#การ Authenticate
ผ'านโปรแกรม PAM ทEงหมดดวย ท-าดงน#E
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/reboot
rm -f /etc/security/console.apps/shutdown

ยกเล(กก รเข% ถ•งระบบผC น Console ท*งหมดใน pam.d

บทท!1 3 Kernel Harden .....: 56


Linux Server Security

หลงจากต!ดตEง Linux ท-า Internet Server เร#ยบรอยแลว linux จะต!ดตEง Linux-PAM


library เพอรอรบการ authenticate user, password ของ user เพอใหเขาถA ง Server เพอดแล
ระบบ จดการบร!หารผใช เขาถAงโปรแกรมและระดบไฟลc ผ'านทาง console ซAงพบว'าเก!ดความ
ไม' ป ลอดภยกบระบบเป: น อย' า งมาก จA ง ควรยกเล! ก การเขาถA งดงกล' า วทE ง หมดโดยว!ธ #ท - า
เครองหมาย # ไวดานหนาบรรทดท# ม#ค -าว' า pam_console.so ภายใน /etc/pam.d/ ในท#น#Eจ ะ
เข#ยน shell script เพอคนหาและเต!ม # ลงในทSกไฟลcใน /etc/pam.d/ ใหสรางดงน#E
สราง script ไวท# /root ดงน#E
# vi disable
# !/bin/sh
cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i
done
หลงจากบนทAกแลวใหท-าการ
# chmod 700 disable
สงให script ท-างานโดย
./disable
ตองการรว'า script ท-างานไดส-าเรMจหรอไม' ใหใชค-าสง
# grep pam_console.so /etc/pam.d/*

ปลอดภยด%วย TCP Wrappers

บทท!1 3 Kernel Harden .....: 57


Linux Server Security

Linux OS ทSกค'ายไดต!ดตEงโปรแกรม tcp wrappers มาดวย เพอใชเป:นระบบความ


ปลอดภยเบEองตน โดยม#ไฟลcท#ส-าคญในการก-าหนดค'าท#จะใหเขามาใช Host ไดหรอไม'อย' 2
ไฟลc คอ hosts.deny และ hosts.allow โดยม#หลกการท-างานดงน#E
- อนSญาตให daemon, client ท#ตรงกบค'าท#ก-าหนดใน hosts.allow เขา Server ได
- ไม'อนSญาตให daemon, client ท#ตรงกบค'าท#ก-าหนดใน hosts.deny เขา Server
- ท#เหลอนอกนEนจะถกอนSญาตทEงหมด
ว!ธ#ก-าหนดค'าท-าดงน#E
# vi /etc/hosts.deny
ALL: ALL
ในส'วนการอนSญาตใหผอนสามารถเขาถAง Server ไดนEนใหไปก-าหนดค'าไวในไฟลc
hosts.allow ดงตวอย'างต'อไปน#E
# vi /etc/hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
sendmail: 127.0.0.1
vsftpd: 203. 202. 205. 61. 192.168. 125.
sshd: 203. 192.168. : spawn (echo -e "Login from %c to %s" | /bin/mail -s
"Login Info for %s" root) &
จากตวอย' า งขางบนในส' ว นของ sshd เป: น การอนS ญ าตให client ท#ม# ip address
203.xxx.xxx.xxx 192.168.xxx.xxx สามารถเขาใชบร!การ sshd ได และให mail ไปแจง root

บทท!1 3 Kernel Harden .....: 58


Linux Server Security

ดวยว'าเขามาจาก %c (client) ถAง %s (server) สามารถตรวจสอบการเขาใชบร!การไดจาก mail


ของ root หรออ#กตวอย'างทEงเกMบท# log file และส'ง mail แจงไปท# root ดวย (%p = process id)
sshd: 192.168.1. : spawn (echo -e "Illegal connection attempt from %c to %s %d
%p at `date`" >> /var/log/unauthorized.log | /bin/mail -s "SSH Info from %c to %s
%d %p `date`" root) &

จดก รเรL1องก รตรวจสอบคC ใน host


หลงต!ดตEง Internet Server เสรMจ ผดแลระบบตองเลอกว!ธ#การท#จะตรวจสอบหาค'า ip
address .ใหกบการใชงานภายใน host โดยไปก-าหนดท# ไฟลc /etc/host.conf ว'าจะใหตรวจชอ
host ว'าม#หมายเลข ip address อะไรถาตรวจแลวไม'ทราบค'า กMใหไปถาม dns แต'ถาตองการให
ระบบไปถาม dns ก'อนกMใหสลบท#กนระหว'าง hosts กบ bind ซAงถาก-าหนดไม'ด#จะท-าใหระบบ
ไดหมายเลข ip address ชาการใหบร!การอน ๆ จะชาตามไปดวย ดงตวอย'าง
# vi /etc/host.conf
order hosts, bind (ใหตรวจสอบชอ hosts ก'อน DNS)
multi on (สงใหใชกบเครองท#ม#หลาย ๆ ip address)
nospoof on
(สง nospoof on : หามไม'ให ip address แปลกปลอมอน ๆ เขามาใช host )

ปtองกนก รแก%ไขคC ม ตรฐ น


ค' า มาตรฐานของชอบร! ก าร (Service Name) หมายเลข port และ protocol ตาม
มาตรฐาน RFC 1700 ในเรองการ Assigned Number ใหกบบร!การต'าง ๆ บน Server เพอให
client ท#รองขอบร!การต'าง ๆ ตามชอบร!การ จะไดรบหมายเลข port และ protocol ท#ถกตอง

บทท!1 3 Kernel Harden .....: 59


Linux Server Security

ถกเกMบอย'ในไฟลc /etc/services คSณควรป$องกนไม'ใหผบSกรSกเขามาเปล#ยนค'าในไฟลcน#Eเพอการ


บSกรSก หรอประสงคcรายกบระบบดวยการ
# chattr +i /etc/services

ควรลบ account ท!1ไมCได%ใช%ง น


ในการต!ดตEง Linux ท-า Internet Server นEน เป:นระบบท#พยายามท#จะใหผใชสามารถ
ท-าการต!ดตEงใชงานไดง'ายกว'าการต!ดตEงในระบบ UNIX จAงเป:นสาเหตSใหญ'ท#ท-าใหบางเรอง
เก!ดอาการท#เร#ยกว'าเก!นความจ-าเป:น หมายความว'า บางอย'างไม'ไดใชกMต!ดลงไปใหดวย ท-าให
เป:นช'องทางหรอเปaดทางใหผไม'ประสงคcด#บSกโจมต#ระบบไดง'าย โดยท#ผดแลไม'ทนระวงตว
เนองมาจากไม'เขาใจ OS ว'าเขาท-าอะไรมาใหบาง ในหวขอน#Eจะแนะน-าการก-าจด special user
account ท#เก!นความจ-าเป:นใหหมดเพอลดปoญหามอท#สามแอบเอาไปใชเพอ login เขาระบบ
โดยม#ส!ทธ!สงกว'า user ธรรมดาเส#ยอ#ก ใหคSณจดการลบทEง user และ group ท#ไม'จ-าเป:นตองใช
งานดวยค-าสง
# userdel username
# groupdel groupname
ใหลบตามน#Eไดเลยเพราะไม'ไดใชประโยชนcหรอจะเลอกลบเฉพาะกลS'ม ท#เหลอยงคง
เอาไวบางกMตามสะดวก
# userdel adm
# userdel lp
# userdel shutdown
# userdel halt
# userdel news
# userdel operator

บทท!1 3 Kernel Harden .....: 60


Linux Server Security

# 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

บทท!1 3 Kernel Harden .....: 61


Linux Server Security

ควรปtองกนก รใช% su เปOน root


เมอ linux ไม' อนS ญ าตให root ท- า การ login เขาระบบดวย tty อน ๆ รวมถA ง ไม'
สามารถ remote login จากภายนอกไดดวย ผบSกรSกมกจะ login ดวย user อน ๆ แลวท-าการ
เปล#ยนส!ทธ!ดวยการใช su เป:น root เขาปฏ!บต!การโจมต# คSณควรป$องกนการใช su เป:น root
ก'อนท#จะสายเก!นแก ท-าไดดงน#E
# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# ncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
#Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so

หากตองการใหสมาช! ก ใน group wheel สามารถ su เป: น root โดยไม'ต องใส'


password (กรณ#น#Eไม'แนะน-าใหท-า) ใหลบเครองหมาย # หนาบรรทด
auth sufficient pam_wheel.so trust use_uid
ต'อไปใหสราง admin user เขาไปใน wheel group เพอใหสามารถใชค-าสง su ได

บทท!1 3 Kernel Harden .....: 62


Linux Server Security

# usermod -G10 admin


ท-าแบบน#Eแลว user คนอน ๆ ไม'สามารถ login เขาระบบแลวใชค-าสง su เป:น root
ได ยกเวนคSณเขาระบบดวย admin ท-าไวใหผดแลระบบใชนะครบ ไม'ใช'เอาไวให Hacker ใช
ควรก-า หนด password ยาก ๆ หน'อ ย ถาคSณ อยากใหผบS กรS ก ไม' ส ามารถเขามาแกไข user
account ไดควรจดการกบไฟลcต'อไปน#E
# chattr +i /etc/passwd
# chattr +i /etc/shadow
# chattr +i /etc/group
# chattr +i /etc/gshadow
จากว!ธ#การท# แนะน-ามาทEงหมด user account บางคนเก!ดขAEนจากการต!ดตEง package
เช'น squid เวลาต!ดตEงจะสราง user, group ชอ squid เขามาดงนEนคSณจะเปล#ยน attribute +i กM
ควรท-าหลงจากต!ดตEง package ทSกอย'างท#ตองการแลวครบไม'เช'นนEนมนจะ add user ไมCได%
ถาจ-าเป:นตองท-าการต!ดตEง packet ใหม'หรอตองการเพ! ม แกไข User account ตองสงยกเล!ก
การป$องกนดวย -i ก'อนดงน#E
# chattr -i /etc/passwd
# chattr -i /etc/shadow
# chattr -i /etc/group
# chattr -i /etc/gshadow
เสรMจภารก!จเมอไรกMจดการ +i เหมอนเด!ม

ควรจ กดก รเข% ใช%ทรพย กรของล'กขC ย


ในตว OS linux ไดม#ข อจ-ากดการใชทรพยากร เพอความปลอดภยของระบบดวย
การจ-ากดการเขาใช memory จ-านวน process id หรออน ๆ ท#ตองการ คSณควรปรบปรSงระบบ

บทท!1 3 Kernel Harden .....: 63


Linux Server Security

ในส'วนน#Eเพอป$องกนการบSกโจมต#ท#เร#ยกกนว'า Denial of Service Attacks (DoS) การจ-ากดค'า


ในครEงน#Eจะม#ผลกบทSก ๆ User account ท#ม#ใน server เมอม#การ login เขามา ใหท-าดงน#E
# vi /etc/security/limits.conf
* hard core 0
* hard rss 5000
* hard nproc 35
ก-าหนดค'า hard core 0 หมายถAงหาม user เขามาสราง core file
ก-าหนดค'า hard rss 5000 หมายถAงอนSญาตใหใช memory ได 5 MB
ก-าหนดค'า hard nproc 35 หมายถAงอนSญาตใหม# process id ไดไม'เก!น 35
ก-าหนดค'า * หมายถAงทSก ๆ user ท# login เขา Server ยกเว%น root
ในการก-าหนดค'าเป:น * ม#ปoญหากบ account ของ service ต'าง ๆ เช'น apache, mysql
หรอ squid ท#ม#ในระบบทEงหมดจะท-าใหเปaดบร!การไดไม'สมบรณcเพราะบาง service ตองการ
ทรพยากรมากกว'าท#ก-า หนดให จAงไม'แ นะน-า ใหใช * แต'เปล# ยนเป:น group name (@users)
แทน ดงน#E
@users hard core 0
@users hard rss 5000
@users hard nproc 35
ตองไม'สบสนตรง users ตองไปเอาชL1อ group ท#ตองการมาใส'ลงไปเช'น @student

ควรควบคม Partition ท!1ม!ก รเข!ยนข%อม'ล


ในตอนต!ดตEง Linux ไดม#การแบ'ง Partition ต'าง ๆ ไวมากมาย แต'ละ Partition กMม#
ความส-าคญและการใชงานตามหนาท#ของตนเอง แต'ม#อย' 2 Partition ท#อนSญาตให user เขาไป
อ'าน เข#ยน ขอมลไดนนกMค อ Partition home และ tmp ผบSกรSกมกใชช'องว'างของการเปaดให

บทท!1 3 Kernel Harden .....: 64


Linux Server Security

เข#ยนขอมลไดน#E ส'งไฟลcพาหะ เขาท-าลายระบบ ส'วนมากท#ผเข#ยนพบผบSกรSก จะส'งไฟลcมา


ท-างานใน /tmp แลวแตกตวออกเป:นค-าสงต'าง ๆ ท# เราใชกนบ'อย ๆ เช'น ls , netstat, route ,
login และเปaดประตไวใหเขามาท-างานแทน root ไดตลอดเวลา กว'าเราจะรกMถกยAดหมดแลว
เพราะเราไม'สามารถ login ดวย root ได หรอบางท#กM login ไม'ไดเลยเพราะเขาลบค-าสง login
ท!Eง
ค'า option ท#เก#ยวกบความปลอดภยส-าหรบจดการกบ partition ม#ดงน#E
1. defaults อนSญาตใหท-าไดทSกอย'าง เช'น quota, read-write และ suid
2. noquota ไม'ใหใช users quota
3. nosuid ไม'ให SUID/SGID เขาใช
4. nodev ไม'ใหม#การเขามาดวยอSปกรณcพ!เศษ (special devices)
5. noexec ไม'ใหประมวลผล binary file
6. quota อนSญาตใหท-า users quota ได
7. ro อนSญาตใหอ'านไดเพ#ยงอย'างเด#ยวเท'านEน
8. rw อนSญาตใหอ'านและเข#ยนได
9. suid อนSญาตให SUID/SGID เขาใชได
# vi /etc/fstab
ค'าเด!มจะเป:นอะไรอย' อาจต'างจากตวอย'างไดเช'นม#การท-า disk quota กMไม'เป:นไร
LABEL=/tmp /tmp ext3 defaults 1 2
LABEL=/home /home ext3 defaults 1 2
ใหแกไขและเพ!มค-าท#ม#ตวเขมลงไปหลง defaults
LABEL=/tmp /tmp ext3 defaults,nosuid,noexec 1 2
LABEL=/home /home ext3 defaults,nosuid 1 2

บทท!1 3 Kernel Harden .....: 65


Linux Server Security

การเขาไปแกไขไฟลc fstab หากม#การแกไขค'าใน Partition ใดกMตามคSณตอง remount


partition นEนใหม'ท-าดงน#E
#mount /tmp -oremount
#mount /home -oremount
หลงจาก remount แลวใหท-าการตรวจสอบใหแน'ใจดวยค-าสง
#cat /proc/mounts
/dev/sda11 /tmp ext3 rw,nosuid,noexec 1 2
/dev/sda6 /home ext3 rw,nosuid 1 2

ส!งท#ตองท-าต'อไปหลงจากท#รว!ธ# แกไขค'า ใน fstab แลวคอการเลอกป$อ งกนเช' น


Partition Boot เพราะเป:นส'วนท#ส-าคญมากหากปล'อยใหผบSกรSกเขา server และสามารถบSกเขา
มาแกไขค'าใน partition น#Eได จะม#ผลท-าใหทSกครEงท#เครอง reboot ค-าสงและบร!การต'าง ๆ ใน
server จะเปaดประตหลงบาน( Backdoor) ไวรอผบSกรSกตลอดเวลาเลยครบแต'ตองไม'ลมถาจะ
update kernel ตองท-าการ mount ใหเป:น default เหมอนเด!ม ว!ธ#การป$องกนท-าไดง'าย ๆ ดงน#E
#vi /etc/fstab
ค'าเด!มจะเป:นอะไรอย' อาจต'างจากตวอย'างไดเช'นม#การท-า disk quota กMไม'เป:นไร
LABEL=/boot /boot ext3 defaults 1 2
ใหแกไขเป:น
LABEL=/boot /boot ext3 defaults,ro 1 2
บนทAกแลวอย'าลม remount
#mount /boot -oremount
และตองไม'ลมตรวจสอบ
#cat /proc/mounts

บทท!1 3 Kernel Harden .....: 66


Linux Server Security

/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 แบบเด!มก'อน

ควรย% ยโปรแกรม RPM ไปไว%ท!1ปลอดภย


โปรแกรมใน RedHat หรอใน Linux ค'า ยอน ๆ ท# ท-า ใหเราใชงานง' า ยคงไม'พ น
โปรแกรมท#ท-าหนาท# Install, Erase หรอ Update package ต'าง ๆ ท#สะดวกและรวดเรMว ดงนEน
ผบSกรSกกMม#โอกาสน-าความสะดวกน#Eท-าการต!ดตEงโปรแกรมต'าง ๆ ท#ส'งเขามาใน Server จAงควร
อย'างย!งท#จะตองเตร#ยมการป$องกนโดยใหยายโปรแกรมท# ใชในการต!ดตEง รวมถAงโปรแกรม
ประเภท compress file ต'าง ๆ ทSกตวดวย เช'น
# chmod 700 /bin/rpm
# mount /dev/fd0
# mv /bin/rpm /mnt/floppy
# umount /dev/fd0
ส!งท#เหMนเป:นการเปล# ยน mode ใหใชโปรแกรม rpm ไดเฉพาะ root ไม'อนSญาตให
user อน ๆ เขามาเร#ยกใชได และยงตองยายท# อย'ไปไวท# /mnt/floppy ผบSกรSกจะไม'สามารถ
เร#ยกใชตามปกต!ได จากประสบการณcผเข#ยน พบว'า Hacker ท#ส'งไฟลcเขามาท# Server มกเป:น

บทท!1 3 Kernel Harden .....: 67


Linux Server Security

ไฟลcประเภทท#ม#นามสกSล .tar หรอ .gz มากกว'าท#จะเป:นไฟลcแบบ rpm ดงนEนขอแนะน-าใหท-า


แบบน#Eกบโปรแกรม tar, gzip, gunzip ร'วมดวยจะเป:นการด#เพราะหากป$องกนเฉพาะตระกล
rpm ย'อมไม'ปลอดภยเท'าท#ควร คราวน#EเวลาคSณจะใช rpm, tar คSณตองไม'ลมยายกลบไปไวท#
/bin อย'า งเด!มก'อน หลงจากใชงานเสรMจตองยายกลบดวยนะครบ เหMนหรอยงครบเรองด
เหมอนเลMก ๆ แต'ผมเจอมามากมาย ระดบมออาช#พเลยครบ พวกน#Eชอบส'งไฟลcเขามาแตกตว
ออกแลวไปทบไฟลcเด!มใน /bin ท-าใหเราเร#ยกใชเมอไรจะเปaดช'องทางใหเขามานงเล'นใน
Server ไดทนท# แถมท ายดวยการลบหรอไม' ค วรต! ดตE ง โปรแกรมภาษาซ#ท# ใช compile
โปรแกรมไวบนเครอง server ถาจ-าเป:นตองใชงานหลงเสรMจภาระก!จตองถอนออกใหหมด

แก%ไขคC Shell Logging


ส-าหรบผท#ใช linux ใหม' ๆ มกชอบมากท#จะใชว!ธ#กดเร#ยกค-าสงเด!มท#เคยเร#ยกใชมา
ก'อนหนา ดวยการกดแป$นลกศรขAEน (Up arrow key) บางคนกดกนเพล!นดวยความชอบใจว'า
มนจ-า ไวมากด# คSณรหรอไม'ว ' า linux จ-าค-าสงเด!ม ไดสงถA ง 1000 ค-าสงเลยเช# ยว แต'ส! งท# ด
เหมอนด# อาจเป:นภยอย'างหาตวจบไม'ไดเลย เพราะหากคSณหรอ user ท-าการใด ๆ ท#ม#การส'ง
ค'า password เขาระบบ แลวม#การผ!ดพลาดขAนE มนกMจะจ-าและเกMบไวใหดวย คนท#ใชเป:นเขาเขา
มาเปaดไฟลcท#เกMบค'าน#EดกMสามารถร password ของคSณไดอย'างไม'ตองเอาไปเดาใหยาก ส!งท#คSณ
ชอบเกM บ อย'ท# ไฟลc .bash_history บนทA ก ใน home directory ของทS ก ๆ user ดงนE นคS ณ ควร
ก-าหนดค'าใหจ-าเท'าท#จ-าเป:นกMพอหากเก!นค'าท#ก-าหนด มนจะลบค-าเก'าออก ท-าไดดงน#E
# vi /etc/profile
คนหาค-าว'า HISTSIZE แลวเปล#ยนค'าตามตวหนา
HISTSIZE=10
HISTFILESIZE=0

บทท!1 3 Kernel Harden .....: 68


Linux Server Security

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE


HISTFILESIZE TMOUT INPUTRC
การแกไขไฟลcน#Eจะม#ผลกMต'อเมอท-าการ logout แลว login ดวย root กลบเขามาใหม'

ก รเกsบ log file ท งเครL1องพ(มพ


ใหไปแกไขไฟลc syslog.conf ดงน#E
# vi /etc/syslog.conf
พ!มพcบรรทดน#Eต'อทายไฟลc
authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
หลงจากบนทAกแลวใหสง #/etc/rc.d/init.d/syslog restart

ควรก หนด permission ให%กบ script file


ไฟลcท#ม#ความส-าคญอย'างมากในการควบคSมการ start , stop, restart daemon ต'าง ๆ
ท#ม#ไวส-าหรบใหผดแลระบบเร#ยกใชงานไดจะอย'ท# /etc/rc.d/init.d ควรเป:น script ท#ท-าไวให
root เร#ยกใชไดเท'านEน ไม'ควรปล'อยให user ปกต!เขามาเร#ยกใชได ใหสง
# chmod -R 700 /etc/rc.d/init.d/*

ควรปMดก รแสดงข%อม'ล OS
ในการ boot หรอขณะท# login เขาระบบมกจะม#ค-าอธ!บายเรองของคSณสมบต! OS
เช'น เป:น Fedora Release 8.x หรอขอมลอน ๆ แลวแต'ละ version จะก-าหนด จะเป:นช'องทาง
ใหผไม'ประสงคcด#สามารถน-าไปคนหาทางบSกรSกเขา Server ไดเป:นอย'างด# คSณควรท-าการปaด
การแสดงค'าเหล'าน#E โดย
# rm -f /etc/issue

บทท!1 3 Kernel Harden .....: 69


Linux Server Security

# rm -f /etc/issue.net
ใหลอง logout แลวท-า การ login เขาระบบมาใหม'จ ะพบว'า หนาจอม#แต'ข อความ
login ไม'ม#การโฆษณาเก#ยวกบ version ต'าง ๆ ใหเหMนอ#ก

ควรต*งคC ให% root เปOนเจ% ของโปรแกรมค ส1งเทC น*น


ในการต!ดตEง Linux ค'า permission ท#ม#มาใหในแต'ละโปรแกรม จะถกก-าหนดมาให
อย'างอตโนมต!จากผเข#ยน Linux เพราะตองการสรางงานท#ง'ายและส-าเรMจรป หมายความว'าต!ด
ตEงง'าย ใชงานง'าย ต!ดแลวใชไดทSกบร!การ จAงม#การก-าหนดค'า permission ใหกบโปรแกรม
ส-าคญหรอโปรแกรมหลกบางอย'าง ใหทSก user สามารถเร#ยกใชงานไดอย'างสะดวก จAงเป:น
ช' อ งทาง หรอ Back door ใหกบผไม' ป ระสงคcด #บ S กรS ก เขามายง server ไดตลอดเวลา ค' า
permission ดงกล'าวคอการตEง permission ใหม# bit เป:น +s ทEง user และ group เร#ยกว'า SUID
และ SGID เร#ยกว'า root-owned program หมายถAงการตEงค'า permission ของโปรแกรมท# root
ม# ไวเร# ย กใชใหม# บ าง bits ม#ค ' า เป: น +s หรอก- า หนดเป: นตวเลขไดเป: น 04000 และ 02000
(SUID/SGID : -rwsr-xr-x, -r-xr-sr-x) คS ณ สามารถยกเล! ก ไดด วยการใชค- าส ง chmod a-s
<program name> โปรแกรมต'าง ๆ ลวนม#ความส-าคญต'อการเร#ยกใชงานของ root ดงนEนคSณ
ควรดแล และก-าหนดค'าการใชงานอย'างระมดระวง ขอจ-ากดของโปรแกรมเหล'าน#E คอ
- คSณไม'เคยใชงานโปรแกรมเหล'าน#Eเลย
- คSณไม'ตองการให user ท#ไม'ใช' root เร#ยกใชงาน
- คSณอาจเร#ยกใชบางครEงแต'ไม'ตองการให su เป:น root เขามาเร#ยกใชงาน

ว!ธ#การคนหาและยกเล!กท-าไดดงน#E
ข*นท!1 1 คนหา file ท#ม# flag +s ดวยค-าสง find ตามตวอย'าง ส-าหรบบรรทดท#ม#ต วอกษรเขม
หมายถAงไฟลcท#ม#ความส-าคญ ควรเปaดปaด flag +s ส-าหรบให su ใชงานดวยความระมดระวง

บทท!1 3 Kernel Harden .....: 70


Linux Server Security

อย'างมาก ถาไม'จ-าเป:นกMควรยกเล!ก เพราะเป:นโปรแกรมท#ใชเปล#ยนแปลงค'าต'าง ๆ ไดทSกส'วน


ในระบบความปลอดภย
# find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;
-rwxr-sr-x 1 root root 5872 Nov 29 2006 /sbin/netreport
-rwsr-xr-x 1 root root 12280 May 30 2007 /sbin/pam_timestamp_check
-rwsr-xr-x 1 root root 18668 May 30 2007 /sbin/unix_chkpwd
-rwsr-xr-x 1 root root 38616 Aug 2 18:57 /bin/umount
-rwsr-sr-x 1 root root 24060 Apr 17 2007 /bin/su
-rwsr-xr-x 1 root root 41652 Apr 12 2007 /bin/ping
-rwsr-xr-x 1 root root 57652 Aug 2 18:57 /bin/mount
-rwsr-xr-x 1 root root 36680 Apr 12 2007 /bin/ping6
--wsr-x--- 1 root root 0 Nov 5 14:14 /media/.hal-mtab-lock
-rwsr-xr-x 1 root root 172200 Mar 31 2007 /usr/libexec/openssh/ssh-keysign
-rwx--s--x 1 root utmp 6944 Jul 28 2006 /usr/libexec/utempter/utempter
---s--x--x 2 root root 159096 Oct 2 2006 /usr/bin/sudo
-rwsr-xr-x 1 root root 24556 May 23 2007 /usr/bin/newgrp
-rwsr-xr-x 1 root root 9100 Dec 13 2006 /usr/bin/rsh
-rwsr-sr-x 1 root root 315384 Aug 6 14:16 /usr/bin/crontab
-rwx--s--x 1 root slocate 23856 Nov 26 2006 /usr/bin/locate
-rwsr-xr-x 1 root root 46748 May 23 2007 /usr/bin/chage
-rwsr-xr-x 1 root root 14388 Dec 13 2006 /usr/bin/rlogin
-rws--x--x 1 root root 19128 Aug 2 18:57 /usr/bin/chsh
-rwsr-xr-x 1 root root 22932 Jul 17 2006 /usr/bin/passwd

บทท!1 3 Kernel Harden .....: 71


Linux Server Security

-rwxr-sr-x 1 root nobody 79388 Mar 31 2007 /usr/bin/ssh-agent


---s--x--x 2 root root 159096 Oct 2 2006 /usr/bin/sudoedit
-rwxr-sr-x 1 root mail 16020 Jul 13 2006 /usr/bin/lockfile
-r-xr-sr-x 1 root tty 10420 Sep 4 20:19 /usr/bin/wall
-rwsr-xr-x 1 root root 44040 Aug 23 2006 /usr/bin/at
-rws--x--x 1 root root 17900 Aug 2 18:57 /usr/bin/chfn
-rwsr-xr-x 1 root root 18736 Dec 13 2006 /usr/bin/rcp
-rwsr-xr-x 1 root root 47352 May 23 2007 /usr/bin/gpasswd
-rwxr-sr-x 1 root tty 10984 Aug 2 18:57 /usr/bin/write
-rwsr-xr-x 1 root root 7048 Nov 29 2006 /usr/sbin/usernetctl
-rwxr-sr-x 1 root lock 16572 Jul 20 2006 /usr/sbin/lockdev
-rwsr-xr-x 1 root root 312956 Jul 25 2006 /usr/sbin/pppd
-r-s--x--- 1 root apache 11740 Jul 14 22:28 /usr/sbin/suexec
-rwxr-sr-x 1 root smmsp 827324 Sep 17 22:59 /usr/sbin/sendmail.sendmail
-rws--x--x 1 root root 34796 Oct 3 2006 /usr/sbin/userhelper
-rwsr-xr-x 1 root root 6416 Aug 22 2006 /usr/sbin/ccreds_validate
-rwsr-xr-x 1 root root 144548 Sep 5 01:20 /usr/kerberos/bin/ksu
-rwsr-x--- 1 root squid 15452 Jul 14 22:31 /usr/lib/squid/pam_auth
-rwsr-x--- 1 root squid 17360 Jul 14 22:31 /usr/lib/squid/ncsa_auth

ข*นท!1 2 ยกเล!กดวย chmod


# chmod a-s /usr/bin/chage
# chmod a-s /usr/bin/gpasswd

บทท!1 3 Kernel Harden .....: 72


Linux Server Security

# chmod a-s /usr/bin/wall


# chmod a-s /usr/bin/chfn
# chmod a-s /usr/bin/chsh
# chmod a-s /usr/bin/newgrp
# chmod a-s /usr/bin/write
# chmod a-s /usr/sbin/usernetctl
# chmod a-s /bin/ping6
# chmod a-s /bin/mount
# chmod a-s /bin/umount
# chmod a-s /bin/ping
# chmod a-s /sbin/netreport

ปรบแตCงคC kernel parameter ให%ปลอดภย


ในการต!ดตEงใชงาน Linux Server ทSกค'ายและทSก version ผดแลระบบสามารถท#จะ
ส'งค'า parameter ต'าง ๆ ใหกบ kernel เพอใหเก!ดความปลอดภยในการใชงานมากขAEนไดโดย
การส'งค'าบางอย'างเก#ยวกบ network หรอค'าท#เก#ยวของกบการจดสรรทรพยากรในขณะท# OS
ก-าลงท-างานใหบร!การลกข'ายสามารถท-าได 2 ทาง คอสามารถส'งค'าดวย echo เขาไปในไฟลc
ต'าง ๆ ท#อย'ใน /proc/sys ก-าหนดให network ท-างานตามท#คSณตองการได หรอถาตองการให
ท-างานทSกครEงท#เครอง reboot ผท# linux มกน-าค-าสงต'าง ๆ ไปฝากไวท#ไฟลc /etc/rc.local ว!ธ#ท#
สองท#ผเข#ยนแนะน-าคอการส'งค'าอย'างถาวรให kernel เมอเครองม#การ reboot จะรบค'าท#คSณตEง
เขาควบคSมระบบการท-างานตามตองการทนท#โดยท#คSณสามารถเขาไปเพ! มค'าหรอแกไขค'า
parameter ต'าง ๆ ไดท#ไฟลc /etc/sysctl.conf ในท#น#Eจะขอแยกอธ!บายและใส'ค'าเป:นเรอง ๆ ว'า
คSณตองการจะควบคSม อะไรบางเพอความปลอดภยของ Server ( ส!งท# ควรรคอการส'งค'า

บทท!1 3 Kernel Harden .....: 73


Linux Server Security

Parameter ใหกบ kernel ท# boot ไปแลวจะม# ผ ลท- า ให kernel รบค' าดวยการบงคบ จA ง ไม'
สามารถใชค-าสง Restart network เพอยกเล! กค' าท# ส' งเขาไป เช' นส' งค' า 1 ไม' ให ping ตาม
ตวอย'างท# 1 หากตองการยกเล!กตองส'งค'า 0 ไม'ใช'การใส'เครองหมาย # )

1. ว(ธ!ปtองกนก รตอบรบค ส1ง ping


เป:นว!ธ #ก ารป$อ งกนการส' ง package ใหญ' ๆ มาถล' ม Server ท#เร#ย กกนว' า Ping of
Death ซAงในอด#ตเป:นเรองท# Server กลวกนมาก ผดแลระบบอาจไม'ชอบการเข#ยน Script ให
firewall ปaดการ ping สามารถใชว!ธ#น#Eไดง'ายกว'ามาก ท-าไดดงน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.icmp_echo_ignore_all = 1
บนทAกแลวอย'าลมว'าตอง
# /etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.icmp_echo_ignore_all = 1

2. ขดขว งก รร%องขอก ร Broadcasts


ในระบบ Network ภายในองคcกรเด#ยวกน หากม#ผไม'ประสงคcด#ส'งสญญาณรองขอ
การ Broadcasts (ท# ip หมายเลขสSดทาย เช'น 192.168.1.255) เพอกระจาย package ไปทSก ip
address ใน Network จะท-าใหระบบหยSดใหบร!การได คSณควรป$องกนในส'วนน#Eดวย
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.icmp_echo_ignore_broadcasts = 1

บทท!1 3 Kernel Harden .....: 74


Linux Server Security

บนทAกแลวอย'าลมว'าตอง
#/etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1

3. ปtองกน Source route


Routing และ Routing Protocol สรางปoญหาใหกบ Server เป:นอย'า งมากเพราะ IP
Source Routing ในขณะท-างานจะเป:นตวท#บรรจSรายละเอ#ยดเสนทางท#จะส'ง packet ไปยงจSด
หมายปลายทางใด ซAงเป:นอนตรายอย'างมากเพราะถาม#ผไม'ประสงคcด#ส'งค'าเพอการโจมต#เขา
มาพรอมกบ source route packet กMสามารถส'งถAงเครองเป$าหมายและม#การโตตอบท-างานตาม
เงอนไขของผบSกรSกไดทนท# จAงเป:นการสมควรอย'างย!งท#ตองร#บยกเล!กค'า ip routing ดงนEนจAง
ควรท#จะปaดเสนทางอนตรายน#E ดงต'อไปน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
บนทAกแลวอย'าลมว'าตอง
#/etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.conf.all.accept_source_route = 0
# sysctl -w net.ipv4.conf.default.accept_source_route = 0

บทท!1 3 Kernel Harden .....: 75


Linux Server Security

4. ปtองกน TCP SYN Cookie Attack


คงเคยไดย!น DoS (Denial of Service) กนบ'อย ๆ ว'าม#การส'ง package หรอย!งค-าสง
มาใน Server จ-านวนมาก ๆ ในเวลาพรอม ๆ กนท-าให server หยSดบร!การในส'วนต'าง ๆ เหMน
ตามหนงสอ Hacker ชอบเข# ย นกนมากมาย TCP SYN Cookie Attack กM เป: น หนA งใน DoS
เหมอนกน เป:นว!ธ#การส'ง Package มาพรอม ๆ กบขอมล หากใครโดนเขาจะม#อาการ Traffic
หนาแน'นจนไม'สามารถใหบร!การลกข'าย หรอถาหนกหน'อยเครองกM Reboot ได จAงควรร#บปaด
เส#ยก'อนท#จะถกโจมต# ท-าดงน#Eครบ
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.tcp_syncookies = 1
บนทAกแลวอย'าลมว'าตอง
#/etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.tcp_syncookies = 1

5. ปtองกนก ร Redirect Package


ในขณะท#ระบบม#การใชเสนทางในการส'ง packet ไปยงปลายทางผ!ดพลาดเก!ดขAEน
icmp redirect packet จะใชว!ธ#ยอนกลบ (Redirect)ไปถาม router ว'าเสนทางท#ถกตองอย'ท#ไหน
ถาผบSกรSกมกส'ง package แทรกเขาระบบในขณะน#EไดกMสามารถท# จะท-าการเปล# ยนเสนทาง
routing table ท#จะไปตาม host ต'าง ๆ จนท-าใหระบบรกษาความปลอดภยไม'สามารถป$องกน
ได ดงนEนจAงควรป$องกนไม'ให Server รบค'าการ Redirect เมอม#การ ping ท-าไดดงน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ

บทท!1 3 Kernel Harden .....: 76


Linux Server Security

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

6. Enable bad error message Protection


การใช Linux ท#ผ'านมาส'วนมากจะพบว'า เมอม#เ หตSการณcเก# ยวกบระบบม#ปoญหา
linux จะไม'แจงขอความเตอนใหผดแลระบบทราบ ท-าใหการคนหาสาเหตSท-าไดยาก ดงนEน
คSณควรสงใหม#การแจงขอความเตอนทSกครEงท#ม#เหตSผ!ดพลาดในระบบ Network เท'าท# OS จะ
แสดงได ท-าไดดงน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.icmp_ignore_bogus_error_responses = 1
บนทAกแลวอย'าลมว'าตอง
# /etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.icmp_ignore_bogus_error_responses = 1

บทท!1 3 Kernel Harden .....: 77


Linux Server Security

7. Enable IP spoofing protection


ในบางครEงคSณอาจเคยตรวจพบ IP Address แปลก ๆ แอบบSกรSกเขามาใชทรพยากร
ใน Server ไดจาก Log file แสดงว'าม#การเปaดประตใหผบSกรSกเขาออกไดตามใจชอบ ซA งเป:น
ช'องทางท#ท-าใหเก!ดปoญหาการบSกโจมต#เพอใหระบบหยSดท-างาน (DoS) ไดตลอดเวลา คSณควร
ป$องกนดงน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.conf.all.rp_filter = 1
บนทAกแลวอย'าลมว'าตอง
#/etc/rc.d/init.d/network restart
กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E
# sysctl -w net.ipv4.conf.all.rp_filter = 1

8. Enable Log Spoofed, Source Routed and Redirect Packets


หาก Server ท-างานตามปกต!กMไม'ตองกงวลอะไรมาก แต'พอม#ปoญหาผดแลระบบมก
จะตองท-าการคนหา ศAกษาปoญหาท#เก!ดขAEน ดงนEนคSณควรบนทAกการผ!ดพลาดต'าง ๆ ไวใน log
file ในเรองต' า ง ๆ ท# ม# ก ารปลอม IP เขามาเพอให Server ท- า งานผ! ด ปกต! หรอกรณ# icmp
redirect packet ตามขอ 5 ท-าไดดงน#E
# vi /etc/sysctl.conf
เพ!มต'อทายไฟลcไดเลยครบ
net.ipv4.conf.all.log_martians = 1
บนทAกแลวอย'าลมว'าตอง
# /etc/rc.d/init.d/network restart

บทท!1 3 Kernel Harden .....: 78


Linux Server Security

กรณ#ไม'ตองการ restart network ใหสงโดยตรงไดดงน#E


# sysctl -w net.ipv4.conf.all.log_martians = 1
9. ค%นห ไฟลท!1ไมCม!เจ% ของ
เมอใดกMตามท# ปรากฏว'าม#ไฟลcหรอ directory ท#ไม'ม#เจาของอย'ใน Server แสดงให
เหMนว'าม#การน-าไฟลcท#ไม'ม#เจาของมาใส'ไวใน server หรอม#ผบSกรSกจากภายนอกไดส'งขอมล
เขามาใน Server แลว และก-าลงปฏ!บต!การบางอย'างท#ไม'คาดค!ด อาจท-าใหระบบเส#ยหายอย'าง
ใหญ'หลวง คSณควรคนหาไฟลcท#ไม'ม#เจาของและลบท!Eงหรอถาเป:นการน-ามาใส'ไวเองกMต อง
ท-าการ chown เพอใหรว'าเป:นของ user คนใดนอกนEนใหร#บลบท!Eงเพอความปลอดภยของ
Server ท-าดงน#E
# find / -nouser -o -nogroup
ใหคนหาซE-าอ#กครEงถาหากม#ไฟลcดงกล'าวใน /dev ไม'นบรวมและไม'ตองไปลบหรอ
แกไข
10. ค%นห ไฟล “.rhosts”
ใน Server ไม'ควรปล'อยใหม#ไฟลc .rhosts อย'เพราะเป:นไฟลcท# เก!ดจากการ Remote
เขาไปยง server หากพบว'าม#ใหลบท!Eงเพราะจะท-าใหผบSกรSกใชเป:นช'องโหว'ในการโจมต#ได
เป:นหนาท#ประจ-าของผดแลระบบท#ตองคนหาและลบท!Eง ท-าไดดงน#E
# find /home .rhosts
คSณควรใช crontab ตEงเวลาตรวจสอบไฟลcน#Eจ ะด#กว'า จะไดไม'ล มคนหาหรออาจ
เข#ยน script ใหส'ง mail ไปบอกคSณเมอม#ไฟลcน#EปรากฏขAEนใน Server ตามตวอย'างต'อไปน#E
# vi /etc/cron.daily/rhosts.cron
พ!มพc script ต'อไปน#Eลงไปเพอใหแจงกบ root ทSกวนเมอม#ไฟลc .rhosts
#!/bin/sh
/usr/bin/find /home -name .rhosts | (cat <<EOF

บทท!1 3 Kernel Harden .....: 79


Linux Server Security

This is an automated report of possible existent ..rhosts files on


the server deep.openna.com, generated by the find utility command.
New detected ..rhosts. files under the ./home/. directory include:
EOF
cat
) | /bin/mail -s "Content of .rhosts file audit report" root
เสรMจแลวใหเปล#ยน mode เป:น 550
# chmod 550 /etc/cron.daily/rhosts.cron

บทสรป
แมว'าจะม#การแนะน-าการปรบค'าต'าง ๆ ใหกบ 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
สามารถใชงานไดด#เหมอนกน

บทท!1 3 Kernel Harden .....: 80


Linux Server Security

บทท 4 Web Server Security

วตถประสงค
➢ เพอใหรจกวธปองกนการบกรก Web Server
➢ เพอใหเขาใจการยายทอย$เพอความปลอดภย
➢ สามารถน,าไปประยกต0ใชกบงานจรงไดอย$างถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ httpd เป:น Open source
2. เนBอหาในบทนB ส$วนทเป:นการตดตBง การแกไข จะเนนเป:นตวหนา (Bold)
3. ทดลองปฏบตตามขBนตอนทเรยงไว หากท,าผดพลาดใหเรมตนใหม$ด วยการ
ถอนการตดตBงโปรแกรมเดมออกจากเครองจะดกว$าการท,าซB,า

ก รต(ดต*งและใช%ง นโปรแกรม
ในการตดต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บางอย$างและท,าการใด ๆ ซ` งรบกวนหรอก$อใหเกด

บทท!1 4 Web Server Security .....: 81


Linux Server Security

ความเสยหายใหกบขอมลใน Server ได การปองกนเหตรายท,าไดไม$ยากนก มอย$ดวยกน 2


ระดบ ซ`งจะไม$กล$าวรวมถ`งเรองการใช Firewall วธการท,าไดดงนBครบ

20 ว(ธ!ก รท ให% Web Server ม!คว มปลอดภย


1. ควรตดตามและปรบปรง (Update) โปรแกรม httpd ใหเป:น Version ทใหม$ล$าสด
เสมอเพราะเป:นการแกปcญหาต$าง ๆ ทเกดข`Bนจากการใชงานใน Version ก$อน
2. ใหซ$อน Version ของโปรแกรมและขอมลทมผลกบการโจมต ใหแกไขในไฟล0
httpd.conf ดงนB
# vi /etc/httpd/conf/httpd.conf
จากเดม
ServerSignature On
แกไขเป:น
ServerSignature Off
จากเดม
ServerTokens OS
แกไขเป:น
ServerTokens Prod
:wq
ในขอนBตามปกตถามขอผดพลาดในการเรยกดเวRบมกพบว$ามการรายงาน Error 4xx
บรรทดล$างของ Web Browser จะมขอความเป:นรายละเอยดของ Server ดงนB

บทท!1 4 Web Server Security .....: 82


Linux Server Security

Bad Request
Your browser sent a request that this server could not understand.

Apache/2.2.0 (Fedora) Server at 192.168.1.11 Port 80

หลงแกไขแลวจะไม$แสดงบรรทดล$างเพอปองกนไม$ใหผทจบกรกรว$าเครองเปา
หมายใช 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 />

บทท!1 4 Web Server Security .....: 83


Linux Server Security

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

บทท!1 4 Web Server Security .....: 84


Linux Server Security

9. รปแบบในการก, า หนดค$ า ใน tag Options หากไม$ ไดยกเลกค$ าทB ง หมดดวยค$ า


None แต$มการก,าหนดการยกเลกหลายค$าเช$นในขอ 5,6,7 และ 8 สามารถก,าหนดไวบรรทด
เดยวกนไดโดยการแยกค$าต$าง ๆ ดวยการเวนช$องว$าง 1 เคาะ ดงนB
Options -ExecCGI -FollowSymLinks -Indexes
10. ปองกนไม$ใหลกข$ายดไฟล0 .htaccess และ .htpasswd ไดดวยการสงไม$อนญาต
ใหดไฟล0ทข`Bนตนดวย .ht ดงนB
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
11. ใช Module ทช$ว ยเรองความปลอดภยมาเป:นเครองมอในการตรวจสอบการ
ท,างานมชอว$า mod_security สามารถไป download ไดท http://www.modsecurity.org/ ซ`งจะ
เพมความสามารถอกหลายส$วนตามค$มอของโปรแกรม ดงนB
✔ Simple filtering
✔ Regular Expression based filtering
✔ URL Encoding Validation
✔ Unicode Encoding Validation
✔ Auditing
✔ Null byte attack prevention
✔ Upload memory limits
✔ Server identity masking
✔ Built in Chroot support

บทท!1 4 Web Server Security .....: 85


Linux Server Security

✔ คณสมบตอน ๆ ยงมอกมากมาย ดรายละเอยดไดจากเวRบ


http://gotroot.com/ หรอ http://www.tatica.org/
กรณตวอย$างในบทนBทดลองโดยใช Fedora กRใหไป Download ไฟล0 mod_security
ไดจากเวRบไซต0 http://hany.sk/mirror/fedora/extras/6/i386/ ซ`งจะมไฟล0 mod_security-2.1.3-
1.fc6.i386.rpm ซ`งสามารถน,าไปตดตBงใชงานไดดวยค,าสง
# rpm -ivh mod_security-2.1.3-1.fc6.i386.rpm
หลงต ดเสรR จย งใช งานไม$ ได เพราะมแต$ต ว module ตองไป Download ไฟล0ท
เกยวของกบการตBงค$าต$าง ๆ ทจะสรางความปลอดภยในแต$ละส$ว น (ตามค$ม อการใชงาน
โปรแกรม) ไดท เวR บ ไซต0 http://www.gotroot.com หร อดวธต ดตB ง ใช งานได จากเวR บ
http://www.tatica.org/tux/manual/mod_security-fc6_HOWTO.html มวธการท,าแบบเป:นขBน
ตอนง$าย ๆ ดงขBนตอนต$อไปนB
หลงตดตBงโปรแกรมเสรRจ ใหท,าการสราง Directory ส,าหรบเกRบค$า Configuration
ดงนB
# mkdir /etc/modsecurity
# cd /etc/modsecurity
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/exclude.conf
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/rules.conf
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/blacklist.conf
# wget http://www.gotroot.com/downloads/ftp/mod_security/
2.0/apache2/blacklist2.conf

บทท!1 4 Web Server Security .....: 86


Linux Server Security

# 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

บทท!1 4 Web Server Security .....: 87


Linux Server Security

# HTTP policy rules


# Include modsecurity.d/modsecurity_crs_30_http_policy.conf
# Here comes the Bad Stuff...
# Include modsecurity.d/modsecurity_crs_35_bad_robots.conf
# Include modsecurity.d/modsecurity_crs_40_generic_attacks.conf
# Include modsecurity.d/modsecurity_crs_45_trojans.conf
# Include modsecurity.d/modsecurity_crs_50_outbound.conf
# Search engines and other crawlers. Only useful if you want to track
# Google / Yahoo et. al.
# Include modsecurity.d/modsecurity_crs_55_marketing.conf
# Put your local rules in here.
# The existing example is for the CVE-2007-1359 vulnerability
# Include modsecurity.d/modsecurity_localrules.conf
#</IfModule>
<IfModule mod_security.c>
# Only inspect dynamic requests
# (YOU MUST TEST TO MAKE SURE IT WORKS AS EXPECTED)
#SecFilterEngine DynamicOnly
SecFilterEngine On
# Reject requests with status 500
SecFilterDefaultAction "deny,log,status:500"
# Some sane defaults
SecFilterScanPOST On

บทท!1 4 Web Server Security .....: 88


Linux Server Security

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

บทท!1 4 Web Server Security .....: 89


Linux Server Security

#And now, the rules


#Remove any of these Include lines you do not use or have rules for.
#First, add in your exclusion rules:
#These MUST come first!
Include /etc/modsecurity/exclude.conf
#Application protection rules
Include /etc/modsecurity/rules.conf
#Comment spam rules
Include /etc/modsecurity/blacklist.conf
#Bad hosts, bad proxies and other bad players
Include /etc/modsecurity/blacklist2.conf
#Bad clients, known bogus useragents and other signs of malware
Include /etc/modsecurity/useragents.conf
#Known bad software, rootkits and other malware
Include /etc/modsecurity/rootkits.conf
#Signatures to prevent proxying through your server #only rule these rules if your server is
NOT a proxy
#Include /etc/modsecurity/proxy.conf
#Additional rules for Apache 2.x ONLY! Do not add this line if you use Apache 1.x
Include /etc/modsecurity/apache2-rules.conf
</IfModule>
หลงแกไขเสรRจเรยบรอยแลวใหสง
# /etc/init.d/httpd restart

บทท!1 4 Web Server Security .....: 90


Linux Server Security

ส$วนวธการตBงกฎต$าง ๆ ในการ Filter หรอปองกนอะไรตอง Download ค$มอมาอ$าน


ประกอบเพราะไฟล0 Configuration ทBง 7 ไฟล0ถกตBงค$า Default ในการรกษาความปลอดภยมา
ใหแลว
12. ยกเลก module ทไม$ไดใชงาน ใหแกไขไฟล0 httpd.conf ดงนB
# grep LoadModule httpd.conf
จะพบว$าม Module มากมายทถกเรยกข`Bนมาท,างานขณะท Server ก,าลงท,างาน ให
เลอกดรายการ Module ทไม$ไดใชงานบางตว เช$น
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi,
mod_autoindex
ใหแกไขค$าในไฟล0 httpd.conf ดงนB
# vi /etc/httpd/conf/httpd.conf
บรรทดทตองการยกเลกการ Load Module ใหใส$เครองหมาย # หนาบรรทด เช$น
#LoadModule autoindex_module modules/mod_autoindex.so
:wq
13. ตรวจสอบและอนญาตให root เป: น เจาของและสามารถ Read, Write และ
Execute โปรแกรมและค$า Configuration เท$านBน
# chown -R root.root /usr/lib/httpd
#chmod 511 /usr/sbin/httpd
#chmod 700 /etc/httpd/conf/
#chmod 700 /var/log/httpd/
14. ก,าหนดค$าเวลาทใชในการพยายามเรยกเวRบใหนอยสดเพอปองกนการโจมต
แบบ Denial of Service เพราะค$า default ของโปรแกรมก,าหนดไวท 300 วนาท ใหลดค$าลง
เป:น 45 วนาท ใหแกไขไฟล0 httpd.conf ดงนB

บทท!1 4 Web Server Security .....: 91


Linux Server Security

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

บทท!1 4 Web Server Security .....: 92


Linux Server Security

หรอสามารถระบเป:นหมายเลข IP Address ได ดงนB


Order Deny,Allow
Deny from all
Allow from 127.0.0.1
19. ในการก,า หนดค$ า KeepAlive เป:นการอนญาตใหลกข$ า ยหน` งเครอง connect
เพยงครBงเดยวสามารถรองขอการใชงานต$อไปไดเรอย ๆ หากก,าหนดเป:น Off ถอว$ายกเลกการ
ใชงาน tag นB ถาก,าหนดใหเป:น On ตองไปก,าหนดค$า MaxKeepAliveRequests เดมก,าหนดให
เป:น 100 ถาก,าหนดเป:น 0 ถอว$าเป:น Unlimited ค$านBยงก,าหนดตวเลขมากจะท,าใหสมรรถนะ
สง แต$ตองสมพนธ0กบ tag KeepAliveTimeout เดมก,าหนดเป:น 15 ซ`งเป:นเวลาทรอการรองขอ
จากลกข$ายครBงต$อไป ค$าทBงสามนBมผลเรองสมรรถนะของ Server ทจะใหบรการ จากเอกสาร
ค$มอก,าหนดค$านBมาใหเพอใหมการปรบปรงสมรรถนะใหกบลกข$ายไดสงกว$า 50 % ถ`งจะด
ใหวเคราะห0การปรบเปลยนค$านBไดจาก log file
20. การปองกนดวย Secure Socket Layer (SSL) ในการท,า Web Application ต$าง ๆ
ปcจจบนนBพบว$ามเวRบไซต0หลายหน$วยงานทไม$เขาใจเรองของความปลอดภย มการพฒนารป
แบบเวRบใหมการโตตอบกบผใช มการกรอก User/Password เพอเขาระบบในการท,าธรกรรม
ต$าง ๆ ท,าใหผไม$หวงดสามารถทจะใชความพยายามในการดกจบรหสผ$า นดวย Software
ประเภท Sniffer ต$าง ๆ แมว$ามการออกแบบใหระบบ Network มการแบ$ง Segment ต$าง ๆ
ดวย Layer 3 Switch ซ`งความปลอดภยต$าง ๆ คงหลกเลยงไม$ไดถาเวRบท,างานบน Port 80 การ
ใหขอมลเดนไปมาในสายหรอในอากาศ (Wireless) กRจะถกดกของมลไดเนองจากขอมลไม$ม
การเขารหส ดงนBนหลงจากไดมการปองกนพBนฐานไป 19 ขอทผ$านมาแลวยงตองพจารณาว$า
ขอมลทจะเผยแพร$ตองการความปลอดภยมากนอยแค$ไหน หากมส$วนหน`งในหนาเวRบมการก
รอกรหสเพอ Login เขาระบบ ควรท,าการเชอมโยง (Link) เพอเขาในส$วนนBดวยการเปลยนไป
ท,างานท Port 443 (SSL) จะท,าใหมความปลอดภยมากยงข`Bน บางคนอาจคดว$าไดเขยนเวRบเพจ

บทท!1 4 Web Server Security .....: 93


Linux Server Security

ดวยภาษาทแขRงแรง มการก,าหนดค$า Parameter บนเวRบเพจใหเป:น No cache บาง page expire


บางเพอช$วยใหการกด Refresh ท,าไม$ไดตองไปรองขอขอมลท Server ใหม$ คงลมคดไปว$าการ
ท,าแบบนBนเป:นเรองของการปองกนท Web Browser ไม$ใหคนอนทมาเล$นต$อจากเราสามารถ
กดปŽม BACK หรอ Refresh เอาขอมลเก$าทคางอย$ใน Web Browser มาดได แต$ไม$ไดปองกน
การกรอกรหสผ$าน ขณะทผใชงานตวจรงท,า งานตดต$อระหว$า ง Client กบ Server เพอให
ปลอดภยควรเลอกท,าการปองกนตามหวขอนBโดยละเอยด ดงนB
ตามปกต Apache ถกจดมาใหสรางเป:น Web Server ทท,างานไดพรอมกนทBง Port
80 และ Port 443 อย$แลวหลงตดตBงโปรแกรมเสรRจ คงไม$ลมว$าค$า Default ของ Configuration
ทผเขยนโปรแกรมใหมานBนไม$ไดครอบคลมการใชงานแต$อย$างใด เพยงท,ามาเพอใหสามารถ
ให Server ใหบรการไดเท$านBน หากผดแลระบบคดว$าตดเสรRจกRใชไดแลวไม$เหRนตองท,าอะไร
เพม แบบนBแสดงว$าก,าลงประมาท คงไดยนข$าวบ$อย ๆ ว$ามเวRบบางแห$งถก Hack เขาทาง Port
443 กRเพราะตดแลวใชงานทนทนแหละ เหตทมการบกรกไดเพราะรหสกญแจ (Key) ทโปแก
รมสรางมาใหนBนจะเป:นค$ากลางท,างานกบ local host เพอใหสามารถ Start Service ได ความ
จรงผเขยนโปรแกรมตองการใหผดแลสรางรหสกญแจใหม$ ทมการก,าหนดรหสผ$าน หากม
ใครแอบเขามาสงให Server ท,างานตองมการถามรหสผ$าน ถาปอนผด Server กRจะไม$ท,างาน
ถารหสถกตองจ`งท,างานต$อไปได ขBนตอนการท,าโดยละเอยดใหท,าทละขBนตามตวอย$างต$อไป
นB
20.1 หลงตดตBง Apache + SSL เรยบรอยแลวใหท,าการสรางรหสกญแจส,าหรบ
Server ดวยค,าสง openssl ดงนB
# openssl genrsa -des3 1024 > /etc/pki/tls/private/server.key
…….
Enter pass phrase: กรอกรหสผ$าน
Verifying - Enter pass phrase: กรอกอกครBงใหเหมอนเดม

บทท!1 4 Web Server Security .....: 94


Linux Server Security

สรางไฟล0 server.key เสรRจใหรวมรหสผ$านกบไฟล0ทสรางข`BนอกครBงดงนB


# openssl rsa -in /etc/pik/tls/privat/server.key -out
/etc/pki/tls/private/server.key
Enter pass phrase for /etc/pki/tls/private/server.key: กรอกรหสผ$านใหตรงกบขBน
ตอนแรก
เสรRจแลวจะไดไฟล0 server.key ทพรอมใชงานตองท,าการเปลยน permission ให
root ดงนB
# chmod 600 /etc/pki/tls/private/server.key
20.2 ขBนต$อไปใหน,ารหสกญแจทสรางจากขอแรกมาสรางรหสทใชตรวจสอบชอ
server.csr ส,าหรบผ'%ด'แลระบบเปnนผ'%ก หนดร ยละเอ!ยดให%ตรงกบคo ของ Web Server ดงนB
# openssl req -new -key /etc/pki/tls/private/server.key -out
/etc/pki/tls/certs/server.csr
………….. บรรทดไหนไม$กรอกกRใหกด Enter ผ$านไปไดเลย
Country Name (2 letter code) [GB]:TH
State or Province Name (full name) [Berkshire]:Phitsanulok
Locality Name (eg, city) [Newbury]:Muang
Organization Name (eg, company) [My Company Ltd]:Technical College
Organizational Unit Name (eg, section) []:Electrical Power
Common Name (eg, your name or your server's hostname) []:fbi.mine.nu
Email Address []:webmaster@mine.nu
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:

บทท!1 4 Web Server Security .....: 95


Linux Server Security

An optional company name []:


20.3 ขBนตอนต$อไปเป:นการก,าหนดอายของรหสกญแจใหกบไฟล0ทสรางเสรRจแลว
คอไฟล0 server.key ตวอย$างนBก,าหนดใหมอาย 1 ป’ (365 วน) ดงนB
# openssl x509 -in /etc/pki/tls/certs/server.csr -out
/etc/pki/tls/certs/server.crt -req -signkey /etc/pki/tls/private/server.key -days 365
เป:นอนเสรRจสBนการท,ารหสกญแจใหกบ Server โดยมรหสผ$านตามทผดแลระบบ
ก,าหนดข`Bน ดงนBนในการสง Restart หรอ Boot เครอง Server ใหม$ตองมการกรอกรหสผ$าน
ก$อนจ`งจะท,าให Web Server ท,างานได
20.4 ขB นต$ อไปหลงสรางรหสกญแจเสรR จ ตองไปแกไขค$ า configuration ของ
โปรแกรมหลกใหชBมาอ$านค$าไฟล0ทสรางข`Bน ดงนB
# vi /etc/httpd/conf.d/ssl.conf
จากเดม
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
แกไขเป:น
SSLCertificateFile /etc/pki/tls/certs/server.crt
จากค$าเดม
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
แกไขเป:น
SSLCertificateKeyFile /etc/pki/tls/private/server.key
:wq
หลงแกไข Configuration file แลวใหท,า การทดสอบก$อนว$ามส$ว นใดผดพลาด
หรอไม$ ดงนB
# apachectl configtest

บทท!1 4 Web Server Security .....: 96


Linux Server Security

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 4 Web Server Security .....: 97


Linux Server Security

ค ส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

บทท!1 4 Web Server Security .....: 98


Linux Server Security

บทท!1 5 Mail Server Security

วตถประสงค
➢ เพอใหรจกวธปองกนการบกรกเขาระบบเครอขายจาก Mail Server
➢ เพอใหเขาใจวธการแกป)ญหาเกยวกบชองโหวของ Mail Server
➢ สามารถน0าไปประยกต3ใชในงานจรงไดอยางถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ sendmail เป<น Open source
2. ศDกษาการใชค0าสงส0าหรบ admin คอ newaliases, makemap และ mailq
3. ศDกษาการใชค0าสงส0าหรบ user คอ mailstats และ praliases
4. เนNอหาในบทนN สวนทเป<นการตดตNง การแกไข จะเนนเป<นตวหนา (Bold)
5. ทดลองปฏบตตามขNนตอนทเรยงไว หากท0าผดพลาดใหเรมตนใหมดวยการ
ถอนการตดตNงโปรแกรมเดมออกจากเครองจะดกวาการท0าซN0า

ก รต(ดต*งและใช%ง นโปรแกรม
ในบทน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าหนาท

บทท!1 5 Mail Server Security .....: 99


Linux Server Security

เป<น Mail Server แตตองไมลมวาเมอตดตNง Linux OS เสร\จมนตองการใหมบรการสง mail


ภายในระบบดงนNนโปรแกรม sendmail จDงถกก0า หนดใหถกตดตNงโดยไมไดเลอก เพอท0า
หนาทสง mail จาก service ตาง ๆ ใหกบ root ท0าใหไมพรอมใชเป<น Mail Server และยงไมได
ท0าการปองกนภยตาง ๆ ทอาจถกบกรกเขามาและป)ญหาทตามมาคอบางทานไป Download
โปรแกรม Webbase e-mail ใน site ตาง ๆ มาใช ตวโปรแกรมเหลานNนก\จะตองมการแกไขคา
sendmail.cf หรอสวนอน ๆ ในโปรแกรมอาจท0าใหลมปeดทางเขาบกรกของผไมหวงดและ
แอบเขามาท0าลายระบบบาง เขามาเพอยม Server เราท0าการ forward mail ไปยงทตาง ๆ ท0าให
Bandwidth เต\มตลอดเวลาและทเป<นเรองใหญป)จจบนคอการทมผไมหวงดใชวธการทเรยกวา
Fishing คอใชเครองเราสง mail ไปท0าธรกรรมการเงนหรอดานตาง ๆ เมอเวลาถกจบไดก\จะม
การแจงกลบมายงผดแลระบบทสง mail ออกไป ซD งเหตการณ3นNเป<นเรองผดกฎหมายตาม
พรบ. วาดวยการกระท0า ความผดเกยวกบคอมพวเตอร3อ กดวย รปแบบการถกโจมต Mail
server โดยทวไปมประมาณ 7 รปแบบดงนN
1. การลกลอบดกดขอมลทสงโดย email (Eavesdropping)
2. ถกสง mail จ0านวนมากจนท0าให mailbox เต\ม (Mail-bombing)
3. การสงขอความโดยไมมผสงหรอปลอมแปลงเป<นผอนเป<นผสง
4. ใช Mail Server ในการแพรไวรส
5. ใชสงจดหมายลกโซ (hoaxes)
6. ยDด Mail Server เพอใชโจมตผอนในรปแบบตาง ๆ
7. ใชสง email โฆษณาสนคาและบรการตาง ๆ (Spam)
การปองกนดงกลาวมวธการไมยากนกแตก\ต องหมนตดตามขาวสาร การปองกน
และการ Update โปรแกรมตลอดเวลา ในบทนNท0า การทดลองบน senmail-8.14.x ซDงมการ
ปรบปรงคา Configure ใหรดกมและปลอดภยมากขDNนแบบท 1 จะแนะน0าใหเพมเตมในสวนท

บทท!1 5 Mail Server Security .....: 100


Linux Server Security

ยงขาดอยส0าหรบการใชงาน port 25 และมแบบท 2 ทเพมความปลอดภยสงดวยการใช SSL


(Secure Socket Layer) ใหท0าตามขNนตอนดงตอไปนN

คว มปลอดภยแบบท!1 1 เพมความปลอดภยใหกบการท0างานของ Sendmail Port 25 ท0าตามขNน


ตอนดงตอไปนN
ข*นท!1 1 กอนคดอยางอนผดแลระบบทดควรจะรบ Update โปรแกรมทนททจะท0า
Server ในแตละครNง
# yum update sendmail
จากนNนใหท0าการ link ไฟล3ค0าสงทใชในการรบสง mail ไปไวท shell ทปลอดภย
กวาเดมเพราะในไฟล3 sendmail.cf ไดเรยกใช smrsh แทน sh ตวเดมแตยงไมไดจดการสวนท
อนญาตให User สามารถใช smrsh ท0า forward mail ดวยการสรางไฟล3 .forward ไวท home
directory
# cd /etc/smrsh
# ln -s /bin/mail mail
# cd /etc/smrsh
# ln -s /usr/bin/procmail procmail
ข*นท!1 2 สราง Maildir ใหกบโปรแกรม procmail
# mkdir -p /etc/skel/Maildir/new
# mkdir -p /etc/skel/Maildir/cur
# mkdir -p /etc/skel/Maildir/tmp
# chmod -R 700 /etc/skel/Maildir/
ข*นท!1 3 สราง Configuration file ให procmail
# vi /etc/procmailrc

บทท!1 5 Mail Server Security .....: 101


Linux Server Security

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

บทท!1 5 Mail Server Security .....: 102


Linux Server Security

จากนNนใหสราง database ไปใชงานดวย makemap


# makemap hash /etc/mail/access.db < /etc/mail/access
ข*นท!1 6 จากนNนใหไปแกไขไฟล3 local-host-names เพอบอกระบบวา domain ของ
คณชออะไรและได alias ชอ host วาอะไรไว
# vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
# พมพ3เพมบรรทดใหมตอลงไป
sample.co.th
mail.sample.co.th
เสร\จแลวบนทDกไฟล3ออกจาก vi
:wq
ข*นท!1 7 สรางไฟล3ชอ authinfo
# vi /etc/mail/authinfo
AuthInfo:mail.sample.co.th "U:<username>" "I:<identity>" "P:<password>"
"M:LOGIN PLAIN"
:wq
ข*นท!1 8 เปลยน mode ใหกบไฟล3 authinfo เป<น 600
# chmod 600 /etc/mail/authinfo
ข*นท!1 9 สรางไฟล3 authinfo.db ดวยค0าสง makemap
# makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo
ข*นท!1 10 แกไขคาใน senmail.mc ใหรบคาทสรางมาขางตน
# vi /etc/mail/sendmail.mc
….

บทท!1 5 Mail Server Security .....: 103


Linux Server Security

….
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.

บทท!1 5 Mail Server Security .....: 104


Linux Server Security

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 #

บทท!1 5 Mail Server Security .....: 105


Linux Server Security

dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as


well
dnl #
FEATURE(masquerade_entire_domain)dnl
dnl #
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(`server1.sample.co.th')dnl
MASQUERADE_DOMAIN(`mail.sample.co.th')dnl
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_)
$.$?{auth_type}(authenticated)
$.by $j (unknown)$?r with $r$. id $i$?u
for $u; $|;
$.$b')dnl
define(`confMAX_MESSAGE_SIZE',`10485760')dnl
เสร\จแลวใหบนทDกไฟล3ออกจาก vi
:wq
ข*นท!1 11 ไปแกไข helpfile ตามตวอยาง
# vi /etc/mail/helpfile
#vers 2
cpyr
cpyr Copyright (c) 1998-2000, 2002, 2004-2006 Sendmail, Inc. and its
suppliers.

บทท!1 5 Mail Server Security .....: 106


Linux Server Security

cpyr All rights reserved.


cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
cpyr Copyright (c) 1988, 1993
cpyr The Regents of the University of California. All rights reserved.
cpyr
cpyr
cpyr By using this file, you agree to the terms and conditions set
cpyr forth in the LICENSE file which can be found at the top level of
cpyr the sendmail distribution.
cpyr
#smtp This is sendmail
smtp Topics:
smtp HELO EHLO MAIL RCPT DATA
smtp RSET NOOP QUIT HELP VRFY
smtp EXPN VERB ETRN DSN AUTH
smtp STARTTLS
smtp For more info use "HELP <topic>".
#smtp To report bugs in the implementation see
#smtp http://www.sendmail.org/email-addresses.html
#smtp For local information send email to Postmaster at your site.
ข*นท!1 12 สรางไฟล3 senmail.cf ใหมดวยค0าสง m4
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
สง restart sendmail ใหม

บทท!1 5 Mail Server Security .....: 107


Linux Server Security

# /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

บทท!1 5 Mail Server Security .....: 108


Linux Server Security

# Basic system aliases -- these MUST be present.


MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
# Well-known aliases.
manager: root
dumper: root
operator: root
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
#root: marc
หลงจากท0าการลบแลวใหลองสงตรวจสอบดวาเหลอจ0านวนลดลงตรงกบทตองการ
หรอไมดงนN
# newaliases

บทท!1 5 Mail Server Security .....: 109


Linux Server Security

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งลงไปดวย

บทท!1 5 Mail Server Security .....: 110


Linux Server Security

เสมอและถาเลอกเมนท0า Mail Server จะมโปรแกรม Dovecot ถกตดตNงมาดวยแทนโปรแกรม


popt และ imap ใน version เดม เรมจากการ Update
# yum update sendmail
จากนNนใหท0าการ copy ไฟล3ตนฉบบเก\บไวกอนแกไข
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.org
# cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.org
ข*นท!1 2 แกไขไฟล3 sendmail.mc
# vi /etc/mail/sendmail.mc
.. ไฟล3น N เป< น macro ถาบรรทดไหนเรมตนและสN นสดบรรทดดวย dnl (delete
through newline) หมายถDงบรรทดนNนถกลบออกจากการสราง sendmail.cf
… คนหาค0าวา AUTH เพมคา p ตอทายตว A เพอไมอนญาตใหกรอก password
แบบไมเขารหสสามารถ login เขาระบบได ตามตวอยาง
define(`confAUTH_OPTIONS', `A p')dnl
…. ตรวจดวา 2 บรรทดนNมครบหรอไมและตองลบ dnl หนาบรรทดออก
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN
PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5
CRAM-MD5 LOGIN PLAIN')dnl
….. อก 4 บรรทดตอไปนNใหลบ dnl หนาบรรทดออก
define(`confCACERT_PATH',`/etc/pki/tls/certs')dnl
define(`confCACERT',`/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT',`/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY',`/etc/pki/tls/certs/sendmail.pem')dnl

บทท!1 5 Mail Server Security .....: 111


Linux Server Security

… เปลยนจาก 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เพมใหม

บทท!1 5 Mail Server Security .....: 112


Linux Server Security

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 ใหม

บทท!1 5 Mail Server Security .....: 113


Linux Server Security

# /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นนะครบ***

บทท!1 5 Mail Server Security .....: 114


Linux Server Security

บทท!1 6 DNS Server Security

วตถประสงค
➢ เพอใหรจกวธปองกน DNS Server
➢ เพอใหเขาใจการปองกนและแกไข Configuration
➢ สามารถน0าไปประย2กต4ใชงานจรงไดอย7างถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ bind เป>น Open source
2. ศEกษาการใชค0าสง nslookup, host
3. เนMอหาในบทนM ส7วนทเป>นการตดตMง การแกไข จะเนนเป>นตวหนา (Bold)
4. ทดลองปฏบตตามขMนตอนทเรยงไว หากท0าผดพลาดใหเรมตนใหม7ด วยการ
ถอนการตดตMงโปรแกรมเดมออกจากเครองจะดกว7าการท0าซM0า

ก รต(ดต*งและใช%ง นโปรแกรม
ผดแลระบบทก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าวผดแลระบบทดควรรบตดสนใจจดการดแลปองกน หรอรบออกแบบระบบรกษา

บทท!1 6 DNS Server Security .....: 115


Linux Server Security

ความปลอดภยให DNS Server ใหมความแขZงแรงมากขEMน โปรแกรมตวเก7งทน0ามาใชท0า DNS


Server บน Linux ท2กค7ายคงหนไม7พนโปรแกรม bind ซEงปXจจ2บนเป>น Version 9.x.x ซEงมการ
พฒนาแกปXญหาช7องโหว7ต7าง ๆ อย7างต7อเนองเพอใหผใชมความมนใจในความแขZงแรงทจะ
รบมอกบผไม7หวงดไดตลอดเวลาทเครอง Server ก0าลงท0างานอย7ในระบบ Internet
ส0า หรบการท0า Security ใหกบ DNS Server ในบทนMผ เขยนจะขอแนะน0าวธการ
แต7ละแบบทสามารถน0าไปใชไดโดยอาจเลอกท0าเป>นบางแบบหรอจะท0าทMงหมดท2กแบบเลย
กZไดถาตรงกบการใชงานจรงทแต7ละแบบไดอธบายรายละเอยดไว โดยจะเรมตM งแต7ก าร
ปองกนระดบพMนฐานในส7วนต7าง ๆ ของโปรแกรมทถกตดตMงลงใน Server และแบบต7อไปจEง
เป>นการเขารหสก2ญแจ (Key) แบบต7าง ๆ สามารถช7วยปองกนการแอบส7งค7ารหสก2ญแจทเป>น
ค7าหลกหลงการตดตMงจากภายนอกเขามาควบค2มการท0างานของ DNS ท0าให DNS Server ไม7
สามารถใชงานไดตามปกต วธการสรางรหสก2ญแจ (Key) ม 2 แบบ ในแต7ละแบบตองท0าตาม
ขMนตอนโดยละเอยด ใหเรมดวธการปองกนแบบต7าง ๆ ไดดงนM

รปท 6.1 แสดง DNS Server ทใชประกอบในตวอย7าง

บทท!1 6 DNS Server Security .....: 116


Linux Server Security

แบบท!1 1 ระบบคว มปลอดภยพ;*นฐ น


หนงสอเล7มนMเป>นการอธบายวธการท0าระบบความปลอดภยใหกบ Service ต7าง ๆ
บน Internet Server ทท0างานไดตามปกตอย7แลวดงนMนในบทนMจะไม7มวธการตดตMงโปรแกรม
และการท0า Configuration ทส0าคญโปรแกรม bind 9.x.x ตวปXจจ2บนไดท0าการตดตMงใหท0างาน
เป>น แบบ Chroot jail ท0 า ใหมการยายส7ว นทส0 าคญไปไวท /var/named/chroot ทM ง หมด ใน
ตวอย7างจEงต7างจาก version เดมทขอมลจะอย7ท /var/named มาเรมปฏบตกนเลยดกว7า
1. คงไม7ล มว7าการท0างานท2กบททเกยวของกบการใชงานโปรแกรม สงทตองท0า
อนดบแรกคอการ Update โปรแกรม
# yum update bind
2. ใหตรวจสอบไฟล4ค0าสง named ใหม mode เป>น 750
# ls -l /usr/sbin/named
ถาปรากฏว7าไม7ใช7 750 ใหแกไขดวยค0าสง chmod
# chmod 750 /usr/sbin/named
3. ตองไม7มการอน2ญาตให Account named เขาใชงาน ftp service ได กรณนMจะยก
ตวอย7างเครองทมการเป\ดบรการ ftp server ดวยโปรแกรม vsftpd ใหสง
# echo "named" >> /etc/vsftpd/ftpusers
4. ตรวจสอบค7า permission ของ Directory ทอย7ภายใต /var/named ตองไม7อน2ญาต
ให group สามารถ write ขอมลได ม 2 ตวอย7างดงนM
กรณ! Primary DNS
# chown -R root.named /var/named/chroot/var/named
# chmod 750 /var/named/chroot/var/named
# chmod -R go-w /var/named/chroot/var/named

บทท!1 6 DNS Server Security .....: 117


Linux Server Security

กรณ! Secondary DNS


# chown -R root.named /var/named/chroot/var/named
# chmod 770 /var/named/chroot/var/named
5. ท0าการตรวจสอบและลบ SUID/SGID (กรณยงไม7ไดท0ามาจากบทท 3 Kernel
harden)
# find /usr/sbin f -exec chmod ug-s {} \;

แบบท!1 2 ก รเพ(1มคว มปลอดภยให%กบ Caching Name Server


กรณท0า Gateway Server ดงภาพขางบน ตองมการเพมเตมค7าทปองกน DoS (Denial
of Service) โดยก0า หนดค7า tcp-clients 32 หมายถEงการทจะยอมให client สามารถ connect
ดวย protocol tcp ไดพรอมกนไม7เกน 32 เครองใหไปแกไขทไฟล4 named.conf ตามตวอย7างท
เป>นตวหนา(Bold) ส7วนค7าอน ๆ ทถกสรางมาดวย tools หรอสรางเองทใชงานไดอย7แลวไม7
ตองแกไข
# vi /var/named/chroot/etc/named.conf
// Authorized source addresses.
acl "trusted" {
localhost;
};
// 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;

บทท!1 6 DNS Server Security .....: 118


Linux Server Security

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"; };

บทท!1 6 DNS Server Security .....: 119


Linux Server Security

// Provide a reverse mapping for the loopback address 127.0.0.1/24


zone "localhost" {
type master;
file "db.localhost";
notify no;
};
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa";
notify no;
};

แบบท!1 3 ก รเข% รหส Transaction Signatures (TSIG)


ในการตดตMงใชงานปกตของ BIND 9 เพอท0า Primary และ Secondary Name Server
ผดแลระบบสามารถสราง Transaction key ขEMนเองใหม7ได เพอน0าไปใชตรวจสอบความถก
ตองของ Configuration ในแต7ละไฟล4ได หากไฟล4ใดม Key ไม7ตรงหรอถกผอนมาแกไขกZไม7
สามารถสงให Server ถ7ายโอนขอมลหากนระหว7าง Primary และ Secondary DNS ได การท0า
ระบบความปลอดภยในแบบท 1 นMใชส0าหรบผทท0า DNS Server 2 เครองคอ Primary และ
Secondary ขณะทมการ Update ขอมลจาก Primary ไปยง Secondary ใหผดแลสรางรหส
ก2ญแจเพอใชตรวจสอบว7าเป>นการโอนขอมลจากเครองทมรหสตรงกนตามทก0าหนดหรอไม7
ถารหสไม7ตรงกนจะไม7ท0าการ Update ให มขMนตอนการท0าทMงหมด 4 ขMนตอนดงนM
ข*นท!1 1 สราง Transaction Key จ0านวน 128 bit (16 byte)
# dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1-ns2

บทท!1 6 DNS Server Security .....: 120


Linux Server Security

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= =";
};

ตวอย7างแกไขไฟล4 named.conf ของ Primary/Master name server :


192.168.100.4
Private IP : 192.168.0.0/24

บทท!1 6 DNS Server Security .....: 121


Linux Server Security

#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;

บทท!1 6 DNS Server Security .....: 122


Linux Server Security

};
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" {

บทท!1 6 DNS Server Security .....: 123


Linux Server Security

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; };
};

ตวอย7างแกไขไฟล4 named.conf ส0าหรบ Secondary/Slave name server :


192.168.100.5 Private IP : 192.168.0.0/24
#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;
};

บทท!1 6 DNS Server Security .....: 124


Linux Server Security

// 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 { none; };
allow-query { trusted; };
allow-recursion { trusted; };
blackhole { blocked; };
tcp-clients 1024;
forwarders { none; };
version "New version";
};

บทท!1 6 DNS Server Security .....: 125


Linux Server Security

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; };
};

บทท!1 6 DNS Server Security .....: 126


Linux Server Security

ข*นท!1 5 ก0าหนดค7า IP Address ของเครอง DNS Server


แกไขไฟล4 named.conf (vi /var/named/chroot/etc/named.conf) ทMง Primary และ
Secondary โดยการใส7ขอความ 3 บรรทดขางล7างต7อทายขMนท 4
# vi /var/named/chroot/etc/named.conf
server x.x.x.x {
keys { ns1-ns2 ;};
};
ก0าหนดให x.x.x.x เป>น IP address ของเครอง DNS Server
ตวอย7างแกไขไฟล4 named.conf ส0าหรบ Primary/Master name server :
192.168.100.4 Private IP : 192.168.0.0/24 ( สoวนอ;1นเหม;อนเด(มให%เพ(1มเฉพ ะสoวนท!1เปqนตว
หน (Bold))
#vi /var/named/chroot/etc/named.conf
key ns1-ns2 {
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
server 192.168.100.4 {
keys { ns1-ns2 ;};
};

ตวอย7างแกไขไฟล4 /var/named/chroor/etc/named.conf ส0าหรบ Secondary/Slave


name server : 192.168.100.5 Private IP : 192.168.0.0/24 ( สoวนอ;1นเหม;อนเด(มให%เพ(1มเฉพ ะ
สoวนท!1เปqนตวหน (Bold))

บทท!1 6 DNS Server Security .....: 127


Linux Server Security

#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]

ข%อควรระวง เมอมการใช TSIG ตองค0านEงถEงเรองเวลาดวยเพราะมการส7งค7าจาก


Primary ไปยง Secondary ตลอดเวลา ดงนMนเพอไม7ใหมการท0างานทผดพลาดในการตรวจ
สอบ key จEงตองท0า การแกไขค7าทจะส7 งผ7า นออกไปใหถกตองดวย ท0า ไดโดยไปแกไฟล4
named.conf ในบรรทด allow-transfer { 192.168.100.5; }; ในเครอง Primary Name Server
ดงนM
# vi /var/named/chroot/etc/named.conf
allow-transfer { 192.168.100.5; };
แกไขเป>น

บทท!1 6 DNS Server Security .....: 128


Linux Server Security

allow-transfer { key ns1-ns2; };

สร2 ป ไดว7 าตองแก named.conf ของ Primary/Master Name Serverใหมค7 าทM ง 3


ส7วนตามตวหนา (Bold) ดงนM
key ns1-ns2 {
algorithm hmac-md5;
secret "EJF5ryfnLcD6XwUbh+JE4g= =";
};
server 192.168.100.4 {
keys { ns1-ns2 ;};
};
options {
directory "/var/named";
allow-transfer { key ns1-ns2; };
allow-query { trusted; };
allow-recursion { trusted; };
version "New version";
};
และถามการอน2ญาตให Update Zone แบบ Dynamic ตองก0าหนดค7า key ท Zone
ดวย
zone "sample.co.th" {
type master;
file "db.sample";

บทท!1 6 DNS Server Security .....: 129


Linux Server Security

allow-update { key ns1-ns2; };


allow-query { any; };
};

แบบท!1 4 ก รเข% รหสกญแจ Encryption Algorithm


วธการแบบนM ผดแลระบบส7วนมากทใชงาน BIND 9 มกค2นเคยเมอเขาไปแกไขไฟล4
named.conf จะพบค0าว7า key และมการแจงค7า algorithm พรอม secret ค7าดงกล7าวเป>นระบบ
ความปลอดภยของ DNS Server ทมมาใหใน Version 9 บางคนไม7เคยสนใจนEกว7าโปรแกรม
สรางมาใหกZอย7าไปย27งอะไร ท0าใหผบ2กร2กสามารถเดาค7า key ไดง7ายและเขามาสงป\ดหรอหย2ด
บรการได ค2ณในฐานะผดแลระบบตองก0าหนดค7า key ใหม7 เพอใหเกดความปลอดภยมากขEMน
ท0าได 6 ขMนตอนดงนM
ข*นท!1 1 ใน version เก7ามกจะสราง key เพยง 128 bit ซEงโปรแกรมมความสามารถ
สงขEMนผดแลระบบสามารถสราง key มจ0านวน bit สง ๆ ไดตMงแต7 1-512 bit ดงนMนตวอย7างนM
ก0าหนดใหสราง key 352 bit (60 byte) เพอใหยากต7อการเดามากขEMน
# dnssec-keygen -a hmac-md5 -b 352 -n user rndc
Krndc.+157+44283
โปรแกรมจะสรางไฟล4 Krndc.+157+44283.key และ Krndc.+157+44283.private
ข*นท!1 2 เป\ดไฟล4 Krndc.+157+44283.private จดหรอคดลอกค7า key
#cat Krndc.+157+44283.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: RZfsvIRU0DY8/tC0OcXXISiYUO0rWtizlEoP49cw6PTTYBWVhh4hjiCxcKo=

บทท!1 6 DNS Server Security .....: 130


Linux Server Security

ข*นท!1 3 ใหลบไฟล4ทMงสองทMงใหหมด
# rm -f Krndc.+157+44283.key
# rm -f Krndc.+157+44283.private

ข*นท!1 4 น0าค7า key ทไดไปใส7ในไฟล4 rndc.conf (ถาไม7พบไฟล4 rndc.conf ใหสราง


ขEMนใหม7)
#vi /etc/rndc.conf
options {
default-server localhost;
default-key "rndckey";
};
server localhost {
key "rndckey";
};
key "rndckey" {
algorithm hmac-md5;
secret " RzfsvIRU0DY8/tC0OcXXISiYUO0rWtizlEoP49cw6PTTYBWVhh4
hjiCxcKo=";
};
ข*นท!1 5 น0าค7า key ทไดไปใส7ในไฟล4 named.conf
แกไขไฟล4 named.conf ดงนM
# vi /var/named/chroot/etc/named.conf
key ns1-ns2 {

บทท!1 6 DNS Server Security .....: 131


Linux Server Security

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; };
};

ข*นท!1 6 ตองไม7ลมไปแกไขไฟล4 rndc.key และ rndc.conf ท /etc ใหมค7า secret ตรง


กบค7าทสรางมาใหม7เสรZจแลวกZสง Restart
# /etc/init.d/named restart
Shutting down named: [OK]
Starting named: [OK]

บทท!1 6 DNS Server Security .....: 132


Linux Server Security

บทสรป
จากประสบการณ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เป>นได

บทท!1 6 DNS Server Security .....: 133


Linux Server Security

ค0าสงทใชใน VI Editor อย7างง7าย


เขาส7 insert mode ท0างาน
กด i dd ลบบรรทดท Cursor อย7
ต0าแหน7งท Cursor อย7
เขาส7 insert mode ท0างาน
กด a ต7อทายต0าแหน7งท Cursor u ยกเลกการลบ (undo)
อย7
เขาส7 insert mode ท0างาน
กด o yy copy บรรทดท cursor อย7
โดยขEMนบรรทดใหม7
copy บรรทดท cursor อย7จ0านวน n
:set number แสดงหมายเลขบรรทด nyy
บรรทดลง buffer
ยกเลกแสดงหมายเลข วางค7าใน buffer ลงทบรรทดต7อ
:set nonumber p
บรรทด จากท cursor อย7
/(ค0าทตองการ
คนหาค0าตามตองการ :w บนทEกไฟล4
คนหา)
ยกเลกจากค0าสงใด ๆ เพอ บนทEกไฟล4แลวออกจากโปรแกรม
กด ESC :wq
รอรบค0าสงใหม7 vi
:q! ออกจากโปรแกรมโดยไม7บนทEก

บทท!1 6 DNS Server Security .....: 134


Linux Server Security

บทท!1 7 FTP Server Security

วตถประสงค
➢ เพอใหรวธการปองกนการบกรกเขา FTP Server
➢ เพอใหเขาใจวธต$งค&า Configuration อย&างปลอดภย
➢ สามารถน7าไปใชงานจรงไดอย&างมประสทธภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ vsftpd เปCน Open source
2. ศHกษาการใชค7าสง ftp, telnet
3. เน$อหาในบทน$ ส&วนทเปCนการตดต$ง การแกไข จะเนนเปCนตวหนา (Bold)
4. ทดลองปฏบตตามข$นตอนทเรยงไว หากท7าผดพลาดใหเรมตนใหม&ด วยการ
ถอนการตดต$งโปรแกรมเดมออกจากเครองจะดกว&าการท7าซ$7า

ก รต(ดต*งและใช%ง นโปรแกรม
การตดต$ง Linux เพอใชสราง Internet Server น$น ส&วนมากผใช Linux มกมความ
พอใจในระดบหนHงท Linux ตดต$งง&าย ใชงานไดครบทกบรการโดยเฉพาะเมอตดต$งจากเมน
Server จะได Server ทใหบร การ WWW, FTP, Proxy, Mail และอน ๆ อกมากท รอการ
configuration แลวจะท7างานทนท ดงน$นจHงเปCนเรองทตองพHงระมดระวง หากคณเปCนผดแล
ระบบตองไม&เป]ดบรการมากเกนไปจนควบคมไม&ได เปCนช&องทางใหผไม&ประสงค^ดสอดส&อง
หาช&องทางบกรกเขามาใน Server ไดอย&างง&ายดาย หากไม&มการปรบปรงหรอปองกนทดขH$นก_

บทท!1 7 FTP Server Security .....: 135


Linux Server Security

มกจะพดกนว&า Linux เปCน Internet Server ทไม&ค&อยแข_งแรง ในบทน$จะมการแกไขเฉพาะ


เรอง FTP Server ใหปลอดภยจาก Hacker ชนดทไม&ต องไปเปลยน Version หรอไปฟdงข&าว
ชาวบานลอใหเสยเวลา เราสามารถใชความสามารถทมมาใน CD Linux ก_น&าจะพอทจะใชงาน
ไดเปCนอย&างด หากคนไทยยงใชวธแกปdญหาดวยการเปลยน Version OS กนอย&างน$ คงเปCน
ปdญหาว&าใครจะมานงเปCนผดแลระบบเพราะงานหนกเกนไป ควรจะเอาเวลาไปท7ามาหากน
อย&างอนจะดกว&านะครบ
เปCนเวลานานมาแลวท UNIX ใช File Transfer Protocol (FTP) ในการถ&ายโอนไฟล^
ระหว&างเครองคอมพวเตอร^กบคอมพวเตอร^โดยผ&านเครอข&าย ปdจจบนก_ย งเปCนวธทนยมกน
อย&างมากในวงการคอมพวเตอร^เครอข&าย และม Software ทวไปตามทองตลาดทใชในการ
อ7านวยความสะดวกส7าหรบถ&ายโอนไฟล^ไดจากทก platform ทวโลก
ผเขยนเคยใช UNIX เทยบกบ Linux แลวน7 า มาวเคราะห^ด ว& าท7 า ไม UNIX จH ง
ปลอดภยจากการบกรกเขา Server และไม&ถ กผใชเขาไปลกขอมลส7าคญในส&วนต&าง ๆ ของ
ระบบไดง&าย แต& linux ไดเป]ดใหลกข&าย ftp เขา Server อย&างเสรเมอเขาถHง Server ไดก_มสทธ
เขาชมระบบไดเหมอนไปเดนชมสนคาในหางสรรพสนคา อยากดขอมลอะไรก_เป]ดดได
ตามใจชอบ เลยเปCนช&องทางใหพวกนกลวงขอมลจากเครองชาวบานชอบอกชอบใจมาก พอ
อ&านตรงน$แลวนHกออกหรอยงครบว&าขอมลในส&วนของ web หรอ data ต&าง ๆ น$นเสยงต&อการ
ถกลวงขอมล เช&นถาใครท7าเครองเดยวกนเปCน Web Server ก_มกมขอมลการโตตอบผ&าน Web
Browser หรอใครทท7า E-Learning , E-Education ทมการท7าแบบทดสอบและมเฉลย มกถก
ลกข&ายแอบเขามาเป]ดดไดอย&างง&ายดาย อย&างน$ไม&ปลอดภยแน&ครบ
ในการท7 า Configuration ให FTP Server ในอด ตค& า Default มกท7 า ให เฉพาะ
anonymous ftp ทไม&สามารถเปลยน directory ไปในระบบได แต& User ปกตไปท&องเทยวได
ตามใจชอบ ในบทน$จะอธบายวธการในการปองกนไม&ให User ท login เขาระบบไปท&องเทยว
ใน directory อน ๆ ของระบบไดหรอทเรยกกนว&า Chroot Jail

บทท!1 7 FTP Server Security .....: 136


Linux Server Security

รปท 7.1 ภาพแสดงการท7างานของ FTP Server

ก&อนท7าการใด ๆ ขอใหผดแลระบบท7าการ Update โปรแกรม vsftpd


# yum update vsftpd
เสร_จเรยบรอยแลวจHงเรมท7าการแกไข Configuration ของโปรแกรมต&อไป

บทท!1 7 FTP Server Security .....: 137


Linux Server Security

แบบท!1 1 เปCนการก7าหนด Configuration ใหมความปลอดภยเบ$องตน ไปแกไขไฟล^


vsftpd.conf
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.orig
# vi /etc/vsftpd/vsftpd.conf
… ค&าพ$นฐานทตองการท7า FTP Server มดงน$
ftpd_banner=Welcome to FTP service.
anon_umask=077
local_umask=022
nopriv_user=ftp
pasv_enable=YES
anon_root=/var/ftp
ต&อไปเปCนการควบคมการใชงานใหกบ User
… Anonymous User (ค&า default=NO) ถาตองการเป]ดบรการบคคลทวไปใหแกไข
anonymous_enable=YES
… ก7าหนดใหลกข&ายเขาใชไดสงสดจ7านวน 500 คน
max_clients=500
max_per_ip=4 <- สามารถ connect พรอม ๆ กนไดสงสดต&อ ip address
.. กรณท7า chroot jail ปองกน user ไม&ใหออกไป directory อนอย&แต& home directory
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list <- ไฟล^ user ทตองการควบคม
.. ถาตองการให User account ลกข& า ยท$ง หมดใน server ถกควบคมไม&ต องสง 2
บรรทดขางบนแต&ใหท7าดงน$
chroot_local_user=YES

บทท!1 7 FTP Server Security .....: 138


Linux Server Security

รปท 7.2 ภาพแสดงการท7า Chroot Jail

แบบท!1 2 เปCนการเขารหสขอมลแบบ TLS/SSL เพอเพมความปลอดภย ปองกนการดกจบ


รหสผ&านในระบบเครอข&าย ท7าดงน$
ตรวจสอบว&าโปรแกรมทใชร&วมกบการท7า SSL ไดถกตดต$งไปแลวหรอไม&
# ldd /usr/sbin/vsftpd |grep ssl
libssl.so.6 => /lib/libssl.so.6 (0x0012c000)
ถาตดต$ง libssl ครบแลวใหท7าการสราง private key และ digital certificate

บทท!1 7 FTP Server Security .....: 139


Linux Server Security

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 \


-keyout /etc/vsftpd/vsftpd.pem \
-out /etc/vsftpd/vsftpd.pem
ตวอย&างขางบนก7าหนดให X509 SSL certificate ทสรางขH$นมอาย 365 วน
Country Name (2 letter code) [GB]:TH
State or Province Name (full name) [Berkshire]:Boonlue
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) []:ftp.sample.co.th
Email Address []:admin@sample.co.th
ถาบรรทดไหนไม&กรอกขอมลใหกด Enter ผ&านได หลงจากสรางไฟล^ vsftpd.pem
เสร_จใหลองเป]ดดขอมลทไดท$งสองส&วน
# cat /etc/pki/tls/certs/vsftpd.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDm76qjNTi7M7XSUf1RmjBHJaM29as1WlKsa/SpfX4E1
FQuMADNnzPmhLYOSmI+jN7Sdc8pIsRmtKjNERNX9wU/mV85h6eAOuG
3Yp0cAvlJhy4NthwT+l/ZIWx+gxE/1Xe7F1YYPBHy/i2jUHAti9A2TkejQIDAQ
AoGAa8m/jqIZ21UGcgu9L2lOqVRGjEIaHn5px41MdDE4SE0VpJ31TJ2RM
EnLI75qPqHHutlGOesqeMnheCXXeruR7GSNUun/rmwvylC/umNQf2EyMih
QXe2oBf7Rk2IisHFniZhAgQbUeJpow94oEKA7C27le+0ECQQD6k8MPV05
PfObBkiGF/gom+5CJ/EjLD7W3lj7znXMqMiPscXQu5P8GXovRRwUqItPwp
/lynGcTdAkEA6+8XHtDzWuAOA/GsZhuwU+LEx4OnQHs2UAGqaS+LWv4

บทท!1 7 FTP Server Security .....: 140


Linux Server Security

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

บทท!1 7 FTP Server Security .....: 141


Linux Server Security

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

บทท!1 7 FTP Server Security .....: 142


Linux Server Security

RSA Public Key: (1024 bit)


Modulus (1024 bit):
00:e6:ef:aa:a3:a0:d4:e2:ec:ce:d7:49:47:f5:46:
68:c1:1c:96:8c:db:d6:ac:d5:69:4a:b1:af:d2:a5:
f5:f8:13:55:eb:52:ff:c8:15:0b:8c:00:33:67:cc:
f9:a1:2d:83:92:98:8f:a3:37:b4:9d:2c:27:3c:a4:
8b:11:9a:d2:a3:34:44:4d:5f:dc:14:fe:65:7c:e6:
1e:9e:00:eb:86:9f:f5:0e:05:ca:2d:dd:8a:74:70:
0b:e5:26:1c:b8:36:d8:70:4f:e9:7f:64:85:b1:fa:
0c:44:ff:55:de:ec:5d:58:60:f0:47:cb:f8:b6:8d:
41:c0:b6:2f:40:d9:39:1e:8d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
88:A4:47:4D:83:66:34:53:BD:23:1B:39:B4:93:C4:0C:30:05:C1:DD
X509v3 Authority Key Identifier:
keyid:88:A4:47:4D:83:66:34:53:BD:23:1B:39:B4:93:C4:0C:30:05:C1:DD
DirName:/C=TH/ST=Boonlue/L=Phitsanulok/O=No company/OU=Linux
Server/CN=ftp.sample.co.th/emailAddress=admin@sample.co.th
serial:DF:80:AA:A2:23:EC:1A:8A
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption

บทท!1 7 FTP Server Security .....: 143


Linux Server Security

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

บทท!1 7 FTP Server Security .....: 144


Linux Server Security

จากน$นใหสง restart service


# /etc/init.d/vsftpd restart

ส7 า หรบโปรแกรม FTP Client ทรองรบ TLS/SSL น$ น บน Linux คอโปรแกรม


gFTP และบน Microsoft Windows จะเปCน SmartFTP, CoreFTP และผทใช Firefox สามารถ
ตดต$ง Plugin ชอว&า FireFTP รองรบการใชงาน TLS/SSL ไปหา download มาใชไดฟร หรอ
กรณท Webmaster ใช Tools ในการสราง Webpage ทใชการส&งไฟล^ผ&าน FTP บน Tool ก_ให
ก7าหนดค&าใน Option เลอกใชงานในส&วนของ TLS/SSL จHงจะสามารถ login ได ตองไม&เขาใจ
ผดเกยวกบเรอง TLS/SSL จนสบสนว&ามนคอ SFTP นะครบ ไม&เ หมอนกนเพราะ SFTP
ท7า งานกบ SSH ท Port 22 แต&เรองน$ ท7า งานบน Port 21 ครบเวลาก7า หนดค&า ในโปรแกรม
เครองลกจะไดไม&เผลอเลอก Port 22 จะท7างานไม&ได

บทสรป
จากขอมลข&าวสารเกยวกบเรอง 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/ หรอ

บทท!1 7 FTP Server Security .....: 145


Linux Server Security

/var/ftp แสดงว&าน&าจะสามารถไปท&องเทยวทต&าง ๆ ได ใหรบลองเปลยนไปทอนดเช&น cd /etc


แลวลอง ls หากพบว&าไปได เห_นไฟล^ของระบบได แสดงว&า FTP Server ไม&มการปองกน ผไม&
หวงดก_จะส&งไฟล^เขามาไวใน Server ไดและยงเขามา download ไฟล^ส7าคญไปดได เช&นไฟล^
passwd และไฟล^ใน Web Server ท$งหมดจะท7าใหไม&ม ความลบอกต&อไป ใหผดแลระบบได
ทดลองและน7าประโยชน^จากบทน$ไปใชดนะครบ จะมความปลอดภยสงขH$นเพราะนอกจากจะ
สนบสนนเรอง Chroot jail แลวยงรองรบการท7า งานบน TLS/SSL ทมการเขารหสขอมล
ปองกนผทชอบดกจบ User/Password อกดวย แต&ตองไม&ลมนะครบว&าตองท7างานร&วมกนกบ
Firewall และ TCP Wrappers จHงจะแข_งแรงมากขH$น

บทท!1 7 FTP Server Security .....: 146


Linux Server Security

บทท!1 8 Secure Shell

วตถประสงค
➢ เพอใหรจกโปรแกรมทใชในการรกษาความปลอดภยให Server
➢ เพอใหเขาใจการต%ดต&งและแกไขค*า Configuration ไดอย*างถกตอง
➢ สามารถน7าไปใชงานจร%งไดอย*างมประส%ทธ%ภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ Openssh เป?น Open source
2. ศCกษาการใชค7าสง slogin, sftp
3. เตรยมโปรแกรมส7าหรบต%ดต*อจากเครอง Client ทใช MS Windows OS
4. เน&อหาในบทน& ส*วนทเป?นการต%ดต&ง การแกไข จะเนนเป?นตวหนา (Bold)
5. ทดลองปฏ%บต%ตามข&นตอนทเรยงไว หากท7าผ%ดพลาดใหเร% มตนใหม*ด วยการ
ถอนการต%ดต&งโปรแกรมเด%มออกจากเครองจะดกว*าการท7าซ&7า

ก รต(ดต*งและใช%ง นโปรแกรม
ว%ธการดแลความปลอดภยใหกบ Server นอกจากจะแกไขหรอปTองกนในส*วนต*าง ๆ
ต&งแต*ภายในตวเครอง (Hardware) และไปจดการกนถCงระดบ Kernel ใหแขXงแกร*งแลวกXตาม
แต*ในขณะเดยวกนส%งทตองระมดระวงเป?นอนดบตนไม*แพกนกXค อการปกปTองหรอปTองกน
ในการทจะอนZญาตใหลกข*ายเขามาท7าการใด ๆ ใน Server ซCงในอดตเราอาจคZ นเคยกบการ

บทท!1 8 Secure Shell .....: 147


Linux Server Security

เขาไปควบคZม Server จากภายนอกดวยการพCงบร%การต*าง ๆ เช*น telnet, rcp, rlogin ต*อมาพอร


ว*าการใชบร%การดงกล*าวมป\ญหาเรองการเขารหสสญญาณขอมลทเป?นความลบเช*น รหสผ*าน
ในการส*งขอมลท&งหมดไปยงเครองปลายทางไม*ม การเขารหสท7าใหขอมลทว% งไปบนสาย
สญญาณมลกษณะเป?นแบบทเรยกกนว*า Paint Text ส*งผลใหผไม*หวงดสามารถใชว%ธการดก
จบขอมลทว%งในระบบเครอข*ายสามารถทจะรบรถCงรหสผ*านในขณะทก7าลง Login ไดอย*าง
ง*ายดาย ซCงมความเสยงสงมากในการใชงานป\จจZบน ดงน&นจCงมการน7าเอาเทคโนโลยทแขXง
แรงขC&นมการเขารหส การตรวจสอบรหสระหว*างผต%ดต*อกบ Server ว*าตรงกนหรอไม*ถาตรง
กนกXจะอนZญาตใหเขาระบบไดเป?นตน Service ใหม*ท กล*าวถCงน&กXค อการใช Shell ทมความ
ปลอดภยสงขC&นโดยม Software ทชอว*า Secure Shell (SSH) ถาเป?นการใชงานใน Linux จะใช
ชอว*า Openssh (เป?นโปรแกรมประเภท Open Source) ดงน&นในขณะทคZณน7า OS Linux หรอ
UNIX ไปต%ดต&งใชงานเป?น Server มกไดย%นข*าวเสมอว*ามช*องโหว*มากมายทเปeดประตไวใหผ
ไม*หวงด โดยเฉพาะ Linux บางค*ายยงมการเปeดบร%การจาก inetd (Internet Daemon) หรอบาง
ต7าราเรยกกนว*า Super Server ต*อมากXมการพฒนาเป?น xinetd เพอใหมความปลอดภยมากขC&น
แต*กXยงเป?นช*องทางทท7าใหเก%ดการโจมตไดอย*างง*ายดาย ในป\จจZบน Secure Shell ไม*ตองเปeด
บร%การผ*าน xinetd แลวผดแลระบบทจะปTองกนเฉพาะเรองน&กXจะไปดเรองทเกยวของท&งหมด
3 เรองคอ Firewall, TCP wrappers และ SSH ท&งสามส*วนน&ตองท7างานใหสอดคลองกนจCงจะ
เปeดใหบร%การได
OpenSSH ทเราก7าลงใชงานกนอย*น&เป?น Application ตวหนCงทมการจดการเรองการ
เขารหสใหกบการต%ดต*อเชอมโยงกนระหว*างผดแลระบบทเครอง Workstation กบเครอง
Server ทอย*ห*างไกล ทสามารถไววางใจในการต%ดต*อกนไดทZกเรองเช*น ขอมลต&งแต*เร%ม login
รวมไปถCงการต%ดต*อกนดวยค7าสงต*าง ๆ ทใชงานในระหว*างการต%ดต*อกนอย*และมบร%การ
ความปลอดภยเรองการคดลอกดวยการใช Secure copy (scp) และ Secure Ftp (sftp) สามารถ
ใชค7าสงเหล*าน&ไดในขณะท OpenSSH ก7าลงท7างานอย*อกดวย เร%มตนใชงานกนเลยดกว*า

บทท!1 8 Secure Shell .....: 148


Linux Server Security

SSH Daemon (sshd) เป? นตวโปรแกรมทท7 า หนาทคอยดกฟ\ ง การต% ดต* อ มาจาก


ภายนอกตามค*าต*าง ๆ ทถกก7าหนดไวใน Configuration File ซCงในการต%ดต&งโปรแกรมใชงาน
จะมการก7าหนดค*า Default ของโปรแกรมมาใหทZกคร&งอย*แลวมท&งส*วนทใชงานและส*วนท
เป?นค7าอธ%บายความหมายการปeดและเปeดใชงานในแต*ละส*วน โดยเฉพาะอย*างย%งค*า Default
จะก7าหนดค*าทโปรแกรมหลกตองการใชในการเขารหส การสรางรหสกZญแจและการก7าหนด
อายZของรหสต*าง ๆ ทใชงานไดตามระยะเวลาทต&งไว ซCงในการต%ดต&งมกไดค*าทผเขยนก7าหนด
ไว หากตองการใหการใชงานเป?นไปตามความตองการของผดแลระบบตองมการแกค*าต*าง ๆ
ดงต*อไปน&
ข*นท!1 1 ควรอย*างย%งทผดแลระบบพCงกระท7าเหมอนกนทZกเรองคอ การส7ารองไฟลo
Configure เด%มเกXบไวแลวจCงเร%มแกไข เพอในวนหนาจะสามารถกค*า Default ของเด%มกลบมา
ใชใหม*ได ท7าดงน&
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

ข*นท!1 2 เร%มท7าการแกไขค*า Configuration ดงต*อไปน& (ใหท7าการแกไขตามเฉพาะท


เป?นตวอกษรหนา <Bold> หากบางบรรทดในบาง Version มการแกมาใหแลวกXไม*ตองท7าอก)
ตอง login ดวย root หรอ Super User (su) เท*าน&น
# vi /etc/ssh/sshd_config
# แกค*าใหตรงกบระบบทใชงานจร%งตามตองการ
# ส7าหรบไฟลoน&ตวอกษรตวพ%มพoใหญ*-เลXก มผลกบการท7างานใหดจากค*าตวอย*าง
Port 22
#Protocol 2,1
Protocol 2
#AddressFamily any

บทท!1 8 Secure Shell .....: 149


Linux Server Security

#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

บทท!1 8 Secure Shell .....: 150


Linux Server Security

# 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

บทท!1 8 Secure Shell .....: 151


Linux Server Security

#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

บทท!1 8 Secure Shell .....: 152


Linux Server Security

#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

ส7าหรบส*วนแรกของ Configuration คงไม*สรางป\ญหาเพราะเป?นค*าทเปลยนแปลง


ค*าเด%ม และมความหมายในแต*ละบรรทดทเขาใจง*ายอย*แลว ทยZ*งยากและสบสนคอมการเพ%ม

บทท!1 8 Secure Shell .....: 153


Linux Server Security

ค*าในสบรรทดสZดทาย ซCงเป?นการก7าหนดให User และ Group ทมส%ทธ%ในการ login เขาทาง


Secure Shell ดวยการใช AllowUsers และ AllowGroups ได และสามารถเล อกว* า จะไม*
อนZ ญ าตให User หร อ Group ใดท ไม* ให เข าใช Server ไดด วยการใช DenyUsers และ
DenyGroups หากมจ7านวนมากกว*า 1 user หรอ 1 group ใหแยกแต*ละ User หรอ Group ดวย
การเวน 1 เคาะ (Space)

บทสรป
จากการใชงานและทดสอบพบว*าป\จจ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 ส*งผลใหไม*สามารถใชงานไดควรตรวจสอบข&นตอน
ทไดวางแผนไวใหละเอยดเพอไม*ใหเก%ดความผ%ดพลาด

บทท!1 8 Secure Shell .....: 154


Linux Server Security

บทท!1 9 Firewall Using IPTABLES

วตถประสงค
➢ เพอใหเขาใจหลกการนา IPTABLES มาใชสราง Firewall
➢ เพอใหจาแนกการป)องกนแต+ละ Server ไดอย+างถ2กตอง
➢ สามารถนาไปใชงานจร3งไดอย+างม4ประส3ทธ3ภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตร4ยมโปรแกรมท4ใชงานชอ iptables เป?น Open source
2. ศGกษาการใชคาสง ftp, telnet, nmap, netstat
3. เนNอหาในบทน4N ส+วนท4เป?นการต3ดตNง การแกไข จะเนนเป?นตวหนา (Bold)
4. ทดลองปฏ3บต3ตามขNนตอนท4เร4ยงไว หากทาผ3ดพลาดใหเร3มตนใหม+ดวยการ
ถอนการต3ดตNงโปรแกรมเด3มออกจากเครองจะด4กว+าการทาซNา

ก รต(ดต*งและใช%ง นโปรแกรม
ป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น

บทท!1 9 Firewall Using IPTABLES .....: 155


Linux Server Security

หากพอม4เวลาควรศGกษาตวตนของโปรแกรม IPTABLES ใหละเอ4ยดขGNนอ4กน3ดจะไดนาความ


สามารถของมนไปประยYกต_ใชงานใหคYมค+าเต^มพ3กด สมกบท4ผ2พฒนาไดออกแบบสรางมาให
ใชกนด4กว+าท4 จะไดย3นบางคนบ+นว+า IPTABLES ไม+ด4 ทNงท4ตนเองก^ไปเอาโปรแกรมตวอนท4
ทางานบน IPTABLES มาใชงานอย2+ โดยเฉพาะปXจจYบนน4Nม4การพฒนาต+อเนองขGNนไปเรอย ๆ
เพอรองรบการปรบเปล4ยนระบบ Network ท4ม4ความซบซอนและปลอดภยมากขGNนเช+นปXจจYบน
สามารถใชงาน IPTABLES ทางานร+วมกบ IPV6 ซGงจะใหความปลอดภยมากกว+า IPV4 แต+
อาจตองทาการศGกษาใหละเอ4ยดมากขGNนเพอไม+ใหการทางานผ3ดพลาด และท4สาคญคอบางคน
มกค3ดว+าเคยใชงาน IPTABLES กบ Kernel 2.4 ก^ไปคดลอกมาใชงานบน Kernel 2.6 ทนท4
แบบน4Nอาจม4บางส+วนท4ตองปรบปรYงเพอใหม4ประส3ทธ3ภาพในการใชงานด4ขGNนและรวดเร^วขGNน
ตามข4ดความสามารถของ Version ใหม+ บางคาสงหรอบางกฎเกณฑ_สามารถนามาใชไดเพราะ
Version ท4ส2งกว+าย+อมเห^นการทางานใน Version เก+าไดทNงหมดแต+การปรบปรYง Version นNน
หมายถGงการแกปXญหาต+าง ๆ และเพ3มข4ดความสามารถใหม+ ๆ เขามาหากคYณยงใชว3ธ4คดลอก
ของเด3มมาใช ก^จะไม+ไดรบอะไรใหม+ ๆ ท4ผ2พฒนาทามาให ในบทน4Nผ2เข4ยนจะนาหลกและว3ธ4
การใหม+ ๆ ของ IPTABLES 1.3.x (ขณะท4เข4ยนหนงสอน4N iptables 1.4 กาลงอย2+ระหว+าง Test)
มานาเสนอเพอใหนาไปปรบปรYงเพ3มเต3มใชงานใหเหมาะสมกบการใชงานของแต+ละหนาท4
ดงนNน หากคY ณกาลงทา Server ท4 ใหบร3 ก ารอะไรควรศG ก ษาและทา Firewall ใหกบเครอง
Server นNน ๆ ใหตรงกบความตองการเท+านNน ไม+ควรลอกทNงหมดหรอทาเหมอนกนหมดทYก
เครองเพราะอาจไม+เก3ดผลด4เท+าท4ควรหรออาจเก3ดความขดแยงในขณะใหบร3การกบล2กข+ายก^
เป?นได ผ2เข4ยนไดพยายามสรYปแต+ละขNนตอนเพอใหง+ายและสามารถนาไปใชไดทนท4 เพ4ยงแต+
ควรอ+านใหเขาใจก+อน จะไดไม+เก3ดการทางานท4ผ3ดพลาดขGNนแลวหาสาเหตYไม+พบ ในอด4ตร2ป
แบบการใชงานอย+างง+ายท4มกพบการทาตวอย+าง Firewall ดวย IPTABLES ม4การใชงานง+าย ๆ
คอ ม4การใชงาน 3 Policy ในการควบคYมซGงประยYกต_หรอดดแปลงมาจากการใชงาน ipchains
นนเอง ลองด2 Firewall Model กนก+อน

บทท!1 9 Firewall Using IPTABLES .....: 156


Linux Server Security

ร'ปท!1 9.1 Firewall placement in the TCP/IP reference model

บทท!1 9 Firewall Using IPTABLES .....: 157


Linux Server Security

ถาตองการใหทางานสมบ2รณ_ขGNนควรศGกษารายละเอ4ยดท4 โปรแกรมม4มาให และนา


ไปใชใหตรงกบความตองการเท+านNน ส3 งท4 IPTABLES ม4มาใหท4เด+นก^ค อการสราง Module
ขGNนมาเพอแยกการทางานของ rule table ใหทางานแต+ละ packet แยกกนอ3สระ และจาแนก
ออกเป?น 3 Table คอ filter table, nat table และ mangle table ม4รายละเอ4ยดดงน4N
Filter Table เป?น Table หลกส+วน Table อน ๆ จะถ2กระบYเพ3มเต3มโดยการสง option
ทาง Command Line หนาท4สาคญของ filter table ท4เป?นพNนฐานในการใชงานม4ดงน4N
1. Chain-relate operation ประกอบดวย INPUT, OUTPUT, FORWARD และ
user-defined chain
2. Target disposition ประกอบดวย ACCEPT หรอ DROP
3. IP header field match operations แต+ละ protocol, source และ destination
address, input และ output interface, และ fragment handling
4. Match operation ของ TCP, UDP และ ICMP header field

NAT table ม4ทNงหมด 3 ร2ปแบบดงน4N


1. Unidirectional outbound NAT ใชสาหรบ Private IP Address แบ+งได 2 แบบคอ
1.1 Basic NAT ใช map local private source address ไปยงกลY+มของ Public IP
address
1.2 NAPT (Network Address Port Translation) ใช map local private IP
address ไปยง Public IP Address 1 เบอร_ (เหมอนกบ linux masquerading แบบ
เด3มท4ใช ipchains )
2. Bidirectional NAT เป?นแบบสองทางทNงการเชอมต+อแบบ inbound และ
outbound และยงใชทา bidirectional mapping ระหว+าง IPV4 และ IPV6 address
อ4กดวย

บทท!1 9 Firewall Using IPTABLES .....: 158


Linux Server Security

3. Twice NAT เป?นแบบอนY ญาตทN งสองทางคอทN ง inbound และ outbound ของ


Source และ Destination

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)

Mangle table ยอมใหกาหนดตาแหน+ง จดกลY+มของค+าต+าง ๆ ของ netfilter ทาการ


เปล4ยนตาแหน+งของ packet ก+อนส+งออกไปปลายทาง ประกอบดวย build-in chain ดงน4N
1. PREROUTING ใชระบYการเปล4ยน packet ท4เขามายง interface ก+อนทาการหา
เสนทางและตดส3นใจว+าจะส+งไปยง local IP Address ใด
2. INPUT ใชระบYการเปล4 ยน packet ทYก ๆ process หลงจากท4ผ+านการขดขวาง
จากกฎของ PREROUTING แลว
3. POSTROUTING ใชระบYการเปล4ยนแปลง packet ท4จะออกจาก Firewall หลง
จากท4ผ+านการขดขวางจากกฎของ OUTPUT แลว
4. FORWARD ใชระบYใหเปล4ยน packet ท4จะส+งไปยง Firewall

บทท!1 9 Firewall Using IPTABLES .....: 159


Linux Server Security

5. OUTPUT ใชระบYการเปล4 ยนแปลงค+าท4 ระบบภายในสรางขGNนก+อนส+ง packet


ออกไปยงภายนอก

ในการวางต3 ดตN ง ระบบ Network ท4ด4น N น ผ2 ออกแบบควรค านG งถG ง ระบบความ


ปลอดภยขอม2ลเป?นสาคญ เพราะเมอใดก^ตามหากวางระบบใหม4ช+องโหว+ อาจทาใหขอม2ลเก3ด
ความเส4ยหายได หรอถาเป?นระบบ Internet การป)องกนใหระบบทางานไดอย+างม4เสถ4ยรภาพ
ย3งม4ความจาเป?นอย+างมาก และจะไม+สามารถท4 จะก2คนหรอแกไขไดเลยหาก ม4ผ2 บYกรYกท4ม4
ความชานาญสามารถควบคYม Server ของคYณและยง Reconfiguration ใหการทางานต+า ง ๆ
เปล4ยนไปตามท4ผ2บYกรYกตองการไดอ4กดวย ในส+วนของ OS ท4ออกแบบมาใหทาหนาท4จดการ
กบระบบ Network มกจะทาการป)องกนตวเองไดในระดบหนGงอย2+แลว เพราะบร3ษทผ2ผล3ต OS
ใดหากไม+ม4ระบบรกษาความปลอดภยอะไรเลย ก^จะไม+ม4ผ2ใชงานผล3ตภณฑ_นNน เพราะจะไม+ม4
เสถ4ยรภาพในการใชงาน Linux ก^เป?น OS ตวหนGงท4จาลองหรอลอกแบบมาจาก UNIX จGงม4
ระบบรกษาความปลอดภยมาใหเหมอนกน ปXจจYบนไดนาเอาโปรแกรม IPTABLES มาเป?น
ส+วนหนGงของการรกษาความปลอดภย (Firewall) และยงแถมโปรแกรม SElinux ท4คอยด2แล
ตรวจสอบการทางานของ Kernel ทาใหม4ค วามปลอดภยส2 งขG N น กว+ า Version เด3 ม เพอให
สามารถนาไปใชงานไดทนท4พรอมตวอย+างเป?นขNน ๆ ไปควรศGกษาด2เป?นรายหวขอแลวนาไป
ประยY กต_ ใชงานใหตรงกบการต3 ดตN ง Server และ Service ต+ า ง ๆ โดยเฉพาะ อย+ า ลอกไป
ทNงหมดอาจเป?นไฟล_ท4ยาวและด2เขาใจยากสาหรบผ2เร3มตน
ก+อนอนควรจะทราบ Policy ท4โปแกรมสรางมาใหภายในแลว ม4ทNงหมด 5 chain
คYณสามารถสราง chain เองไดแลวแต+จะตNงชออะไรนอกเหนอจาก chain ท4ม4อย2+แลวดงน4N
- INPUT
- OUTPUT
- FORWARD

บทท!1 9 Firewall Using IPTABLES .....: 160


Linux Server Security

- 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ด

บทท!1 9 Firewall Using IPTABLES .....: 161


Linux Server Security

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)

บทท!1 9 Firewall Using IPTABLES .....: 162


Linux Server Security

-m หมายถGง match state ในการรบส+ง packet


-j หมายถGง jump ส+ง packet ไปยงปลายทางดวย policy อะไร พอมาถGง -j ก^
ตองตามดวย policy ท4ตองการส+ง packet ไปให ม4ค+าหลายค+า ดงน4N
ACCEPT หมายถGง ยอมให packet ผ+านไปได
DROP หมายถGง ไม+ยอมให packet ผ+านไปไดโดยไม+ม4การแจงกลบ
REJECT หมายถGง ไม+ยอมให packet ผ+านโดยม4การแจงใหทราบ
RETURN หมายถGงใหไปเลอกการทางานตามเป)าหมายท4กาหนด
MASQUERADE ใชร+วมกบ NAT และ DHCP
SNAT ใชร+วมกบ PREROUTING
REDIRECT ใชร+วมกบ NAT ในการเปล4ยนแปลง output port
DNAT ใชร+วมกบ POSTROUTING

อางอ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.

บทท!1 9 Firewall Using IPTABLES .....: 163


Linux Server Security

Common options used in Rule Specifications


Option Description
-i ingressInterface Match if packet entered system on ingressInterfacee.g., eth0.
Applicable only to INPUT, FORWARD, and PREROUTING chains.
-o egressInterface Match if packet is to exit system on egressInterface. Applicable only to
FORWARD, OUTPUT, and POSTROUTING chains.
-p tcp | udp | icmp
Match if the packet is of the specified protocol. If not specified,
| all
defaults to all.

Match if the packet is being sent to TCP/UDP port destinationPort. Can


--dport
be either a number or a service name referenced in /etc/services. If
destinationPort
numeric, a range may be delimited by a colone.g., 137:139 to denote
ports 137-139. Must be preceded by a -p (protocol) specification.
Match if the packet was sent from TCP/UDP sourcePort. The format of
--sport sourcePort
sourcePort is the same as with destinationPort, listed earlier in this
table. Must be preceded by a -p [udp | tcp] specification.
Look for flags listed in mask; if match is set, match the packet. Both
--tcp-flags mask
mask and match are comma-delimited lists containing some
match
combination of SYN, ACK, PSH, URG, RST, FIN, ALL, or NONE.
Must be preceded by -p tcp.

บทท!1 9 Firewall Using IPTABLES .....: 164


Linux Server Security

Common options used in Rule Specifications


Option Description
Match if the packet is icmp-type type. type can be a numeric ICMP
--icmp-type type
type or a name. Use the command iptables -p icmp -h to see a list of
allowed names. Must be preceded by -p icmp.
-m state --state Load state module, and match packet if packet's state matches
statespec statespec. statespec is a comma-delimited list containing some
combination of NEW, ESTABLISHED, INVALID, or RELATED.
-j accept | drop |
log | reject | Jump to the specified action (accept, drop, log, or reject) or to a custom
[chain_name] chain named chain_name.

ต+อไปน4Nจะเป?นตวอย+างการป)องกนท4จะนาไปปรบปรYงแกไขใหตรงกบการใชงาน
จร3ง ซGงม4การนาเอากฎท4ถ2กตองในการสรางเพอรองรบการส+งค+าไปกลบท4ถ2กตองตามท4ผ2เข4ย น
โปรแกรมไดกาหนดมาให การทดลองแต+ละตวอย+างใหสรางเป?น script แลวสง Run จะด4กว+า
ลองแบบ Command line เพราะจะไดนาตวอย+างถดไปมาเพ3 มแลวทดลองต+อไดจนครบทYก
เรอง มาลองศGกษาด2ท4ละตวอย+างดงน4N

ตวอยV งท!1 1 การตNงค+าเร3มตนท4ถ2กตอง (Initializing netfilter)


# vi /root/test_firewall

บทท!1 9 Firewall Using IPTABLES .....: 165


Linux Server Security

… เร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

บทท!1 9 Firewall Using IPTABLES .....: 166


Linux Server Security

ก^จะพบว+า chain ทNง 3 ถ2กกาหนดให DROP เมอทางานตามท4ตองการก^ใหทดลอง


ทาตวอย+างต+อไป

ตวอยV งท!1 2 การกาหนด Policy ใหกบ Loopback interface


# กาหนดให loopback interfaces รบ-ส+ง packet ไดอย+างอ3สระ
$IPTS -A INPUT -i lo -j ACCEPT
$IPTS -A OUTPUT -o lo -j ACCEPT

ตวอยV งท!1 3 ป)องกน IP แปลกปลอมเขามา (Anti-IP-spoofing rules) การทางานของผ2ด2แ ล


ระบบควรม4การบนทGกค+าท4ไดไวใน log file เพอตรวจสอบและปรบปรYงระบบไดถ2กตอง ดง
ตวอย+าง
# เป?นตวอย+างเบNองตนสาหรบกลY+ม ip address ท4แปลกปลอมเขามา
$IPTS -A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTS -A INPUT -s 255.0.0.0/8 -j DROP
$IPTS -A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTS -A INPUT -s 0.0.0.0/8 -j DROP
$IPTS -A INPUT -s 127.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPTS -A INPUT -s 127.0.0.0/8 -j DROP
$IPTS -A INPUT -s 192.168.0.0/16 -j LOG --log-prefix "Spoofed source IP!"
$IPTS -A INPUT -s 192.168.0.0/16 -j DROP
$IPTS -A INPUT -s 172.16.0.0/12 -j LOG --log-prefix " Spoofed source IP!"
$IPTS -A INPUT -s 172.16.0.0/12 -j DROP
$IPTS -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix " Spoofed source IP!"

บทท!1 9 Firewall Using IPTABLES .....: 167


Linux Server Security

$IPTS -A INPUT -s 10.0.0.0/8 -j DROP


$IPTS -A INPUT -s 208.13.201.2 -j LOG --log-prefix "Spoofed Woofgang!"
$IPTS -A INPUT -s 208.13.201.2 -j DROP
กรณ4ท4ร2ว+า IP Address ใดท4ไม+ปลอดภยก^สามารถเพ3มลงไปจากตวอย+างน4Nไดเช+น
$IPTS -A INPUT -s xxx.xxx.xxx.xxx -j DROP
xxx.xxx.xxx.xxx คอ IP ท4ไม+ยอมใหเขามา

ตวอยV งท!1 4 ป)องกนการ scan แบบ stealth (Anti-stealth-scanning rule)


เป?นว3ธ4การป)องกนไม+อนYญาตใหผ2ท4กาลง scan มาเชอมต+อกบระบบไดดวยการใช
TCP header syn bit ตรวจสอบ เปร4ยบเท4ยบกบ -m state เป?นการตรวจสอบสาหรบผ2ท4จะเขา
มาใหม+เท+านNน (NEW) ส+วนผ2ท4สามารถเขาระบบไดอย2+แลวยกเวน (! --syn) ตรวจสอบผลจาก
log file
$IPTS -A INPUT -p tcp ! --syn -m state --state NEW \
-j LOG --log-prefix "Stealth scan attempt?"
$IPTS -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

ตวอยV งท!1 5 การกาหนดค+า rule ใหกบ INPUT chain


ใหสงเกตร2ปแบบการใช command option -m ในตวอย+า งว+าถากรณ4เป?น INPUT
chain ตองใชค+า state อะไรบางแลวไปเปร4ยบเท4ยบกบ OUTPUT chain ว+า state ตองเป?นค+า
อะไรถGงจะทางานสอดคลองกนไดสมบ2รณ_
# กาหนดใหยอมรบ Connection ท4กาลงทางานอย2+ก+อนหนา rule น4Nใหทางานต+อไป
$IPTS -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
# Accept inbound packets which initiate SSH sessions

บทท!1 9 Firewall Using IPTABLES .....: 168


Linux Server Security

$IPTS -A INPUT -p tcp -j ACCEPT --dport 22 -m state --state NEW


# Accept inbound packets which initiate FTP sessions
$IPTS -A INPUT -p tcp -j ACCEPT --dport 21 -m state --state NEW
# Accept inbound packets which initiate HTTP sessions
$IPTS -A INPUT -p tcp -j ACCEPT --dport 80 -m state --state NEW
# Log anything not accepted above
$IPTS -A INPUT -j LOG --log-prefix "Dropped by default:"
ตวอย+างขางบนไม+ไดระบYค+า source ip address ในระบบจร3งม4การจดการเป?นแบบ
Bastion host ท4ตNง server อย2+ในกลY+ม DMZ จGงควรกาหนดค+า source ip address ใหกบเครองท4
ใหบร3การในแต+ละ service เช+น server ท4เป‘ดบร3การ Secure shell port 22 กาหนดดงน4N
$IPTS -A INPUT -p tcp -j ACCEPT -s <source IP> --dport 22 -m state --state NEW

ตวอยV งท!1 6 การกาหนด rule ใหกบ OUTPUT chain


ใหสงเกตว+า การใช command option -m ใส+ค +า TCP Header bit อะไรบางเพอให
สอดรบกบ rule ท4 INPUT chain ถากาหนดไม+ถ2กตองจะม4ผลใหการทางานชาลงและอาจม4ขอ
ผ3 ด พลาดในการป) อ งก นได ในต วอย+ า งน4 N จ ะเห^ นว+ าม4 ก ารใช state RELATED และ
ESTABLISHED กาหนดไวใหสาหรบกรณ4ท4 ม4 connection ใดท4 ผ+ า นการตรวจสอบจาก
INPUT chain แลวม4การ connect ไดสาเร^จและกาลงทางานอย2+ก+อนท4 จะม4 rule น4Nยอมใหส+ง
packet ท4สมพนธ_กนกบการรองขอมาออกไปได ใหกาหนดดงน4N
$IPTS -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
ถาตองการใหเครองตอบรบการใชคาสง ping ใหระบY protocol และ type ดงน4N
$IPTS -A OUTPUT -p icmp -j ACCEPT --icmp-type echo-request

บทท!1 9 Firewall Using IPTABLES .....: 169


Linux Server Security

ถาตองการส+ ง 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

จากตวอย+างท4ผ+านมาเป?นการออกแบบสราง Firewall ท4เนนการควบคYมทNง 3 Policy


แลวม4การกาหนดใหม4 chain rule ทNงดาน incoming และ outgoing packets ใหกบระบบท4ม4
การตNง Server ทว ๆ ไปโดยส+วนใหญ+นอกจากจะป)องกน Service ท4 Server ใหบร3การแลวยง
เนนการป)องกนการถ2กโจมต4ดวยการ scan ในร2ปแบบต+าง ๆ เพอไม+ใหผ2 ไม+หวงด4ร2ว+าเครอง
Server เป‘ด port อะไรท4 ไม+ไดใชงานท3Nงไวบาง ก+อนท4 จะไปศGกษาเรองอนต+อควรร2 เก4 ยวกบ
เครองมอท4ใชในการ Scan port กนก+อน เครองมอท4ม4ความเก+งในระดบโลกท4น3ยมใชกนก^คอ
nmap ท4ม4มาใหใชฟร4 ๆ ใน Linux อย2+แลว ควรศGกษาว3ธ4การใชคาสงเบNองตนเพอใชในการ
ทดสอบความแข^งแรงของ Firewall สกเล^กนอย

บทท!1 9 Firewall Using IPTABLES .....: 170


Linux Server Security

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ไม+ตองการ

บทท!1 9 Firewall Using IPTABLES .....: 171


Linux Server Security

ให nmap ไม+ตอง ping tager ใหใช -P0 และท4ใชกนบ+อยคอ -O เป?นการกาหนดให OS แสดง


ค+าต+าง ๆ ของระบบใหทราบดงตวอย+างต+อไปน4N

ตวอย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

บทท!1 9 Firewall Using IPTABLES .....: 172


Linux Server Security

ตวอยV งท!1 2 การใช nmap ท4น3ยมใชตรวจสอบการทางานโดยทวไปใหสง


# nmap -sURT -F -P0 -O 192.168.1.11
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-01-03 13:05 ICT
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open
and 1 closed TCP port
Interesting ports on 192.168.1.11:
Not shown: 1239 filtered ports, 1010 open|filtered ports
PORT STATE SERVICE VERSION
1379/udp closed dbreporter
1399/udp closed cadkey-licman
2045/udp closed cdfunc
5011/udp closed telelpathattack
32773/udp closed sometimes-rpc10
32779/udp closed sometimes-rpc22
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 809.294 seconds

ตวอยV งท!1 3 การตรวจสอบ Version (Nmap Version Scan)


# nmap -sV -p 80 192.168.1.10
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-01-06 10:40 ICT
Interesting ports on 192.168.1.10:
PORT STATE SERVICE VERSION

บทท!1 9 Firewall Using IPTABLES .....: 173


Linux Server Security

80/tcp open http Apache httpd 2.2.4 ((Fedora))


Nmap finished: 1 IP address (1 host up) scanned in 19.153 secondsds

หลงจากศGกษาการป)องกนดวย iptables ตามตวอย+างทNงหกและยงสามารถใชเครอง


มอในการ Scan port อย+างมออาช4พเพอใชทดสอบ Firewall ไดแลว ต+อไปจะนาเสนอส3งท4ใกล
ตวสาหรบผ2ด2แลระบบตองศGกษาทดลองเพอนาไปสราง Firewall ท4เหมาะสมกบการใชงาน
จร3ง โดยจะมY +งเนนร2ปแบบการเข4ยน Script ท4ครอบคลYม การป)องกนในแต+ละส+ว นมาใหด2
ทNงหมด 5 แบบ ดงต+อไปน4N
1. Host Forwarding Destination NAT หรอ DNAT ถ2กออกแบบมาใหสาหรบทา
Host Forwarding ซGงในปXจจYบ นไดม4การนาเอาหลกการน4Nไปใส+ในอYปกรณ_ Network ต+าง ๆ
กนมากมาย ว3ธ4การน4Nเหมาะสาหรบ Site ขนาดเล^กท4 ได Public IP Address เพ4ยงเบอร_เด4ยวก^
สามารถท4จะตNง Server ภายในหน+วยงานใหทางานอย2+บน Private IP Address ได DNAT จะ
อนY ญ าตใหม4 ก าร connected จากภายนอกเข ามายง Service ภายในดวยว3ธ 4 ก ารท4 เร4 ย กว+ า
Transparent forward ไปยง Server ท4ต3 ดตN ง อย2 + บ น DMZ โดยท4 Public Service ไม+ต องให
บร3การอย2+บนเครองท4ทาหนาท4 Firewall ดงภาพ

ร2ปท4 9.2 แสดง Transparent forward

บทท!1 9 Firewall Using IPTABLES .....: 174


Linux Server Security

จากภาพจะเห^นว+ากรณ4ท4 ได Public IP Address มา 1 IP ใหนา IP ท4ไดไปต3ดตNงใช


งานบนเครอง Firewall จากนNนใหเครอง Firewall แจก Private IP Address ออกมาใชภายใน
เพอตNง Server ซG งถอว+ า เป? น Zone ท4ปลอดภยท4สYด เมอม4ก ารรองขอใชบร3 การจากล2กข+า ย
ภายนอก (Remote Client) มายงเครอง Firewall ไม+ว+าจะขอใชบร3การเว^บหรอ mail ท4ไดตNง
Server ไวใหบร3การภายในหน+วยงานหรอองค_กรของเรา ท4ต3ดตNงอย2+บน Private IP Address
ขณะท4 packet ส+งการรองขอมายง Firewall จะถ2 กเปล4 ยน Address ปลายทาง (Destination
Address) ไปยง local server ท4บร3การนNน ๆ พรอมกบส+ง packet ไปใหดวย เมอม4การตรวจ
สอบตาม rule ท4ตNงไวถ2กตองจะม4การส+ง packet ออกจาก local server กลบออกไปยง Firewall
จากนNน Firewall จะทาหนาท4 เปล4 ยน Source Address ท4เป?น Private IP กลบเป?น Public IP
Address ของเครอง Firewall แลวส+ง packet ออกไปใหกบ Remote Client ต+อไป ทาไดโดย
การสราง Script ดวย iptables ตวอย+า งน4Nเป?นการ forward ไปยง web server ถาตองการให
บร3การอน ๆ ก^ใหเปล4ยน port ใหตรงกบการใชงานจร3ง
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d <public address> --dport 80 \
-j DNAT --to-destination <local web server>
มกม4ค าถามท4 ยากในการอธ3บายเสมอว+า ท4 บอกว+า NAT ทาหนาท4 เปล4 ยน Address
นNนเปล4ยนในขNนตอนไหน คาตอบก^คอ DNAT จะเร3มทาการเปล4ยนค+า Address ใหตNงแต+ก+อน
จะส+ง packet ไปให forward chain ดงนNนจGงตองทาการสราง rule ใหกบ forward chain ใหส+ง
ค+าไปยง Server ท4อย2+ใน Private IP ใหสอดคลองกนกบ Address ของ Public IP Address บน
firewall ตามตวอย+าง
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d <local web server> --dport 80 \
-m state --state NEW -j ACCEPT

บทท!1 9 Firewall Using IPTABLES .....: 175


Linux Server Security

การท4 Server จะส+ง packet กลบออกไปส2+ Internet ไดสมบ2รณ_นNนตองม4การกาหนด


forward rule ให ACCEPT การเชอมต+อตNงแต+ตนเส4ยก+อนจGงจะทางานไดดงตวอย+าง
iptables -A FORWARD -i <DMZ interface> -o <public interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT
อย+ า งไรก^ ต ามตองไม+ล มในส+ ว นของ Remote Client ตองทาการ forward ค+ าท4
สมบ2รณ_ครบถวนไปให Server ดวยเหมอนกน ตองกาหนดให ACCEPT เฉพาะ NEW state
ใหส+งต+อไปยง rule ทNงหมดท4เชอมต+อไดสาเร^จ (ESTABLISHES หรอ RELATED state) ดง
ตวอย+าง
iptables -A FORWARD -i <public interface> -o <DMZ interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT
สรYปก^คอในการทาแบบท4 1 น4Nตองสราง Script ใหครบทNง 5 บรรทด จGงจะสามารถ
ทางานไดอย+างครบถวนสมบ2รณ_ (เฉพาะตวอย+างน4Nเป?น Web Server อย+างเด4ยวเท+านNน)

2. Host Forwarding and Port Redirection สาหรบแบบน4Nเป?นตวอย+า งท4 DNAT


ไม+ส ามารถทาหนาท4 เปล4 ยนแปลง Destination port ไดเหมอนกบ Address ถาตองการให
ทาการเปล4 ยนทNง Address และ Port ปลายทาง ตองทาการสราง script กาหนดให NAT ม4 2
rules เช+น port ท4 Remote Client รองขอมาเป?น port 80 โดยปกต3ทวไป server จะส+งค+ากลบท4
port 80 ดวยจะม4ผลเรองของ traffic เมอม4การใหบร3การเป?นจานวนมาก จGงม4การออกแบบ
ใหการตอบกลบหรอส+ง packet ของ server เปล4ยนเป?นหมายเลขอนแทน เช+นตวอย+างน4Nส+งค+า
กลบดวย port 81 แลวทาง firewall จะทาการ match เพอเปล4ยนเป?น port 80 ส+งใหกบ Client
ต+อไปดงตวอย+าง
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
-s <allowed remote host> --sport 1024:65535 \_

บทท!1 9 Firewall Using IPTABLES .....: 176


Linux Server Security

-d <public address> --dport 80 \


-j DNAT --to-destination <local web server>:81
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d <public address> --dport 80 \
-j DNAT --to-destination <local web server>
หลงจากทา NAT เสร^จแลวตองไม+ลมท4จะ forward packet จาก server ท4 port 81 ไป
ยง firewall ท4เป?น Public IP ใหเปล4ยนกลบเป?น port 80 ส+งค+าไปยง client ต+อไป
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d <local web server> --dport 81 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d <local web server> --dport 80 \
-m state --state NEW -j ACCEPT
อย+ า งไรก^ ต ามตองไม+ล มในส+ ว นของ Remote Client ตองทาการ forward ค+ าท4
สมบ2รณ_ครบถวนไปให Server ดวยเหมอนกน ตองกาหนดให ACCEPT เฉพาะ NEW state
ใหส+ งต+ อ ไปยง rule ทN ง หมดท4 เชอมต+ อ ไดสาเร^ จ (ESTABLISHES หรอ RELATED state)
เหมอนตวอย+างในขอ 1 แต+ตองทา 2 rule ใหครบ ดงน4N
iptables -A FORWARD -i <DMZ interface> -o <public interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT

บทท!1 9 Firewall Using IPTABLES .....: 177


Linux Server Security

3. Host Forwarding to a Server Farm แบบน4Nเป?นตวอย+า งในการใช DNAT ให


สามารถรบค+า Destination IP Address ไดหลาย IP เช+น 192.168.2.1-192.168.2.5 แบบน4Nจะม4
ประโยชน_มากกบระบบงานท4ใหบร3การล2กข+ายจานวนมาก ๆ ในเวลาพรอม ๆ กนเช+นการทา
e-auction หรอกรณ4ท4 เป?นเว^บสาคญตองม4ผ2 เขาด2พรอม ๆ กนจานวนมาก ๆ เพราะ server
แต+ละเครองจะม4การจากดการเขาใช (Max connection) ไวถาตองการแกปXญหาตองตNง server
หลาย ๆ เครอง (Server Farm) ท4ทางานและหนาท4 เด4ยวกนเช+นตวอย+างน4NตNงไว 5 เครอง แลว
ใหใชความสามารถของ DNAT จดการรบส+งค+าให Server แต+ละตว บางครNงก^เร4ยกว3ธ4การน4Nว+า
Load Balance ดงตวอย+าง
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d <public Web address> --dport 80 \
-j DNAT --to-destination 192.168.2.1-192.168.2.5
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d 192.168.2.0/29 --dport 80 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD -i <DMZ interface> -o <public interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT

4. ตวอยV ง Logical mapping ในขอน4Nเหมาะสาหรบหน+วยงานท4 ไดจดสรร Public


IP Address 8 เบอร_ ใหนาไปออกแบบ firewall ท4ต3ดตNง server บน Private IP Address 5 IP
ตามจานวน IP ท4เหลอดงตวอย+างในตารางต+อไปน4N

บทท!1 9 Firewall Using IPTABLES .....: 178


Linux Server Security

ตารางท4 1. การออกแบบ Firewall ท4ม4 8 IP Addresses


ADDRESS BLOCK IP ADDRESS
Network Address 203.254.25.80/29
Network Mask 255.255.255.248
Router Address 203.254.25.81
Firewall/DNS Address 203.254.25.82
First Host Address 203.254.25.83
Last Host Address 203.254.25.86
Broadcast Address 203.254.25.87
Total Local Hosts 5

ตารางท4 2. Logical Mapping ระหว+าง Public and Private Server Addresses


SERVER PUBLIC ADDRESS PRIVATE DMZ ADDRESS
Public Web Server(80) 203.254.25.83 192.168.1.3
Customer Web Server(443) 203.254.25.84 192.168.1.4
FTP Server(21) 203.3254.25.85 192.168.1.5
Mail Server(25) 203.254.25.86 192.168.1.6

บทท!1 9 Firewall Using IPTABLES .....: 179


Linux Server Security

iptables -t nat -A PREROUTING -i <public interface> -p tcp \


--sport 1024:65535 -d $PUBLIC_WEB_SERVER --dport 80 \
-j DNAT --to-destination $DMZ_PUBLIC_WEB_SERVER
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d $CUSTOMER_WEB_SERVER --dport 443 \
-j DNAT --to-destination $DMZ_CUSTOMER_WEB_SERVER
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d $FTP_SERVER --dport 21 \
-j DNAT --to-destination $DMZ_FTP_SERVER
iptables -t nat -A PREROUTING -i <public interface> -p tcp \
--sport 1024:65535 -d $MAIL_SERVER --dport 25 \
-j DNAT --to-destination $DMZ_MAIL_SERVER
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d $DMZ_PUBLIC_WEB_SERVER --dport 80 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d $DMZ_CUSTOMER_WEB_SERVER --dport 443 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d $DMZ_FTP_SERVER --dport 21 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> -p tcp \
--sport 1024:65535 -d $DMZ_MAIL_SERVER --dport 25 \

บทท!1 9 Firewall Using IPTABLES .....: 180


Linux Server Security

-m state --state NEW -j ACCEPT


iptables -A FORWARD -i <DMZ interface> -o <public interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i <public interface> -o <DMZ interface> \
-m state --state ESTABLISHED,RELATED -j ACCEPT

5. Local Port Redirection Transparent Proxy ตวอย+างสYดทายในการใช nat table


ทาหนาท4 Redirect port ใหกบ Transparent Proxy ท4น3ยมใชงานกนตามหน+วยงานหรอองค_กร
ต+ า ง ๆ แต+ต วอย+ า งน4 N เป? น การเข4 ย น Script ใหกบ Proxy Server ท4ต3 ดตN ง อย2 + บ น Private IP
Address ทางานร+วมกบ Firewall Server ซGงอาจไม+เหมอนกบผ2ท4ต3ดตNง Proxy Server ไวบน
Public IP Address ด2ร2ปแบบ script ดงตวอย+างต+อไปน4N
iptables -t nat -A PREROUTING -i <lan interface> -p tcp \
-s <lan hosts> --sport 1024:65535 --dport 80 \
-j REDIRECT --to-port 8080
iptables -A INPUT -i <lan interface> -p tcp \
-s <lan hosts> --sport 1024:65535 -d <lan address> --dport 8080 \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o <public interface> -p tcp \
-s <public address> --sport 1024:65535 --dport 80 \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i <public interface> -p tcp \
--sport 80 -d <public address> --dport 1024:65535 \
-m state --state ESTABLISHED,RELATED -j ACCEPT

บทท!1 9 Firewall Using IPTABLES .....: 181


Linux Server Security

iptables -A OUTPUT -o <lan interface> -p tcp \


-s <lan address> --sport 80 --dport 1024:65535 \
-m state --state ESTABLISHED,RELATED -j ACCEPT

Tip & Tricks


ในการใชงาน iptables เพอทา Firewall นอกจากจะป)องกนแต+ละ Service ใน Server
แลวยงป)องกนกลY+มท4ตองการ Scan port แต+ละชน3ดเพอหาช+องทางทาให Service หยYดทางาน
(Denial of Service) ดวยการปล+ อ ย packet ออกมาพรอม ๆ กนทาให Service รองรบการ
ทางานของ Process ท4เก3ดขGNนในเวลาเด4ยวกนจานวนมาก ๆ ไม+ไดจGงหยYดทางานลกษณะการ
ถ2กโจมต4แบบน4Nเร4ยกกนอ4กอย+างหนGงว+า syn-flood ผ2ด2แลระบบสามารถใช iptables ป)องกนได
ดงตวอย+างต+อไปน4N
EXT_IF=eth0 <- Public IP Address
INT_IF=eth1 <- Private IP Address
DEST_IP=xxx.xxx.xxx.xxx <- ค+า ip address ของ server
$IPTS -t nat -N syn-flood
$IPTS -t nat -A syn-flood -m limit --limit 12/s --limit-burst 24 -j RETURN
$IPTS -t nat -A syn-flood -j DROP
$IPTS -t nat -A PREROUTING -I $EXT_IF -d $DEST_IP -p tcp \
--syn -j syn-flood

หลกการใช nat table จGงถ2กนาไปใชในการทา Transparent Proxy เพราะสามารถ


บงคบใหล2 กข+ า ยกลY + ม Private IP Address ท4กาลงจะออกไปขอใชบร3 ก าร Port 80 ตองถ2 ก
เปล4ยนท3ศทาง (REDIRECT) ใหว3งไปท4 port 8080 ดงตวอย+างน4N

บทท!1 9 Firewall Using IPTABLES .....: 182


Linux Server Security

$IPTS -t nat -A PREROUTING -i $INT_IF -p tcp --dport 80 -j REDIRECT \


--to-port 8080
อ4กร2ป แบบหนG งท4 ตองม4 ก ารป) อ งกนคอ Xmas scan และการส+ ง Null packet จาก
ภายนอกซGงการโจมต4แบบน4Nไม+ค+อยม4ใครสนใจท4จะป)องกนใหทาตามตวอย+างต+อไปน4N
$IPTS -t nat -A PREROUTING -p tcp --tcp-flag ALL ALL -j DROP
$IPTS -t nat -A PREROUTING -p tcp --tcp-flag ALL NONE -j DROP
ตรงน4Nสาคญมากเพราะเป?นการใชงาน iptables ขNนส2งเท+าท4ด2ในการใชงานกนทว ๆ
ไปยงไม+เคยม4ใครทากนแมแต+ในค2+ม อ iptables ก^ไม+ม4แนะนาอาจเป?นเพราะตองม4การ Patch
ทN งท4 kernel และในส+ ว นของ iptables สามารถไปด2 ร ายละเอ4 ย ดและ Download ไดจาก
http://www.netfilter.org/ ใหทางานร+วมกบ psd patch เมอม4การ patch เสร^จแลว iptables จะม4
command option ในส+วนของ -m เพ3มขGNนอ4กอย+างคอ -m psd ใชประโยชน_ในการป)องกนการ
Scan port ดงตวอย+างต+อไปน4N
$IPTS -t nat -A PREROUTING -i $EXT_IF -d $DEST_IP -m psd -j DROP
หรอถาม4การนา iplimit patch มาใชก^จ ะเพ3 มความสามารถใหกบ iptables ในการ
จากดจานวน IP Address ท4ยอมให Connected ไดพรอม ๆ กนจานวนเท+าใด ดงตวอย+างต+อไป
น4NอนYญาตให Connected ไดพรอมกนส2งสYด 16 IP Address
$IPTS -t nat -A PREROUTING -i $EXT_IF -p tcp --syn -d $DEST_IP \
-m iplimit --limit-above 16 -j DROP
จากสองตวอย+างขางบนท4ใช psd และ iplimit คงตองศGกษาการ compile ใหม+ท4ค+อน
ขางยY+งยาก ถาคอยต3ดตามการทดลองของ netfilter จะพบว+าม4 patch ออกมาใหใชงานมากมาย
ม4ก ารปรบปรYงล+าสYด อย2+ ใ นชอ patch-o-matic-ng ยกตวอย+า งเมอป˜ ค.ศ. 2004 ตอนท4 ไวรส
CodeRed ระบาดผ+านเว^บ ทาง netfilter ไดออก string-matching patch มาช+วยในการป)องกน
CodeRed และ Nimda virus ดงตวอย+างต+อไปน4N

บทท!1 9 Firewall Using IPTABLES .....: 183


Linux Server Security

$IPTS -A INPUT -i $EXT_IF -p tcp -d DEST_IP --dport 80 \


-m string --string "/default.ida?" -j DROP
$IPTS -A INPUT -i $EXT_IF -p tcp -d DEST_IP --dport 80 \
-m string --string ".exe?/c+dir" -j DROP
$IPTS -A INPUT -i $EXT_IF -p tcp -d DEST_IP --dport 80 \
-m string --string ".exe?/c_tftp" -j DROP

จะเห^นไดว+า netfilter ไดพฒนาต3ดตามการเปล4 ยนแปลงการบYกรYกทYกร2ปแบบมา


ตNงแต+ตนจนปXจจYบน แต+ผ2เข4ยนยงไม+เห^นผ2ด2แลระบบคนไหนนาประโยชน_ต+าง ๆ เหล+าน4Nมา
ประยYกต_ใชงานกนเลย iptables Version 1.3.x ขGNนไป ก^ไดรวมเอา String-matching patch ไว
ใหใชเร4ยบรอยแลว ผ2ท4ควบคYมระบบยงพยายามมองหาส3งอานวยความสะดวกอย+างอน ๆ ไป
ใชงานกนอ4ก เช+นตวอย+างง+าย ๆ สาหรบคาถามท4พบบ+อยกบผ2ทา Internet Server ปXจจYบนคอ
"จะป)องกนการ Download พวก bit torrent ไดอย+างไร" ผ2เข4ยนลองค3ดด2หลายครNง ไปอ+านด2
ตามเว^บบอร_ด ก^เห^นใหไปหาโปรแกรมควบคYมการใชงาน P2P อะไรไปต3ดกนบาง ป)องกน
โดยการป‘ด port บาง ก^ม4คนเข4ยนกนไวว+าใชไม+ไดหรอไม+ไดผล สาเหตYต+าง ๆ เหล+าน4Nมนเก3ด
จากเมอม4การนาเอา module ท4ม4ผ2พฒนาใหในเว^บมาใส+ใน Server ของเรา บางครNงการทางาน
มนอาจไม+ตรงก^จะสงงานเหมอนท4เขาอธ3บายไวไม+ได หรอบางครNงโปรแกรมพวก bit torrent
ม4การ Random Port ไดตลอดจGงไม+สามารถใชว3ธ4ป‘ด port ได แต+ถาลองด2ความสามารถของ
iptables ท4เราใชทา Firewall น+าจะนามาประยYกต_อะไรไดมากมาย ปXจจYบนไดม4การทา patch
แบบท4 ไม+น + า จะท าได มาให ใชก นแล วค อ L7 หร อ Layer 7 ซG งเป? น การควบคY ม ระด บ
Application Layer เช+นถาตองการไม+ใหล2กข+ายใช MSN ก^ไม+ต องไปถามใครว+ามนใช port
เบอร_อะไร ก^ส ามารถสง DROP โปรแกรม Messenger ไดเลยแบบน4N ค งถ2ก ใจคนควบคY ม
ระบบเป?นแน+ ด2ตวอย+างการใชงานต+อไปน4N

บทท!1 9 Firewall Using IPTABLES .....: 184


Linux Server Security

#Block portscan กรณ4ม4 psd patch


#--------------------------------------------
iptables -A INPUT -p tcp -m psd -j DROP
#Block MSN กรณ4ม4 l7 patch
#--------------------------------------------
iptables -A FORWARD -m layer7 --l7proto messenger -j DROP
#Block math string แบบน4Nใชไดเลยใน Version ปXจจYบน
#--------------------------------------------
iptables -A FORWARD -m string –string “.torrent” --algo bm -j DROP

เห^นตวอย+างขางบนกนแลวคงม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

บทท!1 9 Firewall Using IPTABLES .....: 185


Linux Server Security

บทสรป
ร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 9 Firewall Using IPTABLES .....: 186


Linux Server Security

ว+าไม+ค+อยจะทราบว+า Service ต+าง ๆ ม4การทางานดวย Protocol และ Port อะไร เวลาจะนาไป


ใส+ใน Firewall จGงเป?นเรองยาก และถาตองการทา Firewall เต^มร2ปแบบตามหลกว3ชาการรวม
ถGง ความสามารถของ IPTABLES ร+ว มกบ kernel 2.6.x คงตองศG กษาอย+า งละเอ4ย ด เพราะ
iptables สามารถด2แลไดระดบ Layer 7 การสราง script ก^ตองต3ดตามจากค2+มอ ศGกษาว3ธ4การใช
งานใหด4 บางระบบกาลงพยายามศGกษาการทางานบน ipv6 ซGงเป?นเพ4ยงการเพ3 มจานวน IP
Address ใหมากขG N น รองรบการใชงานคนทวโลก เพราะของเด3 ม ipv4 ม4 ก ารกาหนดค+ า
Netmask เพ4ยง 32 บ3ท ก^เร3มม4ปXญหา ip address ไม+พอใชเขาเลยสรางเป?น version 6 เพ3มค+าให
เป? น 128 บ3 ท ประเทศไทยได วางกรอบการใช งานไว แล วด2 ร ายละเอ4 ย ดในเว^ บ ไซต_
http://www.thailandipv6.net/ ในบทน4 N เป? น การแนะน าการท า firewall ใหน าต วอย+ า งไป
ประยYกต_ใชในการป)องกนแต+ละ Service ใหเหมาะสมกบการใชงานของ Server แต+ละระบบ
ของหน+วยงานต+อไป

บทท!1 9 Firewall Using IPTABLES .....: 187


Linux Server Security

Trick ส หรบ SSH


ถาตองการระบY ใหเครองท4 อนY ญ าตให connect เขาถG ง server ไดนอกจากระบYท4
hosts.allow แลวยงตองไประบYท4 Firewall อ4กดวยดงตวอย+างน4N
# iptables -A INPUT -p tcp -m state --state NEW --source x.x.x.x --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
โดยท4 x.x.x.x หมายถGง IP Address ท4ตองการใหเขาใช SSH ได
อ4กกรณ4ลองล^อคเวลาสาหรบผ2ท4กรอกรหสผ+านผ3ด อาจม4ประโยชน_ในการใชงาน
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute
--limit-burst 1 -j ACCEPT
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP

บทท!1 9 Firewall Using IPTABLES .....: 188


Linux Server Security

บทท!1 10 sXid

วตถประสงค
➢ เพอใหรจกการปองกนไฟลคาสงทมความสาคญของระบบ
➢ เพอใหเขาใจว"ธการคนหาและแกไขค%า Permission ทถกตอง
➢ เพอใหเขาใจการต"ดต3งและปรบแต%ง Configuration ใหกบโปรแกรม sXid
➢ สามารถนาไปประย>กตใชในงานจร"งไดอย%างถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ sxid เปCน Open source
2. เน3อหาในบทน3 ส%วนทเปCนการต"ดต3ง การแกไข จะเนนเปCนตวหนา (Bold)
3. ทดลองปฏ"บต"ตามข3นตอนทเรยงไว หากทาผ"ดพลาดใหเร"มตนใหม%ดวยการ
ถอนการต"ดต3งโปรแกรมเด"มออกจากเครองจะดกว%าการทาซ3า

ก รต(ดต*งและใช%ง นโปรแกรม
บางคนอาจเคยอ%านบทความหรอหนงสอเกยวกบช%องทางทผบ>กร>กจะบ>กโจมต
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 10 sXid .....: 189


Linux Server Security

ไปใหผดแลระบบทราบไดตามกาหนดเวลาทต3งไวไดอกดวย โปรแกรมดงกล%า วชอ sXid


สามารถ download ไดจาก ftp://marcus.seva.net/pub/sxid/ หรอท rpmfind.net ในทน3ผ เขยน
ขอแนะนาใหไป download แบบ rpm มานะครบ จะต"ดต3งง%ายเพยงระบ> path ทโปรแกรมอย%
ดงน3
# rpm -ivh /tmp/sXid-4.xxxx.rpm
หลงจากน3นกWใหไปแกไข Configuration ใหตรงกบความตองการดงน3

ข*นท!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?

บทท!1 10 sXid .....: 190


Linux Server Security

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 10 sXid .....: 191


Linux Server Security

ข*นท!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

บทท!1 10 sXid .....: 192


Linux Server Security

หากพบคาว%า no changes found กWสบายใจไดครบว%า Server ค>ณยงปกต"ด ไม%มใคร


เขามาบ>กร>กไฟลหรอไดเรกทอรต%าง ๆ ลองทาดนะครบ น%าจะไดประโยชนกบว"ธน3มาก ถา
ค>ณไป Download ไดไฟลทมนามสก>ล .tar.gz ใหต"ดต3งดงน3
# cp sxid_version.tar.gz /var/tmp/
# cd /var/tmp/
# tar xzpf sxid_version.tar.gz
# cd sxid-4.0.1/
กาหนด configuration ก%อน Compile Program
CFLAGS=”-O3 -march=i686 -mtune=i686 -funroll-loops -fomit-frame-
pointer” \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man
หลงจากน3นใหสง Compile และต"ดต3งโปรแกรม ดงน3
# make install
# cd /var/tmp
# rm –rf /var/tmp/sxid*

เพยงเท%าน3กWจะต"ดต3งโปรแกรม sxid เหมอนการต"ดต3งดวย rpm จากน3นกWใหแกไข


sxid.conf ตามตวอย%างขางบน ทาข3นตอนการต3งเวลาเปCนอนเสรWจ หากมส"งผ"ดปกต"โปรแกรม
จะส%ง e-mail ไปให admin@sample.co.th ตามตวอย%าง

บทท!1 10 sXid .....: 193


Linux Server Security

บทสรป
ในบทน3 มกเปCนทละเลยหรอมองขามสาหรบผดแลระบบเสมอ เพราะผดแลระบบ
มกมนใจว%าโปรแกรม NOS ทนามาใชงาน ทางบร"ษ ทผเขยนน%า จะทามาใหดอย%แลว โดย
เฉพาะย"งเปCน Version ใหม% ๆ ย"งปลอดภยมากข[3นกว%าเด"ม แนวค"ดน3อาจถกเพยง 50% เพราะ
ถาเปCน OS ของเครอง Client คงจะมป•ญหาไม%มากเพราะใชงานคนเดยว แต%น3เปCน Server ตอง
มการใหบร"การ มการไหลของขอมล คาสงเขาออกตลอดเวลา มไฟลบางอย%างหรอไฟลคาสง
ทจาเปCนตองเปXดไวใหลกข%ายหรอบ>คคลภายนอกเขามาเรยกใชได เปCนเหต>ใหเก"ดการถกบ>ก
โจมตเขามาเรยกใชคาสงทจาเปCนในการจดการระบบ อาการแบบน3มกพบไดกบเครอง Server
ทถกบ>กเขามาแกไขไฟลเช%น login ทาใหผดแลตวจร"งไม%สามารถ login เขาเครองตวเองได
เปCนตน หากค>ณอ%านแลวนาไปตรวจสอบและแกไขตามคาแนะนาแลวจะไดประโยชนมาก
เก"นค>มอย%างแน%นอนครบ

บทท!1 10 sXid .....: 194


Linux Server Security

บทท!9 11 Log Check

วตถประสงค
➢ เพอใหรจกการดแล Log file อยางมออาชพ
➢ เพอใหต"ดต#งและก%าหนด Configuration ใหใชงานได
➢ สามารถน%าไปใชในงานจร"งไดอยางถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ logcheck เป8น Open source
2. ศ>กษาการใชค%าสง cat, tail และ last
3. เน#อหาในบทน# สวนทเป8นการต"ดต#ง การแกไข จะเนนเป8นตวหนา (Bold)
4. ทดลองปฏ"บต"ตามข#นตอนทเรยงไว หากท%าผ"ดพลาดใหเร"มตนใหมดวยการ
ถอนการต"ดต#งโปรแกรมเด"มออกจากเครองจะดกวาการท%าซ#%า

ก รต(ดต*งและใช%ง นโปรแกรม
ส"งส%าคญทผดแลระบบแบบมออาช พไมควรลม กOค อการเฝQาระวงตรวจสอบความ
เคลอนไหว การต"ดตอเขาออก Server อยางสม%าเสมอ นนคอส"งทลมท%าไมได แตความเป8นจร"ง
ผดแลระบบมกประมาท หากมเวลากOจะคอยตรวจดดวยค%าสงพ#นฐานเชน cat, tail, last เชน
# cat /var/log/secure
# tail /var/log/secure
# cat /var/log/message

บทท!9 11 Log Check .....: 195


Linux Server Security

# 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 ให
ต"ดต#งตามว"ธดงตอไปน#

แบบท!9 1 ถามไฟล]แบบ .gz


กรณมใน cdrom Linux Server 3 ให mount และ copy ไฟล]ไปไวท /tmp
#mount /dev/cdrom
#cp /mnt/cdrom/MyBooks/logcheck-1.1.1.tar.gz /tmp
หรอถา download มาไวท /tmp แลว
# cd /tmp
# tar xzpf logcheck-1.1.1.tar.gz
# cd logcheck-1.1.1
ข#นตอนตอไปเป8นการแกไข Configuration ในสวนตาง ๆ ดงตอไปน#

บทท!9 11 Log Check .....: 196


Linux Server Security

ส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

บทท!9 11 Log Check .....: 197


Linux Server Security

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

บทท!9 11 Log Check .....: 198


Linux Server Security

ส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

บทท!9 11 Log Check .....: 199


Linux Server Security

จากเด"มบรรทดท 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

กอนต"ดต#งโปรแกรมควรเกOบขอมลเด"มดวยค%าสง find ไวทไฟล] Logcheck1 ดงน#


# cd

บทท!9 11 Log Check .....: 200


Linux Server Security

# find /* > Logcheck1


# cd /tmp/logcheck-1.1.1/
เร"มต"ดต#งโปรแกรม
# mkdir -m700 /etc/logcheck
# make linux
เกOบขอมลใหมหลงต"ดต#งดวยค%าสง find อกคร#งไวทไฟล] Logcheck2
# cd
# find /* > Logcheck2
ท%าการเปรยบเทยบไฟล]ท#งสองดวยค%าสง diff แลวเกOบผลไวในไฟล] Logcheck-Installed
# diff Logcheck1 Logcheck2 > Logcheck-Installed
หลงต"ดต#งเสรOจควรลบโปรแกรมตนฉบบท"#ง
# cd /tmp
# rm -rf logcheck-1.1.1/
# rm -f logcheck-1.1.1.tar.gz
หลงต"ดต#งเสรOจตองไปตรวจดวามไฟล]ทส%าคญท#ง 4 ไฟล]ครบถวนหรอเปลา
/etc/logcheck/logcheck.hacking
/etc/logcheck/logcheck.ignore
/etc/logcheck/logcheck.violations
/etc/logcheck/logcheck.violations.ignore
จากน# น ใหท% า การต# ง เวลาให logcheck ท% า งานท_ กวนดวยการสราง script ไวใน
crontab ดงน#
cat <<EOF > /etc/cron.daily/logcheck
# !/bin/sh

บทท!9 11 Log Check .....: 201


Linux Server Security

# 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 ไวใหตรวจสอบท_กวนอยแลว

*** เมv9อโปรแกรมตรวจพบส(9งผ(ดปกต( จะบนทyกคJ ไว%ใน log file ท!9 /var/logcheck/ ***

บทสรป
จากการทผเขยนมประสบการณ]ในการดแลระบบ Internet Server ส"งทไมอยากท%า
คอเรองทตองเสยเวลามาคอยตรวจสอบ Log file ใน Server ท_กวนหรอท_กคร#งทรวามส" งผ"ด
ปกต"ในการใหบร"การ นนหมายถ>งตองร บตรวจดวาก%าลงถกค_กคามจากภายนอก หากค_ณ
สามารถต"ดต#งโปรแกรมในบทน#ไดกOจะประหยดเวลาในสวนน#ไดมาก เพราะค_ณเพยงแตไป
ตรวจสอบคาใน /var/logcheck แตละไฟล]จะบนท>กคาทแยกจากกนในแตละหนาท เพอใหค_ณ
สามารถตรวจสอบความผ"ดปกต"ของระบบ แตตองไมลมเขามาดนะครบ ไมใชวาโปรแกรม
สงความผ"ดปกต"มาบนท>กไวแจงใหทราบ แลวแตผดแลระบบไมเคยเปUดอานไฟล]ตาง ๆ เลย
แบบน#ต"ดต#งหรอไมต"ดต#งโปรแกรมชวย กOคงไมเก"ดประโยชน]เป8นแนครบ

บทท!9 11 Log Check .....: 202


Linux Server Security

บทท!1 12 Portsentry

วตถประสงค
➢ เพอใหรจกการปองกนการถกผบกรก Scan Port
➢ เพอใหเขาใจการต#ดต%งใชงานโปรแกรม Portsentry
➢ สามารถน.าไปประยกต2ใชในงานจร#งไดอย3างถกตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตร6ยมโปรแกรมท6ใชงานชอ portsentry เป9น Open source
2. ศ>กษาการใชค.าสง nmap เพอใชทดสอบการ scan port
3. เน%อหาในบทน6% ส3วนท6เป9นการต#ดต%ง การแกไข จะเนนเป9นตวหนา (Bold)
4. ทดลองปฏ#บต#ตามข%นตอนท6เร6ยงไว หากท.าผ#ดพลาดใหเร#มตนใหม3ดวยการ
ถอนการต#ดต%งโปรแกรมเด#มออกจากเครองจะด6กว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

บทท!1 12 Portsentry .....: 203


Linux Server Security

แต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

บทท!1 12 Portsentry .....: 204


Linux Server Security

ใหม6นามสกลไฟล2เป9น .rpm ล3าสดเป9นการพฒนาคร%งสดทายไวให Download เมอปm 2003


เป9น Version 1.2 เมอ Download มาจะไดไฟล2ชอ portsentry-1.2.tar.gz

ก รต(ดต*งใช%ง น
ในบทน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%ได

แบบท!1 1 กรณ6ท6ต#ดต%งจากไฟล2 .gz ใหท.าการ Decompress โปรแกรมดวยค.าสง tar


ซ>งโปรแกรมท6 Download มาน6%สามารถน.าไปต#ดต%งไดกบ linux, debian-linux, bsd, solaris,
hpux, hpux-gcc, freebsd, osx, openbsd, netbsd, bsdi, aix, osf, irix, generic เม อเวลาจะส ง
make ตองตามดวยชอของ OS หากใชกบ RedHat, Fedora ตองไปใชแบบท6 2
กรณ6น6%ก.าหนดใหไฟล2ท6 Download มาเก[บไวท6 /tmp
# cd /tmp
# tar xvfz portsentry-1.2.tar.gz
จากน%นจะได directory ชอ portsentry_beta ให change directory เขาไปแกไข code
ดงน6%
# cd portsentry_beta

บทท!1 12 Portsentry .....: 205


Linux Server Security

เนองจาก 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

บทท!1 12 Portsentry .....: 206


Linux Server Security

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

บทท!1 12 Portsentry .....: 207


Linux Server Security

แกไขเป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

บทท!1 12 Portsentry .....: 208


Linux Server Security

:wq

หลงจากแกไขเสร[จแลวใหท.าการ Compile โปแกรมและสงต#ดต%งไดดงน6%


# make linux
# make install
ลบไฟล2ตนฉบบใน /tmp ท#%ง
# cd /tmp
# rm -rf portsentry*
การสงใหโปรแกรมท.างานดไดหลงจากแกไขค3า Configuration ก3อน

แบบท! 1 2 เป9นไฟล2ท6ม6นามสกลเป9น .rpm สามารถน.า ไปต# ดต% งกบ Linux ตระกล


RedHat, Fedora หรอค3ายอนท6ใช rpm ใหไป Download ไดท6 http://rpm.pbone.net/ จะม6ไวให
กบ Linux ทกค3 า ยท6 ใช rpm ตวอย3 า งต3 อ ไปน6 % เป9 น การใชงานก บ Fedora ไฟล2ท6 ไดมาค อ
portsentry-1.2-1.te.i386.rpm ต#ดต%งดงน6%
ก.าหนดใหไฟล2ท6ไดมาอย3ใน /tmp
# rpm -ivh /tmp/portsentry-1.2-1.te.i386.rpm กด Enter
Preparing... ######################################## [100%]
1:portsentry ######################################## [100%]

จากน%นใหลบไฟล2ตนฉบบท#%ง
# rm -f /tmp/portsentry*

ในส3วนของ Configuration ของโปรแกรมม6อย3 2 ไฟล2ดงน6%

บทท!1 12 Portsentry .....: 209


Linux Server Security

/etc/portsentry/portsentry.conf เป9นไฟล2 configuration หลกท6เก[บกฎในการ


ตรวจสอบท%งหมดไว
/etc/portsentry/portsentry.ignore เป9นส3วนท6ส.าคญมาก เพราะเป9นท6เก[บค3า IP
Address ของ Server เพอไม3ใหเก#ดความผ#ดพลาดเนองจากการเร6ยกใชงาน port ท6อย3ใน List
จะท.าให Server โดน Back List ไม3สามารถใชงานตามปกต#ได
ท.าการแกไขไฟล2 portsentry.conf ดวย nano หรอ vi แลวแกไขค3าตามตองการหรอ
ตามท6แนะน.า ในตวอย3างท6เป9นตวอกษรหนา ดงน6%
# vi /etc/portsentry/portsentry.conf (ถาเป9นแบบท6 1 จะอย3ท6
/usr/local/psionic/portsentry )
# PortSentry Configuration
# ก.าหนดหมายเลข Port ท6ปองกนการถก Scan
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,123
45,
12346,20034,31337,32771,32772,32773,32774,40421,49724,54320"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,32770,32771,32772,3277
3,32774,31337,54321"
# ก.าหนดหมายเลข Port ว3างท6มกถกผบกรก scan และใชโจมต6
ADVANCED_PORTS_TCP="1023"
ADVANCED_PORTS_UDP="1023"
# ก.าหนด Port ตองหามไม3ใหเขาในระบบเพราะเป9น Port ท6ท.างานขณะท6เครอง
Boot คอบร#การ ident(113), NetBIOS(137-138), RIP(520), bootp broadcasts(67)
ADVANCED_EXCLUDE_TCP="113,139"
ADVANCED_EXCLUDE_UDP="520,138,137,67"

บทท!1 12 Portsentry .....: 210


Linux Server Security

# ก.าหนดต.าแหน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

บทท!1 12 Portsentry .....: 211


Linux Server Security

PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED ***


YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY."

ตรวจดไฟล2 portsentry.ignore อ6กคร%งว3าม6การก.าหนดค3า IP Address ตามตวอย3าง


หรอไม3 ถาเป9นการต#ดต%งจาก rpm โปรแกรมจะเพ# ม IP Address ในระบบใหเองไม3ต องไป
แกไขอะไร หรอถา compile เองแต3เข6ยน Script ให Run ตอนเร#ม boot เครองก[สามารถเข6ยน
ใหเพ#ม IP Address ส3วนน6%อตโนมต#โดยไม3ตองมาแกไขดวยตนเอง ใหตรวจสอบดก[จะด6ว3าม6
IP Address ของระบบเราเองเพ#มมาใหต3อจากค3าเด#มคอ 127.0.0.1 กบ 0.0.0.0 หรอไม3 ถาไม3ม6
ใหเพ#มเองเพอใหใชงานได
# vi /etc/portsentry/portsentry.ignore
127.0.0.1/32
0.0.0.0
#########################################
# Do NOT edit below this line, if you #
# do, your changes will be lost when #
# portsentry is restarted via the #
# initscript. Make all changes above #
# this box. #
#########################################
ในส3วนต3อไปน6%โปแกรมสรางเพ#มใหจากค3าใน Server ไม3ตองแกไข
# Exclude all local interfaces
192.168.1.11 <- เป9น IP Address ของ server
127.0.0.1

บทท!1 12 Portsentry .....: 212


Linux Server Security

# Exclude the default gateway(s)


192.168.1.1 <- IP Address ของ Gateway
# Exclude the nameservers
192.168.1.1 <- IP Address ของ DNS Server
# And last but not least...
0.0.0.0 <- บรรทดสดทายใหใส3 0.0.0.0

ในการใชงานโปรแกรม portsentry ตองม6การสงใหท.างานดวยการส3งค3า parameter


เป9นค3า protocol ดงน6%
ค3า parameter ความหมาย
-atcp ส3งค3า Advance tcp รวมท%ง unused port จาก
ADVANCE_PORTS_TCP ในไฟล2 portsentry.conf
-audp ส3งค3า Advance udp รวมท%ง unused port จาก
ADVANCE_PORTS_UDP ในไฟล2 portsentry.conf
-tcp ส3งค3า tcp จาก TCP_PORTS ในไฟล2 portsentry.conf
-udp ส3งค3า udp จาก UDP_PORTS ในไฟล2 portsentry.conf
-stcp เหมอนกบ -tcp แต3รวมการตรวจจบ stealth scan ดวย
-sudp เหมอนกบ -udp แต3รวมการตรวจจบ stealth scan ดวย

ในการสง start โปรแกรม portsentry ท6ท.าการต#ดต%งตามแบบท6 1 ตองรว3าหลงจาก


สง make install แลวตวโปแกรมหลกต#ดต%งอย3ท6 Directory ใดเช3น /usr/sbin ถาไม3อย3ใน path
ท6ระบบต%งไวตองระบท6อย3เวลาจะสง start ใหสงดงน6%
# portsentry -atcp

บทท!1 12 Portsentry .....: 213


Linux Server Security

# portsentry -audp
จากน%นสามารถตรวจสอบว3าโปรแกรมท.างานหรอไม3ดวยค.าสง
# ps ax | grep portsentry
ถาตองการยกเล#กการท.างานก[สง
# killall portsentry

หากตองการสราง Script ท6สามารถสง start อตโนมต#หลงจากเครอง boot ก[ต อง


พยายามนงพ#มพ2นานหน3อยสราง Script เองจาก vi ดงน6%
# vi /etc/init.d/portsentry
เร#มต%งแต3บรรทดขางล3างน6เป9นตนไป
#!/bin/bash
#
# Startup script for the Portsentry portscan detector
#
# chkconfig: 345 98 02
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
prog="portsentry"
start () {

บทท!1 12 Portsentry .....: 214


Linux Server Security

# Set up the ignore file


SENTRYDIR=/etc/portsentry
FINALIGNORE=$SENTRYDIR/portsentry.ignore
TMPFILE=/var/portsentry/portsentry.ignore.tmp
# Testline is used to see if the initscript has already been run
if [ -f $FINALIGNORE ] ; then
cp -f $FINALIGNORE $TMPFILE
testline=`grep -n "Do NOT edit below this" $TMPFILE | cut --delimiter=":"
-f1`
if [ -z "$testline" ] ; then
echo > /dev/null # Do nothing
else
let headline=$testline-2
head -$headline $FINALIGNORE > $TMPFILE
fi
fi
echo '#########################################' >> $TMPFILE
echo '# Do NOT edit below this line, if you #' >> $TMPFILE
echo '# do, your changes will be lost when #' >> $TMPFILE
echo '# portsentry is restarted via the #' >> $TMPFILE
echo '# initscript. Make all changes above #' >> $TMPFILE
echo '# this box. #' >> $TMPFILE
echo '#########################################' >> $TMPFILE

บทท!1 12 Portsentry .....: 215


Linux Server Security

echo '' >> $TMPFILE


echo '# Exclude all local interfaces' >> $TMPFILE
for i in `/sbin/ifconfig -a | grep inet | awk '{print $2}' | sed 's/addr://'` ; do
echo $i >> $TMPFILE
done
echo '' >> $TMPFILE
echo '# Exclude the default gateway(s)' >> $TMPFILE
for i in `/sbin/route -n | grep ^0.0.0.0 | awk '{print $2}'` ; do
echo $i >> $TMPFILE
done
echo '' >> $TMPFILE
echo '# Exclude the nameservers' >> $TMPFILE
for i in `/bin/cat /etc/resolv.conf | grep ^nameserver | awk '{print $2}'` ; do
echo $i >> $TMPFILE
done
echo '' >> $TMPFILE
echo '# And last but not least...' >> $TMPFILE
echo '0.0.0.0' >> $TMPFILE
echo '' >> $TMPFILE
cp -f $TMPFILE $SENTRYDIR/portsentry.ignore
rm -f $TMPFILE
# Check for modes defined in the config file
if [ -s $SENTRYDIR/portsentry.modes ] ; then

บทท!1 12 Portsentry .....: 216


Linux Server Security

modes=`cut -d "#" -f 1 $SENTRYDIR/portsentry.modes`


else
modes="tcp udp"
fi
for i in $modes ; do
echo -n $"Starting $prog: "
action "($i)" /usr/sbin/portsentry -$i
RETVAL=$?
done
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/portsentry
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc portsentry
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/portsentry
}
# See how we were called.
case $1 in
start)
start

บทท!1 12 Portsentry .....: 217


Linux Server Security

;;
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

บทท!1 12 Portsentry .....: 218


Linux Server Security

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 12 Portsentry .....: 219


Linux Server Security

# nmap ชI1อเครI1อง (เช3น nmap ns )

ก[จะตกใจเพราะคณอาจเปWด Port ไวทกอย3างเลยก[ได ท%ง ๆ ท6ต%งใจจะท.า Internet


Server ท6ม6การเปWดบร#การเพ6ยงไม3ก6 Port เท3าน%น หากรแลวก[อย3าลมร6บปWด Port ท6ไม3ไดใชเส6ย
นะครบ แลวตามดวยการปองกนตามบทน6%ใหเร6ยบรอย ว3าง ๆ ก[ตรวจด log file บางว3า Server
ถกใครบกรกมาจากไหน มาดวย Protocol อะไรและมาวนเวลาใด จะไดหาทางปองกนเผอว3า
เป9นพวกมออาช6พ อาจหาทางเขามาแบบอนอ6กก[เป9นได log file จะบนท>กอย3ท6ไหนก[กลบไปด
ค3าใน portsentry.conf ค3า default จะก.าหนดใหบนท>กไวใน /var/log/portsentry.history เพ6ยง
เท3าน6%ก[จะท.าการปองกน Server ไดระดบหน>ง
ว#ธ6ยกเล#กเครองท6ถก Block อาจเป9นเครองลกข3ายของเราเอง โดนโปแกรม Block
สาเหตอาจเก#ดจากม6การทดลองโปรแกรมบางตวหรอการกระท.าของ Worm หรอการแพร3
กระจายตวของไวรส ก[ตามเมอผดแลระบบไดรบแจงว3าม6เครองในหน3ว ยงานออกไปใช
Internet ไม3ได ใหตรวจสอบดวยค.าสง
# iptables -L INPUT
ดว3าม6 ip address ของลกข3ายท6ถก DROP ก[ใหสงยกเล#กดวยค.าสงน6%
# iptables -D INPUT -s [ip ล'กข„ ย] -j DROP
เพ6ยงเท3าน6%ลกข3ายเครองท6ถก Block ก[จะใชงานไดเหมอนเด#มครบ

บทท!1 12 Portsentry .....: 220


Linux Server Security

บทท!1 13 Tripwire

วตถประสงค
➢ เพอใหใชโปรแกรมเฝาระวงและตรวจสอบการเปลยนแปลงของไฟล"และ
ไดเร$กทอร
➢ เพอใหผ'ด'แลสามารถตรวจจบการเปลยนแปลงไฟล"และไดเร$กทอรใน Server
ได
➢ เพอใหเขาใจการต/ดต0งและแกไข Configuration อย:างถ'กตอง

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ Tripwire เป@น Open source
2. เน0อหาในบทน0 ส:วนทเป@นการต/ดต0ง การแกไข จะเนนเป@นตวหนา (Bold)
3. ทดลองปฏ/บต/ตามข0นตอนทเรยงไว หากทLาผ/ดพลาดใหเร/มตนใหม:ดวยการ
ถอนการต/ดต0งโปรแกรมเด/มออกจากเครองจะดกว:าการทLาซ0Lา

ก รต(ดต*งและใช%ง นโปรแกรม
บทน0เป@นเรองทผ'ด'แลระบบไม:ควรละเลยเพราะผ'ใช OS หลายค:ายมกไม:น/ยมใชงาน
โปรแกรม SELinux เพราะมการใชงานทยR:งยาก แมว:าจะมการจดการทเก:งกาจในการตรวจ
ตราไฟล"และไดเร$กทอรไดอย:างละเอยดสามารถปองกนการบRกรRกเขา Server ไดดมากตวหนSง
เมอไม:ชอบใชงานก$ตองหาโปรแกรมอนทมความสามารถในการจดการเรองน0ซSงต0งแต:อดต
จนถSงปTจจRบนโปแกรมทมความน/ยมในกลR:มผ'ด'แลระบบตวหนS งคอ Tripwire เป@น Software

บทท!1 13 Tripwire .....: 221


Linux Server Security

ประเภท IDS (Intrusion Detection System) สามารถตรวจสอบการเปลยนแปลงไฟล" แ ละ


ไดเร$กทอรในระบบไดอย:างด แต:การทจะนLาไปใชงานใน OS ทหลากหลายย:อมไม:สามารถ
ทLางานไดครบถวน เนองมาจากการสรางและกLาหนดชอไดเร$กทอรและชอไฟล"ต:าง ๆ ไม:
เหมอนกน ตวโปรแกรมน0จSงมเพยงตวอย:าง Configuration File มาใหด'ประกอบการใชงาน
เท:าน0นไม:ส ามารถนLา มาสงใหทLา งานในระบบจร/ง ได ผ' เขยนไดศSก ษาคนควาการใชงาน
โปรแกรมน0ก บ Fedora RedHat ซSงจะไดนLามาเป@นตวอย:างในการใชงานและสามารถนLาไป
ประยRกต"ใชกบ OS ตวอน ๆ ทมลกษณะคลาย ๆ กนไดเป@นอย:างด
กรณทตองการต/ดต0ง Tripwire บน Fedora หรอ RedHat ES สามารถไป Download
โปรแกรมไดจาก http://rpm.pbone.net/ จะมไฟล"ทมนามสกRล rpm เพอรองรบการทLางาน OS
ทใช rpm ทR ก ตระก' ล และทR ก Version ตวอย: า งต: อ ไปน0 เป@ น การทL า งานกบ FC6 ไฟล"ท ไป
Download ชอ tripwire-2.4.1.1-1.fc6.i386.rpm ปกต/ทวไปผ'ทใชงาน OS ตระก'ลน0มกพบว:าถา
ไดไฟล"ประเภท rpm มาก$สามารถสงต/ดต0งไดทนทหลงจากน0นก$สง Restart Service ก$ทLางาน
ใหทRกอย:าง แต:ในบทน0ไม:ไดง:ายอย:างทค/ด สาเหตRก$เนองมาจากปTจจRบนไม:ว:าโปรแกรมอะไร
ทเคยพฒนาแบบ Freeware หรอ Open source มกจะนLาไปทLาแบบเช/งพาณ/ชย" โดยมการแจก
Free Version ถาตองการทมความสามารถส'งขS0นตองซ0อ แมกระทงค':ม อการใชงาน ก$หายาก
ขS0นมการรบจดอบรมพรอมขายค':มอการใชงาน ต:าง ๆ เหล:าน0ทLาใหผ'ทเคยช/นกบการใช Open
source หรอโปรแกรมฟรบน Linux ต:า ง ๆ มกเร/ มยR :งยากขS0นเรอย ๆ ดงน0 นผ'ทตองการใช
Tripwire ในการทLา IDS ตองร'ว:าการทไป Download โปรแกรมมาแลวตองมการปรบปรRง
แกไขค:า Configuration ใหตรงกบระบบทเราใชอย':ใหครบถวน ม/ฉะน0นจะทLาใหโปแกรมไม:
สามารถตรวจจบไดสมบ'รณ" 100 % ตามทเราคาดหวง ใหผ'ทตองการใช Tripwire ด'ข0นตอน
โดยละเอยดเพอไม:ใหเก/ด Error ตามมาแลวหาจRดทแกไขไม:ได ข0นตอนการใชงานดงน0

บทท!1 13 Tripwire .....: 222


Linux Server Security

ข*นท!1 1 หลง Download ไดโปรแกรมมาแลวใหทLาการต/ดต0ง ดงน0


# rpm -ivh tripwire-2.4.1.1-1.fc6.i386.rpm
Preparing... ##################################### [100%]
1:tripwire ##################################### [100%]

ข*นท!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ล

บทท!1 13 Tripwire .....: 223


Linux Server Security

txt ไวอาจมผ'ไม:หวงดเอาไปศSกษาว:าเราปองกนส:วนในบาง ส:วนใดเป@นช:องโหว:ในการโจมต


ในข0นตอนต:อไปหลงจากใชงานเสร$จจะมการสงลบทLาลายไฟล"ทเป@นอนตรายเหล:าน0ใหหมด
เหลอแต:ไฟล"ทเขารหสแลวเท:าน0น

ข*นท!1 3 ใหไปแกไขไฟล" twcfg.txt ตามบรรทดทเป@นตวหนาดงน0


# vi /etc/tripwire/twcfg.txt
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =true
MAILNOVIOLATIONS =false
EMAILREPORTLEVEL =4
REPORTLEVEL =4
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t
:wq

บทท!1 13 Tripwire .....: 224


Linux Server Security

ข*นท!1 4 หลงแกไขเสร$จใหทLาการสราง Configuration File ทมการเขารหส site.key


รวมกบ twcfg.txt ไปเก$บท tw.cfg เป@นไฟล"ทไม:ใหสามารถอ:านดวย text editor ร'เรอง ทLาดงน0
# twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase: <กรอกรหส site passphrase>
Wrote configuration file: /etc/tripwire/tw.cfg

ข*นท!1 5 หลงสรางเสร$จใหทLาการส:งค:า Configuration ออกไปไวท twcfg.txt อกคร0ง


ดวยการเรยกใชคLาสง twadmin
# twadmin --print-cfgfile > /etc/tripwire/twcfg.txt

ข* นท! 1 6 ข0 น ตอนน0 เป@ นข0 น ตอนทสL าคญมากเพราะค: า Configuration ทสรางจาก


โปรแกรมจะรองรบโครงสรางของ UNIX แต:ไม:ไดมไฟล"และไดเร$กทอรเหมอนกบ Linux จะ
ม Error เก/ดขS0นมากมายเพราะหาไฟล"และไดเร$กทอรไม:พบ ในข0นตอนน0จSงเป@นการนLา Script
ททาง RedHat ไดเคยสรางไวใหใชงานโปรแกรม Tripwire กบ RedHat 8.0 ซSงมโครงสรางท
สLาคญใน Hard Disk ตรงกบใน Fedora ท0งหมด จSงไดนLาเอา Script น0มาใชไดเป@นอย:างด อาจ
ยR:งยากเพราะตองพ/มพ"ใหดอย:าใหผ/ดพลาดอาจทLาให Script ไม:ทLางานได ร'ปแบบไฟล"เต$ม ๆ
อาจไปหา Download เองจากอ/นเตอร"เน$ตได ถาหาไม:ไดใหทLาตามตวอย:างต:อไปน0
# vi /etc/tripwire/tripwirepol.pl
เร/มพ/มพ"ต0งแต:ตรงน0เป@นตนไป
#!/usr/bin/perl
# Tripwire Policy File customize tool for Linux Servr 3.0
# ----------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi

บทท!1 13 Tripwire .....: 225


Linux Server Security

# This program is free software; you can redistribute it and/or


# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# ----------------------------------------------------------------
# Usage:
# perl tripwire_pol.pl {Pol file}
# --------------------------------------------------------
#
$POLFILE=$ARGV[0];

open(POL,"$POLFILE") or die "open error: $POLFILE" ;


my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;

บทท!1 13 Tripwire .....: 226


Linux Server Security

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) ;
}

บทท!1 13 Tripwire .....: 227


Linux Server Security

else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;
เสร$จการสราง Script ใหสงบนทSกไฟล"ดวย
:wq

หลงสรางไฟล"ดวย perl script เสร$จใหเปลยน Mode เป@น 700 ดงน0


# chmod 700 /etc/tripwire/tripwirepol.pl

ข* นท! 1 7 หล งจากทL า การสร าง Perl Script สL า หร บตรวจสอบค: า Configuration


ตวอย:างทโปรแกรมใหมาคอไฟล" twpol.txt ใหสง Run Script เพอสรางไฟล" twpol.txt ใหม:
ดงน0
# /etc/tripwire/tripwirepol.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.out
เสร$จแลวใหลบไฟล"เด/มท/0ง ดงน0
# rm -f /etc/tripwire/twpol.txt
ใหยายไฟล"ทสรางใหม:กลบมาแทนทไฟล"ทถ'กลบ
# mv /etc/tripwire/twpol.txt.out /etc/tripwire/twpol.txt

ข*นท!1 8 ข0นต:อไปใหทLาการแกไขไฟล"ทสรางใหม: ดงน0

บทท!1 13 Tripwire .....: 228


Linux Server Security

# 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

ข*นท!1 9 ใหสรางไฟล" tw.pol ใหม:จากการรวม site.key กบ twpol.txt ทแกเสร$จในข0น


ท 8 ใหทLาต:อดงน0
# twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
Please enter your site passphrase: < กรอก site passphrase ใหถ'กตอง >
Wrote policy file: /etc/tripwire/tw.pol

บทท!1 13 Tripwire .....: 229


Linux Server Security

ข*นท!1 10 หลงสรางไฟล" tw.pol เสร$จทRกคร0งใหส:งออกมาเป@น twpol.txt ทเขารหส


ดวยเสมอ ดงน0
# twadmin --print-polfile > /etc/tripwire/twpol.txt

ข*นท!1 11 เป@นอนเสร$จส/0นการสรางไฟล" Policy ทค:อนขางซบซอนหลายคร0งมาก ให


สงเกตRว:าในการสงสรางคร0งหลงจะไม:พบขอความ Error ในการตรวจขอม'ลไฟล"ใน Hard
disk เลย จากน0นใหเร/มโปรแกรมดวยคLาสง
# tripwire --init
Please enter your local passphrase: < กรอก local passphrase ใหถ'กตอง >
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/<ตรงน!*จะเป€น Hostname>.twd
The database was successfully generated.

ข*นท!1 12 หลงสงให Tripwire เร/มทLางาน โปรแกรมไดไปตรวจค:า tw.pol นLามาสราง


report ชอ <Hostname>.twd อย' : ใ น /var/lib/tripwire/report/ (ตL า แหน: งน0ถ ' ก ระบR ใ นไฟล"
twcfg.txt ในขอ 3 ) ต:อไปใหทLาการตรวจสอบการทLางาน ดวยคLาสง
# tripwire - -check
Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
Wrote report file: /var/lib/tripwire/report/<hostname>.twr

บทท!1 13 Tripwire .....: 230


Linux Server Security

ส:วนน0จะมการรายงานขอม'ลอย:างละเอยดจากไฟล"ทโปรแกรมสรางมาให พยายาม
เลอนจอภาพด'หาบรรทดทมขอความว:า
Tripwire Data Files 100 0 0 0
ใหผลของบรรทดน0เป@น 100 % เพราะเป@นการรายงานว:าตรวจสอบเครองจากกฎท
ต0งในไฟล" tw.pol ครบถวนเรยกว:ามการรกษาความปลอดภยไดระดบ 100 % ส:วนทายจะเป@น
Error Report ควรอย:างย/งทตองรายงานออกมาว:า No Errors

ข*นท!1 13 ข0นต:อไปน0ใหสราง Script เพอใชในการสงใหโปรแกรมทLางานได โดยใส:


คLาอธ/บายอะไรเพ/มไดตามความถนด ในตวอย:างน0จะเพ/มการรายงานว:าโปรแกรมเร/มทLางาน
เวลาเท:าไรเสร$จการทLางานเวลาเท:าไร ผ'ด'แลทเชยวชาญดาน Shell Script ก$สามารถเพ/มเต/มได
ตามถนด ตวอย:าง Script มดงน0
# vi /root/tripwire.sh
เร/มพ/มพ"ตามน0
#!/bin/sh
echo "Shell Script for Tripwire"
echo " Start dat-time : (`date +"%k %M %S "`)"
/usr/sbin/tripwire - -check
rm -f /var/lib/tripwire/<hostname>.twd
/usr/sbin/tripwire - -init -P <local passphase>
echo " End dat-time : (`date +"%k %M %S "`)"
หลงสราง Script เสร$จตองเปลยน Mode ใหเป@น 700 ดงน0
# chmod 700 /root/tripwire.sh

บทท!1 13 Tripwire .....: 231


Linux Server Security

ข*นท!1 14 เป@นข0นสRดทายใหทLาการต0งเวลาทจะให Tripwire ทLาการตรวจสอบระบบ


ส:วนมากจะทLาตอนทไม:มล'กข:ายหรอในเวลาท Server ไม:ไดทLางานหนกเช:นตอนกลางคน ใน
ตวอย:างกLาหนดใหทLางานตอนเวลา 3.00 น. (ตสาม) ของทRกวน ทLาดงน0
# crontab -e
00 03 * * * /root/tripwire.sh

บทสรป
ในขณะต/ดต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 จะไดไม:ม ใครเขาไป
แกไขเปลยนแปลงค:าอกได

บทท!1 13 Tripwire .....: 232


Linux Server Security

บทท!1 14 Snort (IDS)

วตถประสงค
➢ เพอใหรจกการใชเครองมอตรวจจบการบกรกใหกบ Linux Server
➢ เพอใหเขาใจการต#ดต%งใชงานโปรแกรม Snort และ Snort MySql
➢ สามารถน4าไปใชงานจร#งไดอย7างม8ประส#ทธ#ภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตร8ยมโปรแกรมท8ใชงานชอ Snort เป>น Open source
2. เน%อหาในบทน8% ส7วนท8เป>นการต#ดต%ง การแกไข จะเนนเป>นตวหนา (Bold)
3. ทดลองปฏ#บต#ตามข%นตอนท8เร8ยงไว หากท4าผ#ดพลาดใหเร#มตนใหม7ดวยการ
ถอนการต#ดต%งโปรแกรมเด#มออกจากเครองจะด8กว7าการท4าซ%4า

ก รต(ดต*งและใช%ง นโปรแกรม
ส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 14 Snort (IDS) .....: 233


Linux Server Security

MySQL หรออาจแนะน4าใหใชร7วมกบโปรแกรมเสร#มต7าง ๆ มากมาย คงตองศQกษาคนควาใน


ส7วนต7าง ๆ ใหตรงกบความตองการกบระบบท8 หน7วยงานหรอองค^กรต7าง ๆ ไดท4าการวาง
ระบบไว ไม7ใช7การไปคดลอกมาต#ดต%งท#%งไว อาจไม7ม8ประโยชน^ในการตรวจสอบหรอตรวจ
จบความผ#ดปกต#ท8 เก#ดจากการบกรกเขามาในระบบอ#นเตอร^เนLตของเราเลยกLไดดงน%นหาก
ตองการใหใชงานไดด8ควรยอนกลบไปดบทท8 2 ในส7ว นของ Network Model ท8ม8การวาง
ระบบ IDS กL ส ามารถน4 า Snort ไปต# ดต% ง ใชงานได ผดแลตองม8 ค วามรเรองการใชงาน
Database Serve ดวย MySQL ดวยจQงจะสามารถน4า ผลของการตรวจจบจากฐานขอมลมา
ว#เคราะห^หาปUญหาและว#ธ8แกไขไดอย7างถกตอง สามารถหาขอมลเพ#มเต#มเก8ยวกบโปรแกรมน8%
ไดโดยตรงจากเวLบไซต^ http://www.snort.org/
ในบทน8%จะเป>นการยกตวอย7างการต#ดต%งใชงานกบ Fedora RedHat ท8ใชงานกบไฟล^
ประเภท rpm โดยม8การต#ดต%งและท4า Configuration ใหสองแบบคอ ใชงานแบบปกต#ค อเมอ
โปรแกรมตรวจจบความผ#ดปกต#ไดจะถกบนทQกไวท8 log file กบแบบท8 สองจะบนทQกไวใน
ฐานขอมล MySQL มาเร#มต#ดต%งใชงานท8ละข%นตอนดงน8%

ข*นตอนก รต(ดต*ง
ข*นท!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%]

บทท!1 14 Snort (IDS) .....: 234


Linux Server Security

1:libpcap ######################################## [100%]


# rpm -ivh snort-2.7.0.1-1.FC6.i386.rpm
Preparing... ######################################### [100%]
1:snort ########################################## [100%]
หลงต#ดต%งเสรLจอย7าลมลบไฟล^ท8 download มาออกจาก Server ดวย
# rm -f snort-2.7.0.1-1.FC6.i386.rpm
ข*นท!1 2 แกไข Configuration ใหกบโปรแกรมก7อนใชงาน ดงน8%
# vi /etc/snort/snort.conf
คนหาและเพ#มขอความต7อไปน8%ตามตวอย7าง
# var HOME_NET [10.1.1.0/24,192.168.1.0/24]
#
# MAKE SURE YOU DON'T PLACE ANY SPACES IN YOUR LIST!
#
# or you can specify the variable to be any IP address
# like this:
var HOME_NET 192.168.1.0/24
# Set up the external network addresses as well. A good start may be "any"
var EXTERNAL_NET !$HOME_NET
# Include all relevant rulesets here
#
# The following rulesets are disabled by default:
#
# web-attacks, backdoor, shellcode, policy, porn, info, icmp-info, virus,

บทท!1 14 Snort (IDS) .....: 235


Linux Server Security

# chat, multimedia, and p2p


#
# These rules are either site policy specific or require tuning in order to not
# generate false positive alerts in most enviornments.
#
# Please read the specific include file for more information and
# README.alert_order for how rule ordering affects how alerts are triggered.
#=========================================

#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

บทท!1 14 Snort (IDS) .....: 236


Linux Server Security

#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

บทท!1 14 Snort (IDS) .....: 237


Linux Server Security

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 เพอ

บทท!1 14 Snort (IDS) .....: 238


Linux Server Security

Update Rule ดวยตนเองยกหนาท8 ให Oinkmaster ท4าใหอตโนมต# โปรแกรมน8%หาไดจากเวLบ


http://www.ip-solutions.net/~hhoffman/oinkmaster/ เพอมาต# ดต% ง ลงใน Server จะได ไฟล^
oinkmaster-2.0-0.noarch.rpm เร#มต#ดต%งดงน8%
# rpm -ivh /tmp/oinkmaster-2.0-0.noarch.rpm
Preparing... ######################################### [100%]
1:oinkmaster ######################################## [100%]
หลงต#ดเสรLจใหลบไฟล^ตนฉบบท8 Download มาท#%ง
# rm -f oinkmaster-2.0-0.noarch.rpm
ข*นท!1 5 ท4าการแกไขค7า Configuration ใหกบ oinkmaster ดงน8%
# vi /etc/oinkmaster.conf
คนหาและแกไขตามบรรทดท8เป>นตวอกษรหนา ดงน8%
# Example for Snort-current ("current" means cvs snapshots).
# url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-
snapshot-CURRENT.tar.gz
# <oinkcode> เปfน Code ท!1ได%จ กก รลงทะเบ!ยนในเวiบ Snort
url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-
snapshot-CURRENT.tar.gz
# Example for Community rules
# url = http://www.snort.org/pub-bin/downloads.cgi/Download
/comm_rules/Community-Rules.tar.gz
url = http://www.snort.org/pub-bin/downloads.cgi/Download
/comm_rules/Community-Rules-CURRENT.tar.gz
:wq

บทท!1 14 Snort (IDS) .....: 239


Linux Server Security

ข*นท!1 6 สงใหโปรแกรม Oinkmaster ท4าการปรบปรง Rule ใหกบ Snort ดวยการ


เร8ยก Perl script ท8โปรแกรมสรางมาให
# oinkmaster.pl -o /etc/snort/rules/
ตรงน8%ตองรอนานหรอเรLวขQ%นอย7กบความเรLวในการ Download หากไม7ม8ขอผ#ดพลาด
ใด ๆ จะได Rule ของ Snort ท8ใหม7ล7าสดมาท4างานในระบบ ถาผดแลคนไหนไม7ไดลงทะเบ8ยน
กบ Snort จะไม7ม 8 Code มาใชใน Oinkmaster ตองไป Download Rule ดวยตนเองท8 เมน
unregistered user release กLจะไดแต7 Rule ใน Version เก7า ๆ ถาจ4าไม7ผ#ดจะม8ใหเพ8ยง Version
2.4 ไม7สามารถใชร7วมกบ Snort 2.6 ขQ%นไปได
ข*นท!1 7 ก4าหนดให Oinkmaster ท4าการ Update Rule ท8 Snort ทกวน ดงน8%
# vi /etc/cron.daily/oinkmaster
#!/bin/sh
/usr/bin/oinkmaster.pl -o /etc/snort/rules/ 2>&1 > /dev/null
:wq
ข*นท!1 8 หลงสราง cron file ให Oinkmaster เสรLจเร8ยบรอยใหท4าการเปล8ยน Mode
# chmod 755 /etc/cron.daily/oinkmaster
ข*นท!1 9 จดการส7งค7า Interface ท8ตองการให Snort ท4างาน
# snort -i eth0 -c /etc/snort/snort.conf
ข*นท!1 10 สงให Sort ท4างาน
ก7อนสงให snort ท4างานตองก4าหนด Permission ให log ก7อนเพราะในการต#ดต%งจาก
rpm ม8การ Add User ชอ snort เขาระบบเวลาจะสงโปรแกรมบนทQก Log File ท4าไม7ไดเพราะ
Log ท8สรางจากการต#ดต%งเป>นของ root ใหท4าการเปล8ยน Owner ก7อนดงน8%
# chown -R snort.snort /var/log/snort/
# /etc/init.d/snortd start

บทท!1 14 Snort (IDS) .....: 240


Linux Server Security

ข*นท!1 11 ส#งท8ตองท4าอย7างย#งนอกเหนอจากการใช Rule ของ Snort แลวยงตองอาศย


Rule ท8ครอบคลมภยคกคามสมยใหม7 ใหใชความสามารถน8%จาก bleedingthreate.net ท8ม8การ
ตรวจพบภยคกคามท8เก#ดขQ%นใหม7 ๆ ตลอดเวลาและไดสราง Rule ไวใหใชร7วมกบ Snort เรา
สามารถใช oinkmaster ไป Download Rule มาใชไดเลย ดงน8%
# oinkmaster.pl -o /etc/snort/rules/ -u http://www.bleedingsnort.com
/bleeding.rules.tar.gz
ตองรอเวลาในการ Download และน4า Rule มาต#ดต%งรวมกบ Snort
Loading /etc/oinkmaster.conf
Downloading file from http://www.bleedingsnort.com/bleeding.rules.tar.gz...
done.
Archive successfully downloaded, unpacking... done.
Setting up rules structures... done.
Processing downloaded rules... disabled 0, enabled 0, modified 0, total=3641
Setting up rules structures... done.
Comparing new files to the old ones... done.
Updating local rules files... done.
[***] Results from Oinkmaster started 20070612 22:00:53 [***]
[*] Rules modifications: [*]
None.
[*] Non-rule line modifications: [*]
None.
[+] Added files (consider updating your snort.conf to include them if needed): [+]
-> bleeding-attack_response.rules

บทท!1 14 Snort (IDS) .....: 241


Linux Server Security

-> 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

บทท!1 14 Snort (IDS) .....: 242


Linux Server Security

พ#มพ^เองต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

บทท!1 14 Snort (IDS) .....: 243


Linux Server Security

Snort + MySQL

ข* นท! 1 1 ข% นน8 % ให ไปท4 า การ Download โปรแกรม snort-mysql มาจากเวL บ ไซต^


http://www.snort.org/dl/binaries/linux/ เลอกใหตรงตาม OS ในตวอย7างต7อไปน8%เป>น FC6 ใช
wget download ไฟล^ไปเกLบชวคราวท8 /tmp ดงน8%
# wget -P /tmp http://www.snort.org/dl/binaries/linux/old/snort-mysql-
2.7.0.1-1.FC6.i386.rpm
ข*นท!1 2 ท4าการต#ดต%งโปรแกรม
# rpm -ivh /tmp/snort-mysql-2.7.0.1-1.FC6.i386.rpm
Preparing... ######################################### [100%]
1:snort-mysql ####################################### [100%]
ข*นท!1 3 ลบโปรแกรมตนฉบบท#%ง
# rm -f /tmp/snort-mysql-2.7.0.1-1.FC6.i386.rpm
ข*นท!1 4 ในข%นน8%ตองแน7ใจว7า MySQL ไดถกต#ดต%งและท4างานอย7แลว จQงจะเร#มสราง
Database ใหกบ Snort ได ท4าการสรางดงน8%
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.x.x  version ท8ใชงาน
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE snort;
Query OK, 1 row affected (0.13 sec)

บทท!1 14 Snort (IDS) .....: 244


Linux Server Security

mysql> GRANT CREATE,INSERT,SELECT,UPDATE,DELETE ON


snort.* TO snort@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.08 sec)
mysql> GRANT CREATE,INSERT,SELECT,UPDATE,DELETE ON
snort.* TO snort IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
ข*นท!1 5 จากน%นใหไป Download ไฟล^ท8บ8บอดดวย gzip ไปไวท8 /tmp ดวย wget
ดงน8%
# wget -P /tmp http://www.snort.org/dl/current/snort-2.7.0.1.tar.gz
ถาไม7ม8ไฟล^น8%ใหหาไดจากเวLบไซต^อน ๆ บางคร%งเวLบอาจม8ปUญหา
ข*นท!1 6 ท4าการแตกไฟล^ท8ไดมาออกดวยค4าสง tar ดงน8%
# tar xzf /tmp/ snort-2.7.0.1.tar.gz -C /tmp
ข*นท!1 7 ใหท4าการสราง table ใหกบ database ท8สรางไวใน mysql จากโปรแกรม
snort ดงน8%
# mysql -u snort -p < /tmp/snort-2.6.1.5/schemas/create_mysql snort
Enter password: <password> กรอกรหสผ7านท8สราง database ไวในขอ 4
ข*นท!1 8 ลบไฟล^ตนฉบบท8 Download มาท#%งใหหมด
# rm -rf /tmp/snort*
ข*นท!1 9 แกไข Configuration ใหกบ snort
# vi /etc/snort/snort.conf
…….

บทท!1 14 Snort (IDS) .....: 245


Linux Server Security

คนหาค4าว7า output database แกไขเพ#มเต#มตามบรรทดท8ตวอกษรหนา


# database: log to a variety of databases
# ---------------------------------------
# See the README.database file for more information about configuring
# and using this plugin.
#
output database: log, mysql, user=snort password=<รหสผw น> dbname=snort
host=localhost
:wq
ข*นท!1 10 หลงจากแกไขค7าครบถวนทกข%นตอนแลวใหสง Restart Service
# /etc/init.d/snortd restart
Stopping snort: [ OK ]
Starting snort: [ OK ]
ข*นท!1 11 เปล8ยนค7า Priority ในการเร#มท4างานคร%งต7อไป
# vi /etc/init.d/snortd
เด#ม
# chkconfig: 2345 40 60
แกไขเป>น
# chkconfig: 2345 91 60
:wq
จากน%นใหลบค7าเด#มพรอมก4าหนดใหรบค7าใหม7ดงน8%
# chkconfig - -del snortd
# chkconfig - -add snortd

บทท!1 14 Snort (IDS) .....: 246


Linux Server Security

เป>นอนเสรLจการต#ดต%ง snort ร7วมกบ MySQL พรอมรองรบการบกรกของผไม7หวงด8


ทกรปแบบตามการป”องกนใน Rule ท8ท4าการ Update จากเวLบอย7างต7อเนอง

ก รว(เคร ะห 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%

ข*นท!1 1 ไป Download โปรแกรม base ไดจาก http://www.sourceforge.net/ ขณะท8


เข8ยนหนงสอเล7มน8% base ม8การพฒนาสงสดถQง Version 1.3.9 หลง Download จะไดไฟล^ base-
1.3.9.tar.gz ใหน4าไปไวท8 /tmp

ข*นท!1 2 ท4า การตรวจสอบใน Server ว7าม8การต#ดต%ง php-adodb, php-gd และ php-


mysql ครบถวนแลวหรอยง ถายงใหด4าเน#นการต#ดต%งใหครบท%งสามไฟล^หากไฟล^ไหนไม7ม8
ในแผ7น CD กLใหไปหา Download มาใหครบยกตวอย7างไฟล^ท8 หายไปคอ php-adodb ใหไป
Download ไดท8 http://download.fedora.redhat.com/ ซQ งในต วอย7 า งต7 อ ไปน8 % ได ไฟล^ php-
adodb-4.94-1.fc6.noarch.rpm เอาไปเกLบไวท8 /tmp ส7วนไฟล^ php-mysql และ php-gd มกจะม8
มาในแผ7น CD ครบถวนอย7แลว ท4าการตรวจสอบก7อนดงน8%

บทท!1 14 Snort (IDS) .....: 247


Linux Server Security

# 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*

ข*นท!1 3 หลงจากต#ดต%งในส7วน Web Server ใหท4างานครบถวนรองรบการท4างาน


ของโปรแกรม base เร8ยบรอยแลวใหท4าการแตกไฟล^ base ท8 /tmp ดงน8%
# tar xzf /tmp/base-1.3.9.tar.gz -C /var/www/html
เปล8ยนชอ directory ใหส%นเพอสะดวกในตอนเร8ยกดผ7าน Browser
# mv /var/www/html/base-1.3.9 /var/www/html/base
ลบไฟล^ตนฉบบท#ง%
# rm -f /tmp/base-1.3.9.tar.gz

บทท!1 14 Snort (IDS) .....: 248


Linux Server Security

ข*นท!1 4 ข%นตอนต7อไปเป>นใหท4าการแกไขค7า Configuration ของ base


# vi /var/www/html/base/base_conf.php
…..
$BASE_Language = 'english'; <- ไมwม!ภ ษ ไทย
……
$BASE_urlpath = '/base'; <- ก หนด path ท!1จะเร!ยกจ ก Browser
……
$DBlib_path = '/usr/share/php/adodb/'; <- ท!1อย'wของ adodb
…..
$DBtype = 'mysql'; <- ก หนดชน(ดของ Database ท!1ใช%
…ขอมลต7อไปน8%ตองตรงกบการสราง Database จาก mysql จากข%นตอนท8ผ7านมา
$alert_dbname = 'snort';
$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = 'password';
:wq

ข*นท!1 5 ต7อไปใหเปล8ยนขอมลท%งมดใน /base เป>นของ Apache


# chmod -R apache:apache /var/www/html/base

ข*นท!1 6 จากน%นใหสราง Configuration ใหกบ httpd


# vi /etc/httpd/conf.d/base.conf

บทท!1 14 Snort (IDS) .....: 249


Linux Server Security

<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

ข*นท!1 7 สงให httpd ท4างานใหม7


# /etc/init.d/httpd restart
เป>นอนเสรLจส# %นข%นตอนการใช base แสดงขอมล IDS ท8 snort ดกจบไวได หาก
ตองการแสดงผลเป>นกราฟ ใหท4าการต#ดต%งโปรแกรมเพ#มอ8ก 4 ไฟล^คอ
php-pear-Image-Graph
php-pear
php-pear-Image-Canvas
php-pear-Image-Color

ไฟล^ท % ง หมดหา Download ไดท8 download.fedora.redhat.com และท8 เวL บ ไซต^


rpm.pbone.net เมอไดไฟล^ท%งหมดมาแลวใหต#ดต%งลงในเครองไดเลยจะส7งผลใหหนาเวLบ
สามารถแสดงขอมลเป>นกราฟท8สวยงามตามใจคนต#ดต%งไดเพราะสามารถเลอกค7าท8จะน4าไป
แสดงไดท%งแกน X และแกน Y

บทท!1 14 Snort (IDS) .....: 250


Linux Server Security

ภาพหนาจอท8ปรากฏหลงเร8ยกผ7านเวLบท8 http://192.168.1.11/base

รปท8 14.1

จากเมนคร%งแรกท8เร8ยกใหคล#กท8 Setup page เพอสรางขอมลในการแสดงผล

รปท8 14.2

บทท!1 14 Snort (IDS) .....: 251


Linux Server Security

หลงจากคล#ก Setup page จะไดรปท8 14.2 ใหคล#กท8 Create BASE AG

รปท8 14.3
ในรปท8 14.3 แสดงรายการสราง BASE table ส4าเรLจแลวใหคล#ก Main page

บทท!1 14 Snort (IDS) .....: 252


Linux Server Security

รปท8 14.4

แสดงขอมลพรอมรายการต7าง ๆ ใหสามารถคล#กเขาดไดทกส7วนและยงม8เมนหลก
ดานล7างตามรปท8 14.5 ใหสามารถศQกษาและเขาไปต%งค7าต7าง ๆ ไดอ8กมากมาย ใหศQกษาเพ#ม
เต#มจากค7มอโปรแกรม BASE

รปท8 14.5

บทท!1 14 Snort (IDS) .....: 253


Linux Server Security

บทสรป
โปรแกรม 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 เ ปลองงบ
ประมาณ

บทท!1 14 Snort (IDS) .....: 254


Linux Server Security

บทท!1 15 Backup and Restore

วตถประสงค
➢ เพอใหรจกวธการ Backup และ Restore ขอมลใน Server
➢ เพอใหเขาใจการใชงานค,าสงทใช Backup และ Restore
➢ สามารถน,าไปใชงานจรงไดอย4างมประสทธภาพ

ค แนะน และก รเตร!ยมข%อม'ล


1. เตรยมโปรแกรมทใชงานชอ partimage เป=น Open source
2. ศBกษาการใชค,าสง tar, mkisofs, cdrecord
3. เนHอหาในบทนH ส4วนทเป=นการตดตHง การแกไข จะเนนเป=นตวหนา (Bold)
4. ทดลองปฏบตตามขHนตอนทเรยงไว หากท,าผดพลาดใหเรมตนใหม4ดวยการ
ถอนการตดตHงโปรแกรมเดมออกจากเครองจะดกว4าการท,าซH,า

ก รต(ดต*งและใช%ง นโปรแกรม
ป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าย เครองลก

บทท!1 15 Backup and Restore .....: 255


Linux Server Security

ข4าย แต4ไม4เคยเขยนของบประมาณจดซHอเครองส,ารองขอมล คงมองขามกนไปยกใหญ4 ส4วน


มากผเขยนเหSนแต4เนนการจดซHอเครองส,ารองไฟฟZา (UPS) กนมากกว4า
ชน(ดของก ร backup สามารถแบ4งออกได 6 ชนดดงนH
1. Full backup เป=นการท,า backup หมดทRกอย4าง
2. Incremental backup เป=นการท,า backup ทRกอย4างทเปลยนแปลงหลงจากท,า Full
backup
3. Differential มหลกการคลายกบแบบทสองต4างกนตรงชอเรยก
4. Network backup ใชส,าหรบการ backup ขอมลจาก client ไปยง backup server
เพอให Server ท,าการ backup สอ
5. Dump backup ไม4ใช4เป=นการ backup file ตามปกต แต4จะท,าการ backup ไดทHง
ไฟลdและรวม disk partition หรอ file system ไปดวย
6. Level 0 to 9 backup เป=นการท,า incremental backup อย4างละเอยดทRกอย4างทม
การเปลยนแปลงเรยกอกอย4างว4า lower lever backup

ความเรSวในการ backup และ Restore จะขBHนอย4กบปรมาณขอมลและวธการ backup


เช4นถาขอมลมจ,านวนมาก ๆ เป=นหลายรอย Gigabyte กSจ,าเป=นตองใชเวลา backup นานและยง
ถามการท,า backup ผ4า น Network กSจ ะยงใชเวลามากขBHนอกตามขนาด Bandwidth ทใชใน
ระบบ ในการวางแผนทดส,า หรบ backup ขอมลควรค,านBงถBงกรณเมอเกดเหตR Hard drive
failure ขอมลทใชงานตHงแต4ตนจนถBงล4าสRดจะเกดความเสยหายทHงหมด ดงนHนน4าจะมการท,า
backup บ4อย ๆ ใหลองพจารณาการวางแผนจากองคdประกอบดงต4อไปนH
1. ปรมาณขอมลทจะท,าการ backup
2. ขอมลมการเปลยนแปลงบ4อยดวยวธการใด
3. ความเป=นไปไดในการ Restore ขอมลจ,านวนมาก ๆ

บทท!1 15 Backup and Restore .....: 256


Linux Server Security

4. ระยะเวลาท Server จะหยRดใหบรการได


5. ขอมลอะไรทมการเปลยนแปลงบ4อยทสRด

หลงจากท,าการเรยบเรยงองคdประกอบต4าง ๆ ทเกยวของเสรSจแลว กSสรRปเป=นแนวคด


ใหม4น,ามาจดกลR4มของขอมลตามลกษณะการเปลยนแปลงไดเป=น 3 กลRม4 คอ
1. ขอมลทไม4ค4อยมการปรบปรRง
2. ขอมลทมการปรบปรRงเป=นประจ,า
3. ขอมลทมการปรบปรRงตามช4วงเวลาทก,าหนด
หลงจากนH นใหพจารณาดว4า Directory ใดทตองมการท, า backup ไม4จ ,า เป= นตอง
backup หมดทHง hard drive เพราะจะใชเวลามากเกนไป ไม4ม ใครเขาท,ากน ใหดจากตวอย4าง
ตามนH
/etc เป=นทเกSบ Configuration file
/home เป=นทเกSบขอมลของ User
/www เป=นทเกSบขอมลเกยวกบ Web file (อาจมชอ dir อนกSได)
ต4อไปเป=นการพจารณาเลอกสอ (Media) ทจะใชจดเกSบขอมลทท,าการ backup เมอม
การแบ4งกลR4มตามการเปลยนแปลงขอมลไดแลว สอทจะใชเกSบกSจะสามารถเลอกใหเกดความ
ประหยดได บางหน4วยงานไม4มงบประมาณทจะจดซHออRปกรณdราคาแพงเช4น Tape backup กS
สามารถใชสอทหาง4ายเช4น CD หรอ DVD ทปQจจRบนมราคาถกกว4า Floppy Disk สมยก4อนเสย
อก โดยเฉพาะเครองบนทBก CD หรอ DVD กSมราคาถกเกอบเท4า Floppy Drive ในอดตอกเช4น
กน คงเป=นทางเลอกใหกบผดแลระบบในแต4ละหน4วยงานหรอองคdกรไดน,าไปใชงานจรง ดง
ต4อไปนH
กลAมท!1 1 ขอมลไม4ค4อยมการปรบปรRง ในกลR4มนHไดแก4 /etc เนองมาจากค4า Configure
จะมการแกไขเพยงหลงตดตHงโปรแกรมเพยงครHงเดยว แลวให server ท,างานใหบรการไปเป=น

บทท!1 15 Backup and Restore .....: 257


Linux Server Security

ระยะเวลานาน จะมการปรบปรRงค4า Configure อกครHงกSต4อเมอมการ Update โปรแกรมเท4านHน


จBงควรเลอกสอทใชบนทBกแบบความจRต,าและมความเรSวในการท,างานไม4สงเช4น ZIP Disk ถา
แพงไปอาจเกSบใน CD-R กSได การเกSบ /etc ส4วนนHม ความส,าคญมากเพราะมการเกSบขอมล
ของ User คอไฟลd passwd และ shadow เป=นขอมลทตองท,าการ Restore ก4อนเป=นอนดบแรก
เพราะจะมผลกบขอมลในส4วนอน ๆ ท User ไดท,าการบนทBกหรอมไวใชงาน ถา Restore ภาย
หลงขอมลอนอาจส4งผลใหการท,างานของขอมลผดพลาดได
ส4วน Directory ทดเหมอนจะมการเปลยนแปลงนอยเหมอนกนแต4ค นทวโลกไม4
นยมท,าการ backup กนกSคอ /bin และ /usr เพราะเป=นส4วนของตวโปรแกรม เมอมปQญหาใชวธ
ตดตHงใหม4เรSวกว4าการ backup/restore เพราะเราไดท,าการเกSบค4า Configuration ไวแลวนนเอง
กลAมท!1 2 ขอมลปรบปรRงบ4อย ๆ ในกลR4มนHคงหนไม4พ นขอมลหลกของ User และ
ขอมลพวก Database ส4วนใหญ4จ ดใหเกSบอย4ใน /home เมอขอมลมการเปลยนแปลงทRกวนกS
ควรมการท,า backup ทRกวนเช4นกนและถาการ backup ตองใชเวลานาน กSควรเลอกเวลาใน
ช4วงพกหรอกลางคน ทมการใชงานนอยหรอไม4มการใชงาน จะไดไม4รบกวนการท,างานของ
ระบบ แนะน,าใหเขยน Script ใหท,าการ backup เป=นสองช4วงเวลาคอครBงเชาและครBงบ4ายสลบ
วนกนเพราะไม4แน4ว4า Hard drive failure จะเกดขBHนช4วงเวลาใด ขอมลทท,า backup จะไดเกSบ
ใกลเวลาก4อนเกดเหตRมากทสRด ส4วนสอทใชเกSบขอมลกลR4มนHควรเลอกชนดทมการเขยนซH,าได
(Rewritable) เช4น CD-RW หรอ DVD-RW เพราะเป=นขอมลของการเกSบรายวนรวมทHงสHน 7
วน 7 แผ4น ส4วนของการ backup เป=นรายเดอนควรเลอกชนดอ4านไดอย4างเดยวเช4น CD-R หรอ
DVD-R
กลAมท!1 3 ขอมลทมการปรบปรRงตามช4วงเวลาทก,า หนด ส,าหรบขอมลกลR4มนHค วร
พจารณาใหลBกลงไปอกว4าเป=นขอมลชRดใดทมการปรบปรRงระบRเวลาแน4นอนกSใหเขยน Script
รองรบเฉพาะตอนทท,าการปรบปรRงพรอมกนกบการ backup ไปดวยกนเลย ส4วนขอมลทม

บทท!1 15 Backup and Restore .....: 258


Linux Server Security

การปรบปรRงตามก,าหนดเวลาจากตวโปรแกรมทใชงานต4าง ๆ กSใหท,าการ backup ตามระยะ


เวลาทแต4ละโปรแกรมก,าหนดไว
โปรแกรมค,าสงทมไวส,าหรบ backup ขอมลใน Linux มาตรฐานทRกค4ายมกเป=นค,า
สงอย4างง4าย ๆทสามารถใชไดทHงการ copy และการเกSบรวบรวมขอมลจ,านวนมาก ๆ มดวยกน
4 ค,าสงคอ
- cp
- tar
- gzip
- dump
ในทนHจะยกตวอย4างการใชค,าสง tar เพราะใชงานง4ายและเหมอนกบในระบบ UNIX
สะดวกในการใชงานเพยงค,าสงเดยวสามารถเกSบไดตHงแต4ไฟลdเดยวจนถBงหลาย ๆ Directory
ใน Linux จดให tar อย4ในประเภท Utility ทน4าใชตวหนBงทมลกษณะการใชงานทสามารถเพม
Option ในการเกSบขอมลตามความตองการและสามารถเขยน Script ใหท,าการจดเกSบตาม
ตารางเวลาทก, า หนดไดสะดวกรวดเรS วอกดวยและยงมคR ณ สมบตในการบบอดขอมล
(Compress) ใหมขนาดไฟลdเลSกลงได ดตวอย4างรปแบบการใชงานดงนH
# tar cf backup.tar directory
c = create new file
f = file or device ทจะจดเกSบ
เช4นตองการ backup /home ใหสง
# tar cf backup.tar /home
ถาตองการ Restore ใหสง
# tar xPf backup.tar
ความหมายของ Option ทจ,าเป=นตองใชมดงนH

บทท!1 15 Backup and Restore .....: 259


Linux Server Security

v = Lists verbosely files being processed.


z = Detects and properly processes gzip archives during extraction.
p = Specifies to extract all protection information.
d = Specifies to find differences between the archive and the file system.
t = Lists the contents of the archive.
u = Specifies to append only files newer than the archive copies.
N date = Specifies to archive only files newer than the specified date.
P = Specifies not to strip the leading / character from file names. In this case,
regardless of the directory, from which the extraction command is executed, the
files will be extracted into their initial directories.
กรณตองการ backup ครHงเดยวหลาย Directory กSสามารท,าไดดงนH
# tar cf backup.tar /home /etc /www
สามารถตรวจสอบทHงไฟลdและ Directory ทเกSบไวใน backup.tar ไดดงนH
# tar tvf backup.tar
กรณตองการ backup พรอมกบบบอดไฟลdใหมขนาดเลSกลงสามารถท,าไดโดยใหค,า
สง tar ไปเรยกใชค,าสง gzip ท,างานร4วมดวยจะท,าใหไฟลdทจดเกSบมนามสกRลเป=น .tar.gz ดงนH
# tar cfz backup.tar.gz /home /etc /www
และท,าการ Restore ดวยค,าสง
# tar xzPf backup.tar.gz

บทท!1 15 Backup and Restore .....: 260


Linux Server Security

กรณ!ศRกษ ก รท Full backup ลงเทปของ RedHat


ผดแลระบบส4 ว นมากในอดตมกนยมส, า รองขอมลไวใน Tape Backup เพราะ
ปQจจRบนราคาไม4สงนกและยงเป=นสอทนยมใชงานกนอย4างแพร4หลาย หาซHอไดง4าย มความจRสง
และความเรSวในการเขาถBงขอมลสงขBHนกว4าเดมมาก ในบทนHจะยกตวอย4างการใชค,าสง tar ใน
การท,า Full Backup บนทBกลงบน Tape Backup ซBงถาตดตHงบน Linux จะมองเหSนเป=น SCSI
tape drive ( /dev/st0 ) น4าจะน,าการเขยน Script บางส4วนไปประยRกตdใชใหตรงกบงานจรงซBง
อาจไม4ใช4เป=น Tape กSได
ตองตรวจสอบว4า Server ไดตดตHงค,าสง mt หรอยงดวยค,าสง
# rpm -q mt-st
ถายงใหตดตHงไดจาก CD ROM ดงนH
# mount /dev/cdrom
# rpm -ivh /mnt/cdrom/RedHat/RPMS/mt-st*.rpm

ส,าหรบวธท,า Full Backup นHนหมายความว4าท,าการ backup ทHงสปดาหdและส,ารอง


แบบต4อเนองดวยการใชเทป 6 มวนโดยใชเทปมวนแรกเป=นตวเรมบนทBกวนแรก ส4วนมวนท
2-6 มหนาทบนทBกในแต4ละวนต4อเนองทRกสปดาหd อ4านแลวอาจงง ดวธการจากตวอย4างเลย
ครบ (ขอสงเกตเครองหมาย -- เป=นขดลบสองครHงในเอกสารอาจเหSนเป=นขดยาวตดกน)

ก4อนอนตองอย4ทไดเรSกทอรราก “/”
# cd /
ตวอย4างนHจะเรม backup partition /home ตHงแต4วนศRกรd ดวยเทปมวนท 1
มวนท 1
# cd /

บทท!1 15 Backup and Restore .....: 261


Linux Server Security

# tar cpf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \


--directory / home
มวนท 2 วนจนทรd
# cd /
# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \
--directory / home
มวนท 3 วนองคาร
# cd /
# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \
--directory / home
มวนท 4 วนพRธ
# cd /
# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \
--directory / home
มวนท 5 วนพฤหส
# cd /
# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \
--directory / home
มวนท 6 เป=นวนศRกรd ครHงท 2 (สปดาหdท 2 เป=นมวนทเรมตนสปดาหdใหม4)
# cd /
# tar cpf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." \
--directory / home
หลงจากไดครบ 6 มวนแลวใหท,าซH,าตHงแต4มวน 2 - 5 ในวนต4อไปไดเลย เพราะมวน

บทท!1 15 Backup and Restore .....: 262


Linux Server Security

ท 2-5 เป=นการ backup ขอมลต4อกนไปเรอย ๆ (Incremental Backups) จะเหSนว4ามวนท 1 และ


มวนท 6 ส,าคญสR ดหามเขยนทบเพราะจะเกS บขอมลส, าคญในการเรม Backup ในแต4 ล ะ
สปดาหd
อธบาย Option ทใชกบค,าสง tar
“c” (Create) = ใชส,าหรบสรางแฟZมในการเรม Backup
“p” (Preserve permission) = ก,าหนดใหจ,าค4า permission ของ file และ directory
ไปดวย
“N” (New) = ใชเพอสรางการ Backup ต4อทายมวนเดมดวยการตรวจสอบ
วนท
“F” = ใชตรวจสอบสถานะของชอแฟZมและชนดของอRปกรณdทใชบนทBก
เมอตองการจะหมRนเทปกลบ (Rewind) ใหใชค,าสง
# mt -f /dev/st0 rewind
และสงเอามวนเทปออกดวยค,าสง
# mt -f /dev/st0 offline

ถาคRณ Backup ในมวนเดยวไม4พอ ตองมการก,าหนดค4าใหเป=น --multi-volume (-M)


เพม M เขาไปในตวอย4างขางบน ดงนH
# tar cMpf /dev/st0 /home
หากท,าการ Backup แลวตองการจะตรวจสอบเปรยบเทยบกบตนฉบบว4าไดขอมล
ครบถวนหรอไม4 ใหใชค,าสง
# cd /
# tar dvf /dev/st0
ตวอย4างต4อไปนHเป=นการ Backup ทHงระบบ (หมดทRก partition ทจ,าเป=น) ใหสงดงนH

บทท!1 15 Backup and Restore .....: 263


Linux Server Security

# 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

บทท!1 15 Backup and Restore .....: 264


Linux Server Security

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

คRณสามารถตรวจด File ท Backup ไวในเทป ( /backups )


# ls -l /backups/
total 22217
-rw-r--r-- 1 root root 10731288 Feb 7 11:24 ns1-01Feb.tar
-rw-r--r-- 1 root root 6879 Feb 7 11:24 ns1-Fri.tar
-rw-r--r-- 1 root root 2831 Feb 7 11:24 ns1-Mon.tar
-rw-r--r-- 1 root root 7924 Feb 7 11:25 ns1-Sat.tar

บทท!1 15 Backup and Restore .....: 265


Linux Server Security

-rw-r--r-- 1 root root 11923013 Feb 7 11:24 ns1-Sun.tar


-rw-r--r-- 1 root root 5643 Feb 7 11:25 ns1-Thu.tar
-rw-r--r-- 1 root root 3152 Feb 7 11:25 ns1-Tue.tar
-rw-r--r-- 1 root root 4567 Feb 7 11:25 ns1-Wed.tar
drwxr-xr-x 2 root root 1024 Feb 7 11:20 last-full
จากนHนใหสรางไฟลdเวลาเกSบไวใน last-full ซBงเป=นค4าทก,าหนดมาจาก Script ตาม
ตวอย4างขางบน สรางดงนH
# date +%d%b > /backups/last-full/myserver-full-date
ค,าว4า myserver-full-date เป=นชอไฟลd อาจก,าหนดเป=นชอเครองรวมกบวนเดอน
เช4น ns1-15-Jan หรอจะก,าหนดเป=นอย4างอน ใหสอความหมายใหผดแลระบบสามารถรว4าน
คอวนเวลาท Backup กบเครองชออะไร หลงจากสราง Script ทใช Backup อตโนมตไดแลว
อย4าลมก,าหนด Permission ให Script
# chmod 700 /etc/cron.daily/backup

ว(ธก! ร Restore ด%วยค ส1ง tar


หลงจากทคRณไดท,าการ Backup ไม4ว4าจะเป=นเพยง Partition /home อย4างเดยวหรอ
แบบท Backup ทHง Hard disk กSตาม ตองรว4าการน,าขอมลกลบคนลงส4 Hard drive นHนตองม
วธการหรอสงงานอย4างไร เมอเวลาทเครอง Server เกดปQญหาจะไดน,าขอมลท Backup ไว
กลบมาใชงานต4อไดทนเวลา ใหท,าไดดงต4อไปนH
# cd /
# tar xpf /dev/st0/full-backup-Day-Month-Year.tar
ถาตองการ Restore ทHงหมดทRกมวนกSใช M เหมอนเดมครบ เป=น #tar xMpf …….

บทท!1 15 Backup and Restore .....: 266


Linux Server Security

จะสงเกตไดว4า เป=นการเปลยนจาก Parameter “c” เป=น “x” (Extract) และตามดวยชอไฟลdท


เกSบไวในเทป ซB งเหมอนกนกบค,าสงทเราเคยไป download โปรแกรมมาจากทอนแลวได
นามสกR ล เป= น .tar นนเอง และหวงว4 า คงไม4ส บสนกบตวอย4 า งการสราง Script Backup
อตโนมต เพราะใน Script จะเกSบไฟลdชอ ns1-15-Jan.tar เวลาจะ Restore กSสง
# tar xpf /dev/st0/ns1-15-Jan.tar

ก รรกษ คว มปลอดภยให%กบ Backup Media


หากพจารณาเรองความปลอดภยขอมลคงตองยอนไปนBกถBงเรองการเขารหสกRญแจ
ซBงโปรแกรมทยงนยมใชมากทสRดในปQจจRบนกSคอ OpenSSH มตดตHงใน Linux Server ทRกค4าย
อย4 แลวใหน, าวธการเขารหสกR ญ แจของโปรแกรมนH ม าช4 ว ยเขารหสไฟลdท ท, า backup ไว
ปZองกนไม4ใหใครน,าไปใชหรอเป‚ดดไดใหใชค,าสงดงต4อไปนH
# openssl des -in /home/backup.tar.gz -out /home/backup.sec
ตวอย4า งนH สรางไฟลd backup.sec หลงจากนH น ใหรบบนทBก ลงสอทเตรยมไวแลว
ท, า การลบไฟลdท H ง สองคอ backup.tar.gz และ backup.sec ออกจากเครอง Server และเมอ
ตองการ Restore กSใหใชค,าสงปลดรหสกRญแจดงนH
# openssl des -d -in /home/backup.sec -out /home/backup.tar.gz

ก รใช%ค ส1ง tar ท ก ร backup ข%อม'ลผA น ssh


บางครHงผดแลระบบมความจ,าเป=นทตองการท,า backup ไปไวบนเครองคอมพวเตอรd
อนทท,าหนาทรองรบไฟลd backup แต4ไม4ไดใหบรการอน ๆ ซBงอาจเกSบไวใน Hard drive หรอ
อาจสงบนทBกขอมลลงบนสอต4าง ๆ เช4น CD-R, CD-RW หรอ DVD วธการทจะส4งไฟลdอาจ
ท,าไดหลายวธ แต4ผเขยนมกใชความรเดม ๆ ทผดแลคRนเคยมาประยRกตdใชงาน เช4นในหวขอนH
เมอเรานยมใช Secure Shell ทมความปลอดภยค4อนขางสงในการท,างานแบบ Remote Login

บทท!1 15 Backup and Restore .....: 267


Linux Server Security

เรากSน4าจะน,าความสามารถนHมาประยRกตdใชในการ Backup ขอมลแลวส4งไฟลdไปไวรวมกนท


เครองอนจะไดไม4รบกวนพHนทบนเครอง Server หลกมวธการทไม4ยR4งยากอะไรเพยงแต4ถาท,า
ผดพลาดอาจเป=นช4องทางทผไม4หวงดเจาะเขาระบบได ท,าตามขHนตอนดงต4อไปนH
กรณตองการทจะ backup partition /home จากเครอง Server ส4งไปยงเครอง backup
สามารถใชค,าสง tar ร4วมกบ gzip เพอบบใหไฟลdเลSกลง เสรSจแลวส4งไปเกSบยงเครอง backup
สงดงนH
# tar zcvf - /home | ssh bkuser@backup "cat > /home/bkuser/home.tar.gz"
หรอถาไม4ไดก,าหนดชอ host กSตองใชเลข IP แทนดงนH
# tar zcvf - /home | ssh bkuser@192.168.1.20 "cat > /home/bkuser/home.tar.gz"
ตวอย4างทผ4านมาเครอง backup ม IP address 192.168.1.20 ม user ทรอรบการเกSบ
ไฟลdเป=น user ธรรมดาชอ bkuser เพราะในการใชงาน Secure Shell จะไม4อนRญาตให root
สามารถ login เขาระบบได เมอตองการส4งไฟลdไปกSตองไม4ลมว4าส4งไปไวท home directory
ของ bkuser เท4านH น หลงจากกด Enter จะมรายการไฟลdท อย4 ใ น /home แสดงออกมาบน
จอภาพ จากนHนกSจะรอใหกรอก password ของ bkuser เมอกรอกรหสผ4านถกตอง ไฟลdกSจะถก
ส4งไปยงเครอง backup จนเสรSจสมบรณd
หรอถาถนดใชค,าสง dd กSไม4ตองใช cat สามารถสงไดดงนH
# tar zcvf - /home | ssh bkuser@192.168.1.20 "dd of=/home/bkuser/home.tar.gz"
กรณทมการ mount สออนไวบนเครอง backup กSสามารถส4งไปบนทBกไดเลยเช4น ถา
mount tape ไวบน /dev/st0 กSสามารถส4งไปบนทBกไดดงนH
# tar cvzf - /home | ssh ssh bkuser@192.168.1.20 "cat > /dev/st0"
ถาตองการสงหมRนเทปกลบแลวค4อยบนทBกกSท,าไดดงนH
# tar cvzf - /home | ssh ssh bkuser@192.168.1.20 $(mt -f /dev/st0 rewind; cat
> /dev/st0)$

บทท!1 15 Backup and Restore .....: 268


Linux Server Security

คราวนHถาตองการ Restore กลบคนมาเครอง Server ผ4าน ssh กSท,าไดโดยสงดงนH


# cd /
# ssh root@192.168.1.20 "cat /home/bkuser/home.tar.gz" | tar zxvf -

ก รใช% SSH ท!1ไมAต%องกรอกรหสผA น


ตวอย4างทผ4านมาทRกครHงทท,าการ backup แลวส4งขามเครองผ4าน ssh มความยR4งยาก
ในการทตองกรอกรหสผ4านทRกครHงทเรยกใชค,าสง ssh เครองปลายทางจะถามรหสผ4านถา
กรอกผดกSไม4สามารถส4งไฟลdไปเกSบได ตวอย4างในหวขอนHสามารถน,าไปใชประโยชนdได
มากมาย ส,าหรบบทนHใหใชเพยงการส4งไฟลd backup ไปเกSบโดยไม4ถามรหสผ4าน และทส,าคญ
คอผดแลระบบสามารถน,าไปเขยน Script ส4งขอมลอน ๆ ไปเกSบไดอกดวย วธการท,ามง4าย ๆ
ดงนH
สงแรกทควรค,านBงคอบนเครอง Server เราตองเป=น root หรอ user ทมสทธเทยบเท4า
root เพราะจะสามารถท,า การใด ๆ บน Hard drive ไดทRกส4ว น ถาเป=น user ธรรมดาจะไม4
สามารถบRกรRกเขาในส4วนทหวงหามได เช4นถาตองการ backup /etc มไฟลd shadow ถาเป=น
user ธรรมดากSจะถกฟZองว4าอ4านไฟลdไม4ได เรมกนเลย ในขณะทอย4ใน home directory ของ
root ใหสง
[root@sv2 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <- กด Enter
Enter passphrase (empty for no passphrase): <- กด Enter
Enter same passphrase again: <- กด Enter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

บทท!1 15 Backup and Restore .....: 269


Linux Server Security

The key fingerprint is:


25:70:8f:1e:84:52:9a:45:f6:6d:f3:f3:eb:ce:11:44 root@sv2.sample.co.th
[root@sv2 ~]#
เป=นการสราง rsa key หรอรหสกRญแจของ root ทเครอง server ชอไฟลd id_rsa และ
id_rsa.pub เกSบอย4ใน .ssh หลงจากสรางเสรSจใหท,าการส4งค4า id_rsa.pub (public key) ไปไวท
เครอง backup เอาไวตรวจสอบ key ใหตรงกนระหว4างเครองตนทางกบปลายทาง สงดงนH
# ssh-copy-id -i .ssh/id_rsa.pub bkuser@192.168.1.20
15
bkuser@192.168.1.20's password: <- กรอก password ของ bkuser
Now try logging into the machine, with "ssh 'bkuser@192.168.1.20'", and check
in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
#
ขHนตอนนHตองกรอกรหสผ4านของ bkuser ทเครอง backup ใหตรงถBงจะส4ง key ไป
ไวบนเครอง backup ไดส,าเรSจโดยจะสราง directory ชอ .ssh ใน home directory ของ bkuser
แลวบนทBกไฟลdชอ authorized_keys ให ถาไม4แน4ใจลองไปดบนเครอง backup อกครHง ถาพบ
ว4ามไฟลdด งกล4าวแลวแสดงว4าขHนตอนสรางรหสกRญแจทHงสองเครองนHเสรSจแลว ต4อไปให
ตรวจสอบเครอง backup ว4าในบรการ ssh มการท,า configure อะไรไวสามารถรองรบการส4ง
ไฟลdจาก user ชอ bkuser ไดหรอไม4 ใหไปดและแกไขท
ตรงนHตอง login ดวย root เพอแก configuration บนเครอง backup
# vi /etc/ssh/sshd_config
..... ตรวจสอบดว4า 3 บรรทดนHตองไม4ม # ป‚ดอย4หนาบรรทด

บทท!1 15 Backup and Restore .....: 270


Linux Server Security

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 -

บทท!1 15 Backup and Restore .....: 271


Linux Server Security

อยากใหบนทBกแลวดดแผ4นออกหรอใส4 option อะไรเพมตอนบนทBกใหลอง man ด


รายละเอยดเอง เพราะเพยงเท4านHถาน,าไปต4อ ๆ กนตHงแต4ตนจะเหSนไดว4าสามารถท,า backup
ในเครอง server เองกSได หรอท,า backup ส4งไปเกSบทเครองอนผ4าน ssh กSไดแถมยงส4งไปเกSบ
บนสอตามตองการไดอกดวย

ก ร Backup และ Restore Partition


ในบทนHจะแนะน,าเครองมอส,าหรบ clone หรอการ copy ไดเป=น partition มชอว4า
โปรแกรม partimage มลกษณะการท,างานบน text mode เป=นเมนส,าเรSจรป โดยจะเกSบราย
ละเอยดทHงหมดตHงแต4ชนด ขนาด และขอมลทมใน partition นHน ๆ ซBงจะมประโยชนdในการท
ตองการจะเปลยน Hard disk ตวใหม4ไม4ตองตดตHงโปรแกรมใหม4สามารถทจะท,าการ backup
ไดแมกระทง MBR ท boot partition และทส,าคญคอสามารถ backup ไดทRก file system ดงนH
ext2fs, ext3fs, fat16, fat32, hfs, hpfs, jfs, ntfs, reiserfs, ufs, xfs และยงมขอดอกอย4างคอแมว4า
partition ทจะท,าการ restore ไม4ใช4เป=น file system ทตรงกนโปรแกรมจะท,าการเปลยนใหตรง
กบชนดเดยวกบทได backup มาจากตนทาง และถาพHนทว4างไม4พอโปรแกรมจะไปหาทว4าง
ส4วนอนบน hard disk เพอใหขอมลตดตHงลงไดครบสมบรณdอ กดวย โปรแกรมนHเป=น Open
source มรองร บหลายค4 า ย ผด แลระบบสามารถไปหา download โปรแกรมนH ไดท
http://dries.ulyssis.org/rpm/packages/partimage/info.html เลอกใหตรงกบ OS และ Version
ทก,าลงใชงาน กรณตวอย4างต4อไปนHเป=นการใชงานกบ Fedora Core 6 ไป download ไฟลdช อ
partimage-0.6.6-1.fc6.rf.i386.rpm มวธใชงานง4าย ๆ ตามเมนดงต4อไปนH
กรณเป=น Debian ใหตดตHงดวยค,าสง
# apt-get install partimage
ถาเป=น Fedora RedHat ใหตดโดยค,าสง
# rpm -ivh partimage-0.6.6-1.fc6.rf.i386.rpm

บทท!1 15 Backup and Restore .....: 272


Linux Server Security

หลงตดตHงเสรSจใหเรยกใชงานดวยค,าสง
# partimage กด Enter จะไดเมนดงรป

รปท 15.1 เมนหลกของ partimage

จากรปท 15.1 ใหเลอก partition ทตองการ backup โดยเลอนแปZนลกศรขBHนลง ตาม


ตวอย4า งจะเป=น sda1 (boot partition) จากนHนใหใชแปZน TAB มาท image file to create/use
เพอกรอกชอไฟลd แ ละ path ทตองการเช4 น ตองการ backup ไฟลdช อ boot_part เกS บ ไวท
/backup กS ใหกรอกลงไปเป= น /backup/boot_part เมนถดลงมาเป= น Action to be done: ถา
ตองการ backup เลอกรายการแรกถาตองการ Restore ใหเลอกรายการทสองแต4ถ าตองการ
Restore partition ทใช boot ตองเลอก Restore an MBR จากนHนใหกด F5 ไปยงหนาจอถดไป
ดงภาพ

บทท!1 15 Backup and Restore .....: 273


Linux Server Security

รปท 15.2 แจง Error กรณ partition ยงไม4ได unmount

จากภาพท 15.2 เป=นการเตอนใหผดแลระบบทราบว4า การใช partimage ตองท,าการ


backup partition เฉพาะท unmount เท4านHน ถากด Continue โปรแกรมจะท,าต4อใหแต4ไม4ร บ
ประกนว4าจะไดขอมลครบสมบรณdหรอไม4 จBงแนะน,าใหท,าการ unmount ก4อนเช4น
# umount /boot หลงจากนHนจะไดเมนหนาจอถดไปดงภาพ

รปท 15.3 หนาต4างเลอกการบบอดขอมล

บทท!1 15 Backup and Restore .....: 274


Linux Server Security

จากภาพท 15.3 มระดบการเลอกบบอด Compression level ให 3 รายการ แนะน,าให


ใชรายการทสอง เพราะไดไฟลdเลSกและความเรSวปานกลาง ถาเลอกรายการทสามไดไฟลdเลSก
ทสRดแต4ท,างานชามากและทส,าคญการใช bzip2 ไม4รองรบการเกSบ MBR จะถกเตอนดงภาพ

รปท 15.4 ค,าเตอนเมอเลอกการบบอดแบบดวย bzip2

ส,าหรบรายการอน ๆ ในภาพท 15.3 กSม Option ถกเลอกไวใหอย4แลว ส4วนถดไป


เป=น Image split mode สามารถก,า หนดให Automatic split และขนาดไฟลdไดตามตองการ
เมนถดไปเป=นการเลอกว4าถาเสรSจแลวจะท,าอะไร โปรแกรมเลอกไวท wait ใหกดแปZน F5 จะ
ท,างานต4อดงภาพ

บทท!1 15 Backup and Restore .....: 275


Linux Server Security

ในภาพท 15.5 ใหกรอกค4ารายละเอยดของ Partition ทก,าลงจะท,าการจดเกSบ จากนHน


เลอก OK

รปท 15.6 เป=นการแจงขอมลของ Partition ทก,าลงจะ Backup


เมออ4านรายละเอยดในภาพท 15.6 แลวใหเลอก OK เพอจดเกSบไดทนท คงตองรอ
เวลาในการท,า Backup จะชาหรอเรSวขBHนอย4กบขนาดของขอมลในแต4ละ Partition รวมถBงการ
เลอกแบบในการบบอดขอมลดวย เมอเสรSจแลวโปรแกรมจะรายงานใหทราบ ดงนH

บทท!1 15 Backup and Restore .....: 276


Linux Server Security

รปท 15.7 รายงานผลความส,าเรSจในการ Backup

เพยงรปแบบการท,างานผ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งชอ

บทท!1 15 Backup and Restore .....: 277


Linux Server Security

aaa bbb xyz เกSบกนไวเตSม Hard disk พอถBงเวลาจะเรยกใชกSต องมานงเป‚ดดทRกไฟลd ไม4ร


ความหมายว4าไฟลdไหนเป=นไฟลdทตองการใชงาน ท,าใหเสยเวลาสงทไม4ควรยBดตดกSค อใช
Linux ค4ายไหนกSท,าไดถาเอาแนวทางหรอตวอย4างไปหาค,าสงและต,าแหน4งการ mount ใหกบ
device หรอต,าแหน4งขอมลทจะท,าการ backup และยงมการน,าโปรแกรมส,าเรSจทเป=นของฟรม
ไวใหใชกบ Linux หลายค4ายเช4น Partimage เอาไวใหผดแลทชอบสะสม hard drive หลาย ๆ
ตวเอาไวส,ารองขอมลอกดวย

บทท!1 15 Backup and Restore .....: 278


Linux Server Security

ภาคผนวก
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 น ผ& ตรวจสอบระบบ

ภาคผนวก .....: 279


Linux Server Security

สารสนเทศขององค ก ร (IT Auditor) หรอบFค คลท*องคก รมอบหมาย เป น ตน รวมทง


พนกงานเจาหนาท*ตามพระราชบญญตน*
(๓) จดใหม*ผ&ม*หนาท*ประสานงานและใหขอม&ลกบพนกงานเจาหนาท*ซHงไดรบการ
แต4งตง ตามพระราชบญญตว4าดวยการกระท1าความผดเก*ยวกบคอมพวเตอร พ.ศ. ๒๕๕๐
เพอใหการส4งมอบขอม&ลนน เปนไปดวยความรวดเร+ว
(๔) ในการเก+บขอม&ลจราจรนน ตองสามารถระบFรายละเอ*ยดผ& ใชบรการเปนราย
บFคคลได (Identification and Authentication) เช4น ลกษณะการใชบรการ Proxy Server,
Network Address Translation (NAT) หรอ Proxy Cache หรอ Cache Engine หรอ
บรการ Free Internet หรอ บรการ 1222 หรอ Wi-Fi Hotspot ตองสามารถระบFตวตนของ
ผ&ใชบรการเปนรายบFคคลไดจรง
ขอ ๙ เพอใหขอม&ลจราจรม*ความถ&กตองและน1ามาใชประโยชนไดจรงผ& ใหบรการ ตองตง
นาฬกา ของอFปกรณบรการทFกชนดใหตรงกบเวลาอางองสากล (Stratum 0) โดยผดพลาด
ไม4เกน ๑๐ มลลวนาท*
ส1าหรบภาคผนวกน*เปนการแนะน1า วธ*การตดตง Log Server ตามกฎหมายอย4า ง
ประหยดดวย Open source ท*ม*มาใหใชบน Linux ไม4ตองไปเส*ยค4าลขสทธmใด ๆ เพราะ Linux
ทFกค4า ยออกแบบมาใหใชเปน Network Operating System (NOS) ม*การบนทHก Log file ให
เปนปกตเพอใหผ&ด&แลระบบสามารถวเคราะหปoญหาหรอควบคFมด&แลระบบไดอย4างด*และครบ
ถวนอย&4แลว เพ*ยงแต4ผ&ด&แลระบบตองปรบวธ*การวางแผนตดตงเส*ยใหม4ใหตรงตามกฎหมาย
ส1าหรบกฎหมายฉบบน*ไม4อนFญาตใหผ&ด&แลระบบ (System Administrator) เขาถHง Log file ได
ดงนนผ&ด&แลคงตองท1าการวางแผนตดตงและท1าการก1าหนดเรอง Security ใหระบบรวมถHงการ
ท1า Data hashing และ Data Archiving ในการเขาถHงขอม&ลตองให IT Auditor หรอผ&ท*ไดรบ
มอบหมายจากผ&บรหารระดบส&งใหด&แล Log file และประสานงานกบพนกงานเจาหนาท*จาก
ฝrายสบสวนเท4านน เพอไม4ใหเนอหามากเกนไปจะน1าเสนอขนตอนการตดตงในแต4ละขนตอน

ภาคผนวก .....: 280


Linux Server Security

ถาตองการศHกษารายละเอ*ยดของโปรแกรมท*ใชงานใหไปศHกษาไดจากค&4มอหรอท*ม*ผ&แปลไว
แลวเพมเตม ท1าตามขนตอนดงต4อไปน*

1. ขIนตอนการต7ด ตIง NTP Server (Network Time Protocol) ก4อนอนตองด& หลก


เกณฑในขอ ๙ ตรงขอความท*ว4า ตองตงนาฬกา ของอFปกรณบรการทFกชนดใหตรงกบเวลาอาง
องสากล (Stratum 0) แนะน1าใหใชวธ*การตดตง NTP Server ไวในระบบหนHงเครองน4าจะเอา
ไวท*เครอง Log Server เพอจ4ายสญญาณนาฬกาใหกบเครอง Server และเครอง Workstation
ทงหมดในระบบเปนล1าดบท* 1 ส4วนล1าดบท* 2 และ 3 ใหอางองไปยงฐานเวลาภายนอก เพราะ
ถาให Server แต4ละตวไปรองขอ sync สญญาณนาฬกาจากภายนอกเวลาอาจม*ปoญหาไดเพราะ
ระบบ Network ในบานเราการใหบรการยงม*ปoญหาตดขดเปนประจ1าท*แน4 ๆ คอเวลาคนใช
งานกนมาก ๆ แทบจะวงออกไปท4องใน Internet กนไม4ไดเลยอาจเปนปoญหาในการอางอง
เวลาใหกบ Server และ Workstation แต4ละตวได ส1าหรบโปรแกรท ntp สามารถก1าหนดค4า
Configure ใหเปนไดทง Server และ Client ตวอย4างต4อไปน*จะตดตง Server เพ*ยงเครองเด*ยว
นอกนนทง Server และ Workstation ในระบบจะท1 า configure ใหเปน Client เพอรองขอ
เท*ยบฐานเวลาจาก Server ดงภาพ

ภาคผนวก .....: 281


Linux Server Security

ร&ปท* ผ-1 แสดงการอางองฐานเวลาและ Log Server

ขIนท%( 1 ใหตดตงโปรแกรม ntp บน Server (ในภาพเปนเครอง Log Server) ดงน*


กรณ*ค4าย RedHat,Fedora ใชค1าสง
# rpm -ivh NTP-4*
ตามปกตในการตดตง Linux OS ทง Server และ Client โปรแกรม NTP จะถ&กตดลง
ไปแลวลองตรวจสอบด&ก4อนดวยค1าสง
# rpm -q NTP
กรณ*เปน debian ใหตดตงดวยค1าสง
# apt-get install NTP-server

ภาคผนวก .....: 282


Linux Server Security

คงไม4ตองอธบายรายละเอ*ยดมากเกนไปเพราะผ&ด&แลระบบท*จะท1าขนน*ไดคงไม4ตอง
บอกวธ*การ mount cd หรอการตดตงผ4าน Internet และก4อนท*จะท1าการแกไข Configuration
ใหท1 า การตรวจสอบวนเวลาท* server ท* อางองในประเทศไทยตามตาราง NTP Server ท*
แนะน1าตามตาราง

NTP หน4วยงาน Clock Strata อFปกรณอางอง


Server Address
203.185.69.60 สถาบนมาตรวทยา Stratum-1 นาฬกาซ*เซ*ยม Stratum-0
แห4งชาต เท*ยบดวยค4า TAI โดย BIPM
(precision ~50 nSec)
time.navy.mi.th กรมอFทกศาสตร Stratum-1 นาฬกาซ*เซ*ยม Stratum-0
กองทพเรอ ท1า MOU กบสถาบนมาตรฯ
เพอส4งค4าเท*ยบกบ BIPM
time.nist.gov National Institute of Stratum-1 นาฬกาซ*เซ*ยม Stratum-0
Standards and เท*ยบดวยค4า TAI โดย BIPM
TechnoLogy, US
ตารางท%( ผ-1 NTP Server ในประเทศไทย

ขIนท%( 2 ตรวจสอบ Remote Server ท*ตองการใชอางองฐานเวลา ใชค1าสงดงน*


# ntpdate -b 203.185.69.60
# ntpdate -b time.navy.mi.th
# ntpdate -b time.nist.gov

ภาคผนวก .....: 283


Linux Server Security

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สามารถใชเปนมาตรฐานเวลาได

ขIนท%( 3 หลงจากท1าการตรวจสอบเร*ยบรอยแลว ใหไปแกไขค4า configure ใหม*ค4า


ดงน*
# cp /etc/ntp.conf /etc/ntp.conf.bak
# vi /etc/ntp.conf
……
restrict default kod nomodify notrap noquery nopeer
restrict 127.0.0.1
# อนFญาตให internal network เขาใช
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 203.185.69.60 dynamic
server time.navy.mi.th dynamic
server time.nist.gov dynamic

ภาคผนวก .....: 284


Linux Server Security

server 127.127.1.0 # local clock


fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys
เมอตรวจสอบแกไขค4าใหม*ตามน*แลวบนทHก
:wq

ขIนท%( 4 ก4อนสง restart service ใหตรวจสอบ server อางองอ*กครง


# ntpdate -b 203.185.69.60
สง restart service
# /etc/init.d/ntpd restart
# chkconfig ntpd on

ขIนท%( 5 ตรวจสอบการท1างานจาก Log file


# grep ntpd /var/Log/messages จะไดค4าคลาย ๆ กบตวอย4างขางล4าง
Jan 28 15:47:49 ns1 ntpd[3838]: ntpd 4.2.4p2@1.1495-o Thu Jun 21 12:57:41
UTC 2007 (1)
Jan 28 15:47:49 ns1 ntpd[3839]: precision = 2.000 usec
Jan 28 15:47:49 ns1 ntpd[3839]: Listening on interface #2 lo, ::1#123 Enabled
Jan 28 15:47:49 ns1 ntpd[3839]: Listening on interface #5 eth0, 192.168.1.10#123
Enabled
Jan 28 15:47:49 ns1 ntpd[3839]: kernel time sync status 0040

ภาคผนวก .....: 285


Linux Server Security

Jan 28 15:47:50 ns1 ntpd[3839]: frequency initialized 80.586 PPM from


/var/lib/ntp/drift

ขIนท%( 6 หลงจาก Server ท1างานปกตไม4ม*การแจง Error ใด ๆ สามารถตรวจสอบ


ตารางการท1างานของ Server ไดดวยค1าสง
# ntpq -pn
remote refid st t when poll reach delay offset jitter
========================================================
203.185.69.60 .PPS. 1 u 49 64 3 49.263 577.356 40.539
122.154.11.67 .GPS. 1 u 50 64 3 50.387 568.011 4.886
192.43.244.18 .ACTS. 1 u 111 64 2 607.213 463.669 0.002
127.127.1.0 .LOCL. 10 l 48 64 3 0.000 0.000 0.002
สามารถใชเครอง Linux เครองอนในระบบทดสอบการท1างานของ Server ไดดวย
ค1าสง
# ntpdate <ip address> ใส4 ip address ของเครอง NTP Server

ขIนท%( 7 ส1าหรบเครอง Server Linux ท*เหลอทงหมดของระบบใหท1าการแกไขค4า


configuration ของโปรแกรม ntp ใหรองขอเวลาจาก NTP Server ดงน*
# vi /etc/ntp.conf
server 192.168.1.1 <- ip address ของ NTP Server
restrict default ignore
restrict 127.0.0.1

ภาคผนวก .....: 286


Linux Server Security

restrict 192.168.1.1 mask 255.255.255.255 nomodify notrap noquery


driftfile /var/lib/ntp/drift
:wq
# /etc/init.d/ntpd restart
# chkconfig ntpd on
ใชค1าสงตรวจสอบการท1างานเหมอนกบการตง NTP Server ตามตวอย4างขางบนท*
ผ4านมาแลวเพอใหแน4ใจว4าม*การอางองเวลาจาก NTP Server ของเราหรอยง
ขIนท%( 8 ต4อไปใหจดการกบเครองล&กข4ายในองคกรหรอหน4วยงาน ซHงผ&เข*ยนจะยก
ตวอย4างเฉพาะล&กข4ายท*เปน Microsoft Windows เพราะเปนผ&ใชส4วนใหญ4ของประเทศ ถาเปน
OS ค4ายอนตองศHกษาจากค&4มอของค4ายนน ๆ ขนตอนน*ใหไปแกไขค4า Internet time ของเครอง
ล&กข4ายโดยไปดบเบลคลกท* นาฬกาดานล4างขวาของ Task bar จะไดหนาจอดงน*

ร&ปท* ผ-2 แสดงหนาต4างส1าหรบตงค4า Internet Time

ภาคผนวก .....: 287


Linux Server Security

จากภาพจะเห+นว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

ภาคผนวก .....: 288


Linux Server Security

Tip & Trick


ส1าหรบการท1า NTP Server จะม*การใชงานโปรโตคอล SNTP หมายเลข Port = 123
ตองไปด&เรอง Firewall อนFญาตใหล&กข4ายสามารถเขาใช Port และ Protocol ใหตรงกนจHงจะ
ใชงานได

2. การต7ดตIง Centralize Log Server ปoจจFบน Linux ก+ยงคงใชโปรแกรม syslog ใน


การบนทHกขอม&ลการท1างานต4าง ๆ บน Server ซHงใชงานกนแพร4หลายมาเปนเวลานานแลว
และไดม*การปรบเปล*ยนใหม*ความยดหยF4นในการใชงานใหสะดวกในการก1าหนดค4าต4าง ๆ
เพมขH นโดยไดพฒนาเป น syslog-ng (New Generation) ต4 อ ไปน* จะเป น เนอหาการตดตง
โปรแกรม syslog-ng ทงในเครองท*ท1าหนาท*เปน Centralize Log Server และเครองใหบรการ
ต4าง ๆ ภายในองคกรท*ตองท1าการส4งค4า Log file ไปไวท*เด*ยวกนทงหมดใน Centralize Log
เพอใหผ&รบผดชอบในหน4วยงานหรอองคกรท*ไดรบมอบหมายใหท1าหนาท* IT Auditor ม*รหส
ผ4านเพอเขาระบบไดแต4เพ*ยงผ&เด*ยวแมแต4 admin ก+ไม4สามารถเขาไปด& แกไขและเปล*ยนแปลง
ขอม&ลใน Log Server ได เรมท1าการตดตงใชงานดงน*
ขI น ท%( 1 ถาตองการตดตงบน Linux ค4 า ยอนใหไปท1 า การ Download source
code โปรแกรม syslog-ng เพอน1ามาท1าการ Compile และตดตงตามร&ปแบบภาษาซ*ไดจาก
http://www.balabit.com/downloads/files/syslog-ng/sources/stable/src/
ถาตองการตดตงบนค4าย debian สามารถตดตงดวยค1าสง
# apt-get install syslog-ng
ตดตงบนค4าย RedHat, Fedora ตดตงดวยค1าสง
# yum install syslog-ng

ภาคผนวก .....: 289


Linux Server Security

ในการตดตงใชงานจรงตองเลอก Version ใหด*เพราะจากการทดลองพบว4าเมอน1าค4า


Configuration ของ Version 2 ไปใส4กบ version 1.x มนไม4ท1างานหรอท1างานไม4เปนไปตามท*
ก1าหนด ตวอย4างต4อไปน*เปนการใชงาน syslog-ng version 2.x ท*อย&4ใน FC7 น1ามาใชทดลอง

ขIนท%( 2 ท1าการแกไข Configuration ซHงหากตองการใหม*ร&ปแบบการจดเก+บท*แตก


ต4างจากตวอย4างก+สามารถท1าไดโดยไปศHกษาจากค&4มอ
Centralize Log Server Configuration
# /etc/syslog-ng/syslog-ng.conf
options {
sync (0);
time_reopen (10);
Log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
};
#All sources
source src {
internal();
pipe("/proc/kmsg");
unix-stream("/dev/log");

ภาคผนวก .....: 290


Linux Server Security

file("/proc/kmsg" Log_prefix("kernel: "));


# udp(ip(0.0.0.0) port(514));
tcp(ip(0.0.0.0) port(5149)); <- รบขอม4ลทาง tcp port 5149
};
# Log Server destination
destination logs {
# Location of the Log files using syslog-ng internal variables
file("/var/log/$HOST/$YEAR/$MONTH/$FACILITY.$YEAR-$MONTH-
$DAY"
# Log files owned by root, group is adm and permissions of 665
owner(root) group(adm) perm(665)
# Create the directories if they don't exist with 775 perms
create_dirs(yes) dir_perm(0775));
};
# Anything that's from the program 'squid'
# and the 'user' Log facility
filter f_squid { program("squid") and facility(user); };
# This is our squid destination Log file
destination d_squid {
# The squid Log file with dates
file("/var/log/$HOST/$YEAR/$MONTH/squid.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes) dir_perm(0775));

ภาคผนวก .....: 291


Linux Server Security

};
# 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

ภาคผนวก .....: 292


Linux Server Security

filter f_remove { program("squid"); };


# Everything that should be in the 'user' facility
filter f_user { facility(user); };
# The Log destination should be the '/var/log/user.log' file
destination df_user { file("/var/log/user.log"); };
# The Log destination should be sent via UDP
destination logserver { tcp("192.168.1.11" port(5149)); };
# The actual Logging directive
log {
# Standard source of all sources
source(src);
# Apply the 'f_user' filter
filter(f_user);
# Apply the 'f_remove' filter to remove all squid entries
filter(f_remove);
# Send whatever is left in the user facility Log file to
# to the 'user.log' file
destination(df_user);
# Send it to the Logserver
destination(logserver);
};
# Log Server destination
destination logs {

ภาคผนวก .....: 293


Linux Server Security

# Location of the Log files using syslog-ng internal variables


file("/var/log/$HOST/$YEAR/$MONTH/$FACILITY.$YEAR-$MONTH-
$DAY"
# Log files owned by root, group is adm and permissions of 665
owner(root) group(root) perm(665)
# Create the directories if they don't exist with 775 perms
create_dirs(yes) dir_perm(0775));
};
# Anything that's from the program 'squid'
# and the 'user' Log facility
filter f_squid { program("squid") and facility(user); };
# This is our squid destination Log file
destination d_squid {
# The squid Log file with dates
file("/var/log/$HOST/$YEAR/$MONTH/squid.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes) dir_perm(0775));
};
log { source(src); filter(f_squid); destination(logserver); };
# 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

ภาคผนวก .....: 294


Linux Server Security

log {
source(src);
filter(f_remove);
destination(logserver);
};

ขIนท%( 3 แกไขค4าท*เครอง Server ในท*น* hosts.deny ไดสง ALL: ALL ไวแลว


# vi /etc/hosts.allow
….
syslog-ng: 192.168.1. <- IP Address ท*ตองการใหส4ง Log เขามา
:wq
เพมค4 าลงใน Firewall iptables ด&ตวอย4 า งจากบทท* 9 หรอถาไม4ไ ดท1า บทท* 9 ให
เพม script ในส4วนของ filter ดงน*
# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5149 -j ACCEPT
:wq
# /etc/init.d/iptables restart
หรอถาใช lokkit ก+ใหเพมลงในช4องอน ๆ 5149:tcp ก+สามารถรบค4า Log ไดเช4นกน
แนะน1าใหปŸดทFก port ใหเปŸดเฉพาะ Log จะไดปลอดภยจากการบFกรFก

ขIนท%( 4 สงใหโปรแกรมเรมท1างาน
# /etc/init.d/syslog stop

ภาคผนวก .....: 295


Linux Server Security

# /etc/init.d/syslog-ng start
# chkconfig syslog off
# chkconfig syslog-ng on
ตรวจสอบการท1างานดวยค1าสง
# ps ax |grep syslog-ng

3. การเก.บ Log ตามท%(กฎหมายกvาหนด แบ4งได 6 หวขอตามตารางในภาคผนวก ข


ขอ 2 ทายหลกเกณฑการเก+บรกษาขอม&ลจราจรทางคอมพวเตอรของผ&ใหบรการ ดงน*
ก. ขอม&ลอนเตอรเน+ตท*เกดจากการเขาถHงระบบเครอข4าย ขอน*เปนการใหบรการ
เขาถHงระบบระยะไกล (Remote Access) ถาหน4วยงานหรอองคกรใดม*การเปŸดบรการ ส4วน
มากจะนยมน1า โปรแกรม Freeradius มาตดตงใชงาน ใหท1า การแกไข Configuration ของ
Freeradius ใหส4งค4า Log ไปท* syslog และตดตงโปรแกรม syslog-ng ลงไปเพอส4งค4า Log file
ไปเก+บยง Centralize Log ดงตวอย4าง
# vi /etc/raddb/radiusd.conf
Logdir = syslog
Log_destination = syslog
:wq
จากนนใหแก startup script ใหตามดวย -l syslog และ -g <facility>
ถาเปนกรณ*ในขอ 8 (4) ท*ใหระบFขอม&ลจราจรเปนรายบFคคลเช4น Proxy Server ตาม
ปกตระบบท*ใชกนอย&4ม กเปน Gateway server ท*ท1า Proxy รวมไวดวย เพ*ยงแต4ตองท1า การ
Authentication เพอให user ทFกคนตองท1าการ Log on เขาระบบ โปรแกรมท*ใชกนอย&4อย4าง
แพร4หลายคอ Squid ซHงม*การจดการเรอง Log file อย4างด*อย&4แลวเพ*ยงแต4ไปแก Configuration
ใหช*ไปเก+บท* Log กลาง ดงน*

ภาคผนวก .....: 296


Linux Server Security

# 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าใครออกไปใชบรการ

ภาคผนวก .....: 297


Linux Server Security

mail ขางนอกหากม*การเก+บขอม&ลไม4ครบเช4น user account เจาพนกงานก+สามารถรองขอ Log


ไปยง Server ท*ใหบรการเพอน1ามาเปร*ยบเท*ยบระบFตวตนได
ค. ขอม&ลอนเตอรเน+ตจากการโอนแฟ¡มขอม&ลบนเครองใหบรการโอนแฟ¡มขอม&ล
ส1าหรบหน4วยงานท*ท1า FTP Server โดยตรงหรอเพ*ยงเปŸดบรการโอนแฟ¡มขอม&ลในการท1าเว+บ
ก+ตามจดไดว4าม*การใหบรการโอนแฟ¡มขอม&ลเช4นกน ตองท1าการเก+บ Log file ส4วนใหญ4การ
เปŸด บรการ FTP จะเปนโปรแกรมท*ม*ม าใหกบ Linux ทFกค4า ยอย&4แ ลวหรอบางแห4งอาจไป
download มาใชเองก+ตาม ในส4ว นของ Configuration จะม*การสงใหจดเก+บ Log ไวอย&4แ ลว
ตวอย4างเช4นโปรแกรม vsftpd ก+ตองไปแกไขส4วนของ Log ดงน*
# vi /etc/vsftpd/vsftpd.conf
….. ส4วนท*เปน Log อน ๆ ปŸดใหหมดแลวเพม syslog ลงไป
# Activate Logging of uploads/downloads.
#xferlog_enable=YES
#log_ftp_protocol=YES
syslog_enable=YES
:wq
# /etc/init.d/vsftpd restart
หลงจากตดตง syslog-ng เสร+จเร*ยบรอย ค4าการใชงาน FTP Server ก+จะถ&กส4งไปเก+บ
ยง Log กลางทนท* ม*ขอควรระวงอ*กอย4างคอส1าหรบผ&ด&แลระบบท*ชอบใช Secure Shell (ssh)
เปนการเขาถHง Server ระยะไกลท*ปลอดภย ใน Configuration ของ sshd จะม*การน1าเอา sftp
server มารวมไวใหท1างานแบบ Subsystem ตวน*เปนการอ1านวยความสะดวกใหผ&ด&แลระบบ
แต4 server จะเก+บ Log ใหเฉพาะ sshd เท4านนในส4วนของ sftp-server เปน child process ใน
Log จะเก+บเพ*ยงม*การรองขอบรการ sftp แต4ไม4เก+บรายละเอ*ยดตามกฎหมาย ถาไม4อยากให

ภาคผนวก .....: 298


Linux Server Security

เกดปoญหาควรยกเลกการบรการ sftp-server แลวไปใช FTP server หลกของระบบแทน จะได


Log ท*ม*ขอม&ลครบถวนต4อไป
ง. ขอม&ลอนเตอรเน+ตบนเครองใหบรการเว+บ ระบบโดยทวไปส1าหรบหน4วยงาน
ต4าง ๆ ท*ม*การเปŸดใหบรการเว+บถาเปน Linux หรอ Software ประเภท Open source แลวจะ
นยมใชโปรแกรม Apache หรอในชอ httpd ซHงเปนโปรแกรมระดบมออาช*พ ม*การเก+บบนทHก
การใชงานของผ&ชมไวอย4างละเอ*ยดในร&ปของ access_log อย&4แลวและยงสามารถจดการเก*ยว
กบร&ปแบบ (Log format) ใหจดเก+บไดตรงตามกฎหมายอ*กดวย สงท*ตองท1าคอการเขาไปแก
ค4า Configuration ใหส4ง Log file ไปไวยง Log กลางเท4านน ท1าดงน*
# vi /etc/httpd/conf/httpd.conf
….. ของเดม
LogLevel warn
แกไขเปน
LogLevel notice
CustomLog Logs/access_Log combined
แกไขเปน
CustomLog "|/usr/bin/logger -p local1.info" combined
:wq
# /etc/init.d/httpd restart
กรณ*เปŸดใหบรการ Secure Socket Layer (SSL) ก+ไปแกไขท*
# vi /etc/httpd/conf.d/ssl.conf
….
ErrorLog logs/ssl_error_log
TransferLog "|/usr/bin/logger -p local1.info"

ภาคผนวก .....: 299


Linux Server Security

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คคลได

ภาคผนวก .....: 300


Linux Server Security

ตวอยyางการเข%ยน Firewall เพ'(อ Redirect IM ไปยง Transparent proxy


MSN: iptables -t nat -A PREROUTING -p tcp --destination-port 1863 -j REDIRECT
--to-ports 16667
ICQ/AIM: iptables -t nat -A PREROUTING -p tcp --destination-port 5190 -j REDIRECT
--to-ports 16667
Yahoo: iptables -t nat -A PREROUTING -p tcp --destination-port 5050 -j REDIRECT
--to-ports 16667
IRC: iptables -t nat -A PREROUTING -p tcp --destination-port 6667 -j REDIRECT
--to-ports 16667
แต4จFดอ4อนของโปรแกรมน*คอไม4ไดเก+บเลข IP หรอชอเครองท*เล4นไว ถาตองการให
ไดเลข IP ของเครองท*ก1าลงสนทนาตองไปเก+บท* Firewall ในแต4ละ port ขางตนลง Log file
เพอน1าไปเปร*ยบเท*ยบกบ IM Log ก+สามารถระบFตวตนพรอมเครองท*ใชกระท1าความผดได
4. การท1าระบบรกษาความปลอดภยให Log Server หากจะปฏบตตามท*กฎหมาย
ก1า หนดใหครบถวนสมบ&รณท*ระบFว4าตองท1า Data hashing, Data archiving และตองไม4ใ ห
admin เขาระบบ Log Server ไดเลย น4าจะตองใหผ&ท*ไดรบมอบหมายหรอ IT Auditor เปนผ&
ถอรหสผ4านของเครอง Log Server จากนนในการปฏบตงานจรงขอม& ล Log จะม*ป รมาณ
มากมายมหาศาล สงท*ตองท1าคอ
ก. ท1า Rotation ใหกบ Log Server ผ&ด&แลระบบบางคนอาจคดท*จะท1าการ rotate
Log ท*บนทHกใน server ผ&เข*ยนแนะน1าว4า ใน script ของ syslog-ng.conf ไดท1าการจดเก+บแยก
Log ท*ส4งมาจาก server แต4ละตว เช4น /var/log/webserver/… และใน Directory ย4อยของแต4ละ
server จะเปนการบอก ป£ เดอน ในรายการย4อยแต4ละไฟลยงระบFชอไฟลพรอมนามสกFลเปน
ป£-เดอน-วน ใหอ*กเพอสะดวกในตอนคนหาขอม&ลในแต4ละวน เช4นส4งจาก webserver จะได

ภาคผนวก .....: 301


Linux Server Security

ไฟล /var/log/webserver/2008/02/kernel.2008-02-14 เปนตน ดงนนจHงไม4จ1าเปนตองท1า การ


rotate ไฟลเพราะจะเก+บใหไฟลละวนอย&4แลว
ข. ท1าการบ*บอดขอม&ล Log (Compress) เพอใหขนาดไฟลเล+กลง ใหใชค1าสง tar
เหมอนกบเรอง Backup ในบทท* 15 ดงตวอย4าง
# tar cvfz webserver.tar.gz /var/log/webserver
# ls
webserver.tar.gz
ค. ท1าการเขารหสไฟลท*บ*บอดไวแลว ก+ใหใชหลกการเด*ยวกบบทท* 15 เช4น
# openssl des -in webserver.tar.gz -out webserver.sec
# ls
webserver.tar.gz webserver.sec
ง. จดเก+บหรอ Backup ลงบนสอท*ม*อายFการใชงานครอบคลFมในการจดเก+บ ใหด&
วธ*การบนทHกลงสอ เช4น CD ไดจากบทท* 15 ผ&ท*รบผดชอบขอม&ล Log ตองจดล1าดบงาน เช4น
- หลงจากท1าการบ*บอดไฟลตามขอ ข เสร+จแลวตองลบตนฉบบทง
- หลงจากเขารหสไฟลตามขอ ค แลวใหลบไฟล .gz ทง
- หลงจาก backup ลง CD แลวใหลบไฟล .sec ทง
งานท*ตองท1าก+คอควรเข*ยนเปน script ไวเพอสะดวกในการท1างานด*กว4าท*จะไปนง
สงทาง command line อาจเข*ยน script ไวท* crontab ใหท1าการบ*บอดไฟลและเขารหสทFกเท*ยง
คนพรอมลบไฟลขอม&ลดบทงแลวสง reload syslog-ng ใหม4เพอรองรบการท1างานสราง Log
ใหม4ต4อไป ส1าหรบขอน*เปนเพ*ยงการแนะน1า ถา Hard disk ม*พนท*เก+บ Log มากก+ไม4ตองเก+บ
ลง CD กไดเพ*ยงแต4ควรสงใหม*การลบทงเมอไดระยะเวลาหนHงเช4น 3 เดอนตามกฎหมาย
ก1าหนดหรอมากกว4านน เพราะเปนไปไม4ไดท*ความจFจะมากจนรบการท1างานไดตลอดไป

ภาคผนวก .....: 302


Linux Server Security

สvาหรบกรณ% Microsoft .. server

กรณ*ท*ในระบบม*การตดตง Server ดวย Microsoft Windows 2x Server ก+สามารถท*


จะส4ง even log จาก MS Windows Server ไปยง Log กลางไดเช4นกน ผ&ด&แลตองไป download
โปรแกรม snare จากเว+บ http://www.intersectalliance.com/ เพอน1าไปตดตงบน Server แลว
ท1าการ Configuration ใหส4ง log ไปเก+บยง Log กลาง ในส4วนของเครอง Log กลางใหแกไข
Configuration จากเดมเล+กนอย ดงตวอย4าง
# vi /etc/syslog-ng/syslog-ng.conf
..... แกไขตรงส4วนท*เปนตวหนา
# Remove the 'squid' log entries from 'user' log facility
filter f_remove { not program("squid"); };
... กรณ*เก+บ log จาก MS winodows ใหเพมบรรทดน*ลงไป
filter f_remove1 { not program("MSWinEventLog"); };
และในส4 ว นของ log เดมตองสง filter(f_remove) เพอไม4 เ ก+ บ ค4 า log จาก MS
Windows Server ตามตวหนา
# Log everything else less the categories removed
# by the f_remove period
log {
source(src);
filter(f_remove);
filter(f_remove1);
destination(logs);
};

ภาคผนวก .....: 303


Linux Server Security

และเพมส4วนของ log ใหกบการรบค4าจากเครอง MS Windows ดงน*


filter windows {
program(MSWinEventLog);
};
destination windows {
file("/var/log/$HOST/$YEAR/$MONTH/windows.$YEAR-$MONTH-$DAY"
template("$ISODATE <$FACILITY.$PRIORITY> $HOST $MSG\n")
template_escape(no)
owner(root) group(adm) perm(665)
create_dirs(yes) dir_perm(0775));
};
log {
source(src); filter(windows); destination(windows);
flags(final);
};
ตรงค1าว4า windows สามารถแกเปน ISA หรอ IIS ตามตองการใหตรงกบ service ท*
ส4งมาจากเครอง MS Windows ซHงถาตองการเฉพาะรายละเอ*ยดของแต4ละ Service เช4น snare
for IIS Web Server หรอ snare for ISA Servers ก+ตองเลอก download มาใชงานใหตรงกบ
การใหบรการใน Server แต4ละหนาท* ในเมน&ของ Snare จะม*การตงค4า Host/IP และ ports ของ
เครอง Log Server กลางท*ตองการส4งค4าไปเก+บ แต4ม*เงอนไขว4า snare ส4งค4าไปบน udp เท4านน
ส4วนหมายเลข port ก1าหนดเองได ถาตองการใช snare ตองเปŸดให Log กลางรบค4าทง TCP
และ UDP โดยไปเปŸดบรรทดน*ไม4ใหม*เครองหมาย # หนาบรรทด
udp(ip(0.0.0.0) port(514));

ภาคผนวก .....: 304


Linux Server Security

บทสรป
ในส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าให)

ภาคผนวก .....: 305


บรรณานกรม

บญลอ อยคง. การตดตง Internet Server ดวย Linux.


นครราชสมา: บรษทซายเอนเทค จากด, 2545.
บญลอ อยคง. ป!องกน Linux Server อย#างม$ออาช&พ.
เชยงใหม: บรษท ดวงกมลเชยงใหมกร)ป จากด, 2546.
Linux Security HOWTO, Kevin Fenzi and Dave Wreski,
http://www.linuxsecurity.com/docs/LDP/Security-HOWTO/
Secure Programming for Linux and Unix HOWTO, David A.
Wheeler, available at http://www.dwheeler.com/secure-programs
Securing and Optimizing Linux: The Ultimate Solution, Gerhard
Mourani http://www.openna.com/products/books/sol/solus.php
Securing Debian Manual, Javier Fernández-Sanguino,
http://www.debian.org/doc/manuals/securing-debian-howto/
Linux Security Overview, ISSA-PS 2003, Brian Hatch,
http://www.ifokr.org/bri/presentations/issa-2003/
Linux: The Securable Operating System, Brian Hatch,
http://www.ifokr.org/bri/presentations/lfnw-2003/
http://www.linuxsecurity.com
http://www.linuxquestions.org/ (Security Forum)
http://gotroot.com/
http://www.tatica.org/
http://www.ssh.com/
ประวตผเขยน

ชอ-สกล
บญลอ อยคง

การศกษา
- ค.อ.บ. วศวกรรมไฟฟากาลง วทยาลยเทคโนโลยและอาชวศ$กษา
วทยาเขตเทเวศร(
- กศม. อตสาหกรรมศ$กษา มหาวทยาลยนเรศวร

ททางาน
แผนกวชาชางไฟฟากาลง วทยาลยเทคนคพษณโลก

ประสบการณ"ดานคอมพวเตอร"
- ออกแบบระบบเครอขายคอมพวเตอร(
- ทาระบบ Internet Server ให6กบหนวยงานราชการและเอกชน
- วทยากรระบบเครอขาย (Networking System) การสร6าง Webpage
CAI , Internet Server Security ให6กบสานกพฒนาสมรรถนะครและ
บคลากรอาชวศ$กษา กระทรวงศ$กษาธการ และหนวยงานภาครฐ

You might also like