توسعه دهندگان و مدیران سیستم لینوکس از دستورات iptables و ip6tables به منظور تنظیم، نگهداری و بازرسی جداول قانونهای فایروال به ترتیب برای بستههای IPv4 و IPv6 در هسته لینوکس استفاده میکنند. مشکلی که در استفاده از این دستورات وجود دارد؛ این است که با راهاندازی مجدد سرور لینوکس، تمام تغییرات اعمال شده توسط این دستورات از بین میرود. از این رو، باید این قوانین فایروال را به صورت دائمی ذخیره نماییم.
در این مقاله، نحوه ذخیره دائمی قوانین فایروال iptables برای بستههای IPv4 و IPv6 در سرور اوبونتو و دبیان شرح داده شده است.
این مطلب نیز ممکن است برای شما مفید باشد: نصب و تنظیم فایروال CSF در لینوکس
ذخیره و بازیابی دائمی قوانین فایروال iptables در لینوکس
به منظور ذخیره و بازیابی دائمی قوانین فایروال iptables باید از دستورات زیر استفاده کنید:
- دستور iptables-save یا دستور ip6tables-save: به ترتیب محتویات جدول IPv4 و IPv6 را بصورت قابل تجزیه در یک صفحه یا در یک فایل مشخص ذخیره کرده و یا حذف مینماید.
- دستور iptables-restore یا دستور ip6tables-restore: به ترتیب قوانین و جداول فایروال IPv4 و IPv6 را از یک فایل خاص در لینوکس بازیابی میکند.
مرحله 1. ترمینال را باز کرده و دستورات زیر را تایپ نمایید. برای ورود به سرور ریموت، از دستور ssh استفاده کنید.
ssh user@server1.jeyserver.com
ssh USERNAME@YOUR_SERVER_IP_OR_DOMAIN
دقت کنید که باید دستورات زیر را به عنوان کاربر root با استفاده از دستور sudo یا دستور su تایپ نمایید.
مرحله 2. بسته به نوع سیستم عامل، با استفاده از دستورات زیر، قوانین فایروال IPv4 و IPv6 را ذخیره کنید.
در سیستم عاملهای دبیان و اوبونتو:
sudo /sbin/iptables-save > /etc/iptables/rules.v4
## IPv6 ##
sudo /sbin/ip6tables-save > /etc/iptables/rules.v6
در سیستم عاملهای CentOS و RHEL:
sudo /sbin/iptables-save > /etc/sysconfig/iptables
## IPv6 ##
sudo /sbin/ip6tables-save > /etc/sysconfig/ip6tables
این مطلب نیز ممکن است برای شما مفید باشد: افزودن آدرس IP در فایروال ویندوز
شما میتوانید فایل ذخیره شده را با استفاده از دستور cat نمایش دهید؛ یا با استفاده از دستور grep و egrep، آن را جستجو نمایید:
cat /etc/iptables/rules.v4
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -m policy --pol none --dir out -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p ah -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-upto 5/s --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name icmp-echo-drop -j ACCEPT
-A INPUT -p udp -m multiport --dports 21194 -j ACCEPT
-A INPUT -p tcp -s 1xx.yy.zz.ttt,10.8.0.0/24,10.8.1.0/24 --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp --dport 3128 -d 10.8.0.1 -s 10.8.0.0/24,10.8.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -d 172.xx.yyy.zzz -p udp --dport 53 -j ACCEPT
-A INPUT -d 172.xx.yyy.z -p udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -m limit --limit 5/min -j LOG --log-prefix "[iptables denied] " --log-level 7
-A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j DROP
-A OUTPUT -d 10.8.0.0/24 -m owner --gid-owner 15000 -j DROP
-A FORWARD -s 10.8.0.0/24 -d 169.254.0.0/16 -j DROP
-A OUTPUT -d 169.254.0.0/16 -m owner --gid-owner 15000 -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp --dport 445 -j DROP
-A FORWARD -p udp -m multiport --ports 137,138 -j DROP
-A FORWARD -p tcp -m multiport --ports 137,139 -j DROP
-A FORWARD -m conntrack --ctstate NEW -s 10.8.0.0/24 -m policy --pol none --dir in -j ACCEPT
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "[iptables forward denied] " --log-level 7
COMMIT
مرحله 3. قوانین فایروال IPv4 و IPv6 لینوکس را بسته به نوع سیستم عامل میتوانید با استفاده از دستورات زیر بازیابی کنید:
## Debian or Ubuntu ##
sudo /sbin/iptables-restore < /etc/iptables/rules.v4
sudo /sbin/ip6tables-restore < /etc/iptables/rules.v6
## CentOS/RHEL ##
sudo /sbin/iptables-save < /etc/sysconfig/iptables
sudo /sbin/ip6tables-save < /etc/sysconfig/ip6tables
مرحله 4. بسته iptables-persistent را برای دبیان و اوبونتو به صورت زیر نصب نمایید:
لطفا توجه داشته باشید که دستور زیر با frontendهای iptables مانند دستور ufw یا firewall-cmd مغایرت دارد. بنابراین، اگر از این ابزارها استفاده میکنید، از استفاده از بستههای زیر خودداری نمایید.
iptables-persistent، به عنوان یک لودر برای قوانین Netfilter (افزونه netfilter-persistent مربوط به iptables) عمل میکند، که یک لودر با معماری مبتنی بر افزونه برای پیکربندی Netfilter است.
به منظور نصب این افزونه، از دستور apt یا دستور apt-get بصورت زیر استفاده کنید:
sudo apt install iptables-persistent
## OR ##
sudo apt-get install iptables-persistent
با استفاده از دستور systemctl بصورت زیر، اطمینان حاصل کنید که سرویسها در دبیان یا اوبونتو فعال هستند:
sudo systemctl is-enabled netfilter-persistent.service
چنانچه فعال نبود، از دستور زیر استفاده نمایید:
sudo systemctl enable netfilter-persistent.service
با استفاده از دستور زیر میتوانید وضعیت آن را بدست آورید:
sudo systemctl status netfilter-persistent.service
● netfilter-persistent.service - netfilter persistent configuration
Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/netfilter-persistent.service.d
└─iptables.conf
Active: active (exited) since Thu 2020-08-20 19:24:22 UTC; 3 days ago
Docs: man:netfilter-persistent(8)
Main PID: 577 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4620)
Memory: 0B
CGroup: /system.slice/netfilter-persistent.service
Aug 20 19:24:21 nixcraft-vpn-1 systemd[1]: Starting netfilter persistent configuration...
Aug 20 19:24:21 nixcraft-vpn-1 netfilter-persistent[583]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Aug 20 19:24:21 nixcraft-vpn-1 netfilter-persistent[583]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Aug 20 19:24:22 nixcraft-vpn-1 systemd[1]: Finished netfilter persistent configuration.
مرحله 5 - بسته iptables-services را برای RHEL و CentOS نصب کنید.
به طور پیش فرض، نسخه 7 و 8 سیستم عاملهای RHEL و CentOS دارای firewalld هستند. با این حال، چنانچه به فایروال قدیمی مبتنی بر فایل نیاز دارید، دستورات زیر را تایپ نمایید:
# Disable firewalld if installed #
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
sudo systemctl mask firewalld.service
# install package on Linux to save iptables rules using the yum command/dnf command ##
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl enable ip6tables
sudo systemctl status iptables
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2020-08-24 09:29:59 EDT; 3s ago
Process: 8259 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 8259 (code=exited, status=0/SUCCESS)
Aug 24 09:29:59 centos-8-cloud.sweet.home systemd[1]: Starting IPv4 firewall with iptables...
Aug 24 09:29:59 centos-8-cloud.sweet.home iptables.init[8259]: iptables: Applying firewall rules: [ OK ]
Aug 24 09:29:59 centos-8-cloud.sweet.home systemd[1]: Started IPv4 firewall with iptables.
منبع:
cyberciti
0 دیدگاه
نوشتن دیدگاه