inetd(8) нь олон тооны үйлчилгээний сүлжээний холболтыг удирддаг тул заримдаа түүнийг “Интернэт Супер-Сервер” гэж нэрлэх нь бий. Гаднаас үүсч буй холболтыг inetd хүлээн авч, аль програмтай холбогдохыг тодорхойлон, тухайн процессийг салаалуулж, сокетийг түүн рүү чиглүүлнэ (програмын стандарт оролт, гаралт болон алдааны дескриптороор үйлчилгээний сокетийг өгнө). Байнга ашиглагддаггүй үйлчилгээний хувьд inetd-г ажиллуулах нь бүх дэмонг дангаар бие-даах горимд ажиллуулсантай харьцуулахад системийн нийт ачааллыг бууруулж өгдөг.
Голчлон, inetd нь бусад дэмонуудыг салаалуулахад хэрэглэгддэг боловч chargen, auth, ба daytime гэх мэт нилээд олон ердийн протоколуудыг шууд зохицуулан ажиллуулж чадна.
Энэ хэсэгт inetd-н үндсэн тохиргоог тушаалын мөрний тохируулгаар, мөн /etc/inetd.conf тохиргооны файлаар хэрхэн хийхийг үзэх болно.
inetd нь rc(8) системээр эхлүүлэгдэнэ. inetd_enable тохируулгын анхдагч утга нь NO бөгөөд, системийг суулгах явцад хэрэглэгчийн зааж өгсний дагуу sysinstall програмын тусламжтай идэвхжүүлж болно.
inetd_enable="YES"
эсвэл
inetd_enable="NO"
гэсэн мөрийг /etc/rc.conf файл дотор байрлуулснаар inetd-г систем ачаалахад эхэлдэг болгож болно. Доор дурдсан:
/etc/rc.d/inetd rcvar
тушаалыг өгөн одоо идэвхтэй байгаа тохиргоог харж болно.
Дээр нь, inetd_flags тохируулгаар дамжуулан inetd програмд тушаалын мөрнөөс өөр бусад тохируулгуудыг зааж өгч болно.
Ихэнх сервер дэмоны нэгэн адил, inetd нь түүнийг өөрчлөн тохируулахад зориулагдсан олон тооны тохируулгуудын хамт ирдэг. Сонголтуудын бүрэн жагсаалтыг inetd(8) гарын авлагын хуудаснаас үзнэ үү.
/etc/rc.conf файл доторх inetd_flags тохируулгыг ашиглан эдгээр тохируулгуудыг inetd-д дамжуулна. Анхдагч байдлаар, inetd_flags нь -wW -C 60 гэсэн утгыг авсан байх ба энэ нь inetd-ны үйлчилгээнүүдийн хувьд TCP wrapping буюу TCP-ийн дундын хяналтыг идэвхжүүлэх ба нэг IP хаягнаас аль нэг үйлчилгээнд нэг минутанд 60-аас дээш удаа хүсэлт тавих боломжгүй болгоно.
Хэдийгээр бид хурдыг хэрхэн хязгаарлахыг доор үзүүлж байгаа ч, анхлан суралцагчдын хувьд эдгээр параметрүүдийг ихэвчлэн өөрчлөх шаардлагагүй байдаг. Эдгээр тохируулга нь гаднаас хэтэрхий олон тооны хандалт хийгдэж байгаа үед тустай байдаг Тохируулгуудын бүрэн жагсаалтыг inetd(8) заавар хуудаснаас үзнэ үү.
Үйлчилгээг нэгэн зэрэг хамгийн ихдээ хэдэн
удаа дуудаж болохыг заана; Анхдагч утга нь
хязгааргүй. Үйлчилгээ тус бүрээр max-child
параметрийн тусламжтай утгыг
дарж өөрчилж болно.
Үйлчилгээг нэг IP хаягнаас нэг минутын дотор
хамгийн ихдээ хэдэн удаа дуудаж болохыг заана;
Анхдагч утга нь хязгааргүй. Үйлчилгээ тус бүрээр
max-connections-per-ip-per-minute
параметрийн
тусламжтай утгыг дарж өөрчилж болно.
Үйлчилгээг нэг минутын дотор хамгийн ихдээ хэдэн удаа дуудаж болохыг заана; Анхдагч утга нь 256. 0-г тавьснаар хязгааргүй болгоно.
Үйлчилгээг нэг IP хаягнаас хамгийн ихдээ хэдэн
удаа дуудаж болохыг заана; Анхдагч утга нь
хязгааргүй. Үйлчилгээ тус бүрээр max-child-per-ip
параметрийн тусламжтай
утгыг дарж өөрчилж болно.
inetd-г /etc/inetd.conf файлын тусламжтай тохируулна.
/etc/inetd.conf файлд өөрчлөлт хийсний дараа, inetd-р тохиргооны файлыг дахин уншуулахдаа дараах тушаалыг өгнө:
Тохиргооны файлын мөр бүр тусдаа дэмонг заана. Файл доторх тайлбарууд нь мөрийн эхэнд “#” тэмдэгтэй байна. /etc/inetd.conf файл доторх бичлэгүүдийн формат дараах байдалтай байна:
service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] user[:group][/login-class] server-program server-program-arguments
IPv4 ашигладаг ftpd(8) дэмоны хувьд жишээ бичлэг дараах байдалтай байж болно:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
Тухайн дэмоны үйлчилгээний нэрийг заана. Энэ нь /etc/services файл дотор бичигдсэн үйлчилгээнүүдийн нэг байх ёстой бөгөөд аль портон дээр сонсохыг inetd-д хэлж өгнө. Хэрэв шинэ үйлчилгээ үүсгэсэн бол түүнийг заавал /etc/services файл дотор нэмсэн байх ёстой.
stream, dgram, raw, эсвэл seqpacket эдгээрийн нэг байна. stream-г холболтон дээр үндэслэсэн TCP дэмонуудын хувьд хэрэглэдэг бол, dgram-г UDP протоколоор ажилладаг дэмонуудын хувьд хэрэглэнэ.
Доор дурдсанаас нэг нь байна:
wait|nowait
нь inetd-р
дуудагдсан дэмон өөрийн сокетийг удирдаж чадах
эсэхийг заана. dgram
төрлийн сокет
дэмоны хувьд wait
тохируулгыг
хэрэглэх ёстой байдаг бол, ихэвчлэн олон
урсгалтай байдаг stream
сокет
дэмоны хувьд nowait
тохируулгыг
хэрэглэх хэрэгтэй байдаг. wait
нь
ихэвчлэн олон сокетийг нэг дэмонд шилжүүлэн
өгдөг бол, nowait
нь шинээр үүссэн
сокет тус бүрт харгалзуулан хүүхэд дэмонг
салаалуулан үүсгэдэг.
inetd-ийн салаалуулан үүсгэж болох
хамгийн их хүүхэд дэмоны тоог max-child
тохируулгын тусламжтай зааж
өгч болно. Хэрэв тухайн дэмоны ажиллаж болох
тохиолдлыг 10-р хязгаарлах бол, nowait
-н ард /10 гэж бичнэ.
/0 нь хүүхдийн тоог хязгаарлахгүй
гэсэн утгатай.
max-child
-с гадна, нэг газраас
тухайн дэмонтой үүсгэж байгаа холболтын тоог
хязгаарладаг өөр хоёр тохируулгыг хэрэглэж
болно. max-connections-per-ip-per-minute
нь
тухайн ямар нэг IP хаягнаас нэг минутанд үүсгэж
болох холболтын тоог хязгаарлана, жишээлбэл: 10
гэсэн утга нь тухайн ямар нэг IP хаягнаас нэг
минутын дотор тухайн үйлчилгээнд холбогдохоор
оролдох оролдлогын тоог 10-р хязгаарлана. max-child-per-ip
нь Тухайн ямар нэг IP хаяг
дээр үүсгэгдсэн хүүхдийн тоог хязгаарлана.
Эдгээр тохируулгууд нь санаатай болон
санамсаргүйгээр нөөцийг хэтрүүлэн хэрэглэх, мөн
Үйлчилгээг Зогсоох (DoS) халдлагаас хамгаалахад
хэрэгтэй байдаг.
Хэрэглэхдээ, wait
ба nowait
хоёрын аль нэгийг заавал
хэрэглэх ёстой. Харин max-child
,
max-connections-per-ip-per-minute
ба max-child-per-ip
тохируулгуудыг сонгон
хэрэглэж болно.
Stream төрлийн олон урсгалтай дэмоны хувьд, max-child
, max-connections-per-ip-per-minute
эсвэл max-child-per-ip
хязгаарлалтуудын алийг ч
хэрэглэхгүй тохиолдолд ердөө: nowait
байна.
Дээрхтэй адил дэмон, 10 хүүхэд дэмоны хязгаарлалттай бол: nowait/10 байна.
Мөн адил дэмон, 10 хүүхэд дэмоны хязгаарлалттай, минутанд нэг IP хаягнаас үүсгэх холболтын тоог 20-р хязгаарлах бол: nowait/10/20 болно.
Эдгээр тохируулгуудыг fingerd(8) дэмоны анхдагч тохиргоон дээр жишээ болгон харвал:
finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
Эцэст нь, 100 хүүхдийн хязгаарлалттай, нэг IP хаягнаас үүсэх холболтын тоог 5-р хязгаарласан дэмоны жишээг авбал: nowait/100/0/5 байх юм.
Энд тухайн дэмон ямар хэрэглэгчийн нэрээр ажиллахыг зааж өгнө. Ихэвчлэн дэмонууд root хэрэглэгчийн нэр дээр ажилладаг. Аюулгүй байдлын үүднээс, зарим серверүүд daemon, эсвэл хамгийн бага эрхтэй nobody хэрэглэгчийн нэр дээр ажиллах нь элбэг байдаг.
Энд гаднаас холболт хүлээн авахад ажиллуулах
дэмоны бүрэн замыг зааж өгнө. Хэрэв энэ дэмон inetd-р удирдагдсан дотоод үйлчилгээ
бол internal
тохируулгыг хэрэглэх
хэрэгтэй.
Үүнийг server-program
-тай хамт, argv[0]-с эхлэн програмын аргументыг
зааж өгөх байдлаар хэрэглэнэ. Хэрэв командын
мөрөнд mydaemon -d гэсэн байдлаар
хэрэглэдэг бол, server-program-arguments
-н
утга mydaemon -d байна. Дахин хэлэхэд,
хэрэв тухайн дэмон дотоод үйлчилгээний нэг бол
internal
-г энд мөн хэрэглэнэ үү.
Үйлдлийн системийг суулгах үед хийсэн сонголтуудаас хамааран inetd-н үйлчилгээнүүдийн ихэнх нь идэвхтэй болсон байдаг. Хэрэв хэрэглэх онцын шаардлага байхгүй бол тэдгээрийг идэвхгүй болгоно уу. /etc/inetd.conf файл дотор, идэвхгүй болгох гэж байгаа демоныхоо харгалзах мөрийн урд “#” тэмдгийг тавьж өгнө. Дараа нь inetd-н тохиргоог дахин ачаална. fingerd зэрэг зарим дэмонууд гадны халдагчид хэрэгтэй мэдээллийг түгээж байдаг тул тэдгээр үйлчилгээг бүрмөсөн хааж болох юм.
Зарим дэмонууд аюулгүй байдлыг
бодолцолгүйгээр бүтээгдсэн байдаг ба холболт
тогтоох харьцангуй урт болзоот хугацаатай,
эсвэл болзоот хугацааг огт зааж өгөөгүй байдаг.
Энэ нь халдагчид тодорхой дэмон уруу холболт
тогтоох хүсэлтийг олон дахин илгээж, нөөцийг
дуусгах замаар системд халдах боломжийг
олгодог. Хэрэв ямар нэг дэмоны хувьд үүссэн
холболтын тоо хэтэрхий олон байвал max-connections-per-ip-per-minute
, max-child
эсвэл max-child-per-ip
тохиргооны тусламжтайгаар хязгаарлалт хийх нь
оновчтой байдаг.
Анхдагч байдлаар TCP-ийн дундын хяналт (гүйцэтгэл хялбаршуулалт) идэвхтэй байдаг. inetd-р дуудагдсан дэмонуудын хувьд TCP хязгаарлалтыг хэрхэн тавих талаар дэлгэрэнгүй мэдээллийг hosts_access(5) заавар хуудаснаас үзнэ үү.
daytime, time, echo, discard, chargen, ба auth бүгд inetd-н дотоод үйлчилгээнүүд юм.
auth үйлчилгээ нь сүлжээний орчинд, тодорхойлолт өгөх үйлчилгээ үзүүлдэг бөгөөд тодорхой түвшинд тохиргоо хийх боломжтой байдаг бол бусад үйлчилгээнүүдийг зөвхөн идэвхтэй эсвэл идэвхгүй болгох боломжтой.
Дээрх үйлчилгээнүүдийн талаар бүрэн дүүрэн мэдээллийг inetd(8) заавар хуудаснаас үзнэ үү.
Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.
FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай
холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим
захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт
байвал <admin@mnbsd.org>
хаягаар цахим захидал явуулна уу.