را /etc/nsswitch.conf فایل نقش مهمی را در سیستمهای لینوکس با تعریف اینکه سیستم چگونه انواع مختلف اطلاعات مانند کاربران، گروهها، میزبانها یا سرویسها را حل میکند، ایفا میکند. این فایل ترتیب و روش انجام این جستجوها را مشخص میکند و مدیران را قادر میسازد تا نحوه تعامل سیستم با منابع داده مختلف را کنترل کنند.
آیا تا به حال ابزارهایی مانند پیکربندی کرده اید FreeIPA یا OpenLDAP برای مدیریت کاربران و مجوزهای سیستم لینوکس خود؟ یا آیا تا به حال نیاز داشته اید که دسترسی به هاست خاصی را در سرورهای خود قفل کنید؟ اینجاست که اهمیت nsswitch.conf آشکار می شود. این فایل به شما اجازه می دهد تا نحوه انجام جستجوها برای منابع داده مانند انجام شود ldap، dns، فایل ها، و بیشتر.
با این حال، نادیده گرفتن پیکربندی صحیح این فایل می تواند منجر به خطرات امنیتی جدی شود. به عنوان مثال:
اضافه کردن نامعتبر LDAP منبع ممکن است به مهاجمان اجازه به دست آوردن را بدهد ریشه دسترسی به سیستم شما
پیکربندی اشتباه mdns می تواند باعث اتصال سرویس ها به مقاصد مخرب یا ناخواسته شود.
در این مقاله به بررسی ساختار آن می پردازیم nsswitch.conf فایل، پارامترهای حیاتی آن و نحوه پیکربندی صحیح آن. برای درک عمیق تر از نحوه کار جستجوهای DNS در لینوکس، می توانید به Anatomy of a Linux DNS Lookup – Part I و Part II مراجعه کنید.
ساختار nsswitch.conf
را nsswitch.conf فایل شامل خطوطی است که a را تعریف می کند پایگاه داده و منابع جستجوی مرتبط با آن هر خط از این قالب کلی پیروی می کند:
: [
: نوع اطلاعاتی که در حال حل شدن هستند را مشخص می کند (مثلاً کاربران، گروه ها، میزبان).
: منبع یا سرویس مورد استفاده برای جستجو را نشان می دهد (به عنوان مثال، files، ldap، dns).
: رفتار یا شرایط اضافی را برای جستجوها ارائه می دهد (به عنوان مثال، [NOTFOUND=return]).
همچنین می توانید برای درک گسترده تر از این سیستم به اسناد Oracle در Name Service Switch مراجعه کنید.
منابع کلیدی در nsswitch.conf
1. files
را files منبع از فایل های محلی برای بازیابی اطلاعات استفاده می کند. به عنوان مثال:
داده های کاربر و گروه از آن بازیابی می شود /etc/passwd و /etc/group.
نام هاست با استفاده از آن حل می شود /etc/hosts.
این سریعترین و امنترین گزینه است و اغلب در اکثر پیکربندیها اول فهرست میشود.
2. dns
را dns منبع پرس و جو از سرورهای DNS برای حل نام هاست در آدرس های IP می شود. این معمولا در استفاده می شود hosts پایگاه داده
مثال:
hosts: files dns
این به سیستم می گوید که ابتدا بررسی کند /etc/hosts و اگر نام میزبان پیدا نشد، از سرور DNS پرس و جو کنید.
جزئیات نحوه عملکرد رزولوشن DNS، از جمله تعامل آن با ابزارهایی مانند getaddrinfo و resolv.conf، به طور گسترده در Anatomy of a Linux DNS Lookup – Part I و Part II پوشش داده شده است.
3. ldap
را ldap منبع یک سرور LDAP را برای بازیابی کاربر، گروه یا داده های دیگر درخواست می کند. معمولاً در محیط های شبکه ای برای مدیریت مرکزی کاربران استفاده می شود.
مثال:
passwd: files ldap
این پیکربندی به سیستم دستور می دهد که ابتدا داده های کاربر را در آن جستجو کند /etc/passwd و سپس سرور LDAP را پرس و جو کنید.
نکته امنیتی: پیکربندی نادرست یا اضافه کردن یک سرور LDAP نامعتبر می تواند به مهاجمان اجازه دهد تا کاربران ممتاز را به سیستم تزریق کنند.
4. nis و nisplus
را nis و nisplus منابع اطلاعات را با استفاده از سرویس اطلاعات شبکه (NIS) یا نسخه پیشرفته آن، NIS+ بازیابی می کنند. اینها اغلب در محیط های شبکه قدیمی استفاده می شوند.
مثال:
netgroup: nis
این به سیستم دستور می دهد تا اطلاعات گروه شبکه را از NIS بازیابی کند.
5. mdns و mdns4_minimal
را mdns منبع DNS Multicast (mDNS) را فعال می کند که برای حل نام هاست در شبکه های محلی بدون نیاز به سرور DNS مرکزی استفاده می شود.
مثال:
hosts: files mdns4_minimal [NOTFOUND=return] dns
mdns4_minimal آدرس های IPv4 را با استفاده از mDNS حل می کند.
[NOTFOUND=return] در صورت یافتن هیچ سابقه ای، جستجوهای بیشتر را متوقف می کند و کارایی و امنیت را بهبود می بخشد.
6. db
را db منبع داده ها را از پایگاه داده های محلی در بازیابی می کند برکلی دی بی قالب این برای پایگاه داده هایی مانند استفاده می شود protocols و services.
مثال:
services: db files
این به سیستم دستور می دهد که ابتدا در مورد آن پرس و جو کند services.db فایل و سپس به /etc/services.
7. compat
را compat منبع با ترکیب داده های فایل محلی با پرس و جوهای NIS سازگاری رو به عقب را برای سیستم های NIS قدیمی تر فراهم می کند.
8. hesiod
را hesiod منبع داده ها را از DNS برای اطلاعات کاربر و گروه بازیابی می کند. به ندرت در سیستم های مدرن استفاده می شود.
گزینه ها در nsswitch.conf
[NOTFOUND=return]
این گزینه به سیستم دستور میدهد تا در صورت عدم موفقیت جستجو برای یافتن دادههای درخواستی، جستجوی منابع دیگر را متوقف کند.
مثال:
hosts: files mdns4_minimal [NOTFOUND=return] dns
در این مثال، اگر mdns4_minimal نمی تواند نام میزبان را حل کند، سیستم دیگر به نظر نمی رسد و DNS را درخواست نمی کند.
مثال nsswitch.conf پیکربندی
در زیر یک پیکربندی معمولی برای nsswitch.conf:
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns mymachines
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
passwd، group، shadow، gshadow: داده های کاربر و گروه ابتدا از فایل های محلی بازیابی می شود.
hosts: نام هاست با استفاده از آن حل می شود /etc/hosts، mdns4_minimalو سپس DNS.
protocols، services، ethers، rpc: اطلاعات شبکه از فایل های Berkeley DB و فایل های متنی محلی بازیابی می شود.
نتیجه گیری
را nsswitch.conf فایل یکی از مهمترین فایل های پیکربندی در لینوکس است. این کنترل می کند که چگونه سیستم اطلاعات مهم را حل می کند و می تواند به طور قابل توجهی بر امنیت و عملکرد تأثیر بگذارد. پیکربندی نادرست در این فایل میتواند منجر به مشکلات جدی مانند دسترسی غیرمجاز یا مسیریابی نادرست سرویسها شود. با درک منابع موجود و رفتار آنها، مدیران می توانند سیستم های خود را به گونه ای پیکربندی کنند که هم کارآمد و هم ایمن باشد.
برای مطالعه بیشتر در مورد وضوح DNS و پیچیدگیهای نحوه رسیدگی لینوکس به جستجوها، آناتومی جستجوی DNS لینوکس – بخش اول و دوم را بررسی کنید.