ไพรเมอร์ Xinetd

ไพรเมอร์ Xinetd


Xinetd เป็นผู้ปกครองที่จัดการการเข้าถึงคอมพิวเตอร์ของคุณจากอินเทอร์เน็ต เป็น daemon ที่รันตลอดเวลาและฟังพอร์ตทั้งหมดสำหรับการเชื่อมต่อหรือการร้องขอบริการ หากคุณไม่ได้ใช้เซิร์ฟเวอร์คุณจะไม่จำเป็นต้องมี xinetd อย่างไรก็ตามแม้ว่าคอมพิวเตอร์ของคุณเป็นเพียงสำหรับใช้ในบ้านคุณอาจต้องอนุญาตให้ผู้อื่นเข้าถึงบริการในคอมพิวเตอร์ของคุณในบางจุดในอนาคต เมื่อคุณทำ, คุณจะต้องติดตั้ง xinetd เพื่อป้องกันคอมพิวเตอร์ของคุณจากกิจกรรมที่เป็นอันตราย.

ระบบปฏิบัติการ

ยูทิลิตี้ xinetd เขียนขึ้นสำหรับระบบ Unix และ Unix ดังนั้นมันจะติดตั้งบน Linux และ Mac OS แต่ไม่ใช่บน Windows. โปรแกรมใช้งานได้ฟรีและสามารถเข้าถึงได้จาก GitHub.

คุณสามารถรับโปรแกรมจากแหล่งเก็บข้อมูลหลักนี้และยังมีทางแยกหนึ่งของรหัส นี่เป็นโปรแกรมที่รู้จักและเชื่อถือได้ซึ่งได้รับการดาวน์โหลดและติดตั้งหลายครั้งดังนั้นคุณไม่ต้องกังวลกับอันตรายของโปรแกรมที่จะเป็นของปลอม.

วัตถุประสงค์ของ xinetd

ระบบ xinet มีวัตถุประสงค์เพื่อทำหน้าที่เป็น เซิร์ฟเวอร์. คุณอาจรู้ว่าในการเชื่อมต่ออินเทอร์เน็ตทั่วไปคอมพิวเตอร์เครื่องหนึ่งจะติดต่อกับอีกเครื่องหนึ่ง คอมพิวเตอร์ที่เริ่มการติดต่อเรียกว่า“ลูกค้า” และโปรแกรมที่ได้รับการติดต่อคือ“เซิร์ฟเวอร์.” เหตุผลปกติสำหรับการเชื่อมต่อคือเพื่อให้ลูกค้าสามารถรับบริการจากเซิร์ฟเวอร์ อย่างไรก็ตามคอมพิวเตอร์ที่ได้รับการติดต่อจำเป็นต้องมีโปรแกรมที่ทำงานอยู่เพื่อรอคำขอ นี่คือฟังก์ชั่นของ xinetd.

ความต้องการขั้นพื้นฐานสำหรับ xinetd คือมันจะได้รับการร้องขอและส่งต่อไปยังแอปพลิเคชันที่ถูกต้องซึ่งระบุโดยหมายเลขพอร์ตที่เขียนไว้ในส่วนหัวของการเชื่อมต่อที่มาถึงหรือการร้องขอบริการ โปรแกรม xinetd ไม่ได้ให้บริการตามที่ร้องขอ แต่ทำหน้าที่เป็นผู้รักษาประตู.

ทางเลือก: xinetd VS inetd

นักพัฒนาของ xinetd ไม่ใช่คนแรกที่คิดไอเดียเกี่ยวกับโปรแกรมที่ฟังบนเครือข่ายเพื่อรับคำขอที่เข้ามา ในความเป็นจริง xinetd มีจุดประสงค์เพื่อปรับปรุงโปรแกรมต้นฉบับที่ดำเนินงานนี้ซึ่งเรียกว่า inetd.

ชื่อ“ xinetd” เป็นตัวย่อของ“daemon บริการอินเทอร์เน็ตเพิ่มเติม” “ บริการอินเทอร์เน็ตดีมอน” อธิบายถึงต้นฉบับ inetd. ด้วย inetd คุณจะได้รับการตรวจสอบคำขอเซิร์ฟเวอร์เดียวกับที่ xinetd จัดเตรียมไว้ อย่างไรก็ตามภูตนี้ไม่มีกลไกการป้องกันและตอนนี้ก็ถือว่าไม่ปลอดภัย.

inetd เก่าไม่ทำงานคนเดียว มันผ่านการร้องขอไปยัง tcpd, ซึ่งตรวจสอบไฟล์สิทธิ์ (hosts.allow และ hosts.deny) ตามชื่อที่แนะนำ tcpd จัดการการร้องขอการเชื่อมต่อ TCP อย่างไรก็ตามมันยังตรวจสอบพอร์ต UDP ดังนั้นจึงเป็นการใช้งานอินเตอร์เฟสเลเยอร์การขนส่ง คุณอาจเห็นการกล่าวถึง TCP wrapper ซึ่งเป็นเพียงชื่ออื่นสำหรับ tcpd การรวม tcpd เพิ่มการปรับปรุงการควบคุมการเข้าถึงบางอย่าง อย่างไรก็ตามกระบวนการอนุญาตนั้นได้รับการขับเคลื่อนด้วยไฟล์สองไฟล์ที่จัดเก็บด้วยตนเองและดังนั้นจึงไม่ใช่โซลูชันความปลอดภัยที่ครอบคลุมมาก.

คุณสมบัติ Xinetd

โหมด xinetd ของการดำเนินการคล้ายกับ inetd รวมกับ tcpd อย่างไรก็ตามโซลูชัน xinetd มีคุณสมบัติด้านความปลอดภัยที่ดีกว่าการรวม inetd / tcpd คุณสมบัติของ daemon รวมถึง:

  • การควบคุมการเข้าถึงสำหรับ TCP และ UDP
  • การบันทึกเหตุการณ์ที่บันทึกการเชื่อมต่อสำเร็จและล้มเหลว
  • การควบคุมการเข้าถึงตามส่วนของเวลา
  • ขีด จำกัด เซิร์ฟเวอร์พร้อมกัน - การป้องกันการโจมตี Denial of Service (DoS)
  • ขีด จำกัด ขนาดไฟล์บันทึก
  • การจัดสรรบริการไปยังส่วนต่อประสานที่แตกต่างกันทำให้บริการบางอย่างถูก จำกัด อยู่ที่เครือข่ายส่วนตัว
  • ฟังก์ชั่นพร็อกซี่รวมถึงการแปลที่อยู่เครือข่าย

Xinetd สามารถทำงานเป็นสื่อกลางสำหรับ บริการ RPC. อย่างไรก็ตามฟังก์ชั่นนี้ใช้ไม่ได้ดีมาก การขาดคุณสมบัติด้านความปลอดภัยใน RPC ได้ลดความต้องการในการเข้าถึงบริการดังกล่าวดังนั้นจึงเป็นที่น่าสงสัยว่าผู้พัฒนา xinetd จะใช้เวลาอย่างสมบูรณ์แบบในส่วนต่อประสาน RPC.

วิธีการควบคุมการเข้าถึง

เช่นเดียวกับ inetd, xinetd อนุญาตให้คุณอนุญาตหรือบล็อกการเชื่อมต่อตามที่อยู่ IP ของผู้ร้องขอ. ด้วย inetd คุณสามารถระบุแหล่งที่มาของการเชื่อมต่อที่อนุญาตและถูกบล็อกโดยชื่อโฮสต์หรือชื่อโดเมน แต่ละตัวเลือกเหล่านี้ต้องใช้ขั้นตอนการค้นหา ในกรณีของตัวเลือกชื่อโฮสต์คุณจะต้องตั้งชื่อเหล่านั้นในระบบ DNS ของเครือข่ายของคุณเอง สำหรับโดเมนคุณน่าจะดีกว่าพึ่งพาระบบ DNS สาธารณะ.

ตัวเลือกว่าคุณจะระบุผู้ร้องขอตามที่อยู่ IP ชื่อโฮสต์หรือชื่อโดเมนนั้นขึ้นอยู่กับคุณ อย่างไรก็ตาม, การผสานกับที่อยู่ IP จะสร้างการเชื่อมต่อได้เร็วขึ้น เนื่องจากไม่จำเป็นต้องใช้เฟสการค้นหา.

การกำหนดค่าระบบ

ในการใช้ xinetd คุณต้องติดตั้งก่อน อัพเดตไฟล์คอนฟิกูเรชัน. โดยพื้นฐานแล้วไฟล์กำหนดค่าเป็นศูนย์บัญชาการของคุณสำหรับ xinetd เนื่องจากโปรแกรมนี้เป็น daemon เมื่อคุณเริ่มต้น, มันจะยังคงทำงานต่อไปตลอดไป. มันไม่ใช่อรรถประโยชน์แบบโต้ตอบที่คุณสามารถปรับได้ที่บรรทัดคำสั่ง การสื่อสารกับโปรแกรมทั้งหมดของคุณเกิดขึ้นผ่านไฟล์กำหนดค่า.

daemon จะตรวจสอบไฟล์กำหนดค่าต่อไปทุกครั้งที่ได้รับคำขอจากโลกภายนอก ไม่โหลดการกำหนดค่าลงในหน่วยความจำเมื่อเริ่มต้น นั่นหมายความว่า คุณสามารถปรับประสิทธิภาพการทำงานของภูตขณะที่มันกำลังทำงานอยู่ โดยการเปลี่ยนคำแนะนำที่เก็บไว้ในไฟล์กำหนดค่า.

ไฟล์การกำหนดค่าสำหรับ xinet มีความสำคัญมากกว่านั้นคือระบบการกำหนดค่าสำหรับยูทิลิตี้อื่น ๆ นี่เป็นเพราะคุณสามารถเปลี่ยนคำแนะนำสำหรับ daemon ผ่านการกำหนดค่าโดยไม่จำเป็นต้องหยุดโปรแกรม xinetd และเริ่มต้นใหม่.

การตั้งค่าไฟล์กำหนดค่า

มองหาไฟล์ /etc/xinetd.conf. นี่เป็นไฟล์การกำหนดค่าหลักสำหรับโปรแกรมและทำหน้าที่เป็นตารางการค้นหาที่แอปพลิเคชันอ่านเพื่อกำหนดว่าการเชื่อมต่อใดที่อนุญาตและอนุญาตให้ใช้บริการใด.

คุณสามารถสร้างไฟล์ xinetd.conf จากที่มีอยู่ inetd.conf ไฟล์ด้วย xconv.pl โปรแกรมซึ่งเป็นส่วนหนึ่งของแพ็คเกจที่คุณสามารถดาวน์โหลดได้จากที่เก็บ GitHub สำหรับ xinetd รันโปรแกรมการแปลงด้วยคำสั่งต่อไปนี้:

/usr/local/sbin/xconv.pl < /etc/inetd.conf > /etc/xinetd.conf

ไฟล์กำหนดค่าใหม่ไม่สมบูรณ์และจะต้องมีการแก้ไขเพิ่มเติมก่อนที่คุณจะสามารถเปิด xinetd.

ส่วนค่าเริ่มต้นของไฟล์การกำหนดค่า

เมื่อคุณดูในไฟล์ xinetd.conf ที่สร้างขึ้นใหม่ของคุณคุณจะต้องมุ่งเน้นไปที่สองส่วนการกำหนดค่าที่สำคัญ ครั้งแรกของเหล่านี้คือ ค่าเริ่มต้น ส่วนและที่สองคือ บริการ มาตรา.

ตามที่คุณอาจเดาได้แล้วส่วนค่าเริ่มต้นจะบอก xinetd ว่าจะทำอย่างไรหากไม่พบคำแนะนำเฉพาะสำหรับงานปัจจุบันในส่วนบริการ.

ตัวเลือกสำคัญบางอย่างที่คุณสามารถตั้งค่าในส่วนเริ่มต้นคือ:

  • only_from
  • no_access
  • log_type
  • log_on_success
  • log_on_failure
  • ตัวอย่าง
  • per_source

ส่วนถัดไปอธิบายตัวเลือกเหล่านี้ในรายละเอียดเพิ่มเติม.

เงื่อนไขการเข้าถึง

Only_from และ no_access ทำงานอย่างมีประสิทธิภาพซึ่งเป็นการบล็อก (ไม่มีการเข้าถึง) หรืออนุญาต (เฉพาะ _ จาก) ที่อยู่หรือช่วงของที่อยู่เฉพาะ ขอแนะนำให้ใช้หนึ่งในตัวเลือกเหล่านี้เพื่อปิดกั้นทุกอย่างเป็นค่าเริ่มต้นแล้วสร้างรายการบริการที่ต่ำลงในไฟล์กำหนดค่า ด้วยกลยุทธ์นี้คุณจะครอบคลุมตัวเองหากเหตุการณ์ที่คุณไม่ได้เกิดขึ้น.

ตัวเลือกทั้งสองนี้ยังมีคำสั่งที่ถูกต้องเพื่อรวมไว้ในส่วนบริการ คุณสามารถ เริ่มต้นการแบนทุกอย่างเป็นค่าเริ่มต้นแล้วเพิ่มบริการ. หากมีส่วนบริการที่เกี่ยวข้องกับประเภทคำขอเชื่อมต่อที่ xinetd ได้รับจะไม่ดูที่ส่วนค่าเริ่มต้นของการกำหนดค่า.

คำแนะนำของ only_from และ no_access ในคำอธิบายสำหรับบริการจะแทนที่คำสั่ง only_from และ no_access ในส่วนค่าเริ่มต้น.

รูปแบบสำหรับสองตัวเลือกนี้คือ

=

โปรดจำไว้ว่าที่อยู่สามารถแสดงเป็นที่อยู่ IP ชื่อโฮสต์หรือชื่อโดเมน อย่างไรก็ตามจะเป็นการดีกว่าหากยึดที่อยู่ IP คุณสามารถใช้สัญกรณ์ CIDR เพื่อระบุช่วง นี่คือตัวอย่างสองวิธีที่คุณอาจใช้ตัวเลือกเหล่านี้:

no_access = 0.0.0.0/0

นี่อาจเป็นบรรทัดที่พบบ่อยที่สุดในส่วนค่าเริ่มต้นเพราะบล็อกทุกคน ส่วนค่าเริ่มต้นจะอยู่ในไฟล์กำหนดค่าเพื่อแจ้งให้ xinetd ทราบว่าต้องทำอย่างไรในกรณีที่มีคำขอบริการที่ไม่ครอบคลุมในส่วนบริการ คุณควรทำงานบนสมมติฐานที่ว่าคุณจะสามารถให้คำแนะนำเฉพาะสำหรับบริการทุกประเภทที่คอมพิวเตอร์ของคุณสามารถให้ได้ดังนั้นจึงมีเหตุผลที่จะระบุว่าคำขออื่น ๆ ทั้งหมดถูกบล็อก เนื่องจากคนเฝ้าประตูในปาร์ตี้วีไอพีสุดพิเศษจะพูดว่า“ หากคุณไม่ได้อยู่ในรายชื่อคุณจะไม่ได้เข้าร่วม”

อีกทางเลือกหนึ่งสำหรับกลยุทธ์นี้คือให้ทุกคนเข้ามาคุณจะใช้สิ่งนี้ด้วย:

only_from = 0.0.0.0/0

นโยบายนี้ไม่สมเหตุสมผลในส่วนค่าเริ่มต้น ส่วนเริ่มต้นจะได้รับการอ้างถึงหากคุณยังไม่ได้รับคำแนะนำในการให้บริการดังนั้นเมื่อ xinetd เปลี่ยนไปใช้ค่าเริ่มต้นจะมีกรณีที่ไม่มีคำแนะนำใด ๆ ให้ ดังนั้นการอนุญาตการเข้าถึงในสถานการณ์เหล่านั้นจะส่งผลให้เกิดข้อผิดพลาดเนื่องจากคุณไม่ได้แจ้งให้ xinetd ทราบว่าต้องทำอย่างไรกับคำขอ มันมีเหตุผลที่จะใช้ตัวเลือก catch_all only_from นี้ภายในคำอธิบายของบริการดังนั้นข้อความนี้จะบอก xinetd ให้อนุญาตคำขอจากทุก ๆ แหล่งที่เป็นไปได้ที่จะใช้บริการนั้น.

ขออภัยมีคุณลักษณะของตัวเลือก only_from และ no_access ที่จะสร้างความขัดแย้งหากคุณใช้นโยบายตามที่อธิบายไว้ข้างต้น นั่นคือ, ทั้ง no_access และ only_from เป็นแบบโกลบอล และ xinetd ตรวจสอบทั้งสองครั้งทุกครั้งที่มีงานให้ทำ ดังนั้นหากคุณมีทั้งสองชุด daemon จะตรวจสอบคำขอขาเข้ากับคำสั่ง no_access ในส่วนค่าเริ่มต้นแม้ว่าจะมีการตั้งค่าบริการที่ถูกต้อง.

การเล่นโวหารของ no_access และ only_from การเป็นโกลบอลสามารถเอาชนะได้โดยการตัดสินใจเกี่ยวกับนโยบายของ ใช้เพียงหนึ่งหรืออื่น ๆ ในไฟล์ xinetd.conf ของคุณ. เป็นเรื่องธรรมดาที่จะยึดด้วย only_from และละเว้นตัวเลือก no_access คุณสามารถสร้างคำสั่งแบบ catch-all เท่านั้นโดยปล่อยให้รายการที่อยู่ว่างเปล่าในส่วนค่าเริ่มต้นเช่น "only_from = ” และนั่นจะทำให้โปรแกรม xinetd ใช้การตั้งค่า only_from ในคำอธิบายบริการ สิ่งนี้จะเกิดขึ้นโดยไม่เพิ่มข้อขัดแย้งเนื่องจากส่วนค่าเริ่มต้นเท่านั้น _from ค่าจะถูกเขียนทับโดยการตั้งค่า only_from ของบริการ.

รำคาญ, หากคุณไม่ได้ใส่คำสั่ง only_from หรือคำสั่ง no_access ในส่วนค่าเริ่มต้น xinetd จะอนุญาตการเชื่อมต่อทั้งหมด ที่คุณไม่ได้กล่าวถึงในส่วนบริการซึ่งอาจสร้างข้อผิดพลาด.

รูปแบบสำหรับการระบุที่อยู่หลายรายการเป็นพารามิเตอร์ของตัวเลือกทั้งสองนี้คือเว้นช่องว่างระหว่างที่อยู่แต่ละแห่ง (ไม่มีเครื่องหมายจุลภาค) คุณยังสามารถรวมช่วง CIDR ในรายการ.

คำสั่งล็อกไฟล์

log_type, log_on_success, และ log_on_failure ตัวเลือกทั้งหมดทำงานร่วมกัน แต่ละชุดมีค่าคงที่ที่คุณต้องการป้อนลงในตัวเลือกเป็นพารามิเตอร์.

ใช้คุณลักษณะ log_type เพื่อ ให้เส้นทางและชื่อของไฟล์บันทึก และใช้แอททริบิวต์ log_on_success และ log_on_failure เพื่อระบุฟิลด์ที่ควรเขียนลงในบันทึกไฟล์บันทึกสำหรับแต่ละเหตุการณ์.

ตัวอย่างเช่นคุณจะเขียนที่อยู่ไฟล์บันทึกด้วย:

log_type = FILE / usr / log / internetlog

ตัวเลือกอื่นที่สามารถใช้ได้กับแอตทริบิวต์ log_type คือ SYSLOG ซึ่งตั้งค่าระดับข้อความสำหรับเหตุการณ์เหล่านี้ที่ syslogd จะรายงาน ค่าที่เป็นไปได้คือ:

  • ภูต
  • รับรองความถูกต้อง
  • ผู้ใช้งาน
  • local0-7

ตัวอย่างจะเป็น:

log_type = SYSLOG local1

SYLOG คุณลักษณะไม่จำเป็นและมีความสำคัญน้อยกว่า ไฟล์ ตัวเลือก คุณต้องให้ xinetd ของคุณชื่อของไฟล์บันทึกเพื่อเขียน; คุณไม่จำเป็นต้องระบุระดับ Syslog สำหรับข้อความกิจกรรม.

ตัวเลือกการรายงานที่มีอยู่สำหรับ log_on_success คือ:

  • PID - 0 ถ้าเป็นบริการ xinetd ภายใน
  • HOST - ที่อยู่ของลูกค้า
  • USERID - ตัวตนของผู้ใช้ระยะไกล
  • EXIT - สถานะการออกจากกระบวนการ
  • DURATION - ช่วงเวลาเซสชัน

ตัวเลือกการรายงานสำหรับ log_on_failure คือ:

  • HOST - ที่อยู่ของลูกค้า
  • USERID - ตัวตนของผู้ใช้ระยะไกล
  • ATTEMPT - บันทึกการพยายามเข้าถึงที่ล้มเหลว
  • RECORD - ข้อมูลที่มีทั้งหมดเกี่ยวกับลูกค้า

คุณสามารถรวมหลายตัวเลือกในแต่ละบรรทัด log_on_success และ log_on_failure และควรคั่นด้วยช่องว่างโดยไม่มีเครื่องหมายวรรคตอนใด ๆ ตัวอย่างเช่น:

log_type = FILE / usr / log / internetlog
log_on_success = โฮสต์ PID USERID DURATION EXIT
log_on_failure = บันทึกการโฮสต์ของ USERID

เป็นวิธีปฏิบัติทั่วไปในการเก็บคำสั่ง log_type, log_in_success และ log_on_failure บนบรรทัดต่อเนื่องในไฟล์.

การควบคุมความจุ

อีกสองตัวเลือกที่คุณต้องใส่ใน xinetd.conf จำกัด จำนวนการเชื่อมต่อพร้อมกันที่เซิร์ฟเวอร์ของคุณควรยอมรับ นี่เป็นปัจจัยสำคัญและเป็นวิธีที่ง่าย แต่ทรงพลังในการกำจัดการโจมตี Denial of Service (DoS) ตัวเลือกสองตัวที่ใช้กลยุทธ์นี้คือ ตัวอย่าง และ per_source.

ตัวเลือกอินสแตนซ์ในส่วนค่าเริ่มต้นระบุจำนวนการเชื่อมต่อที่ xinetd จะอนุญาตให้ทำงานพร้อมกันและตัวเลือก per_source ระบุจำนวนการร้องขอการเชื่อมต่อที่ daemon จะตอบกลับจากแหล่งที่อยู่เดียวกัน. การโจมตีแบบปฏิเสธการให้บริการแบบกระจาย (DDoS) จะได้รับรอบขีด จำกัด ของ per_source แต่ไม่ใช่ตัวเลือกอินสแตนซ์ น่าเสียดายที่การใช้งานขีด จำกัด บริการนี้จะปิดกั้นผู้ใช้ของแท้ในช่วงระยะเวลาของการโจมตี.

รูปแบบของตัวเลือกทั้งสองนี้ตรงไปตรงมามาก:

จำนวน =.

ค่า per_source ควรต่ำกว่าค่าอินสแตนซ์.

ตัวอย่างส่วนของค่าเริ่มต้น

เมื่อรวบรวมรายละเอียดทั้งหมดที่อธิบายไว้ในส่วนนี้แล้วคำชี้แจงค่าเริ่มต้น xinetd.conf ของคุณควรมีลักษณะดังนี้:

ค่าเริ่มต้น
{
อินสแตนซ์ = 20
per_source = 5
log_type = FILE / usr / log / internetlog
log_on_success = โฮสต์ PID USERID DURATION EXIT
log_on_failure = บันทึกการโฮสต์ของ USERID
only_from =
}

แต่ละไฟล์ xinetd.conf ควรมีคำสั่งเริ่มต้น คุณไม่จำเป็นต้องมีคำสั่งบริการใด ๆ.

ส่วนการกำหนดค่าบริการ

สำหรับแต่ละบริการที่คุณต้องการให้เซิร์ฟเวอร์ของคุณส่งมอบคุณควรเขียนส่วนคำสั่งบริการใน xinetd.conf หากคุณไม่ได้เขียนบริการใด ๆ ในไฟล์กำหนดค่า xinetd จะใช้ข้อกำหนดที่วางไว้ในส่วนค่าเริ่มต้น นอกจากนี้คุณยังสามารถเขียนทับการตั้งค่าที่กำหนดไว้ในส่วนเริ่มต้นด้วยการเรียกคืนแอตทริบิวต์เหล่านั้นด้วยค่าต่าง ๆ ในส่วนที่เขียนเพื่อกำหนดบริการ.

ประเภทบริการ

แอตทริบิวต์ที่มีให้สำหรับส่วนบริการแตกต่างกันสำหรับบริการแต่ละประเภทสามประเภท เหล่านี้คือ:

  • ภายใน
  • ไม่แสดง
  • RPC

สามารถระบุหมวดหมู่ของบริการ (INTERNAL / UNLISTED / RPC) พร้อมแอตทริบิวต์ ชนิด. อย่างไรก็ตามคุณลักษณะนี้ไม่บังคับและมักจะถูกทิ้งไว้.

นิยามคุณสมบัติการบริการ

เมื่อเขียนข้อมูลจำเพาะของแอททริบิวฟิลด์ทั้งหมดจะถูกคั่นด้วยช่องว่างหรือการขึ้นบรรทัดใหม่ - คุณไม่ได้ใช้ตัวคั่นหรือเครื่องหมายวรรคตอนในรูปแบบใด ๆ.

โครงร่างของใบแจ้งยอดบริการเหมือนกันสำหรับส่วนค่าเริ่มต้น:

บริการ
{
  ค่าตัวดำเนินการของแอตทริบิวต์
}

ตัวดำเนินการที่ใช้สำหรับคำสั่ง attribute มักจะเท่ากับ (“=“) มีแอตทริบิวต์น้อยมากที่อนุญาตให้เพิ่มค่าลงในรายการที่มีอยู่ด้วย“+=” หรือลบรายการด้วย“-=” - ในทั้งสองกรณีคุณเขียนโอเปอเรเตอร์โดยไม่มีเครื่องหมายอัญประกาศแสดงไว้ที่นี่.

นี่คือแอททริบิวที่มีให้สำหรับ ภายใน ประเภทบริการ:

  • socket_type
  • ธง
  • ดี
  • รอ
  • โปรโตคอล (หากไม่อยู่ใน / etc / services)
  • พอร์ต (หากไม่อยู่ใน / etc / services)
  • cps
  • access_times

คุณลักษณะที่มีอยู่สำหรับ RPC บริการคือ:

  • socket_type
  • ธง
  • ผู้ใช้งาน
  • เซิร์ฟเวอร์
  • server_args
  • ดี
  • รอ
  • มาตรการ
  • rpc_version
  • rpc_number
  • cps
  • access_times

ไม่แสดง ประเภทบริการสามารถมีคุณสมบัติใด ๆ ต่อไปนี้:

  • socket_type
  • ธง
  • ผู้ใช้งาน
  • เซิร์ฟเวอร์
  • server_args
  • max_load
  • ดี
  • รอ
  • โปรโตคอล (หากไม่อยู่ใน / etc / services)
  • พอร์ต (หากไม่อยู่ใน / etc / services)
  • access_times
  • cps

วัตถุประสงค์ของบริการ

ความหมายของแอตทริบิวต์เหล่านี้แสดงในตารางด้านล่าง:

AttributeDescription
ชนิด ภายใน, RPC, ไม่มีรายชื่อหรือไม่มีชื่อภายใน
socket_type สตรีม (TCP), dgram (UDP), raw (การเข้าถึงโดยตรง IP) หรือ seqpacket ().
รหัส สร้างชื่อที่ไม่ซ้ำสำหรับบริการนี้
ธง อธิบายด้านล่างตาราง
ผู้ใช้งาน ระบุลำดับความสำคัญของเซิร์ฟเวอร์
เซิร์ฟเวอร์ เส้นทางและโปรแกรมของบริการ
เซิร์ฟเวอร์ args อาร์กิวเมนต์ที่จะส่งผ่านด้วยการเรียกใช้บริการ
max_load จำนวนกระบวนการที่เกิดขึ้นพร้อมกันสำหรับบริการ
ดี เพิ่มลำดับความสำคัญสำหรับบริการ
รอ ใช่ | ไม่มี - บล็อกหรืออนุญาตการประมวลผลคำร้องขอใหม่พร้อมกัน
มาตรการ สามารถปล่อยทิ้งไว้หากโปรโตคอลอยู่ในรายการ / etc / โปรโตคอล
ท่าเรือ หมายเลขพอร์ตต้องมีอยู่ใน / etc / services และเป็นหมายเลขเดียวกัน
rpc_version เวอร์ชั่นของ RPC
rpc_number หมายเลข RPC
cps ขีด จำกัด การเชื่อมต่ออาร์กิวเมนต์ที่สองเป็นทางเลือกและให้จำนวนวินาทีที่จะรอเมื่อถึงขีด จำกัด
access_times ชั่วโมงของวันที่สามารถให้บริการได้
ผูก ตอบสนองต่อการเชื่อมต่อไปยังที่อยู่ IP ที่เฉพาะเจาะจง
การเปลี่ยนเส้นทาง ส่งต่อคำขอสำหรับบริการไปยังคอมพิวเตอร์เครื่องอื่น

ธง คุณลักษณะสามารถมีค่าต่อไปนี้:

IDONLY: ยอมรับการเชื่อมต่อจากลูกค้าที่มีเซิร์ฟเวอร์การระบุเท่านั้น

NORETRY: ป้องกันการสร้างกระบวนการใหม่เมื่อการเชื่อมต่อล้มเหลว

NAMEINARGS: อาร์กิวเมนต์แรกใน server_args คือ เซิร์ฟเวอร์ ราคา. ใช้เมื่อโทร tcpd

นอกจากคุณสมบัติข้างต้นแล้วตัวเลือกที่มีอยู่ในส่วนค่าเริ่มต้นสามารถเขียนลงในคำจำกัดความของบริการได้ เหล่านี้คือ:

  • only_from
  • no_access
  • log_type
  • log_on_success
  • log_on_failure
  • ตัวอย่าง
  • per_source

การใช้คุณลักษณะเหล่านี้อีกครั้งจะเขียนทับค่าใด ๆ ที่ตั้งค่าไว้ในส่วนค่าเริ่มต้น อย่างไรก็ตามโปรดจำไว้ว่า only_from และ no_access คุณลักษณะเป็นส่วนกลางดังนั้นคุณต้องจัดระเบียบการใช้ตัวเลือกเหล่านี้เพื่อหลีกเลี่ยงพารามิเตอร์ที่ขัดแย้งกัน.

ตัวอย่างประกาศบริการ

ต่อไปนี้เป็นสองตัวอย่างของคำนิยามของบริการ.

บริการ ntalk
{
socket_type = dgram
รอ = ใช่
user = none
เซิร์ฟเวอร์ = /usr/sbin/in.ntalkd
access_times = 7: 00-12: 30 13: 30-21: 00
only_from = 192.168.1.0/24
}

บริการ ftp
{
socket_type = กระแส
รอ = ไม่
user = root
เซิร์ฟเวอร์ = /usr/sbin/in.ftpd
server_args = -l
อินสแตนซ์ = 4
ดี = 10
}

หมายเหตุการใช้งานของ access_times ใน ntalk คำนิยาม วิธีนี้ใช้สองช่วงเวลาโดยช่วงจากและถึงเวลาคั่นด้วยเส้นประ (“ -”) โดยไม่มีช่องว่าง ช่วงเวลาสองช่วงถูกคั่นด้วยช่องว่าง คำจำกัดความของเวลาใช้รูปแบบนาฬิกาแบบ 24 ชั่วโมง.

only_from คุณลักษณะใน ntalk คำจำกัดความ จำกัด การเข้าถึงบริการนี้เพื่อให้ที่อยู่เฉพาะในเครือข่ายท้องถิ่นสามารถใช้งานได้.

ntalk บริการมี socket_type ของ dgram, ซึ่งหมายความว่าเป็นบริการ UDP socket_type ใน FTP นิยามคือ กระแส, ซึ่งหมายความว่านี่เป็นบริการ TCP.

สร้างบริการหลายอินสแตนซ์

นิยามบริการใช้ชื่อบริการเป็นตัวระบุโดยค่าเริ่มต้น อย่างไรก็ตามคุณอาจต้องการสร้างบริการหลายชุดและให้คุณสมบัติที่แตกต่างกัน เนื่องจากชื่อบริการจำเป็นต้องสอดคล้องกับชื่อที่ใช้ใน / etc / บริการ ไฟล์การรับบริการหลายรุ่นที่ใช้จะเป็นไปไม่ได้ อย่างไรก็ตามแอตทริบิวต์ id เปิดใช้งานกลยุทธ์การปฏิบัติการนี้.

การใช้งานทั่วไปหนึ่งอย่างของสถานการณ์นี้คือเมื่อคุณต้องการสร้าง เซิร์ฟเวอร์ FTP ที่แตกต่างกันสำหรับการเข้าถึงภายในและภายนอก. ด้วยวิธีนี้คุณสามารถเก็บที่เก็บไฟล์ของคุณไว้สำหรับสำนักงานแยกจากไฟล์ที่ดาวน์โหลดได้ที่คุณเปิดเผยต่อสาธารณะทั่วไป.

ในกรณีการใช้งานนี้คุณจะต้องกำหนด“ บริการ ftp” สองครั้ง จากนั้นคุณจะให้แอตทริบิวต์หนึ่งตัวอย่าง id = ftp-internal และอื่น ๆ id = ftp- ภายนอก. จากนั้นเป็นต้นมา xinetd สามารถแยกความแตกต่างระหว่างทั้งสอง เพื่อให้แต่ละอินสแตนซ์พร้อมใช้งานสำหรับผู้ชมที่แตกต่างกันคุณจะต้องใช้ only_from แอ็ตทริบิวต์เพื่อ จำกัด การเข้าถึงบริการ ftp- ภายในเพียงที่อยู่บนเครือข่ายและการเข้าถึงบริการ ftp- ภายนอกไปยังที่อยู่ที่ไม่ใช่เครือข่ายทั้งหมด.

ผูกที่อยู่กับบริการ

สถานการณ์จำลองของการสร้างบริการที่แตกต่างกันสำหรับผู้ใช้ภายในและภายนอกสามารถช่วยได้อย่างมากโดยแอตทริบิวต์ bind คำว่า“ผูก” ใช้บ่อยในการเขียนโปรแกรม TCP มันมักจะหมายถึงการเชื่อมโยงการเชื่อมต่อกับพอร์ตจึงสร้าง ID สำหรับเซสชั่น อย่างไรก็ตามในกรณีนี้“ การผูก” หมายถึงสิ่งที่แตกต่าง ในตัวอย่างของการเข้าถึงภายในและภายนอกไปยังเซิร์ฟเวอร์ FTP, คุณสามารถผูกที่อยู่เครือข่ายของคอมพิวเตอร์กับอินสแตนซ์ ftp- ภายในและที่อยู่ IP สาธารณะของคอมพิวเตอร์นั้นไปยังอินสแตนซ์ ftp- ภายนอก.

ในตัวอย่างนี้อาจเป็นไปได้ที่จะละทิ้งคุณลักษณะ only_from ในข้อกำหนดของบริการ อย่างไรก็ตามจะปลอดภัยกว่าหากมีข้อ จำกัด เหล่านั้นดังนั้นคำจำกัดความเต็มของเซิร์ฟเวอร์ FTP ภายในและภายนอกของคุณจะเป็น:

บริการ ftp
{
id = ftp- ภายนอก
เซิร์ฟเวอร์ = /usr/sbin/in.ftpd
server_args = -l
อินสแตนซ์ = 4
only_from = 0.0.0.0/0
ผูก = 202.19.244.130
}

บริการ ftp
{
id = ftp-internal
socket_type = กระแส
เซิร์ฟเวอร์ = /usr/sbin/in.ftpd
server_args = -l
only_from = 192.168.1.0/24
ผูก = 192.168.1.5
}

กลยุทธ์นี้กำหนดให้เซิร์ฟเวอร์ FTP ของคุณมีที่อยู่ IP แบบคงที่ซึ่งจัดสรรให้เพื่อการเข้าถึงสาธารณะ นอกจากนี้คุณจะต้องตั้งค่าเซิร์ฟเวอร์ DHCP ของคุณเพื่อจองที่อยู่เดียวกันสำหรับเซิร์ฟเวอร์ FTP ภายในของคุณ แม้ว่าสถานการณ์สมมติข้างต้นจะทำงานเมื่อมีการใช้คอมพิวเตอร์เครื่องเดียวสำหรับการเข้าถึงภายในและภายนอกคุณยังสามารถจัดสรรที่อยู่ของคอมพิวเตอร์แยกสำหรับแต่ละอินสแตนซ์ FTP.

ปิดใช้งานบริการเฉพาะ inetd

มี บริการ xinetd สามรายการ ที่ให้ข้อมูลเกี่ยวกับระบบ.

  • เซิร์ฟเวอร์: รายงานเกี่ยวกับเซิร์ฟเวอร์ที่ใช้งานอยู่
  • บริการ: รายงานเกี่ยวกับบริการที่มีอยู่โปรโตคอลและพอร์ตของพวกเขา
  • xadmin: รวมสองคำสั่งข้างต้น

บริการเหล่านี้เป็นจุดอ่อนด้านความปลอดภัย เพราะแฮกเกอร์สามารถใช้เพื่อรับข้อมูลเกี่ยวกับเครือข่ายและเซิร์ฟเวอร์ของคุณ ดังนั้นจะเป็นการดีกว่าถ้าปิดใช้งาน คุณสามารถทำได้ด้วยแอททริบิวต์ที่ปิดใช้งานซึ่งจะเข้าสู่คุณ ค่าเริ่มต้น คำนิยาม เพียงรวมบรรทัดต่อไปนี้ในส่วนค่าเริ่มต้นของคุณเพื่อลบสิ่งอำนวยความสะดวกเหล่านี้:

disabled = เซิร์ฟเวอร์เซอร์วิส xadmin

ด้วยไฟล์การเปลี่ยนแปลงการกำหนดค่าโดยละเอียดด้านบนตอนนี้คุณสามารถเริ่มใช้ xinetd ได้แล้ว.

กำลังเรียกใช้ xinetd

คุณเริ่ม xinetd ที่บรรทัดคำสั่ง คำสั่งยังสามารถเรียกใช้จากแบตช์ไฟล์เพื่อให้คุณสามารถเพิ่มลงในกระบวนการเริ่มต้นของคอมพิวเตอร์ โปรแกรมสามารถทำงานด้วยตัวเลือกต่อไปนี้:

SwitchOptionDescription
-d แก้ไขข้อบกพร่องโหมด
-syslog               syslog_facility เหมือนกับ log_type SYSLOG ในค่าเริ่มต้นไฟล์ conf
-FileLog logfile เหมือนกับ log_type FILE ในไฟล์ conf เริ่มต้น
-ฉ  config_file ระบุไฟล์คอนฟิกูเรชัน - ค่าดีฟอลต์คือ /etc/xinetd.conf
-pidfile pid_file เขียน ID กระบวนการไปที่ pid_file
-ยังมีชีวิตอยู่ ไม่สิ้นสุด
-จำกัด proc_limit จำนวนกระบวนการสูงสุดที่สามารถรันพร้อมกัน
-logprocs จำกัด จำนวนเซิร์ฟเวอร์สูงสุดที่สามารถทำงานพร้อมกันได้
-รุ่น พิมพ์เวอร์ชัน xinetd
-inetd_compat อ่าน /etc/inetd.conf รวมถึงไฟล์ xinetd config
-ซีซี ระยะห่าง ทำการตรวจสอบความสอดคล้องทุกช่วงเวลาวินาที

นอกจากนี้ยังเป็นไปได้ที่จะเปิดตัว xinetd โดยไม่มีตัวเลือกใด ๆ.

ใช้ xinetd

หากคุณมีคอมพิวเตอร์ Linux คุณอาจติดตั้ง xinetd แล้ว คุณสามารถตรวจสอบได้ด้วยการวิ่ง xinetd -version. หากคอมพิวเตอร์ของคุณใช้งาน inetd แทนโอกาสที่คุณจะไม่ได้ใช้งาน Linux แทนที่โปรแกรมด้วย xinetd และแปลงไฟล์กำหนดค่าของคุณจากความเข้ากันได้ของ inetd เป็นการใช้ xinetd ตามที่อธิบายไว้ข้างต้น.

คุณใช้ xinetd ในตอนนี้หรือไม่? ฝากข้อความไว้ใน ความคิดเห็น ส่วนด้านล่างเพื่อแบ่งปันประสบการณ์ของคุณกับชุมชน.

ดูสิ่งนี้ด้วย: 15 เซิร์ฟเวอร์ Syslog ฟรีที่ดีที่สุด

ภาพ: การเชื่อมต่ออินเทอร์เน็ตเครือข่ายจาก Pixabay ได้รับใบอนุญาตภายใต้ CC0 Creative Commons

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me

About the author

Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.

Leave a Reply

Your email address will not be published. Required fields are marked *

1 + 9 =