GotoKnow
  • เข้าระบบ
  • สมัครสมาชิก
  • แผงจัดการ
  • ออกจากระบบ
GotoKnow

วิธีการรักษาความปลอดภัยให้กับ FreeBSD (1)

FreeBSD Security How-To

เรียบเรียงจาก FreeBSD security How-To (http://www.freebsd.org/~jkb/howto.html) (บทความนี้เป็นวิธีการเพิ่มความปลอดภัยให้กับระบบปฏิบัติการ FreeBSD ซึ่งเจาะจงโดยเฉพาะกับระบบนี้ แต่ก็มีหลักการบางอย่างที่สามารถนำไปปรับใช้กับ unix อื่น ๆ ได้ด้วยเช่นในเรื่อง inetd เป็นต้น ทั้งนี้ขอให้คุณดูระบบ help ของระบบ unix ที่จะนำไปปรับใช้ ซึ่งจะทำให้ทราบความเหมือนและความแตกต่าง)

Networking

inetd (Inet Daemon)

ระบบเน็ตเวิร์คมีบทบาทสำคัญในระบบรักษาความปลอดภัยทั้งหมด โดย FreeBSD จะสร้างมาจาก 4.4 BSD ซึ่ง มีระบบเน็ตเวิร์คที่มีความปลอดภัยสูงและ TCP/IP stack ที่มีความรวดเร็ว ซึ่ง stack ชนิดนี้สนับสนุนโปรโตคอลหลายชนิด เช่น telnet, ftp, talk, rsh, และอื่น ๆ อีกมาก ไฟล์หลักสำหรับกำหนดค่าต่าง ๆ สำหรับเซอร์วิสเหล่านี้ จะอยู่ในไดเร็คทอรี /etc ชื่อว่า inetd.conf เพื่อที่จะแก้ไขไฟล์นี้ให้พิมพ์ "vi /etc/inetd.conf" (ถ้าคุณถนัด pico มากกว่าให้ใช้คำสั่ง pico กับ option -w เพื่อให้มันสามารถแก้ไฟล์ที่มีบรรทัดยาว ๆ ได้ ( -w disable word wrap (thus allow editing of long lines) นอกจากนี้แล้วคุณอาจใช้คำสั่ง "ee" ซึ่งจะมีใน FreeBSD เป็น editor ซึ่งโดยปกติจะถูกกำหนดไว้สำหรับ root อยู่แล้ว คุณสามารถตรวจสอบโดยใช้คำสั่ง "echo $EDITOR" เมื่อคุณเปิด editor แล้วคุณจะเห็นไฟล์ที่อยู่ในฟอร์แมท ascii ซึ่งจะบอกโปรแกรม inetd ว่าจะให้เซอร์วิสไหนทำงาน ยูสเซอร์คนไหนเป็นคนรันเซอร์วิสและรายละเอียดอื่น ๆ เนื่องจากไฟล์นี้เป็นไฟล์หลักสำหรับเริ่มเน็ตเวิร์คเซอร์วิสเหล่านี้ทั้งหมด ดังนั้นจึงสำคัญมากที่จะกำหนดค่าต่าง ๆ อย่างถูกต้อง ถ้าอยากจะปิดการให้บริการเซอร์วิสที่ไม่ต้องการ เพียงแค่พิมพ์ "#" ลงไปหน้าบรรทัดของเซอร์วิสนั้น โดยปกติแล้วคุณควรจะปิดการให้บริการเซอร์วิสที่คุณไม่คุ้นเคย หรือไม่รู้ว่ามันทำอะไร จะเป็นการดีมากถ้าคุณจะปิดการให้บริการ inetd ทั้งหมด ตัวอย่างเช่น ถ้าคุณต้องการ เพียงจะให้บริการ world wide web เท่านั้น ดังนั้นคุณน่าจะรัน ssh และ httpd เท่านั้น และไม่จำเป็นต้องรันเซอร์วิสอื่น ๆ อีก ถ้าคุณตัดสินใจที่จะไม่ให้บริการใด ๆ ทั้งสิ้นที่อยู่ในไฟล์ inetd.conf เพียงแค่ปิดบริการของ inetd เสีย โดยการแก้ไขไฟล์ /etc/rc.conf และเปลี่ยน

inetd_enable="YES"

เป็น

inetd_enable="NO"

จากนี้ไม่มีใครสามารถ telnet, rlogin, หรือ ftp ไปยังคอมพิวเตอร์ของคุณได้อีก ถ้าคุณตั้งใจที่จะรัน inetd ควรใช้ tcp wrapper ด้วย (หาข้อมูลได้จาก ftp://ftp.win.tue.nl/pub/security/index.html#software) และต้องมั่นใจว่าได้เซ็ตระบบของคุณเพื่อให้สามารถบันทึกการติดต่อระหว่างเน็ตเวิร์ค(logging) และเพิ่มเวลาของเซอร์วิสที่จะถูกร้องขอข้อมูลในเวลา 1 นาทีด้วย (ค่าเริ่มต้นอยู่ที่ 256, แต่แนะนำว่า ควรเป็น 1024, ซึ่งคุณอาจแก้ไขค่านี้ให้เหมาะสมกับความต้องการของคุณ) ถ้าคุณติดต่อกับเน็ตเวิร์คด้วยความเร็วที่ช้าอย่างเช่นโมเด็ม ค่านี้จะไม่มีผลอะไร แต่ถ้าคุณติดต่อกับเน็ตเวิร์คด้วยความเร็วสูง จากความสามารถนี้สามารถใช้เพื่อสร้างการโจมตีที่เรียกว่า DoS (Denial of Service) โดยผู้โจมตีจะใช้ shell script ที่จะร้องขอข้อมูลจากคอมพิวเตอร์ของคุณมากกว่า 256 การติดต่อ มีผลให้ inetd เซอร์วิสปิดการให้บริการลง นอกจากนี้ถ้าต้องการให้ระบบของคุณสนับสนุนการติดต่อ 1024 ครั้ง(ใน 1 นาที) ต้องแน่ใจว่าฮาร์ดแวร์ของคุณสนับสนุนค่านี้ด้วย มิฉะนั้นผู้ประสงค์ร้ายสามารถโจมตีคอมพิวเตอร์ของคุณแบบ DoS ได้เช่นกันและทำให้ระบบคอมพิวเตอร์ของคุณหยุดทำงานด้วยการส่งการติดต่อ 1024 การติดต่อในเวลาเดียว ให้ดูจากไฟล์ /etc/rc.conf ข้างล่างนี้

inetd_enable="YES"

ควรจะเปลี่ยนจาก

inetd_flags=""

เป็น

inetd_flags="-l -R 1024"

ซึ่งจะทำให้มันบันทึกการติดต่อ (-l switch) และเพิ่มการติดต่อที่มากที่สุดถึง 1024 จากค่าเริ่มต้น 256 คุณจำเป็นที่จะต้องแก้ไขไฟล์ syslog.conf ในไดเร็กทอรี /etc

SSH - Secure Shell

จากที่ได้กล่าวข้างต้นในเรื่อง ssh แล้วว่าในกรณีที่คุณไม่ต้องการรันเซอร์วิส inetd ทั้งหมด อย่างเช่น คุณต้องการเพียงต้องการรัน web server หรือ news server หรือ nfs เท่านั้น คุณไม่จำเป็นต้องมีเซอร์วิสอื่นที่รันที่คอมพิวเตอร์ของคุณอีก คุณสามารถใช้โปรแกรม SSH เพื่อใช้ล็อกอินเข้าสู่คอมพิวเตอร์จากที่ห่างไกล โปรแกรมนี้ถูกออกแบบมาเพื่อแทนที่ rsh, rlogin และคำสั่งที่เริ่มต้นด้วย r ของ Berkeley SSH มีความสามารถหลายอย่าง แต่มักจะใช้เพื่อเข้ารหัส การติดต่อเพื่อป้องกันจากรหัสผ่านที่สามารถอ่านได้และข้อมูลต่าง ๆ ที่ผ่านเส้นทางที่ไม่ปลอดภัย ถ้าคุณใช้ telnet การติดต่อของคุณสามารถถูกดักข้อมูลได้ (ถ้าคุณคิดว่า S/Key เป็นทางแก้ไข คุณคิดผิด เพราะยังมีปัญหาเรื่องการถูกแก้ไขข้อมูลที่อยู่ระหว่างทางและ connection hijacking ) ทางที่ดีคุณควรปิดเซอร์วิสของ inetd ทั้งหมดและใช้ SSH แทน แต่ถ้าคุณคิดว่า inetd ยังจำเป็นสำหรับคุณอยู่แล้ว อย่างน้อยคุณควรให้ inetd สามารถบันทึกการติดต่อระหว่างเน็ตเวิร์ค (logging) และเพิ่มจำนวนการติดต่อที่มากที่สุดที่อนุญาตให้ติดต่อได้ใน 1 นาที (ดูจากข้างบน)

คุณสามารถดาวน์โหลด SSH จาก ftp://ftp.funet.fi/pub/unix/security/login/ssh

โปรแกรม SSH สำหรับ Windows

http://fox.doc.ic.ac.uk/~ci2/ssh/

http://www.zip.com.au/~roca/ttssh.html

http://bmrc.berkeley.edu/people/chaffee/winntutil.html

http://public.srce.hr/~cigaly/ssh

SecureCRT from http://www.vandyke.com

ที่มา : http://infosec.sran.org/

บันทึกนี้เขียนที่ GotoKnow โดย 

หมายเลขบันทึก: 41715
เขียน:
แก้ไข:
อ่าน:
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ

ความเห็น (0)