با استفاده از این اسکریپت ساده فایروال خود را با iptables ایجاد کنید

من مدتی را به دو چیز در مورد این iptables فکر کردم: بیشتر کسانی که به دنبال این آموزشها هستند مبتدی هستند و ثانیاً ، بسیاری از آنها در حال جستجو برای چیزی کاملاً ساده و از قبل مفصل هستند.

این مثال برای یک وب سرور است، اما شما می توانید به راحتی قوانین بیشتری اضافه کنید و آن را متناسب با نیازهای خود تنظیم کنید.

وقتی می بینید "x" برای IP شما تغییر می کند


#!/bin/bash

# ما جداول iptables را تمیز می کنیم -F iptables -X # ما iptables NAT را پاک می کنیم -t nat -F iptables -t nat -X # جدول مانگل را برای مواردی مانند PPPoE ، PPP و iptables خودپرداز -t mangle -F iptables -t mangle -X # سیاست ها من فکر می کنم این بهترین راه برای مبتدیان است و # هنوز هم بد نیست ، من همه خروجی ها را توضیح می دهم زیرا آنها اتصالات خروجی هستند ، ورودی ما همه چیز را دور می اندازیم ، و هیچ سروری نباید فوروارد کند. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # وضعیت را حفظ کنید. همه چیزهایی که از قبل متصل شده اند (برقرار شده اند) به این شکل باقی می مانند: iptables -A INPUT -m state --state ESTABLISHED، RELATED -j ACCEPT # حلقه دستگاه iptables -A INPUT -i lo -j ACCEPT # http، https ، ما رابط کاربری را مشخص نمی کنیم زیرا # می خواهیم برای همه iptables باشد -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh فقط به صورت داخلی و از این طیف قابل دسترسی ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet - dport 7659 -j ACCEPT # نظارت به عنوان مثال اگر zabbix دارند یا سایر iptables سرویس snmp -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp ، ping خوب این به شما بستگی دارد iptables -A INPUT -p icmp -s 192.168. xx / 24 - اگر می خواهید نامه ای ارسال کنید ، intranet $ j - پذیرش # mysql با postgres پورت 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh است. #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # IP سرور - IP واقعی سرور شما LAN_RANGE = "192.168.xx / 21 "# محدوده LAN شبکه یا vlan # Ip شما که هرگز نباید وارد اکسترانت شود ،اگر یک رابط کاملا WAN داشته باشیم ، باید کمی از # منطق استفاده کنیم ، هرگز نباید از طریق آن رابط وارد نوع # LAN شود SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# عملکرد پیش فرض - برای انجام هر قانونی مطابقت دارد ACTION =" DROP "# بسته هایی با همان IP سرور من از طریق iptables wan -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # بسته هایی با محدوده LAN برای کاهش ، من این را برای شما قرار می دهم در صورتی که # شبکه خاصی داشته باشید ، اما این با قانون زیر # اضافی است حلقه "برای" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## همه شبکه های SPOOF توسط wan برای IP مجاز نیستند $ SPOOF_IPS iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION انجام می شود

مثل همیشه منتظر نظرات شما هستم ، با این وبلاگ همراه باشید ، متشکرم


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

12 نظر ، نظر خود را بگذارید

نظر خود را بگذارید

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

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.

  1.   HO2Gi dijo

    این به من کمک می کند تا کمی بیشتر تشکر کنم که کپی شده است ، یاد می گیرم.

    1.    برودی دال dijo

      شما خوش آمدید ، خوشحالم که کمک می کنید

  2.   خاویر dijo

    من واقعا متاسفم ، اما من دو سوال دارم (و یک سوال به عنوان هدیه 😉):

    آیا با این تنظیمات می خواهید Apache در حال اجرا باشد و بقیه را بجز SSH ببندید؟

    # ما میزها را تمیز می کنیم
    iptables -F
    iptables -X

    ما NAT را تمیز می کنیم

    iptables -t nat -F
    iptables -t nat -X

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

    ssh فقط به صورت داخلی و از این طیف IP است

    iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet -dport 7659 -j ACCEPT

    سوال دوم: آیا در این مثال از پورت 7659 که در SSH استفاده می شود؟

    و سوم و آخرین: در کدام پرونده باید این پیکربندی ذخیره شود؟

    از این آموزش بسیار متشکرم ، شرم آور است که شما چنین تازه واردی هستید و نمی توانید از آن به خوبی استفاده کنید.

    1.    برودی دال dijo

      این قانونی است که شما برای http از apache نیاز دارید
      iptables -A INPUT -p tcp –dport 80 -j ACCEPT

      اما شما همچنین باید سیاست های پیش فرض drop را اعلام کنید (این در اسکریپت است)
      iptables -P قطره ورودی
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD DROP

      و این به این دلیل است که اگر از راه دور باشید ، شما را دور می کند.
      iptables -A INPUT -m state -state ESTABLISHED، RELATED -j ACCEPT

      اگر 7659 پورت آن ssh در مثال باشد ، به طور پیش فرض 22 است ، اگرچه من توصیه می کنم به پورت "شناخته شده نیست" تغییر دهید
      مرد ، من نمی دانم ، همانطور که شما می خواهید ... firewall.sh و آن را در rc.local (sh firewall.sh) قرار می دهید تا به طور خودکار اجرا شود ، این به سیستم عامل شما بستگی دارد ، پرونده هایی وجود دارد که می توانید قوانین را مستقیماً در آنها قرار دهید.

  3.   جگ dijo

    سلام ، اسکریپت شما بسیار خوب است ، آن را تجزیه و تحلیل می کند ... آیا می دانید چگونه می توانم همه درخواست های کاربران خود را به یک وب سایت خاص رد کنم؟. اما این وب سایت سرورهای زیادی دارد ...

    1.    برودی دال dijo

      من گزینه های دیگر را توصیه می کنم:
      1) می توانید یک منطقه جعلی در dns خود ایجاد کنید ...
      2) می توانید پروکسی را با acl قرار دهید
      تحریم گناه
      برای iptables می توانید این را دوست داشته باشید ... همیشه بهترین گزینه نیست (راه های بیشتری وجود دارد)
      iptables -A INPUT -s blog.desdelinux.ne -j DROP
      iptables -A OUTPUT -d blog.fromlinux.net -j DROP

      اگر جواب داد به من بگو

  4.   خاویر dijo

    با تشکر برای پاسخ ، همه چیز پاک شد. من در مورد بندر می پرسیدم زیرا از استفاده از 7659 متعجب شدم ، زیرا درگاه های خصوصی از 49152 شروع می شوند و این می تواند باعث اختلال در سرویس یا موارد دیگر شود.
    باز هم ، با تشکر از همه چیز ، این خوب است!

    سلام.

  5.   چنین dijo

    BrodyDalle ، چگونه می توانم با شما تماس بگیرم؟ فیلمنامه شما بسیار جالب است.

  6.   کارلوس dijo

    خط آخر قبل "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" برای جلوگیری از جعل ماشین خود شما وجود دارد؟ یا ممکن است که یک بسته مسموم وارد شده و بتواند با آن منبع مسموم خارج شود و به همین دلیل این قانون در OUTPUT نیز گنجانده شده است؟
    خیلی ممنون از توضیحات !!!

  7.   FRAN dijo

    این اسکریپت iptables من است ، بسیار کامل است:

    # franes.iptables.airoso
    # doc.iptables.airoso: iptables برای میراث و nft
    #
    # پورت فایروال
    ################################
    #! / bin / bash
    #
    # صفحه را پاک کنید
    ################################# آغاز /etc/f-iptables/default.cfg |||||
    واضح
    # یک خط خالی بگذارید
    از دست
    صادرات بله = "" نه = "پژواک خاموش"
    # متغیرهایی که می توانید برای اجازه دسترسی تغییر دهید
    ######################### متغیرها برای تغییر با $ yes یا $ no
    صادرات hayexcepciones = »$ هیچ»
    # استثناهایی وجود دارد: $ yes برای میزبانهای استثنایی و $ no غیرفعال است
    صادرات hayping = »$ هیچ»
    # هایپینگ: $ بله برای اجازه دادن به پینگ شخص ثالث و $ نه برای انکار
    صادر کننده haylogserver = »$ هیچ»
    # haylogeosserver: $ بله برای اینکه بتوانید tcp را وارد کنید $ no برای اینکه نمی توانید tcp را وارد کنید
    ######
    ########################## متغیرها برای اصلاح با افزودن "،" یا با دامنه های ":"
    استثنائات صادرات = »baldras.wesnoth.org»
    # استثنا اجازه می دهد تا میزبان های تک یا چندگانه از فایروال یا بدون مقدار داشته باشند
    صادر کننده logserver = دور انداختن ، ipp ، dict ، ssh
    # پورت سرور tcp که هنگام ورود بسته ها وارد سیستم می شوند
    سرور صادرات صادرات = 0/0
    # سرور دهنده: شبکه ای که برای درگاه های سرور شبکه محلی ترجیح داده می شود یا چندین IP
    صادرات مشتری قرمز = 0/0
    #clientnet: شبکه ای برای پورت های مشتری به همه شبکه ها ارجح است
    صادرات servidortcp = دور انداختن ، ipp ، dict ، 6771
    # servidortcp: درگاه های سرور tcp مشخص شده
    صادرات serverudp = صرفنظر از
    #udpserver: پورتهای سرور udp مشخص شده
    صادرات clientudp = دامنه ، bootpc ، bootps ، ntp ، 20000: 45000
    #udp client: پورتهای مشتری مشخص شده udp
    صادرات clienttcp = دامنه ، http ، https ، ipp ، git ، dict ، 14999: 15002
    # tcp client: پورت های tcp مشتری مشخص شده
    ################################# / endc/f-iptables/default.cfg |||||
    ################################## پایان متغیرها برای اصلاح
    فایروال صادرات = $ 1 متغیر = 2 $
    if ["$ variables" = "$ NULL"]؛ سپس منبع /etc/f-iptables/default.cfg؛
    منبع دیگر / etc / f-iptables / $ 2؛ فی
    ################################## یا متغیرها را با یک پرونده .cfg بازنویسی می کنید
    ####################################################################> ###############################################
    فایروال صادرات = 1 $ متغیر صادرات = 2 $
    ################################################## متغیرهای سیستم خودکار
    if ["$ firewall" = "قطع ارتباط"]؛ سپس اکو FIREWALL قطع شد
    صادرات activateserver = »$ no» activateclient = »$ no» wet = »$ no»؛
    elif ["$ firewall" = "مشتری"] ؛ سپس FIREWALL CLIENT را انعکاس دهید.
    صادرات activateserver = »$ no» activateclient = »» wet = »$ no»؛
    elif ["$ firewall" = "سرور"]؛ سپس سرور FIREWALL را اکو کنید.
    صادرات activateserver = »» activateclient = »$ بدون» مرطوب = »$ بدون»؛
    elif ["$ firewall" = "سرویس دهنده و سرور"]؛ سپس مشتری و سرور FIREWALL را تکرار کنید.
    صادرات فعال کردن سرور = »»؛ صادرات activateclient = »» ؛ صادرات مرطوب = »$ بدون»؛
    elif ["$ firewall" = "مجاز"]؛ سپس FIREWALL مجاز را انعکاس دهید.
    صادرات activateserver = »$ no» activateclient = »$ no» wet = »»؛
    دیگر
    $ check sudo echo iptables-legacy:
    $ sudo iptables-legacy -v -L INPUT چک کنید
    $ check sudo iptables-legacy -v -L OUTPUT
    $ check sudo echo iptables-nft:
    $ sudo iptables-nft -v -L INPUT را بررسی کنید
    $ check sudo iptables-nft -v -L OUTPUT
    echo _____ پارامترها 0 $ 1 $ 2 $
    echo "cast بدون پارامتر لیست کردن موارد قابل حذف است."
    echo "اولین پارامتر (فعال کردن iptables): جدا شده یا کلاینت یا سرور یا کلاینت و سرور یا مجاز".
    echo "پارامتر دوم: (اختیاری): پرونده پیش فرض .cfg /etc/f-iptables/default.cfg را انتخاب می کند"
    echo "تنظیمات متغیر:" $ (ls / etc / f-iptables /)
    خروج 0؛ فی
    #################
    از دست
    echo 0 دلار قطع شده یا کلاینت یا سرور یا کلاینت و سرور یا مجاز یا متغیرها یا بدون استفاده از پارامتر برای لیست iptables می اندازد.
    echo پرونده 0 $ شامل برخی متغیرهای قابل ویرایش در داخل است.
    #################################### متغیرهای فوق فعال شده
    ####################################
    echo تنظیم متغیرهای iptables
    echo متغیرهای فعال شده
    از دست
    ############################ قوانین iptables
    echo Setting iptables-legacy
    فیلتر sudo / usr / sbin / iptables-legacy -t -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangle -F
    فیلتر sudo / usr / sbin / ip6tables-legacy -t -F
    sudo / usr / sbin / ip6tables-legacy -t nat -F
    sudo / usr / sbin / ip6tables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A FORWARD -j DROP
    sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-legacy -A INPUT -s $ استثناها -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport -dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sports $ clientudp -m state -state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp-type-type-echo-reply -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ استثناها -j ACCEPT> / dev / null
    $ sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport -sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null فعال کنید
    $ activator sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport -sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp-type-cmp echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
    echo iptables-legacy فعال شده است
    از دست
    echo تنظیم iptables-nft
    فیلتر sudo / usr / sbin / iptables-nft -t -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    فیلتر sudo / usr / sbin / ip6tables-nft -t -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
    sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-nft -A INPUT -s $ استثناها -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m state -state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state -state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp - نوع echo-reply پاسخ -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-nft -A OUTPUT -d $ استثناها -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport -sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activator sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport -sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport -dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp-type-cmp echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
    echo iptables-nft فعال است
    از دست
    $ sudo wet / usr / sbin / iptables-legacy -F> / dev / null
    $ sudo wet / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state -state تاسیس شده -j ACCEPT> / dev / null
    $ sudo wet / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    $ sudo wet / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
    $ sudo wet / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
    $ sudo / usr / sbin / iptables-nft -F> / dev / null خیس
    $ sudo wet / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ sudo wet / usr / sbin / iptables-nft -A INPUT -m state -state تاسیس شده -j ACCEPT> / dev / null
    $ sudo wet / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    $ sudo wet / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
    ##############################
    اکو شما $ 0 $ 1 $ انداخته اید
    # از متن خارج می شود
    خروج 0

  8.   لوئیس دوران dijo

    اگر این فایروال از آن برای دروازه من استفاده کند و یک ماهی مرکب در داخل شبکه داشته باشد چگونه می توانم قانونی تنظیم کنم ؟؟؟