คมอ ประกอบการฝกอบรมปฎบตงาน 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 บทท 2 Network Model บทท 3 Kernel Harden บทท 4 Web Server Security บทท 5 Mail Server Security บทท 6 DNS Server Security บทท 7 FTP Server Security บทท 8 Secure Shell บทท 9 Firewall Using IPTABLES บทท 10 sXid บทท 11 Log check บทท 12 Port Sentry บทท 13 Tripwire บทท 14 Snort (IDS) บทท 15 Backup and Restore ภาคผนวก บรรณานCกรม
1 17 43 81 99 115 135 147 155 189 195 203 221 233 255 279
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 หรอ antivirus อย$างต$อเนองและสม*าเสมอเช$นเด/ยวกน 6.5 ถาเปนเรองของตวบ,คคลผปฏ%บต%งานคอมพ%วเตอร'ควรตองม/การจดอบรม สมมนาเรองความปลอดภย การฝ†กบนท9กป:ญหาเพอการตรวจสอบ(Audit) รวมถ9งการไดรบ ส%ทธ%ต$าง ๆ ของ User แต$ละคน ใหม/ความรเพ/ยงพอท/จะสามารถปฏ%บต%งานได ส%งท/ผดแลระบบม/ความตองการท/จะใหระบบม/ความแข<งแรงน0นม/องค'ประกอบ ส*าคญอย$ 6 ประการ ดงน/0
บทท) 1 Overview .....: 15
Linux Server Security 1. 2. 3. 4. 5. 6.
Authentication Confidentiality (Privacy) Integrity Availability Non-Repudation 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. 2. 3. 4.
ควรมความรเกยวกบเรอง Data communication มาก/อน ควรมความรเกยวกบรายละเอยดของอ.ปกรณ= (Specification) ควรรค/าพกดต/าง ๆ ทางกายภาพของอ.ปกรณ=เครอข/าย รปแบบต/าง ๆ ในตวอย/างเป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. 2. 3. 4.
เตร#ยมโปรแกรมท#ใชงานชอ vsftpd เป:น Open source ศAกษาการใชค-าสง ftp, telnet เนEอหาในบทน#E ส'วนท#เป:นการต!ดตEง การแกไข จะเนนเป:นตวหนา (Bold) ทดลองปฏ!บต!ตามข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
/etc/default/useradd
EXPIRE
14 Number of days after password expiration that account is disabled. 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 จากเดม
Options FollowSymLinks AllowOverride None แกไขเป:น
บทท!1 4 Web Server Security .....: 83
Linux Server Security Order Deny,Allow Deny from all Options None AllowOverride None :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
Order allow,deny Deny from all 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.31.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 #
# 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 # # 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 หลงแกไขเสร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 []:
[email protected] 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
สงลบ 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. 2. 3. 4. 5.
เตรยมโปรแกรมทใชงานชอ sendmail เป<น Open source ศDกษาการใชค0าสงส0าหรบ admin คอ newaliases, makemap และ mailq ศDกษาการใชค0าสงส0าหรบ user คอ mailstats และ praliases เนNอหาในบทนN สวนทเป<นการตดตNง การแกไข จะเนนเป<นตวหนา (Bold) ทดลองปฏบตตามข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:" "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 ". #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,[email protected] บนท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 []:[email protected] … ถาบรรทดไหนไมตองการเตมคาก\กด 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. 2. 3. 4.
เตรยมโปรแกรมทใชงานชอ bind เป>น Open source ศEกษาการใชค0าสง nslookup, host เนMอหาในบทนM ส7วนทเป>นการตดตMง การแกไข จะเนนเป>นตวหนา (Bold) ทดลองปฏบตตามข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าย กด i
เขาส7 insert mode ท0างาน ต0าแหน7งท Cursor อย7
dd ลบบรรทดท Cursor อย7
กด a
เขาส7 insert mode ท0างาน ต7อทายต0าแหน7งท Cursor อย7
u ยกเลกการลบ (undo)
กด o
เขาส7 insert mode ท0างาน โดยขEMนบรรทดใหม7
yy copy บรรทดท cursor อย7
:set number
แสดงหมายเลขบรรทด
nyy
:set nonumber
ยกเลกแสดงหมายเลข บรรทด
p
/(ค0าทตองการ คนหา)
คนหาค0าตามตองการ
:w บนทEกไฟล4
กด ESC
ยกเลกจากค0าสงใด ๆ เพอ บนทEกไฟล4แลวออกจากโปรแกรม :wq รอรบค0าสงใหม7 vi
copy บรรทดท cursor อย7จ0านวน n บรรทดลง buffer วางค7าใน buffer ลงทบรรทดต7อ จากท cursor อย7
:q! ออกจากโปรแกรมโดยไม7บนทEก
บทท!1 6 DNS Server Security .....: 134
Linux Server Security
บทท!1 7 FTP Server Security วตถประสงค ➢ เพอใหรวธการปองกนการบกรกเขา FTP Server ➢ เพอใหเขาใจวธต$งค&า Configuration อย&างปลอดภย ➢ สามารถน7าไปใชงานจรงไดอย&างมประสทธภาพ
ค แนะน และก รเตร!ยมข%อม'ล 1. 2. 3. 4.
เตรยมโปรแกรมทใชงานชอ vsftpd เปCน Open source ศHกษาการใชค7าสง ftp, telnet เน$อหาในบทน$ ส&วนทเปCนการตดต$ง การแกไข จะเนนเปCนตวหนา (Bold) ทดลองปฏบตตามข$นตอนทเรยงไว หากท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 []:[email protected] ถาบรรทดไหนไม&กรอกขอมลใหกด 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/[email protected] 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/[email protected] 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/[email protected] 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. 2. 3. 4. 5.
เตรยมโปรแกรมทใชงานชอ Openssh เป?น Open source ศCกษาการใชค7าสง slogin, sftp เตรยมโปรแกรมส7าหรบต%ดต*อจากเครอง Client ทใช MS Windows OS เน&อหาในบทน& ส*วนทเป?นการต%ดต&ง การแกไข จะเนนเป?นตวหนา (Bold) ทดลองปฏ%บต%ตามข&นตอนทเรยงไว หากท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าการแกไขตามเฉพาะท เป?นตวอกษรหนา หากบางบรรทดในบาง 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. 2. 3. 4.
เตร4ยมโปรแกรมท4ใชงานชอ iptables เป?น Open source ศGกษาการใชคาสง ftp, telnet, nmap, netstat เนNอหาในบทน4N ส+วนท4เป?นการต3ดตNง การแกไข จะเนนเป?นตวหนา (Bold) ทดลองปฏ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 -s sourceIP
-d destinationIP
Description Match if the packet originated from sourceIP. sourceIP may be an IP 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 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. --dport destinationPort
--sport sourcePort
--tcp-flags mask match
Match if the packet is being sent to TCP/UDP port destinationPort. Can be either a number or a service name referenced in /etc/services. If 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 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 mask and match are comma-delimited lists containing some 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 --icmp-type type -m state --state statespec -j accept | drop | log | reject | [chain_name]
Description Match if the packet is icmp-type type. type can be a numeric ICMP type or a name. Use the command iptables -p icmp -h to see a list of allowed names. Must be preceded by -p icmp. Load state module, and match packet if packet's state matches statespec. statespec is a comma-delimited list containing some combination of NEW, ESTABLISHED, INVALID, or RELATED. Jump to the specified action (accept, drop, log, or reject) or to a custom 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 2023,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 -p tcp \ --sport 1024:65535 -d --dport 80 \ -j DNAT --to-destination มกม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 -o -p tcp \ --sport 1024:65535 -d --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 -o \ -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 -o \ -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 -p tcp \ -s --sport 1024:65535 \_ บทท!1 9 Firewall Using IPTABLES .....: 176
Linux Server Security -d --dport 80 \ -j DNAT --to-destination :81 iptables -t nat -A PREROUTING -i -p tcp \ --sport 1024:65535 -d --dport 80 \ -j DNAT --to-destination หลงจากทา NAT เสร^จแลวตองไม+ลมท4จะ forward packet จาก server ท4 port 81 ไป ยง firewall ท4เป?น Public IP ใหเปล4ยนกลบเป?น port 80 ส+งค+าไปยง client ต+อไป iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d --dport 81 \ -m state --state NEW -j ACCEPT iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d --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 -o \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i -o \ -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 -p tcp \ --sport 1024:65535 -d --dport 80 \ -j DNAT --to-destination 192.168.2.1-192.168.2.5 iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d 192.168.2.0/29 --dport 80 \ -m state --state NEW -j ACCEPT iptables -A FORWARD -i -o \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i -o \ -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 -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 -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 -p tcp \ --sport 1024:65535 -d $FTP_SERVER --dport 21 \ -j DNAT --to-destination $DMZ_FTP_SERVER iptables -t nat -A PREROUTING -i -p tcp \ --sport 1024:65535 -d $MAIL_SERVER --dport 25 \ -j DNAT --to-destination $DMZ_MAIL_SERVER iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d $DMZ_PUBLIC_WEB_SERVER --dport 80 \ -m state --state NEW -j ACCEPT iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d $DMZ_CUSTOMER_WEB_SERVER --dport 443 \ -m state --state NEW -j ACCEPT iptables -A FORWARD -i -o -p tcp \ --sport 1024:65535 -d $DMZ_FTP_SERVER --dport 21 \ -m state --state NEW -j ACCEPT iptables -A FORWARD -i -o -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 -o \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i -o \ -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 -p tcp \ -s --sport 1024:65535 --dport 80 \ -j REDIRECT --to-port 8080 iptables -A INPUT -i -p tcp \ -s --sport 1024:65535 -d --dport 8080 \ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -o -p tcp \ -s --sport 1024:65535 --dport 80 \ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i -p tcp \ --sport 80 -d --dport 1024:65535 \ -m state --state ESTABLISHED,RELATED -j ACCEPT บทท!1 9 Firewall Using IPTABLES .....: 181
Linux Server Security iptables -A OUTPUT -o -p tcp \ -s --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://l7filter.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 = "[email protected]" # 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-framepointer” \ ./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 ไปให [email protected] ตามตวอย%าง
บทท!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. 2. 3. 4.
เตรยมโปรแกรมทใชงานชอ logcheck เป8น Open source ศ>กษาการใชค%าสง cat, tail และ last เน#อหาในบทน# สวนทเป8นการต"ดต#ง การแกไข จะเนนเป8นตวหนา (Bold) ทดลองปฏ"บต"ตามข#นตอนทเรยงไว หากท%าผ"ดพลาดใหเร"มตนใหมดวยการ ถอนการต"ดต#งโปรแกรมเด"มออกจากเครองจะดกวาการท%าซ#%า
ก รต(ดต*งและใช%ง นโปรแกรม ส"งส%าคญทผดแลระบบแบบมออาช พไมควรลม ก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. 2. 3. 4.
เตร6ยมโปรแกรมท6ใชงานชอ portsentry เป9น Open source ศ>กษาการใชค.าสง nmap เพอใชทดสอบการ scan port เน%อหาในบทน6% ส3วนท6เป9นการต#ดต%ง การแกไข จะเนนเป9นตวหนา (Bold) ทดลองปฏ#บต#ตามข%นตอนท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 \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 () { 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 ชอ .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/.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/.twd /usr/sbin/tripwire - -init -P 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//snortrulessnapshot-CURRENT.tar.gz # เปfน Code ท!1ได%จ กก รลงทะเบ!ยนในเวiบ Snort url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrulessnapshot-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-mysql2.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 จะไดไฟล^ base1.3.9.tar.gz ใหน4าไปไวท8 /tmp ข*นท!1 2 ท4า การตรวจสอบใน Server ว7าม8การต#ดต%ง php-adodb, php-gd และ phpmysql ครบถวนแลวหรอยง ถายงใหด4าเน#นการต#ดต%งใหครบท%งสามไฟล^หากไฟล^ไหนไม7ม8 ในแผ7น CD กLใหไปหา Download มาใหครบยกตวอย7างไฟล^ท8 หายไปคอ php-adodb ใหไป Download ไดท8 http://download.fedora.redhat.com/ ซQ งในต วอย7 า งต7 อ ไปน8 % ได ไฟล^ phpadodb-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 Order deny,allow Deny from all Allow from 127.0.0.1 192.168.11 <- ใสw IP หร|อกลwมของ IP ท!1ให%ด'ผลท งเวiบได% :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. 2. 3. 4.
เตรยมโปรแกรมทใชงานชอ partimage เป=น Open source ศBกษาการใชค,าสง tar, mkisofs, cdrecord เนHอหาในบทนH ส4วนทเป=นการตดตHง การแกไข จะเนนเป=นตวหนา (Bold) ทดลองปฏบตตามข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 [email protected] "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 [email protected] "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 [email protected] "cat > /dev/st0" ถาตองการสงหมRนเทปกลบแลวค4อยบนทBกกSท,าไดดงนH # tar cvzf - /home | ssh ssh [email protected] $(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 [email protected] "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 [email protected] [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 [email protected] 15 [email protected]'s password: <- กรอก password ของ bkuser Now try logging into the machine, with "ssh '[email protected]'", 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 [email protected] 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วยงาน Server Address 203.185.69.60 สถาบนมาตรวทยา แห4งชาต time.navy.mi.th กรมอFทกศาสตร กองทพเรอ time.nist.gov
Clock Strata Stratum-1
Stratum-1
อFปกรณอางอง นาฬกาซ*เซ*ยม Stratum-0 เท*ยบดวยค4า TAI โดย BIPM (precision ~50 nSec) นาฬกาซ*เซ*ยม Stratum-0 ท1า MOU กบสถาบนมาตรฯ เพอส4งค4าเท*ยบกบ BIPM นาฬกาซ*เซ*ยม Stratum-0 เท*ยบดวยค4า TAI โดย BIPM
National Institute of Stratum-1 Standards and 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 [email protected] 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 ใส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 ถาเปนกรณ*ในขอ 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กบสานกพฒนาสมรรถนะครและ บคลากรอาชวศ$กษา กระทรวงศ$กษาธการ และหนวยงานภาครฐ