สร้าง log สำหรับ DNS Query เมื่อใช้ bind9 เป็น DNS Server

เนื่องจากปัญหาของ DNS Query Brute Force Attack ที่เกิดขึ้นกับ DNS Server บางตัวภายในเครือข่ายของมหาวิทยาลัย สงขลานครินทร์ วิธีการแรกที่ควรจะเอามาใช้ในการที่จะแก้ปัญหานี้ก็คือ “identify your enemy”. ใครคือคนที่ส่งคำสั่ง query เข้ามา? query อะไร? และ query บ่อยขนาดใหน? หลังจากแยกแยะข้อมูลในส่วนนี้ได้แล้ว เราค่อยตัดสินใจกันต่อว่าจะทำอย่างไรต่อไป สำหรับบทความนี้ จะพูดถึง Bind9 เท่านั้น Bind version ต่ำกว่า 9 ยังไม่ได้ทดสอบว่าใช้งานได้หรือเปล่า ส่วน version สูงกว่า 9, ถ้ามีก็น่าจะใช้งานได้ ส่วน DNS Server ตัวอื่นๆ ก็ยังไม่ได้ใช้อย่างจริงจังก็เลยไม่รู้เหมือนกันครับว่าจะจัดการอย่างไร แต่โดยหลักๆแล้วก็เหมือนกันครับ ก็คือ สร้าง log แล้วตรวจสอบจาก log สำหรับ bind9 ในส่วนของ option configuration จะมี keyword “logging” อยู่ ซึ่งสามารถใช้ระบุการ log ข้อมูลแบบต่างๆได้หลายอย่าง และ หลายรูปแบบมาก ในที่นี้ สมมติ เราสนใจเฉพาะส่วนของการ query นะครับ ก็อาจจะสร้าง config ได้แบบนี้ logging {       channel query_logging {              file “/var/log/named/query.log”;              print-time yes;       };       category queries { query_logging; }; }; เป็นการสร้าง channel สำหรับ log ขึ้นมาชื่อว่า “query_logging” โดยข้อมูลที่ถูกส่งมาที่ channel นี้จะเก็บลงไว้ในไฟล์ที่ชื่อว่า query.log ซึ่งไฟล์นี้จะเก็บอยู่ใน directory ที่ชื่อว่า /var/log/named config ข้างต้นจะเก็บเอาไว้ในไฟล์ /etc/bind/named.conf.options (สำหรับ Debian หรือ Ubuntu) โดยเพิ่มต่อท้ายเข้าไป ในส่วนของ directory ที่ใช้ในการเก็บ log (/var/log/named) ถ้ายังไม่มีอยู่ ก็ต้องสร้างขึ้นมาใหม่ก่อน และกำหนดให้เป็นของ user ซึ่ง run ตัว named daemon ซึ่งสำหรับบน Debian/Ubuntu จะใช้ user ที่ชื่อว่า bind ดังนั้น สามารถสร้าง diectory ขึ้นมาใช้งานได้โดยใช้คำสั่งดังนี้ $ sudo mkdir -p /var/log/named $ sudo chown bind:bind /var/log/named หลังจากแก้ไขไฟล์ /etc/bind/named.conf.options แล้ว เราก็ควรที่จะตรวจสอบก่อนว่า config ไฟล์ที่แก้ไขไปยังอยู่ใน format ที่ถูกต้องก่อนที่จะใช้งาน ซึ่งทำได้โดยการใช้คำสั่ง $ sudo named-checkconf /etc/bind/named.conf ซึ่งถ้าไม่มีข้อความใดๆแสดงออกมา ก็แสดงว่า config ถูกต้อง เราก็สามารถสั่งให้ named อ่าน config ใหม่เข้าไปใช้ได้ โดยการใช้คำสั่ง $ sudo service bind9 reload หรือ $ sudo rndc reconfig หลังจากนั้น ก็สามารถตรวจสอบการทำงานของตัว named server ได้โดยใช้คำสั่ง $ host www.mydomain.net localhost เปลี่ยน ‘www.mydomain.net’ เป็น host ที่ตัว name server ของเราให้บริการอยู่ หลังจากนั้นก็ไปตรวจสอบดูว่าในไฟล์

Read More »

เบราว์เซอร์กับเว็บไซต์ https ที่ใช้ Self-signed Certificate

คำถามที่ผมต้องการคำตอบ คือ ผมจะทำให้ Chrome บน Windows 8 สามารถติดตั้ง PSU CA (certificate authority) จากหน้า passport.psu.ac.th ได้อย่างไร เพราะว่าผมทำ self-signed certificate verified by PSU CA จึงจำเป็นต้องให้เบราวเซอร์ที่ใช้ได้รับการติดตั้ง PSU CA ก่อน บน Ubuntu ผมใช้งานได้แล้ว จำไม่ได้ว่ามันเอา PSU CA เข้าไปตอนไหน คำตอบที่ผมได้รับจากการสอบถามผู้รู้ ก็พบว่า certificate ที่ซื้อมาเป็น cert สำหรับ *.psu.ac.th คงใช้กับ *.in.psu.ac.th ไม่ได้ครับ Web ขอ CA passport.psu.ac.th รองรับเฉพาะ IE/Firefox เท่านั้นครับ ส่วน server cer ในกรณีที่ไม่ใช่ x.psu.ac.th ใช้ self sign cer ได้เลยครับ ถ้าแนะนำอยากให้พี่จดเป็น sysadmin.psu.ac.th หลังจากนั้นแจ้งมาที่ผมได้ครับ เดี๋ยวผมส่ง server ca ที่เป็น *.psu.ac.th ให้ (CA ที่พี่ขอจากหน้า passport.psu.ac.th เป็น User CA ครับไม่ใช่ Server CA, แต่ก็ขอได้ครับ แต่จะมีวิธีต่างจากการขอทั่วไป แนะนำให้ใช้ self sign ดีกว่า เพราะคนใช้งานต้องลง cer psu ถึงจะ trust cer ที่เป็น self sign ของระบบ psu passport ที่ออกให้อีกที แบบนั้นใช้ self sign ไปเลยดีกว่า) ผมมีตัวอย่างบน ubuntu นะครับ เข้าเบราว์เซอร์ chrome และไปยังเว็บไซต์ sysadmin.in.psu.ac.th มันไม่ฟ้อง “ไม่ปลอดภัย” และ URL แสดงรูปกุญแจสีเขียว https เพราะผมคงติดตั้ง PSU CA แล้ว (ไม่รู้ตอนไหน) ต่อไปผมลองใช้จาก Windows 8 มันฟ้อง “ไม่ปลอดภัย” เลยจะพยายามติดตั้ง PSU CA จากหน้า passport.psu.ac.th ครับ และทำไม่ได้ฟ้องว่ารอบรับ IE/Firefox เดาว่าผมคง import เข้า chrome จริงๆ chrome มันใช้ตัวจัดการ cert ของ IE ครับ หมายความว่า ถ้าผมไปเข้าเบราว์เซอร์ IE ติดตั้ง PSU CA ให้เสร็จแล้วกลับมาเข้า Chrome ก็ใช้งานได้ (จริงป่ะ) ใช่ครับ โอ้ ท่านใหญ่ เกรียงไกร ท่านยอดมาก ขอคารวะ ทดสอบแล้วในขั้นตอนติดตั้ง PSU CA จาก passport.psu.ac.th ต้องเปลี่ยนตัวเลือกจาก Automatic เป็น Place all certificates in the following store และเลือก Trusted Root Certificated Authorities (จะเอาไปเขียนลงในบล็อก sysadmin)

Read More »