آموزش لینوکس

آموزش لینوکس (33)

راهنمایی برای تازه‌کارها بله، لینوکس متفاوت است اما هراس به خودتان راه ندهید. این راهنمای ابتدایی و مفید، هر چیزی که برای آگاهی و آغاز کشف این جهان جدید نیاز دارید در اختیار شما قرار می‌دهد.

در صورت فراموش نمودن پسورد ادمین (root) روی سرور لینوکس (CentOS 6.x) ، با اقدامات زیر میتوانید پسورد جدید را تنظیم نمایید.
در لینوکس کاربر root بالاترین سطح دسترسی به سیستم را دارد و فراموش کردن رمز عبور آن ممکن است مشکل ساز شود. خوشبختانه در لینوکس این قابلیت وجود دارد که به راحتی نسبت به بازیابی پسورد root در لینوکس اقدام کنید و یک رمز عبور جدید جایگزین نمایید.

شما عزیزان می توانید مجموعه گردآوری شده دستورات لینوکس را در قالب فایل pdf را از پیوست دانلود نمایید.

ردهت پشتیبانی از iptables را به عنوان بخشی از پیکر بندی سیستم خود فراهم می کند. وقتی که بسته RPM را برای iptables نصب می کنید ، یک اسکریپت سرویس iptables نصب می شود که دستورات iptables را با استفاده از فایل /etc/sysconfig/iptables می خواند و ذخیره می کند. اگر تنظیم کرده باشید که iptables به طور خودکار وقتی که سیستم خود را راه انداری می کندی ، اجرا شود، این فایل بررسی می شود تا ببیند آیا وجود دارد و خالی نیست یا خیر. اگر چنین بود ، iptables به طور خود کار دستورات iptables را نگه می دارد ، این کار به گرد آوری بیشتر iptables در پردازش تنظیم سیستم کمک می کند. 

 در سیستم های لینوکس، می توانید شبکه ای تنظیم کنید که در آن، بیش از یک تماس به اینترنت داشته باشید و چند سیستم مختلف روی شبکه شما بتوانند از آن استفاده نمایند. بدین روش، با استفاده از تنها یک آدرس IP ، چند سیستم مختلف به اینترنت وصل شوند. این روش را ماسک نمودن IP می نامند، که یک سیستم با استفاده از آدرس IP سیستم دیگر آن را ماسک می کند. در چنین شبکه ای ، یک سیستم با آدرس IP خودش به اینترنت متصل است، در حالی که سیستم های دیگر، به یک شبکه محلی (LAN) روی این سیستم متصل هستند. وقتی که یک سیستم محلی می خواهد به شبکه دسترسی پیدا کند، آن سیستم محلی به عنوان سیستم متصل به اینترنت ماسک می شود و آدرس IP آن را جستجو می کند. 

به علاوه، برای اینکه به بسته های ping وICMP قابل دسترسی مقصد اجازه دهید، قوانین INPUT را با فایروال، به عنوان مقصد وارد می کنید. برای فعال کردن عملیات ping، از هر نوع ICMP مثلا echo-reply و echo-request استفاده می نمایید و برای مقصد غیر قابل دسترسی، نوع destination-unreachable را به کار می برید : 

برای اجازه داده به شبکه داخلی جهت برقراری ارتباط با فایروال، ورود توسط تمام بسته های روی تماس اترنت داخلی (eth1) اجازه داده می شود. آدرس های مجاز شبکه ای داخلی، به عنوان مبدأ ورودی مشخص شده اند : 

جهت اجازه دادن به فایروال برای شبکه های خارجی، ورود توسط بسته ها را به جز بسته های ICMP ، اجازه می دهید. اینها بعداً اداره می شوند. فایروال توسط دستگاه فایروال (eth0) مشخص می گردد. ابتدا، اجازه دهید تا تماسهای برقرار شده و متبط ادامه پیدا کنند: 

برای سرویس دهنده وب، می خواهید تا کاربران خارجی اجازه دسترسی داشته باشند، اما دستیابی توسط هر شخصی که سعی در برقراری یک تماس از سرویس دهنده وب به شبکه خصوصی می کند مسدود کنید. در مثال بعد، تمام پیامها به سرویس دهنده وب قبول می شوند اما سرویس دهنده وب نمی تواند با شبکه خصوصی تماس برقرار کند. این کار از وارد شدن افراد به شبکه محلی از طریق سرویس دهنده وب جلوگیری می کند. زیرا برای دسترسی خارجی باز است. تماسهای برقرار شده اجازه دارند، یعنی شبکه خصوصی می تواند، از سرویس دهنده وب استفاده نماید. 

یک راه برای محافظت شبکه خصوصی از کلاهبرداری IP بسته ها، بررسی آدرس های خارجی روی دستگاه اترنت است که به شبکه خصوصی تخصیص یافته است. در این مثال، هر بسته روی دستگاه eth1 (متعلق به شبکه خصوصی) که آدرسش، از شبکه خصوصی نیست ( ! -s 192.168.0.0 ) مسدود می شود. همچنین بررسی کنید تا ببینید آیا هر بسته ای که از خارج می آید، شبکه خصوصی به عنوان آدرس مبدأ آن است یا خیر. در این مثال، هر بسته با آدرس مبدأ شبکه خصوصی روی هر دستگاه اترنت به جز شبکه خصوصی (eth1) مسدود می گردد. همان روش می تواند برای میزبان محلی نیز اعمال شود. 

ابتدا یک خط مشی DROP برای زنجیر های IP داخلی INPUT و FORWARD تنظیم شده است. این بدین معناست که اگر یک بسته، هیچکدام از قوانین را برای عبور رعایت نکند، مسدود نخواهد شد. سپس هم حملات کلاهبرداری و هم هر تلاشی از خارج برای برقراری تماس (بسته های SYN ) رد خواهد شد. تلاشهای تماس خارجی نیز ثبت می شوند. این یک پیکربندی اصلی است که می تواند که می تواند به سادگی با اضافه کردن قوانین iptables ، طبق نیاز های شما بهبود یابد. 

اکنون اطلاعات کافی برای ایجاد یک اسکریپت iptables ساده را دارید که محافظت اصلی از یک سیستم متصل به اینترنت را فراهم می کند. اسکریپت زیر ، یک عمل فیلتر کردن جداول IP را ارائه می کند تا یک شبکه محلی و یک سایت وب را از حملات خارجی حفظ نماید و یک فایروال ساده برای یک شبکه خصوصی ، پیکربندی می کند ( برای مثال قسمت HOWTO در iptables را بررسی نمایید ). اگر یک شبکه محلی دارید ، می توانید این اسکریپت را طبق آن وفق دهید. در این پیکربندی ، تمام دسترسی های راه دور که از خارج برقرار می شود ،

اگر چه می توانید قوانین iptables را از خط فرمان لایه وارد کنید ، ولی وقتی که سیستم خود را خاموش می نمایید ، این دستورات از بین می روند. در ردهت ، می توانید از پشتیبانی داخلی برای ذخیره کردن و خواندن قوانین iptables با استفاده از اسکریپت سرویس iptables استفاده نمایید.

جدول خرد کردن بسته برای تغییر واقعی اطلاعات بسته استفاده می شود. قوانین خاص اعمال شده به این جدول ، اغلی طراحی شده اند تا رفتار ذاتی بسته ها ، مثل مسیر ، اندازه تماس اندازه تماس و اولویت را اکنترل کنند. قوانینی که به طور واقعی یک بسته را تغییر می دهند ( به جای تغییر مسیر ساده یا توقف آن ) ، می توانند فقط در یک جدول خردکن استفاده شوند. به عنوان مثال ، هدف TOS می تواند به طور مستقیم در جدول خرد کن استفاده شود تا فیلد Type of Service را تغییر دهد و اولویت یک بسته را تغییر دهد. یک هدف TCPMSS می تواند تنظیم گردد تا اندازه یک تماس را کنترل کند. هدف ECN به شما اجازه می دهد تا با حفره های ECN کار کنید و هدف DSCP به شما اجازه خواهد داد تا با بیت های DSCP را تغییر دهید. چند الحاق ROUTE ، یک بسته را تغییر می دهد که در اینجا مقصدش را مجددا می نویسد به جای اینکه فقط آن را تغییر مسیر دهد. 

اگر سیستم شما یک سرویس اینترنت را میزبانی می کند ( مثل یک سرویس دهنده وب یا FTP ) ، می توانید از iptables برای کنترل دستیابی به آن استفاده نمایید. می توانید با استفاده از سوئیچ های درگاه مبدأ ( --sport ) یا در گاه مقصد ( --dport ) به همراه درگاهی که سرویس استفاده می کند، یک سرویس خاص را مشخص نمایید. iptables به شما اجازه می دهد تا از نامها برای درگاهها استفاده کنید. مثل www برای درگاه سرویس دهنده وب. نام سرویس ها و درگاههایی که آنها استفاده می کنند در فایل /etc/services لیست شده است، که درگاه ها را به سرویس های خاص نگاشت می کند. برای یک سرویس نامگذاری دامنه درگاه ، domain خواهد بود. همچنین اگر بخواهید می توانید از شماره درگاه استفاده نمایید که باید قبل از شماره، علامت دو نقطه ( : ) بیاورید. مثال زیر ، تمام پیامها به سرویس دهنده وب واقع در 192.168.0.43 را دریافت می کند : 

جداول NAT می توانند برای پیاده سازی هر نوع تغییر مسیر بسته استفاده شوند که یک عمل شفاف برای کاربر است. تغییر مسیر برای پیاده سازی یک پراکسی شفاف استفاده می شود. تغییر مسیر بسته ها توسط هدف REDIRECT صورت می پذیرد. توسط پراکسی شفاف ، بسته های دریافتی می توانند به طور خودکار به یک سرویس دهنده پراکسی تغییر مسیر یابند. به عنوان مثال ، بسته های رسیده به درگاه سرویس وب ( 80 ) ، می توانند به درگاه سرویس Squid Proxy تغییر جهت یابند که معمولا 3128 است. این کار مستلزم یک دستور برای تغییر جهت یک بسته می باشد که از هدف REDIRECT روی زنجیر PREROUTING استفاده می کند : 

# iptables -t nat -A PREROUTING -i eth1 --dport 80 REDIRECT --to-port 3128 

به علاوه ، دو نوع عمل NAT وجود دارد. NAT مبدا که به صورت هدف SNAT مشخص می شود ، و NAT مقصد ، که به صورت هدف DNAT مشخص می گردد. هدف SNAT برای قوانینی استفاده می شود که آدرس های مبدا را تغییر می دهند و هدف DNAT برای آنهایی است که آدرسهای مقصد را عوض می کنند. 

 

سه زنجیر در جدول NAT توسط کرنل برای عملیات NAT استفاده می شود که عبارتند از : PREROUTING ، POSTROUTING ، و OUTPUT . PREROUTING برای قوانین NAT مقصد ( DNAT ) استفاده می شود. اینها برای بسته هایی می باشند که ترک می شوند. OUTPUT برای قوانین NAT مقصد مربوط به بسته های تولید شده محلی به کار می رود. 

 

همانند فیلتر کردن بسته ، می توانید آدرس های مبدا ( -s ) و مقصد ( -d ) را به همراه دستگاه های ورودی ( -i ) و خروجی ( -o ) مشخص کنید. سوئیچ کردن -j یک هدف مثل MASQUERADE را مشخص می نماید. با اضافه کردن قانون MASQUERADE به زنجیره POSTROUTING ، ماسک IP را پیاده سازی می کنید : 

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

 

برای تغییر آدرس مبدا یک بسته که سیستم شما را ترک می کند ، از قانون POSTROUTING به همراه هدف SNAT استفاده می کنید. برای هدف SNAT ؛ از سوئیچ --to-source برای مشخص کردن آدرس مبدا استفاده می نمایید : 

# iptables -t nat -A POSTROUTING -o eth0 -j --to-source 192.168.0.4 

برای تغییر آدرس مقصد بسته هایی که به سیستم شما می رسند ، از قانون PREROUTING به همراه هدف DNAT و سوئیچ --to-destination استفاده می کنید : 

# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 192.168.0.3 

 

مشخص کردن یک درگاه به شما اجازه می دهد تا مقصد بسته هایی را که به یک درگاه خاص می رسند تغییر دهید. در عمل ، این امکان را میسر می سازد. در مثال بعد ، هر بسته ای که به درگاه 80 برسد 0 درکاه سرویس وب ) به 10.0.0.3 منتقل می شود که در این حالت می تواند یک لیست سرویس دهنده وب را اجرا کند. 

# iptables -t nat -A PREROUTING -i eth0 --dport 80 \
 -j DNAT --to-destination 10.0.0.3  

 

با هدفهای TOS و MARK می توانید بسته را خرد کنید تا مسیر یا اولویت آن را کنترل نمایید. یک هدف TOS ، نوع سرویس یک بسته را تنظیم می کند ، که اولویت را با استفاده از معیارهایی مثل normal-services ، minimize-cost ، maximize-throughput بین بقیه ، تعیین می نماید. 

 

هدفهایی که تنها برای جدول NAT مجاز می باشند در اینجا نشان داده شده اند : 

SNAT

آدرس مبدا را تغییر می دهد، از سوئیچ --to-source برای مشخص کردن آدرس مبدا جدید استفاده کنید.  

DNAT

آدرس مقصد را تغییر می دهد، از سوئیچ --to-destination برای مشخص کردن آدرس مقصد جدید استفاده کنید.

REDIRECT

یک بسته را تغییر می دهد.  

MASQUERADE

ماسک IP

MIRROR

مبدا و مقصد را برعکس می کند و به فرستنده می فرستد.  

MARK

فیلد MARK را تغییر می دهد تا مسیر پیام را کنترل کند.

قوانین انتخاب بسته برای عملیات NAT که به جدول NAT اضافه شده اند ، توسط دستور iptables مدیریت می شوند. برای اضافه کردن قوانین به جدول NAT ، باید جدول NAT را با سوئیچ -t مشخص کنید. بنابراین برای افزودن یک قانون به جدول NAT باید جدول NAT را با سوئیچ -t nat بدین شکل مشخص نمایید : 

iptables -t nat  

 

با سوئیچ -L می توانید قوانین اضافه شده به جدول NAT را لیست کنید : 

iptables -t nat _L -n

 

اضافه کردن سوئیچ -n آدرس های IP و درگاهها را به شکل عددی لیست می نماید. این کار فهرست گیری را سرعت می بخشد، چون iptables سعی نمی کند که یک جستجوی DNS برای تعیین نام میزبان ، روی آدرس IP انجام دهد. 

 

ترجمه آدرس شبکه ( NAT ) ، فرآیندی است که طی آن سیستم ، مقصد یا بسته هایی که در طول سیستم عبور می کنند را تغییرمی دهد. یک بسته قبل از اینکه به مقصر نهایی خود برسد ، از چند سیستم به هم متصل روی یک شبکه عبور می کند. به طور عادی ، آنها به سادگی بسته را عبور می دهند. به هر حال اگر یکی از این سیستم ها ، یک NAT روی یک بسته انجام دهد ، ممکن است مبدا یا مقصد آن عوض شود. یک بسته که قرار است به یک مقصد خاص برسد ، احتمال دارد که آدرس مقصدش تغییر کند. برای این کار ، سیستم باید چنین تغییراتی را به خاطر بسپارد تا مبدا و مقصد برای بسته های پاسخ ، به آدرس های اصلی بسته ای که به آن پاسخ داده می شود ، اطلاع دهند. 

 

NAT اغلب برای فراهم کردن دسترسی به سیستم هایی استفاده می شود که ممکن است تنها از طریق یک آدرس IP به اینترنت متصل باشند. این مطلب در مورد ویژگی های شبکه ای چون ماسک IP ، پشتیبانی از چند سرویس دهنده ، و پراکسی انتقال وجود دارد. با ماسک IP ، عملیات NAT ، مقصد و مبدا یک بسته که در طول یک فایروال / دروازه حرکت می کند و اینترنت را به کامپیوتر های روی یک شبکه محلی متصل می کند ، تغییر می دهد. دروازه ، یک آدرس IP منفرد دارد که دیگر کامپیوتر های محلی می توانند از طریق عملیات NAT آن استفاده کنند. اگر چند سرویس دهنده و تنها یک آدرس IP دارید ، می توانید از عملیات NAT برای فرستادن بسته ها به سرویس دهنده های جایگزین استفاده نمایید. همچنین می توانید برای اینکه آدرس IP شما به برنامه کاربردی یک سرویس دهنده خاص ( مثل سرویس دهنده وب ) اشاره کند، از عملیات NAT استفاده کنید ( پراکسی انتقال ). 

 

یکی از مفید ترین الحاقات ، حالتی است که به طور ساده می تواند اطلاعات ردیابی برای یک بسته را تشخیص دهد. ردیابی تماس یکی از ، اطلاعاتی در مورد یک تماس را نگه می دارد. مثل مبدا ، مقصد و درگاه آن. این کار یک ابزار مؤثر برای تعیین بسته هایی است که متعلق به یک تماس برقرار شده یا مرتبط می باشد. ابتدا باید با -m state ماژول حالت را مشخص کنید. سپس قادرید از سوییچ -state استفاده نمایید. در اینجا می توانید هر کدام از حالات زیر را مشخص کنید : 

حالت

توضیح

NEW

یک بسته که یک تماس جدید ایجاد می کند.

ESTABLISHED

یک بسته که به تماس موجود متعلق است.

RELATED

یک بسته که مربوط به ( و نه بخشی از ) یک تماس موجود است. مثل یک خطای ICMP با یک بسته که یک تماس داده ای FTP را برقرار می کند.

INVALID

یک بسته که به دلایلی نمی تواند شناسایی شود.

RELATED+REPLY

یک بسته که مربوط به یک تماس برقرار شده است اما به طور مستقیم بخشی از آن نیست.

 

اگر یک فایروال طراحی می کنید تا شبکه محلی خود را از هر تلاش برای نفوذ به آن از طریق یک شبکه خارجی محفوظ دارید، ممکن است بخواهید بسته های دریافتی را محدود کنید. مسدود کردن تمام بسته ها غیر منطقی است زیرا کاربران متصل به سرویس دهنده های خارجی ( مثل اینترنت ) ، باید اطلاعات را از آنها دریافت کنند. به جای آن می توانید دسترسی یک نوع خاصی از بسته که برای برقراری ارتباط استفاده می شود را مسدود کنید. عقیده بر این است که یک مهاجم باید یک تماس را از خارج برقرار سازد. عناوین این نوع بسته ها ، دارای بیت SYN روشن و بیت های FIN و ACK خالی می باشند. حالت NEW ماژول state با چنین بسته های SYN مطابقت می کند. با مشخص کردن یک هدف DROP برای چنین بسته هایی ، دسترسی تمام بسته هایی که بخشی از یک تلاش برای برقراری تماس با سیستم شما هستند را مسدود می نمایید. هر کسی از خارج سعی کند به سیستم شما وصل شود ، نمی تواند این کار را انجام دهد ، کاربران روی سیستم محلی شما که تماسهای برقرار با میزبان های خارجی دارند ، باز هم نمی توانند این کار را انجام دهد. کاربران روی سیستم محلی شما که تماسهای برقرار با میزبانهای خارجی دارند ، باز هم می توانند با آنها ارتباط برقرار نمایند. مثال زیر ، هر بسته ای که سعی به ایجاد یک تماس جدید روی رابط eth0 می نماید را رد می کند، اگر چه آنها روی هر رابط دیگری پذیرفته می شوند : 

iptables -A INPUT -m state --state NEW -i eth0 -j DROP 

 

می توانید از عملگر ! روی دستگاه eth0 که با یک هدف ACCEPT ترکیب شده است ، برای ایجاد یک قانون استفاده کنید که تمام بسته های جدید به جز آنهایی که روی دستگاه eth0 هستند را قبول می کند. اگر دستگاه eth0 تنها دستگاهی است که به اینترنت متصل است ، این کار عملا دسترسی خارجی را مسدود می نماید. در همان حال ، اگر عمل ورود برای دیگر دستگاه هایی چون میزبان محلی شما ، آزاد هستند تا تماس برقرار سازند. این نوع قانون INPUT شرطی ، برای استفاده می شود تا دسترسی کلی را به جز چند استثناء اجازه دهد. معمولا فرض می شودکه یک قانون دیگر مثل یک خط مشی دیگر ، بسته های باقیمانده را رد می کند. 

iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT

 

مثال بعد تمامی بسته هایی که بخشی از یک تماس برقرار می باشند یا مربوط به یک تماس روی رابط eth0 می باشند را قبول می کند : 

iptables -A INPUT -m state --state ESTABLISHES,RELATED -j ACCEPT 

 

صفحه1 از2

"«قیمتی که در هنگام سفارش مشتري در پیش‌فاکتور منظور گرديده است، معتبر مي‌باشد»."