در صورتی که شما یک سرور مجازی لینوکس دارید و فایروال لینوکس را روی آن نصب نکرده اید، با این که این مسئله امری متداول است، اما شما سرور مجازی لینوکس خود را به شدت به خطر انداخته اید.
با کانفیگ فایروال لینوکس روی سرور مجازی خود، شما این امکان را خواهید داشت که برنامه های نصب شده ی پر خطری که به اینترنت وصل هستند را شناسایی و حذف کنید. این باعث می شود سرور و پورت های سرور شما در برابر نفوذ و آسیب پذیری مصون باشند.
این مقاله به شما نحوه نصب و کانفیگ فایروال لینوکس به نام iptables را در سرورهای مجازی لینوکس آموزش می دهد. با یادگیری این فایروال لینوکس، شما می توانید سرور مجازی لینوکس خود را در برابر برنامه های پر خطر ایمن کنید.
iptables یک برنامه فایروال برای لینوکس است. این برنامه با استفاده از جدول های خاصی ترافیک ورودی و خروجی سرور شما را بررسی می کند. این جداول حاوی مجموعه قوانینی هستند که زنجیره نامیده می شوند و پکت های ورودی و خروجی را فیلتر می کنند.
در صورتی که یک پکت با قوانین مطابقت داشته باشد، به آن یک هدف داده می شود که آن هدف می تواند یکی از موارد زیر باشد:
ACCEPT یا قبول که این مورد به بسته اجازه عبور می دهد.
DROP یا رها کردن که اجازه عبور به بسته نمی دهد.
RETURN یا بازگشت که عبور یک بسته از طریق زنجیره را متوقف می کند و به او می گوید که به زنجیره قبلی بازگردد.
نصب فایروال لینوکس
اولین مرحله در نصب فایروال لینوکس این است که تصمیم بگیرید کدام یک از پورت های فایروال را مسدود کنید یا باز بگذارید. این مورد با توجه به استفاده شما از سرور مجازی لینوکس، متفاوت خواهد بود. به عنوان مثال، اگر از یک وب سرور استفاده می کنید، به احتمال زیاد می خواهید پورت های زیر باز باشند:
- Web: 80 and 443
- SSH که به طور معمول روی پورت 22 اجرا می شود.
- (Email: 110 (POP3), 143 (IMAP), 993 (IMAP SSL), 995 (POP3 SSL
یک نکته امنیتی در این جا وجود دارد، آن هم این است که بهتر است پورت SSH خود را به پورت غیر پیش فرض تغییر دهید. سپس به ادامه نصب بپردازید.
نصب فایروال لینوکس Iptables
Iptables در اکثر توزیع های لینوکس از قبل نصب شده است. با این حال، اگر به طور پیش فرض آن را در سیستم لینوکسی خود ندارید، مراحل زیر را دنبال کنید:
برای اتصال به سرور از طریق SSH با برنامه PUTTY از دستورات زیر استفاده کنید:
sudo aptitude install putty
sudo aptitude install putty-tools
سپس برای نصب و آپدیت فایروال لینوکس Iptables، از دستورات زیر استفاده کنید:
sudo apt-get update
sudo apt-get install iptables
اکنون با اجرای فایروال لینوکس وضعیت کانفیگ فعلی iptables خود را بررسی کنید:
sudo iptables -L -v
در اینجا ، از گزینه L- برای لیست کردن تمام قوانین و از v- برای نمایش اطلاعات به شکل دقیق تر استفاده شده است. در ادامه یک خروجی نمونه آورده شده است:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
فایروال لینوکس شما نصب شده است. در این مرحله می توانید متوجه شوید که همه زنجیره ها به گونه ای تنظیم شده اند که هدف ACCEPT را دریافت کنند و با هیچ قانونی مغایرت نداشته باشند. البته این مسئله امنیت کاملی ندارد زیرا در این صورت هر پکتی می تواند بدون فیلتر وارد شود.
با این حال نیازی به نگرانی نیست زیرا ما در مرحله بعدی آموزش به شما خواهیم گفت که چگونه برای فایروال لینوکس iptables خود قوانینی تعریف کنید. برای انجام این کار، باید گزینه A- را بلافاصله بعد از دستور iptables وارد کنید، به صورت زیر:
sudo iptables -A
با وارد کردن دستور بالا هشداری برای iptables فرستاده می شود که شما در حال اضافه کردن قوانین جدیدی به یک زنجیره هستید. شما می توانید دستور را با گزینه های دیگر ترکیب کنید، مانند:
(i (interface– این برای فیلتر کردن ترافیک یک رابط شبکه خاص است که شما تعیین می کنید، مانند eth0 ،lo ،ppp0 و غیره.
(p (protocol– این پروتکل شبکه ایست که در آن فرآیند فیلتر کردن شما انجام می شود. این می تواند tcp ، udp ، udplite ، icmp ، sctp ، icmpv6 و غیره باشد. همچنین شما می توانید برای انتخاب همه پروتکل ها ALL را تایپ کنید.
(s (source– این عبارت برای آدرسی است که ترافیک از آن می آید. شما می توانید به این عبارت نام هاست یا آدرس IP را اضافه کنید.
(dport ( destination port– این پورت، پورت مقصد است مانند مانند 22 (SSH) ، 443 (https) و غیره.
(j (target– نام هدف که در بالا توضیح داده شد (ACCEPT، DROP، RETURN). هر وقت قانون جدیدی را تنظیم کردید باید یکی از این اهداف را وارد کنید.
اگر می خواهید از تمام موارد بالا استفاده کنید، باید دستور زیر را وارد کنید:
sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s
<source> --dport <port no.> -j <target>
حالا که شما ترکیب پایه را به خوبی متوجه شدید، می توانید فایروال لینوکس خود را کانفیگ کنید تا امنیت بیشتری به سرور خود بدهید. در ادامه این آموزش iptables، ما قصد داریم از زنجیره INPUT به عنوان مثال استفاده کنیم.
برای اجازه ورود ترافیک به localhost، دستور زیر را وارد کنید:
sudo iptables -A INPUT -i lo -j ACCEPT
برای این آموزش فایروال لینوکس iptables، ما از رابط lo یا loopback استفاده می کنیم که برای کلیه ارتباطات در localhost استفاده می شود. دستور بالا اطمینان حاصل می کند که اتصالات بین یک دیتابیس و یک برنامه وب در همان دستگاه به درستی کار می کنند.
حالا برای فعال کردن اتصالات در پورت های http (پورت 80) ، https (پورت 443) و ssh (پورت 22) باید پروتکل (p-) و پورت مربوط به آن یعنی (dport-) را مشخص کنیم. می توانید این دستورات را یکی یکی اجرا کنید:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
در این مرحله باید بررسی کنیم که آیا قوانین مورد نظر اضافه شده اند یا خیر:
sudo iptables -L -v
در ادامه باید با نتایج زیر رو به رو شوید که به این معنی است که تمام اتصالات پروتکل TCP از پورت های مشخص شده پذیرفته شده اند:
ACCEPT tcp — any anywhere anywhere tcp dpt:ssh
ACCEPT tcp — any anywhere anywhere tcp dpt:http
ACCEPT tcp — any anywhere anywhere tcp dpt:https
مرحله بعدی نوبت فیلتر کردن پکت ها بر اساس منبع می باشد. فایروال لینوکس Iptables به شما این امکان را می دهد که پکت ها را بر اساس آدرس IP یا محدوده وسیعی از آدرس های IP فیلتر کنید. برای این کار باید بعد از گزینه s– باید آن IP یا IP ها را مشخص کنید. به عنوان مثال، برای پذیرش بسته های 192.168.1.3، دستور زیر را وارد کنید:
sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT
یا می توانید پکت ها را از طریق یک آدرس IP خاص با جایگزینی هدف ACCEPT با DROP رد یا مسدود کنید.
sudo iptables -A INPUT -s 192.168.1.3 -j DROP
اگر می خواهید پکت های محدوده وسیعی از آدرس های IP را از سرور خود دور کنید یعنی این IP ها نتوانند ترافیک ارسال کنند، باید از گزینه m- و ماژول iprange استفاده کنید. سپس، محدوده آدرس IP را با src-range- مشخص کنید. به یاد داشته باشید ، یک خط فاصله باید دامنه آدرس های IP را بدون فاصله جدا کند، مانند این:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200
-j DROP
استفاده از دستور dport- برای رد کردن سایر ترافیک ها بسیار مهم است. این دستور از دسترسی غیرمجاز اتصال به سرور از طریق سایر پورت های باز جلوگیری می کند. برای رسیدن به این هدف، به سادگی دستور زیر تایپ کنید:
sudo iptables -A INPUT -j DROP
اکنون، تلاش برای اتصالات خارج از پورت های مشخص شده رد یا مسدود خواهد شد.
اگر می خواهید همه قوانین را حذف کنید واز اول شروع کنید به لیست کردن یک سری قانون ، می توانید از گزینه F- (فلاش) استفاده کنید:
sudo iptables -F
دستور بالا کلیه قوانین موجود را پاک می کند. با این حال، برای حذف یک قانون خاص، باید از گزینه D- استفاده کنید. ابتدا باید با وارد کردن دستور زیر تمام قوانین موجود را مشاهده کنید:
sudo iptables -L --line-numbers
با اجرای این دستور شما لیستی از قوانین با اعداد دریافت خواهید کرد:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 192.168.0.4 anywhere
2 ACCEPT tcp -- anywhere anywhere tcp dpt:https
3 ACCEPT tcp -- anywhere anywhere tcp dpt:http
4 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
برای حذف یک قانون، زنجیره مربوطه و عدد آن را از لیست وارد کنید به عنوان مثال در ادامه از عدد 3 استفاده می کنیم. حالا دستور زیر را وارد کنید:
sudo iptables -D INPUT 3
قوانین iptables که ایجاد کرده ایم در حافظه ذخیره می شود که ما باید هنگام راه اندازی مجدد آن ها را دوباره تعریف کنیم. برای ماندگار نگه داشتن این تغییرات پس از راه اندازی مجدد سرور، می توانید از دستور زیر استفاده کنید:
sudo /sbin/iptables-save
قوانین جاری در فایل کانفیگ سیستم ذخیره می شود. از این قوانین برای هر بار راه اندازی مجدد سرور هنگام کانفیگ مجدد جداول استفاده می شود.
توجه داشته باشید که این دستور را باید هر بار که در قوانین تغییر ایجاد می کنید اجرا کنید. به عنوان مثال، اگر می خواهید فایروال لینوکس iptables را غیرفعال کنید، باید این دو دستور را اجرا کنید:
sudo iptables -F
sudo /sbin/iptables-save
فایروال لینوکس شما آماده استفاده است.
فایروال لینوکس Iptables یک فایروال قدرتمند است که با استفاده از آن می توانید سرور مجازی لینوکس خود را ایمن کنید. در این آموزش نحوه نصب و استفاده از این فایروال را یاد گرفته اید. اکنون امیدواریم که بتوانید مجموعه قوانین خود را برای فیلتر کردن بسته های ورودی و خروجی مدیریت کنید.