اوبونتوسرور مجازیسنت او اسسیستم عامل لینوکسمقالات وب

چگونه بر روی اوبونتو یا سنت او اس، فایروال را با iptable تنظیم کنیم؟

در این مقاله قصد داریم نحوه راه اندازی فایروال به کمک iptable را بر روی سرور مجازی لینوکس که سیستم عامل اوبونتو یا سنت او اس  دارد را با هم مرور کنیم. همانطور که می دانید iptable یک ابزار مدیریتی برای فیلتر بسته های IPv4 و NAT است و برای تنظیم و مدیریت جداول قوانین فیلتر بسته های IPv4 در کرنل لینوکس مورد استفاده قرار می گیرد. تنظیم و پیکربندی صحیح فایروال یکی از مهم ترین و ضروری ترین کارهایی است که برای امن کردن سرور مجازی خود باید انجام دهید.  در iptable، جداول انطباقی مختلفی برای بسته ها تعریف می شود و هر جدول می تواند در برگیرنده chain های درون ساخت و نیز برخی از chain های تعریف شده توسط کاربر باشد. Chain در واقع فهرستی از قوانین است که مجموعه بسته ها و هر کدام از قوانین مشخص شده را با بسته انطباقی، منطبق می کند.  جدول پیش فرض همان جدول filter است و در برگیرنده chain های درون ساخت INPUT, FORWARD و output است.  در این مقاله همراه وب ایده باشید تا تنظیم و راه اندازی فایروال را با هم مرور کنیم.

قبل از هر کاری از طریق SSH به سرور مجازی خود متصل شوید و قوانین تعریف شده در Chain خاصی را به کمک سینتکس زیر فهرست کنید:

sudo iptables -L CHAIN

عبارت CHAINرا با یکی از chain های درون ساخت جایگزین کنید تا بتوانید قوانین تعریف شده را مشاهده نمایید. اگر هیچ chain ای انتخاب نشده باشد، همه chain ها در خروجی لیست خواهند شد:

sudo iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

قوانین فایروال به سیستم می گوید که با بسته خاصی که با معیارهای خاص منطبق است و در مواردی که بسته ورودی یا خروجی با قوانین تعریف شده انطباقی ندارد، چه کاری باید انجام دهد.   اینکه بدانید چه زمانی باید قوانین فایروال را تعریف کنید بسیار مهم است زیرا با یک تصمیم اشتباه ممکن است دسترسی به سیستم مسدود گردد.  اهدافی که می توانید برای قوانین فایروال مورد استفاده قرار دهید در برگیرنده ACCEPT, DROP, QUEUE و RETURN است. ACCEPT به بسته اجازه ورود می دهد، DROP بسته را رها می کند، QUEUE بسته به userspace می فرستد و RETURN مانع از عور بسته chain فعلی می شود.سیاست پیش فرض برای chain، نشان می دهد که به هنگام منطبق نبودن بسته با قوانین خاص فایروال چه اتفاقی باید روی دهد. همانطور که در خروجی اولین دستور مشاهده می کنید، سیاست پیش فرض برای تمامی chain های درون ساخت بر روی ACCEPT تنظیم شده است. قبل از اینکه بخواهیم قانون خاصی را اضافه کنیم، گزینه زیر را اضافه کنید:

sudo iptables -A INPUT -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

این دستور مانع از این می شود که ارتباط های توسعه یافته رها شوند و  SSH session فعلی شما فعال باقی می ماند. در مرحله بعدی، قوانینی را اضافه کنید تا بتوانید به ترافیک موجود در رابط loopback اجازه ورود یا خروج دهید:

 

sudo iptables -A INPUT -i lo -j ACCEPT

sudo iptables -A OUTPUT -o lo -j ACCEPT

در این مرحله می توانید به دسترسی به سرور مجازی از طریق SSHبرای ای پی ادرس لوکال خود اجازه ورود یا خروج دهید. در این شرایط تنها خودتان می توانید به سرور دسترسی داشته باشید:

sudo iptables -A INPUT -s 111.111.111.111 -p tcp –dport 22 -j ACCEPT

در دستور بالا 111.111.111.111  آی پی آدرس لوکال و 22 پورت listening برای SSH daemon است. در مواردی که ای پی آدرس شما به طور مکرر تغییر پیدا می کند بهتر است بخش  -s 111.111.111.111  را حذف کنید و از روش دیگری برای محافظت از سرویس SSH خود استفاده نمایید:

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT

حالا به سرویس های مهمی همچون سرور HTTP/HTTPS اجازه دهید به سیستم دسترسی داشته باشند:

sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT

sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT

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

sudo iptables -nvL

 اگر سرویس های دیگری دارید که می خواهید به آن ها نیز اجازه دسترسی بدهید، حالا بهترین زمان است. بعد از انجام اینکار، می توانید سیاست پیش فرض برای Chain درون ساخت INPUT را به drop تغییر دهید.

sudo iptables -P INPUT -j DROP

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

Chain INPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     all  —  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

    0     0 ACCEPT     all  —  lo     *       0.0.0.0/0            0.0.0.0/0

    0     0 ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

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

    0     0 ACCEPT     all  —  *      lo      0.0.0.0/0            0.0.0.0/0

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

sudo apt-get install iptables-persistent

بر روی اوبونتو 14.04 می توانید قوانین فایروال را به کمک دستور زیر ذخیره و بارگذاری کنید:

sudo /etc/init.d/iptables-persistent save

sudo /etc/init.d/iptables-persistent reload

بر روی اوبونتو 16.04 می توانید از دستورات زیر بهره مند شوید:

sudo netfilter-persistent save

sudo netfilter-persistent reload

اگر از سرور مجازی سنت او اس استفاده می کنید به کمک دستور زیر می توانید قوانین فایروال را ذخیره نمایید:

service iptables save

Rate this post
برچسب ها

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن