آموزش فایروال لینوکس

در صورتی که شما یک سرور مجازی لینوکس دارید و  فایروال لینوکس را روی آن نصب نکرده اید، با این که این مسئله امری متداول است، اما شما سرور مجازی لینوکس خود را به شدت به خطر انداخته اید. 

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

این مقاله به شما نحوه نصب و کانفیگ فایروال لینوکس به نام 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 یک فایروال قدرتمند است که با استفاده از آن می توانید سرور مجازی لینوکس خود را ایمن کنید. در این آموزش نحوه نصب و استفاده از این فایروال را یاد گرفته اید. اکنون امیدواریم که بتوانید مجموعه قوانین خود را برای فیلتر کردن بسته های ورودی و خروجی مدیریت کنید.

 

 

سوالات متداول فایروال لینوکس

فایروال لینوکس یک سیستم امنیتی شبکه است که با مجموعه ای از قوانین از پیش تعیین شده، ترافیک ورودی و خروجی سرور را فیلتر و کنترل می کند.
iptables یک فایروال لینوکس با یک سری دستور است که برای اجازه یا مسدود کردن ترافیک استفاده می شود. هنگامی که یک پکت سعی می کند به سمت سیستم شما حرکت کند، iptables به دنبال یک قانون در لیست خود است تا بتواند آن را مطابقت دهد.
در صورتی که یک پکت با قوانین فایروال لینوکس مطابقت داشت باشد، یکی از هدف های زیر به آن داده خواهد شد:
ACCEPT یا قبول که این مورد به بسته اجازه عبور می دهد.
DROP یا رها کردن که اجازه عبور به بسته نمی دهد.
RETURN یا بازگشت که عبور یک بسته از طریق زنجیره را متوقف می کند و به او می گوید که به زنجیره قبلی بازگردد.
 
linux Firewall