GoGPT Best VPN GoSearch

فاویکون OnWorks

ferm - آنلاین در ابر

Ferm را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور ferm است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


ferm - تجزیه کننده قوانین فایروال برای لینوکس

خلاصه


فرم گزینه های فایل ورودی

شرح


فرم پیشانی برای است از iptables. قوانین را از یک فایل پیکربندی ساخت یافته می خواند
و تماس می گیرد از iptables(8) تا آنها را به هسته در حال اجرا وارد کنید.

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

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

فرمکه "firm" تلفظ می شود، مخفف "For Easy Rule Making" است.

احتیاط


این صفحه راهنما انجام می دهد نه قصد دارم به شما آموزش دهد که فایروال چگونه کار می کند و چگونه خوب بنویسید
قوانین در حال حاضر اسناد کافی در مورد این موضوع وجود دارد.

معرفی


بیایید با یک مثال ساده شروع کنیم:

ورودی زنجیره ای {
proto tcp ACCEPT;
}

این یک قانون را به زنجیره ورودی از پیش تعریف شده اضافه می کند و همه tcp را مطابقت می دهد و می پذیرد
بسته ها خوب، بیایید آن را پیچیده تر کنیم:

زنجیره (ورودی خروجی) {
proto (udp tcp) ACCEPT;
}

این 4 قانون، یعنی 2 در ورودی زنجیره، و 2 در خروجی زنجیره ای، تطبیق و
پذیرش هر دو بسته udp و tcp. به طور معمول شما این را تایپ می کنید:

iptables -A INPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp -j ACCEPT
iptables -A OUTPUT -p udp -j ACCEPT

توجه داشته باشید که چقدر کمتر باید تایپ کنیم؟ :-)

اساساً، این تمام چیزی است که در آن وجود دارد، اگرچه می توانید آن را بسیار پیچیده تر کنید.
چیزی که باید به آن نگاه کرد:

ورودی زنجیره ای {
سیاست ACCEPT;
daddr 10.0.0.0/8 proto tcp dport! ftp jump mychain sport :1023 TOS 4 settos 8 mark 2;
daddr 10.0.0.0/8 proto tcp dport ftp REJECT;
}

منظور من در اینجا این است که *شما* باید قوانین خوبی وضع کنید، آنها را برای شما قابل خواندن نگه دارید و
دیگران، و آن را به یک آشفتگی تبدیل نکنید.

اگر قوانین فایروال حاصل برای مرجع در اینجا قرار داده شود، به خواننده کمک خواهد کرد.
همچنین، می توانید نسخه تو در تو را با خوانایی بهتر اضافه کنید.

سعی کنید از نظرات برای نشان دادن کاری که انجام می دهید استفاده کنید:

# این خط پروکسی شفاف http را برای شبکه داخلی فعال می کند:
proto tcp if eth0 daddr ! 192.168.0.0/255.255.255.0
dport http REDIRECT to-ports 3128;

بعداً برای آن سپاسگزار خواهید بود!

ورودی زنجیره ای {
سیاست ACCEPT;
رابط (eth0 ppp0) {
# دسترسی به هکرهای بدنام را رد کنید، در صورت عدم تطابق به اینجا بازگردید
# برای از سرگیری فایروال معمولی پیدا شد
پرش بدگوها;

پروتکل tcp jump fw_tcp;
پروتکل udp jump fw_udp;
}
}

هرچه بیشتر لانه کنید، بهتر به نظر می رسد. مطمئن شوید ترتیبی که مشخص می کنید درست است، شما
نمی خواهم این کار را انجام دهم:

زنجیره به جلو {
پروتو udp DROP;
proto tcp dport ftp ACCEPT;
}

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

پروتو tcp {
dport (
ssh http ftp
) تایید کنید؛
dport 1024:65535 ! همگام ACCEPT;
رها کردن
}

ساختار OF A دیواره آتش فایل


ساختار یک فایل فایروال مناسب شبیه کد C ساده شده است. فقط تعداد اندکی
از کاراکترهای نحوی در فایل های پیکربندی ferm استفاده می شود. علاوه بر این خاص
کاراکترها، ferm از "کلیدها" و "مقدارها" استفاده می کند، آنها را به عنوان گزینه ها و پارامترها در نظر بگیرید، یا به عنوان
متغیرها و مقادیر، هر چه باشد.

با این کلمات ویژگی های فایروال خود را مشخص می کنید. هر فایروال
شامل دو چیز است: اول، ببینید آیا ترافیک شبکه با شرایط خاصی مطابقت دارد یا خیر، و
دوم، با آن ترافیک چه باید کرد.

می توانید شرایطی را مشخص کنید که برای برنامه رابط هسته ای که استفاده می کنید معتبر باشد.
شاید از iptables(8). به عنوان مثال، در iptables، زمانی که می خواهید بسته های tcp را مطابقت دهید،
می گفتی:

iptables --پروتکل tcp

در فرم، این تبدیل خواهد شد:

پروتکل tcp;

فقط تایپ کردن این در ferm هیچ کاری نمی کند، باید به ferm بگویید (در واقع، شما نیاز دارید
گفتن از iptables(8) و هسته) با هر ترافیکی که با این شرایط مطابقت دارد چه باید کرد:

iptables --پروتکل tcp -j ACCEPT

یا ترجمه شده به فرم:

پروتکل tcp ACCEPT;

La ; شخصیت در پایان هر قانون فرم قرار دارد. فرم شکست خط را نادیده می گیرد، به معنی
مثال بالا با موارد زیر یکسان است:

پروتکل tcp
تایید کنید؛

در اینجا لیستی از شخصیت های خاص آمده است:

; این شخصیت یک قانون را نهایی می کند.

با نقطه ویرگول از هم جدا شده اند، می توانید چندین قانون را در یک خط بنویسید، اگرچه این
خوانایی را کاهش می دهد:

پروتکل tcp ACCEPT; پروتکل udp DROP;

{} نماد تودرتو یک "بلوک" از قوانین را تعریف می کند.

براکت های فرفری حاوی هر تعداد قانون تو در تو هستند. همه مسابقات قبل از
بلوک به اینها منتقل می شود.

بسته شدن براکت فرفری مجموعه قوانین را نهایی می کند. شما نباید ";" بنویسید بعد از
این یک قانون خالی است.

مثال:

chain INPUT proto icmp {
icmp-type echo- request ACCEPT;
رها کردن
}

این بلوک دو قانون را در داخل یک بلوک نشان می دهد که هر دو با هر چیزی ادغام می شوند
در مقابل آن، بنابراین شما دو قانون دریافت خواهید کرد:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -j DROP

چندین سطح تودرتو می تواند وجود داشته باشد:

ورودی زنجیره ای {
پروتو icmp {
icmp-type echo- request ACCEPT;
رها کردن
}
daddr 172.16.0.0/12 REJECT;
}

توجه داشته باشید که قانون «رد» تحت تأثیر «proto icmp» قرار نمی‌گیرد، اگرچه وجود ندارد
';' بعد از بسته شدن بریس فرفری ترجمه شده به iptables:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -d 172.16.0.0/12 -j REJECT

$ بسط متغیر مقدار متغیر "$FOO" را جایگزین می کند. بخش را ببینید
متغیرها برای جزئیات بیشتر.

& فراخوانی تابع بخش را ببینید توابع برای جزئیات بیشتر.

() نماد آرایه با استفاده از پرانتز، می‌توانید فهرستی از مقادیر را تعریف کنید
باید برای کلید سمت چپ آن اعمال شود.

مثال:

پروتکل (tcp udp icmp)

این منجر به سه قانون می شود:

... -p tcp ...
... -p udp ...
... -p icmp ...

فقط مقادیر را می توان "لیست" کرد، بنابراین نمی توانید کاری شبیه به این انجام دهید:

proto tcp (ACCEPT LOG)؛

اما شما می توانید این کار را انجام دهید:

زنجیره (INPUT OUTPUT FORWARD) proto proto (icmp udp tcp) DROP;

(که منجر به نه قانون می شود!)

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

" # " نماد نظر. هر چیزی که از این نماد تا انتهای خط پیروی می کند است
نادیده گرفته شد

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

"رشته"
یک رشته را نقل قول کنید که ممکن است حاوی فضاهای خالی، علامت دلار و غیره باشد.

LOG log-prefix ' هی، این پیشوند لاگ من است!';

"رشته"
یک رشته را نقل قول کنید (به بالا مراجعه کنید)، اما مراجع متغیر با علامت دلار هستند
ارزیابی شد:

DNAT به "$myhost:$myport"؛

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

سه نوع کلمه کلیدی وجود دارد:

· محل کلمات کلیدی محل ایجاد قانون را مشخص می کنند. مثال: "میز"، "زنجیره".

· همخوانی داشتن کلمات کلیدی تستی را روی تمام بسته های عبوری انجام می دهند. قانون فعلی بدون است
اگر یک (یا چند) از مسابقات قبول نشود، تأثیر می گذارد. مثال: «پروتو»، «دادر».

اکثر موارد مطابق با یک پارامتر دنبال می شوند: "proto tcp"، "daddr 172.16.0.0/12".

· هدف کلمات کلیدی بیان می کنند که با یک بسته چه باید کرد. مثال: "پذیرفتن"، "رد کردن"،
"پرش".

برخی از اهداف، کلمات کلیدی بیشتری را برای مشخص کردن جزئیات تعریف می‌کنند: «رد کردن رد با icmp-
خالص غیر قابل دسترس".

هر قانون شامل یک است محل و یک هدف، به علاوه هر تعداد از کبریت:

فیلتر جدول # مکان
proto tcp dport (http https) # مطابقت
تایید کنید؛ # هدف

به طور دقیق، نوع چهارم وجود دارد: فرم کلمات کلیدی (که درونی ferm را کنترل می کنند
رفتار)، اما بعدا توضیح داده خواهد شد.

پارامترهای
بسیاری از کلمات کلیدی پارامترها را می گیرند. اینها را می توان به صورت لفظی، مرجع متغیر یا
لیست ها (آرایه ها):

پروتو udp
sadr $TRUSTED_HOSTS;
proto tcp dport (http https ssh)؛
LOG log-prefix "funky wardriver alert: ";

برخی از آنها را می توان نفی کرد (لیست ها را نمی توان نفی کرد):

proto !esp;
proto udp dport !domain;

کلمات کلیدی که هیچ پارامتری ندارند با یک پیشوند "!" نفی می شوند:

proto tcp !syn;

خواندن از iptables(8) برای دیدن کجا ! میتواند مورد استفاده قرار گیرد.

BASIC واژگان کلیدی


موقعیت مکانی: کلید واژه ها
دامنه [ip|ip6]
دامنه را تنظیم کنید. "ip" پیش فرض است و به معنای "IPv4" (iptables) است. "ip6" برای IPv6 است
پشتیبانی، با استفاده از "ip6tables".

جدول [فیلتر|نات|مانگل]
مشخص می کند که این قانون در کدام جدول netfilter درج شود: "filter" (پیش فرض)،
"nat" یا "mangle".

زنجیر [نام زنجیر]
زنجیره نت فیلتر را مشخص می کند (در جدول فعلی) این قانون خواهد بود
درج شده به. نام های زنجیره ای از پیش تعریف شده رایج عبارتند از "INPUT"، "OUTPUT"، "FORWARD"،
"PREROUTING"، "POSTROUTING"، بسته به جدول. فیلتر نت را ببینید
اسناد برای جزئیات

اگر یک زنجیره غیرموجود را در اینجا مشخص کنید، ferm این قانون را به یک زنجیره سفارشی اضافه می کند
با آن نام

سیاست [پذیرفتن|افتادن|..]
خط مشی پیش فرض را برای زنجیره فعلی (فقط داخلی) مشخص می کند. می تواند یکی از
اهداف داخلی (پذیرفتن، رها کردن، رد کردن، ...). بسته ای که با هیچ قاعده ای مطابقت ندارد
در یک زنجیره همانطور که توسط خط مشی مشخص شده رفتار می شود.

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

@subchain ["CHAIN-NAME"] { ... }
مانند عملگرهای بلوک معمولی (یعنی بدون @subchain کلمه کلیدی) به جز
که فرم قوانین درون بریس های فرفری را به یک زنجیره سفارشی جدید منتقل می کند. نام
برای این زنجیره به طور خودکار توسط فرم انتخاب می شود.

در بسیاری از موارد، این سریعتر از یک بلوک است، زیرا ممکن است هسته a را رد کند
بلوک عظیمی از قوانین زمانی که یک پیش شرط نادرست است. مثال زیر را تصور کنید:

زنجیره فیلتر جدول ورودی {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
پروتو tcp dport (http https ssh) ACCEPT;
دامنه dport proto udp ACCEPT;
}
}

این 20 قانون ایجاد می کند. وقتی بسته ای می رسد که از آن عبور نمی کند صدر
مطابقت دارد، با این وجود تمام 20 قانون را بررسی می کند. با @subchain، این بررسی انجام شده است
یک بار، که منجر به فیلتر کردن سریعتر شبکه و بار کمتر CPU می شود:

زنجیره فیلتر جدول ورودی {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @subchain {
پروتو tcp dport (http https ssh) ACCEPT;
دامنه dport proto udp ACCEPT;
}
}

به صورت اختیاری، می توانید نام زنجیره فرعی را تعریف کنید:

saddr (1.2.3.4 2.3.4.5 3.4.5.6) @subchain "foobar" {
پروتو tcp dport (http https ssh) ACCEPT;
دامنه dport proto udp ACCEPT;
}

این نام می تواند یک رشته نقل قول به معنای واقعی کلمه باشد یا یک عبارت فرم گسترده
مانند @cat("interface_"، $iface) یا @substr($var,0,20).

شما می توانید با اعلام صریح یک زنجیره سفارشی به همین نتیجه برسید، اما ممکن است احساس کنید
که با استفاده از @subchain نیاز به تایپ کمتری دارد

اساسی از iptables همخوانی داشتن کلید واژه ها
رابط [نام رابط]
نام رابط، کارت شبکه بیرونی خود، مانند eth0 یا dialup like را تعریف کنید
ppp1 یا هر وسیله ای که می خواهید برای ارسال بسته ها مطابقت دهید. معادل است
به سوئیچ "-i" در از iptables(8).

سطح بیرونی [نام رابط]
مانند رابط، فقط برای تطبیق رابط خروجی برای یک بسته، مانند داخل
از iptables(8).

پروتکل [نام پروتکل|شماره پروتکل]
در حال حاضر توسط هسته پشتیبانی می شود tcp، udp و icmp، یا مربوط به آنها
اعداد.

صدر|پدر [address-spec]
منطبق بر بسته هایی که از آدرس مشخص شده (saddr) منشاء می گیرند یا در آن هدف قرار می گیرند
آدرس (پدر).

مثال:

sadr 192.168/8 ACCEPT; # (مشابه بعدی:)
sadr 192.168.0.0/255.255.255.0 ACCEPT;
daddr my.domain.com ACCEPT;

قطعه
مشخص کنید که فقط بسته های IP تکه تکه شده باید مطابقت داشته باشند. وقتی بسته ها هستند
بزرگتر از حداکثر اندازه بسته ای که سیستم شما می تواند تحمل کند (به نام حداکثر
واحد انتقال یا MTU) آنها به قطعات خرد شده و یک به یک به عنوان ارسال می شوند
بسته های تکی دیدن ifconfig(8) اگر می خواهید MTU برای سیستم خود پیدا کنید (
پیش فرض معمولاً 1500 بایت است).

قطعات اغلب در حملات DOS استفاده می شوند، زیرا هیچ راهی برای یافتن وجود ندارد
منشا یک بسته قطعه.

ورزش|dport [مشخصات پورت]
بر روی بسته های موجود در پورت TCP یا UDP مشخص شده مطابقت دارد. "ورزش" با منبع مطابقت دارد
پورت و dport با پورت مقصد مطابقت دارد.

این تطابق فقط پس از تعیین "پروتکل tcp" یا "پروتکل udp" قابل استفاده است.
زیرا فقط این دو پروتکل در واقع دارای پورت هستند.

و چند نمونه از پورت ها/محدوده های معتبر:

dport 80 ACCEPT;
dport http ACCEPT;
dport ssh:http ACCEPT;
dport 0:1023 ACCEPT; # معادل :1023
dport 1023:65535 ACCEPT;

پسر مشخص کنید که پرچم SYN در یک پکیج tcp باید مطابقت داشته باشد، که استفاده می شود
ایجاد اتصالات tcp جدید شما می توانید ارتباطات ورودی را با این، و
تصمیم بگیرید که آیا می خواهید اجازه دهید یا نه. بسته هایی که این پرچم را ندارند
احتمالاً از یک اتصال از قبل ایجاد شده است، بنابراین منطقی در نظر گرفته می شود
امن برای اجازه دادن به این.

واحد [نام ماژول]
یک ماژول iptables را بارگیری کنید. اکثر ماژول ها کلمات کلیدی مطابقت بیشتری را ارائه می دهند. ما به
که بعدا

اساسی هدف کلید واژه ها
پرش [نام زنجیره سفارشی]
به یک زنجیره سفارشی می پرد. اگر هیچ قانونی در زنجیره سفارشی مطابقت نداشته باشد، netfilter برمی گردد
به قانون بعدی در زنجیره قبلی.

realgoto [نام زنجیره سفارشی]
به یک زنجیره سفارشی بروید. بر خلاف پرش گزینه، برگشت به پردازش ادامه نخواهد داد
در این زنجیره، اما در عوض در زنجیره ای که ما را از طریق تماس می گیرد پرش.

کلمه کلیدی realgoto در دوره انتقال انتخاب شد، زیرا رفتن به
(از قبل منسوخ شده) نام مستعار برای پرش.

تایید کنید بسته های منطبق را می پذیرد.

رها کردن بسته های منطبق را بدون اطلاع بعدی رها کنید.

رد کنید بسته های منطبق را رد می کند، یعنی یک بسته ICMP را برای فرستنده ارسال می کند که پورت است.
به طور پیش فرض غیر قابل دسترس می توانید نوع دیگری از ICMP را مشخص کنید.

رد کردن؛ # پیش‌فرض icmp-port-unreachable است
رد کردن reject-with icmp-net-unreachable;

برای جزئیات، عبارت "iptables -j REJECT -h" را تایپ کنید.

برگشت زنجیره فعلی را تمام کنید و به زنجیره فراخوان بازگردید (اگر "پرش کنید
[Custom-chain-name]" استفاده شد).

NOP هیچ اقدامی اصلا

اضافی واژگان کلیدی


نت فیلتر ماژولار است. ماژول ها ممکن است اهداف اضافی و کلمات کلیدی را ارائه دهند. لیست
ماژول های netfilter به طور مداوم در حال رشد هستند و ferm تلاش می کند تا از آنها پشتیبانی کند
همه. این فصل ماژول هایی را که در حال حاضر پشتیبانی می شوند توضیح می دهد.

از iptables همخوانی داشتن ماژول ها
حساب ترافیک حساب برای همه میزبان ها در شبکه / نقاب شبکه تعریف شده. این یکی از
ماژول‌هایی را مطابقت دهید که مانند یک هدف رفتار می‌کنند، یعنی بیشتر باید از آن استفاده کنید NOP
هدف.

حساب کاربری mod نام mynetwork aaddr 192.168.1.0/24 کوتاه NOP;

نوع افزودنی
نوع آدرس را بررسی کنید؛ آدرس منبع یا آدرس مقصد.

mod addrtype src-type BROADCAST;
mod addrtype dst-type LOCAL;

"iptables -m addrtype -h" را برای جزئیات تایپ کنید.

ah هدر SPI را در یک بسته AH بررسی می کند.

mod ah ahspi 0x101;
مد آه اهسپی ! 0x200:0x2ff;

آرگومان های اضافی برای IPv6:

mod ah ahlen 32 ACCEPT;
mod ah ahlen !32 ACCEPT;
mod ah ahres ACCEPT;

توضیح یک نظر تا 256 کاراکتر را به یک قانون اضافه می کند، بدون اثر. توجه داشته باشید که
برخلاف نظرات ferm ('#')، این یکی در "iptables -L" نشان داده می شود.

نظر مود "این نظر من است." تایید کنید؛

شرط
اگر مقداری در /proc/net/ipt_condition/NAME 1 باشد مطابقت دارد (مسیر است
/proc/net/ip6t_condition/NAME برای دامنه ip6).

شرط حالت mod (abc def) ACCEPT;
شرط حالت mod !foo ACCEPT;

connbytes
با تعداد بایت یا بسته یک اتصال (یا یکی از دو جریان) مطابقت دهید
که اتصال را تشکیل می دهند) تا کنون یا با میانگین بایت در هر منتقل شده اند
بسته

mod connbytes connbytes 65536: connbytes-dir هر دو connbytes-mode bytes ACCEPT;
mod connbytes connbytes !1024:2048 connbytes-dir reply connbytes-mode packets ACCEPT;

مقادیر معتبر برای connbytes-dir: اصلی, پاسخ, هر دو؛ برای حالت connbytes:
بسته, بایت, avgpkt.

محدود کردن
به شما امکان می دهد تعداد اتصالات TCP موازی را به یک سرور محدود کنید
آدرس IP مشتری (یا بلوک آدرس).

mod connlimit connlimit-above 4 REJECT;
mod connlimit connlimit-above !4 ACCEPT;
mod connlimit connlimit-بالای 4 connlimit-mask 24 REJECT;

connmark
فیلد علامت مرتبط با اتصال را که توسط هدف CONNMARK تنظیم شده است، بررسی کنید.

mod connmark mark 64;
mod connmark mark 6/7;

کنتراک
اطلاعات ردیابی اتصال را بررسی کنید.

mod conntrack ctstate (ESTABLISHED RELATED);
mod conntrack ctproto tcp;
mod conntrack ctorigsrc 192.168.0.2;
mod conntrack ctorigdst 1.2.3.0/24;
mod conntrack ctorigsrcport 67;
mod conntrack ctorigdstport 22;
mod conntrack ctreplsrc 2.3.4.5;
mod conntrack ctrepldst ! 3.4.5.6;
mod conntrack ctstatus ASSURED;
mod conntrack ctexpire 60;
mod conntrack ctexpire 180:240;

"iptables -m conntrack -h" را برای جزئیات تایپ کنید.

dccp ویژگی های خاص DCCP (پروتکل کنترل تراکم داده ها) را بررسی کنید. این
وقتی از "پروتکل dccp" استفاده می کنید، ماژول به طور خودکار بارگذاری می شود.

proto dccp sport 1234 dport 2345 ACCEPT;
پروتو dccp dccp-types (SYNCACK ACK) ACCEPT;
پروتو dccp dccp-types !REQUEST DROP;
proto dccp dccp-option 2 ACCEPT;

dscp فیلد DSCP 6 بیتی را در فیلد TOS مطابقت دهید.

mod dscp dscp 11;
mod dscp dscp-class AF41;

ecn بیت های ECN یک هدر IPv4 TCP را مطابقت دهید.

mod ecn ecn-tcp-cwr;
mod ecn ecn-tcp-ece;
mod ecn ecn-ip-ect 2;

برای جزئیات، "iptables -m ecn -h" را تایپ کنید.

ESP هدر SPI را در یک بسته ESP بررسی می کند.

mod esp espspi 0x101;
مد esp espspi ! 0x200:0x2ff;

eui64 "این ماژول با بخش EUI-64 یک آدرس IPv6 پیکربندی شده خودکار بدون دولت مطابقت دارد.
این EUI-64 مشتق شده از آدرس MAC منبع در فریم Ehternet را با آن مقایسه می کند
64 بیت پایینی آدرس منبع IPv6. اما بیت "Universal/Local" اینطور نیست
مقایسه کرد. این ماژول با سایر قاب های لایه پیوند مطابقت ندارد و فقط در آن معتبر است
زنجیره های PREROUTING، INPUT و FORWARD."

mod eui64 ACCEPT;

تیره "این ماژول با محدودیت نرخ بر اساس یک کنترل کننده منطق فازی [FLC] مطابقت دارد."

مد فازی حد پایین 10 حد بالا 20 ACCEPT;

hbh با سربرگ گزینه های Hop-by-Hop مطابقت دارد (ip6).

mod hbh hbh-len 8 ACCEPT;
mod hbh hbh-len !8 ACCEPT;
mod hbh hbh-opts (1:4 2:8) ACCEPT;

hl با قسمت Hop Limit (ip6) مطابقت دارد.

mod hl hl-eq (8 10) ACCEPT;
mod hl hl-eq !5 ACCEPT;
mod hl hl-gt 15 ACCEPT;
mod hl hl-lt ​​2 ACCEPT;

یاور بررسی می کند که کدام ماژول کمکی conntrack این اتصال را ردیابی می کند. پورت ممکن است باشد
با "-portnr" مشخص شده است.

mod helper helper irc ACCEPT;
mod helper helper ftp-21 ACCEPT;

icmp ویژگی های خاص ICMP را بررسی کنید. این ماژول هنگام استفاده به طور خودکار بارگذاری می شود
"پروتکل icmp".

پروتو icmp icmp-type echo- request ACCEPT;

این گزینه در be نیز قابل استفاده است ip6 دامنه، اگرچه این نام خوانده می شود icmpv6 in
جداول ip6.

از "iptables -p icmp "-h"" برای به دست آوردن لیستی از انواع ICMP معتبر استفاده کنید.

iprange محدوده ای از آدرس های IPv4 را مطابقت دهید.

mod iprange src-range 192.168.2.0-192.168.3.255;
mod iprange dst-range! 192.168.6.0-192.168.6.255;

ipv4options
مطابق با گزینه های سرصفحه IPv4 مانند مسیریابی منبع، مسیر ثبت، مهر زمانی و
هشدار روتر

mod ipv4options ssrr ACCEPT;
mod ipv4options lsrr ACCEPT;
mod ipv4options no-srr ACCEPT;
mod ipv4options !rr ACCEPT;
mod ipv4options !ts ACCEPT;
mod ipv4options !ra ACCEPT;
mod ipv4options !any-opt ACCEPT;

ipv6header
با هدر افزونه IPv6 (ip6) مطابقت دارد.

مد ipv6header header !(hop frag) ACCEPT;
مد ipv6header header (auth dst) ACCEPT;

حشیش
مشابه "محدودیت حالت" است، اما قابلیت اضافه کردن هر مقصد یا هر پورت را اضافه می کند
محدودیت های مدیریت شده در جدول هش

mod hashlimit hashlimit 10/min hashlimit-burst 30/minute
hashlimit-mode dstip hashlimit-name foobar ACCEPT;

مقادیر ممکن برای حالت hashlimit: dstip dstport srcip srcport (یا لیستی با
بیش از یکی از اینها).

تنظیمات احتمالی بیشتری وجود دارد، برای تایپ کنید "iptables -m hashlimit -h".
مستندات.

طول طول بسته را بررسی کنید.

طول مد 128; # دقیقا 128 بایت
طول مد 512:768; # دامنه
طول مد ! 256; # نفی شد

محدود کردن نرخ بسته را محدود می کند.

محدودیت حد مود 1/ثانیه؛
حد مجاز مود 15/دقیقه محدودیت-burst 10;

برای جزئیات، "iptables -m limit -h" را تایپ کنید.

مک آدرس MAC منبع را مطابقت دهید.

mod mac mac-source 01:23:45:67:89;

علامت بسته ها را بر اساس فیلد علامت فیلتر شبکه آنها مطابقت می دهد. این ممکن است یک عدد صحیح 32 بیتی باشد
بین 0 و 4294967295.

علامت mod 42;

mh با هدر تحرک (دامنه) مطابقت دارد ip6).

proto mh mh-type binding-update ACCEPT;

چند پورت
مجموعه ای از پورت های مبدا یا مقصد (فقط UDP و TCP) را مطابقت دهید.

پورت های منبع چند پورت (https ftp)؛
مود چند پورت مقصد-پورت (دامنه mysql)؛

این قانون یک مزیت بزرگ نسبت به "dport" و "sport" دارد: فقط یک قانون ایجاد می کند
تا 15 پورت به جای یک قانون برای هر پورت.

چهارم هر بسته "n" را مطابقت دهید.

mod nth هر 3;
مد nth شمارنده 5 هر 2;
مد nth شروع 2 هر 3;
مود nth شروع 5 بسته 2 هر 6.

برای جزئیات، عبارت "iptables -m nth -h" را تایپ کنید.

اسف بسته ها را بسته به سیستم عامل فرستنده مطابقت دهید.

mod osf ژانر لینوکس;
mod osf ! ژانر FreeBSD ttl 1 log 1;

برای جزئیات، عبارت "iptables -m osf -h" را تایپ کنید.

مالک بررسی اطلاعات مربوط به سازنده بسته، یعنی شناسه کاربر، شناسه گروه، شناسه فرآیند،
شناسه جلسه و نام فرمان

مد مالک uid-owner 0;
صاحب mod gid-owner 1000;
صاحب mod pid-owner 5432;
صاحب mod sid-owner 6543;
صاحب mod cmd-owner "sendmail";

("cmd-owner"، "pid-owner" و "sid-owner" به وصله های هسته خاصی نیاز دارند نه
موجود در هسته لینوکس وانیلی)

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

mod physdev physdev-in ppp1;
mod physdev physdev-out eth2;
mod physdev physdev-is-in;
mod physdev physdev-is-out;
mod physdev physdev-is-bridged;

pkttype نوع بسته لایه پیوند را بررسی کنید.

mod pkttype pkt-type unicast;
mod pkttype pkt-type broadcase;
mod pkttype pkt-type multicast;

سیاست با خط مشی IPsec اعمال شده در این بسته مطابقت دارد.

سیاست mod dir out pol ipsec ACCEPT;
سیاست mod reqid 23 spi 0x10 proto ah ACCEPT;
mod Policy mode tunnel tunnel-src 192.168.1.2 ACCEPT;
mod Policy mode tunnel tunnel-dst 192.168.2.1 ACCEPT;
سیاست مد سخت بعدی reqid 24 spi 0x11 ACCEPT;

توجه داشته باشید که کلمه کلیدی proto- همچنین به عنوان یک نسخه کوتاه از پروتکل
(ماژول بازی داخلی). شما می توانید این تضاد را با استفاده از طولانی مدت برطرف کنید
کلمه کلیدی پروتکل.

PSD اسکن پورت TCP/UDP را شناسایی کنید.

mod psd psd-weight-threshold 21 psd-delay-threshold 300
psd-lo-ports-weight 3 psd-hi-ports-weight 1 DROP;

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

سهمیه mod 65536 ACCEPT;

تصادفی درصدی تصادفی از همه بسته ها را مطابقت دهید.

mod میانگین تصادفی 70;

قلمرو با قلمرو مسیریابی مطابقت دهید. مفید در محیط های با استفاده از BGP.

قلمرو mod 3;

اخیر آدرس های IP منبع را به طور موقت علامت گذاری کنید.

مود اخیر مجموعه؛
مود اخیر بررسی مجدد ثانیه 60;
نام منبع مجموعه اخیر mod "badguy"؛
mod اخیر مجموعه rdest;
اصلاحات اخیر rcheck نام منبع "badguy" ثانیه 60;
مود آخرین آپدیت ثانیه 120 تعداد بازدید 3 rttl;

این ماژول netfilter یک نقص طراحی دارد: اگرچه به عنوان یک مسابقه پیاده سازی شده است
ماژول، در هنگام استفاده از کلمه کلیدی "set" رفتاری شبیه به هدف دارد.

<http://snowman.net/projects/ipt_recent/>

rt هدر مسیریابی IPv6 را مطابقت دهید (فقط IP6).

mod rt rt-type 2 rt-len 20 ACCEPT;
mod rt rt-type !2 rt-len !20 ACCEPT;
mod rt rt-segsleft 2:3 ACCEPT;
mod rt rt-segsleft !4:5 ACCEPT;
mod rt rt-0-res rt-0-addrs (::1 ::2) rt-0-not-strict ACCEPT;

sctp ویژگی های خاص SCTP (پروتکل انتقال کنترل جریان) را بررسی کنید. این
وقتی از "پروتکل sctp" استفاده می کنید، ماژول به طور خودکار بارگذاری می شود.

proto sctp sport 1234 dport 2345 ACCEPT;
proto sctp chunk-types only DATA:Be ACCEPT;
پروتو sctp chunk-types any (INIT INIT_ACK) ACCEPT.
پروتو sctp chunk-types !همه ( ضربان قلب) ACCEPT;

از "iptables -p sctp "-h"" برای به دست آوردن لیستی از انواع chunk معتبر استفاده کنید.

تنظیم IP/Port/MAC مبدا یا مقصد را در مقابل مجموعه ای بررسی می کند.

مجموعه مد مجموعه badguys src DROP;

دیدنhttp://ipset.netfilter.org/> برای اطلاعات بیشتر

بود وضعیت ردیابی اتصال را بررسی می کند.

حالت حالت mod INVALID DROP.
حالت mod (تاسیس شده مرتبط) ACCEPT;

برای جزئیات، عبارت "iptables -m state -h" را تایپ کنید.

آمار
جانشین از چهارم و تصادفی، در حال حاضر بدون سند در از iptables(8) صفحه مرد.

حالت آماری mod احتمال تصادفی 0.8 ACCEPT;
حالت آمار mod nامین هر 5 بسته 0 DROP;

رشته با یک رشته مطابقت دارد.

رشته رشته mod "foo bar" ACCEPT;
mod string algo kmp از 64 تا 128 hex-string "deadbeef" ACCEPT;

tcp ویژگی های خاص TCP را بررسی می کند. این ماژول هنگام استفاده به طور خودکار بارگذاری می شود
"پروتکل tcp".

proto tcp sport 1234;
پروتو tcp dport 2345;
پروتو tcp tcp-flags (SYN ACK) SYN;
پروتو tcp tcp-flags! (SYN ACK) SYN;
proto tcp tcp-flags ALL (RST ACK);
پروتو tcp syn.
پروتو tcp tcp-گزینه 2;
proto tcp mss 512;

"iptables -p tcp -h" را برای جزئیات تایپ کنید.

tcpmss قسمت TCP MSS یک بسته SYN یا SYN/ACK را بررسی کنید.

mod tcpmss mss 123 ACCEPT;
mod tcpmss mss 234:567 ACCEPT;

زمان بررسی کنید که آیا زمان رسیدن یک بسته در محدوده مشخص است یا خیر.

زمان مود زمان شروع 12:00;
زمان مد 13:30;
روزهای مد روز (دوشنبه چهارشنبه جمعه)؛
زمان مود datestart 2005:01:01;
زمان mod datestart 2005:01:01:23:59:59;
mod time datestop 2005:04:01;
زمان مد روز ماه (30 31)؛
زمان وزارت دفاع در روزهای هفته (چهارشنبه پنجشنبه)؛
زمان مود زمان شروع 12:00 utc;
زمان مود زمان شروع 12:00 localtz.

برای جزئیات، عبارت "iptables -m time -h" را تایپ کنید.

به فرم خوانده شده یک بسته را با مقدار TOS مشخص شده مطابقت می دهد.

mod tos tos Minimize-Cost ACCEPT;
mod tos tos !Normal-Service ACCEPT;

برای جزئیات، عبارت "iptables -m tos -h" را تایپ کنید.

TTL فیلد ttl (زمان برای زندگی) را در هدر IP مطابقت می دهد.

mod ttl ttl-eq 12; # ttl برابر است
mod ttl ttl-gt 10; # ttl بیشتر از
mod ttl ttl-lt 16; # ttl کمتر از

u32 داده های خام را از بسته مقایسه می کند. شما می توانید بیش از یک فیلتر را در یک فرم مشخص کنید
فهرست؛ اینها به قواعد چندگانه بسط داده نمی شوند.

mod u32 u32 '6&0xFF=1' ACCEPT;
mod u32 u32 ('27&0x8f=7' '31=0x527c4833') DROP;

نجس بسته هایی را که بد شکل یا غیرعادی به نظر می رسند مطابقت می دهد. این مسابقه دیگر ندارد
پارامترها.

از iptables هدف ماژول ها
اهداف اضافی زیر در ferm در دسترس هستند، مشروط بر اینکه آنها را فعال کرده باشید
هسته شما:

طبقه بندی کردن
کلاس CBQ را تنظیم کنید.

CLASSIFY set-class 3:50;

خوشه
یک خوشه ساده از گره ها را پیکربندی کنید که آدرس IP و MAC خاصی را به اشتراک بگذارند.
اتصالات به صورت ایستا بین گره ها توزیع می شوند.

CLUSTERIP hashmode جدید sourceip clustermac 00:12:34:45:67:89
total-nodes 4 local-node 2 hash-init 12345;

CONNMARK
مقدار علامت netfilter مربوط به یک اتصال را تنظیم می کند.

CONNMARK مجموعه علامت 42;
CONNMARK save-mark;
CONNMARK restore-mark;
CONNMARK save-mark mask 0x7fff;
CONNMARK restore-mark mask 0x8000;

CONNSECMARK
این ماژول علائم امنیتی را از بسته ها به اتصالات کپی می کند (اگر بدون برچسب)،
و از اتصالات به بسته ها (همچنین فقط در صورت بدون برچسب). به طور معمول در
در ارتباط با SECMARK، فقط در جدول mangle معتبر است.

ذخیره CONNSECMARK.
CONNSECMARK بازیابی.

DNAT به [آدرس آی‌پی|محدوده IP|محدوده پورت آی‌پی]
آدرس مقصد بسته را تغییر دهید.

DNAT به 10.0.0.4;
DNAT به 10.0.0.4:80;
DNAT به 10.0.0.4: 1024-2048;
DNAT به 10.0.1.1-10.0.1.20;

ECN این هدف اجازه می دهد تا به طور انتخابی در اطراف سیاهچاله های شناخته شده ECN کار کنید. فقط می تواند
در جدول مانگل استفاده شود.

ECN ecn-tcp-remove;

HL فیلد IPv6 Hop Limit را تغییر دهید (فقط IP6/mangle).

HL hl-set 5;
HL hl-dec 2;
HL hl-inc 1;

IPV4OPTSSTRIP
تمام گزینه های IP را از یک بسته حذف کنید. این ماژول هیچ گزینه ای ندارد.

IPV4OPTSSTRIP;

ورود کاربران تمام بسته هایی که با این قانون مطابقت دارند را در گزارش هسته ثبت کنید. مراقب ورود به سیستم باشید
جاری شدن سیل توجه داشته باشید که این یک "هدف غیر پایانی" است، یعنی پیمایش قانون
در قانون بعدی ادامه می یابد.

پیشوند log-log-level warning LOG "به این نگاه کنید: ";
LOG log-tcp-sequence log-tcp-options;
LOG log-ip-Options.

علامت فیلد علامت netfilter را برای بسته تنظیم می کند (یک عدد صحیح 32 بیتی بین 0 و
4294967295):

MARK set-mark 42;
MARK set-xmark 7/3;
MARK and-mark 31;
MARK or-mark 1;
MARK xor-mark 12;

بالماسکه
بالماسکه بسته های تطبیق. به صورت اختیاری با یک پورت یا محدوده پورت برای دنبال می شود
iptables به عنوان "123"، "123-456" یا "123:456" مشخص کنید. پارامتر محدوده پورت
مشخص می کند که اتصالات مبدل شده باید از چه پورت های محلی نشات بگیرد.

بالماسکه;
MASQUERADE to-ports 1234:2345;
MASQUERADE to-ports 1234:2345 تصادفی.

میرور هدف نمایش تجربی که فیلدهای مبدا و مقصد را معکوس می کند
در هدر IP

آینه؛

NETMAP یک شبکه کامل را روی یک شبکه دیگر در نگاشت کنید NAT جدول.

NETMAP به 192.168.2.0/24؛

هیچ ردی نیست ردیابی اتصال را برای همه بسته های مطابق با این قانون غیرفعال کنید.

proto tcp dport (135:139 445) NOTRACK;

NFLOG ثبت بسته ها از طریق netlink. این جانشین است ULOG.

NFLOG nflog-group 5 nflog-prefix "به این نگاه کنید: ";
NFLOG nflog-range 256;
NFLOG nflog-threshold 10;

NFQUEUE صف بندی فضای کاربری، به پشتیبانی از هسته nfnetlink_queue نیاز دارد.

proto tcp dport ftp NFQUEUE queue-num 20;

باشه صف فضای کاربری، سلف به NFQUEUE. همه بسته ها به صف 0 می روند.

proto tcp dport ftp QUEUE;

REDIRECT به پورت ها [پورت ها]
پروکسی شفاف: IP مقصد بسته را به دستگاه تغییر دهید
خود.

proto tcp dport http REDIRECT to-ports 3128;
proto tcp dport http REDIRECT to-ports 3128 random;

یکسان مشابه SNAT است، اما یک کلاینت برای همه آن به همان IP منبع نگاشت می شود
اتصالات.

SAME به 1.2.3.4-1.2.3.7;
SAME تا 1.2.3.8-1.2.3.15 nodst;
SAME تا 1.2.3.16-1.2.3.31 تصادفی؛

SECMARK این برای تنظیم ارزش علامت امنیتی مرتبط با بسته برای استفاده استفاده می شود
زیر سیستم های امنیتی مانند SELinux. فقط در جدول mangle معتبر است.

SECMARK selctx "system_u:object_r:httpd_packet_t:s0";

مجموعه [add-set|del-set] [نام مجموعه] [پرچم(ها)]
IP را به مجموعه مشخص شده اضافه کنید. دیدنhttp://ipset.netfilter.org/>

proto icmp icmp-type echo-request SET add-set badguys src;

SNAT به [آدرس آی‌پی|محدوده IP|محدوده پورت آی‌پی]
آدرس منبع بسته را تغییر دهید.

SNAT به 1.2.3.4;
SNAT به 1.2.3.4: 20000-30000؛
SNAT به 1.2.3.4 تصادفی.

TCPMSS مقدار MSS بسته های TCP SYN را تغییر دهید.

مجموعه TCPMSS-mss 1400;
TCPMSS گیره-mss-to-pmtu.

سرفه کردن مجموعه [ارزش]
بیت بسته tcp Type Of Service را روی این مقدار تنظیم کنید. این مورد استفاده قرار خواهد گرفت
هر چه زمان‌بندی ترافیک مایل باشد، عمدتاً ماشین لینوکس خودتان، اما شاید
بیشتر. tos-bit های اصلی خالی و با این مقدار بازنویسی می شوند.

TOS set-tos Maximize-Throughput;
TOS and-tos 7;
TOS or-tos 1;
TOS xor-tos 4;

"iptables -j TOS -h" را برای جزئیات تایپ کنید.

TTL فیلد هدر TTL را اصلاح کنید.

TTL ttl-set 16;
TTL ttl-dec 1; # کاهش 1
TTL ttl-inc 4; # افزایش 4

ULOG ثبت بسته‌ها به یک برنامه فضای کاربر.

ULOG ulog-nlgroup 5 ulog-prefix "به این نگاه کنید: ";
ULOG ulog-cprange 256;
ULOG ulog-qthreshold 10;

OTHER دامنه ها


از نسخه 2.0، فرم نه تنها پشتیبانی می کند ip و ip6، بلکه آرپ (جدول ARP) و eb
(جدول پل ارتباطی اترنت). مفاهیم مشابه هستند از iptables.

arptables کلید واژه ها
منبع-IP, مقصد-ip
با آدرس IPv4 مبدا یا مقصد مطابقت دارد. مثل صدر و بابا در ip
دامنه.

منبع-مک, مقصد-مک
با آدرس MAC مبدا یا مقصد مطابقت دارد.

رابط, سطح بیرونی
رابط ورودی و خروجی

طول h
طول سخت افزار بسته

Chain INPUT h-length 64 ACCEPT;

شناسنده کد عملیات، برای جزئیات بیشتر به ادامه مطلب مراجعه کنید از iptables(8).

opcode 9 ACCEPT;

نوع h نوع سخت افزار.

h-نوع 1 ACCEPT;

نمونه اولیه
نوع پروتکل

نمونه اولیه 0x800 ACCEPT.

مانگلینگ
کلمات کلیدی mangle-ip-s, mangle-ip-d, mangle-mac-s, mangle-mac-d, منحرف کردن هدف
ممکن است برای ARP mangling استفاده شود. دیدن از iptables(8) برای جزئیات.

جداول کلید واژه ها
proto- مطابق با پروتکلی که فریم را ایجاد کرده است، به عنوان مثال IPv4 or PPP. برای یک لیست، نگاه کنید
/etc/ethertypes.

رابط, سطح بیرونی
رابط ورودی و خروجی فیزیکی

منطقی وارد, منطقی
رابط پل منطقی

صدر, بابا
آدرس مک منبع یا مقصد را مطابقت می دهد.

مسابقه ماژول ها
ماژول های مطابقت زیر پشتیبانی می شوند: 802.3، arp، ip، mark_m، pkttype، stp،
vlan، ورود

هدف ضمیمهها
پسوندهای هدف زیر پشتیبانی می شوند: arpreply، dnat، mark، redirect،
چرت زدن

لطفا توجه داشته باشید که تضاد بین --علامت از mark_m ماژول مطابقت
و -j علامت. از آنجایی که هر دو با کلمه کلیدی ferm پیاده سازی می شوند علامت، ما
تصمیم گرفتیم با نوشتن نام هدف با حروف بزرگ، مانند مورد دیگر، این مشکل را حل کنیم
دامنه ها مثال زیر علامت 1 تا 2 را بازنویسی می کند:

علامت 1 MARK 2;

ADVANCED ویژگی‌ها


متغیر
در فایل های فایروال پیچیده، استفاده از متغیرها مفید است، به عنوان مثال برای دادن یک شبکه
رابط یک نام معنی دار

برای تنظیم متغیرها بنویسید:

@def $DEV_INTERNET = eth0;
@def $PORTS = (http ftp);
@def $MORE_PORTS = ($PORTS 8080)؛

در کد واقعی ferm، متغیرها مانند هر پارامتر کلمه کلیدی دیگری استفاده می شوند:

رابط INPUT زنجیره ای $DEV_INTERNET پروتو tcp dport $MORE_PORTS ACCEPT.

توجه داشته باشید که متغیرها فقط در پارامترهای کلیدواژه ("192.168.1.1"، "http") قابل استفاده هستند. آنها
نمی تواند حاوی کلمات کلیدی ferm مانند "proto" یا "Interface" باشد.

متغیرها فقط در بلوک فعلی معتبر هستند:

@def $DEV_INTERNET = eth1;
ورودی زنجیره ای {
پروتو tcp {
@def $DEV_INTERNET = ppp0;
رابط $DEV_INTERNET dport http ACCEPT;
}
رابط $DEV_INTERNET DROP.
}

گسترش خواهد یافت به:

ورودی زنجیره ای {
پروتو tcp {
رابط ppp0 dport http ACCEPT;
}
رابط eth1 DROP;
}

"def $DEV_INTERNET = ppp0" فقط در بلوک "proto tcp" معتبر است. بلوک والد
هنوز می‌داند "Set $DEV_INTERNET = eth1".

شامل فایل ها خاص هستند - متغیرهای اعلام شده در یک فایل شامل هنوز در دسترس هستند
بلوک تماس این زمانی مفید است که فایلی را اضافه کنید که فقط متغیرها را اعلام می کند.

اتوماتیک متغیرها
برخی از متغیرها به صورت داخلی توسط ferm تنظیم می شوند. اسکریپت‌های Ferm می‌توانند مانند هر اسکریپت دیگری از آنها استفاده کنند
متغیر.

$FILENAME
نام فایل پیکربندی مربوط به دایرکتوری ferm در شروع شد.

$FILEBNAME
نام پایه فایل پیکربندی.

$DIRNAME
دایرکتوری فایل پیکربندی.

$DOMAIN دامنه فعلی. یکی از ip, ip6, آرپ, eb.

$TABLE جدول فعلی نت فیلتر

$CHAIN زنجیره نت فیلتر فعلی

$LINE خط اسکریپت فعلی. می توان از آن به این صورت استفاده کرد:

@def &log($msg) = {
LOG log-prefix "rule=$msg:$LINE ";
}
.
.
.
&log("پیام ورود");

توابع
توابع شبیه به متغیرها هستند، با این تفاوت که ممکن است پارامترهایی داشته باشند، و ارائه می دهند
دستورهای ferm، نه مقادیر.

@def &FOO() = پروتو (tcp udp) دامنه dport.
&FOO() ACCEPT;

@def &TCP_TUNNEL($port، $dest) = {
زنجیره فیلتر جدول FORWARD رابط ppp0 proto tcp dport $port daddr $dest outerface eth0 ACCEPT;
جدول nat زنجیره PREROUTING رابط ppp0 پروتو tcp dport $port daddr 1.2.3.4 DNAT به $dest;
}

&TCP_TUNNEL(http, 192.168.1.33)؛
&TCP_TUNNEL(ftp, 192.168.1.30)؛
&TCP_TUNNEL((ssh smtp)، 192.168.1.2);

فراخوانی تابعی که حاوی یک بلوک است (مانند '{...}') باید آخرین فرمان در یک ferm باشد
قانون، یعنی باید با ";" دنبال شود. '&FOO()بنابراین، مثال حاوی بلوک نیست
شما می توانید پس از تماس بنویسید "قبول". برای دور زدن این موضوع، می توانید کلمات کلیدی را دوباره مرتب کنید:

@def &IPSEC() = { proto (esp ah); proto udp dport 500; }
INPUT زنجیره ای ACCEPT &IPSEC();

بکتیک
با بکتیک، می توانید از خروجی یک دستور خارجی استفاده کنید:

@def $DNSSERVERS = سرور نام grep /etc/resolv.conf | awk '{print $2}';
chain INPUT proto tcp saddr $DNSSERVERS ACCEPT;

دستور با پوسته (/ بن / شل)، درست مانند بکتیک در پرل. ferm انجام می دهد
هیچ گونه بسط متغیری را در اینجا انجام ندهید.

سپس خروجی نشانه گذاری می شود و به عنوان یک لیست ferm (آرایه) ذخیره می شود. خطوطی که با "#" شروع می شوند
نادیده گرفته می شوند؛ خطوط دیگر ممکن است حاوی هر تعداد از مقادیر باشند که با فضای خالی از هم جدا شده اند.

شامل
La @عبارتند از کلمه کلیدی به شما امکان می دهد فایل های خارجی را اضافه کنید:

@include 'vars.ferm';

نام فایل نسبت به فایل فراخوانی است، به عنوان مثال زمانی که از
/etc/ferm/ferm.conf، عبارت فوق شامل /etc/ferm/vars.ferm. متغیرها و
توابع اعلام شده در یک فایل شامل هنوز در فایل فراخوانی موجود هستند.

شامل در یک بلوک کار می کند:

ورودی زنجیره ای {
@include 'input.ferm';
}

اگر یک دایرکتوری را مشخص کنید (با یک '/' انتهایی)، همه فایل‌های این فهرست هستند
شامل، مرتب شده بر اساس حروف الفبا:

@include 'ferm.d/';

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

@include '/root/generate_ferm_rules.sh $HOSTNAME|'

شرایط
کلمه کلیدی @if یک عبارت شرطی را معرفی می کند:

@if $condition DROP;

یک مقدار درست مانند Perl ارزیابی می شود: صفر، لیست خالی، رشته خالی نادرست هستند،
همه چیز دیگر درست است مثال هایی برای مقادیر واقعی:

(ab)؛ 1 "فو"؛ (0 0)

مثال هایی برای مقادیر نادرست:

() 0; '0'; ''

نیز وجود دارد @else:

@if $condition DROP; @else رد کردن؛

به نقطه ویرگول قبل از @else.

بعد از هر دو می توان از بریس های فرفری استفاده کرد @if or @else:

@if $condition {
MARK set-mark 2;
برگشت؛
} @else {
MARK set-mark 3;
}

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

وجود ندارد @elsif، استفاده @else @if به جای آن.

مثال:

@def $have_ipv6 = `test -f /proc/net/ip6_tables_names && echo 1 || پژواک؛
@if $have_ipv6 {
دامنه ip6 {
# ....
}
}

قلاب
برای اجرای دستورات سفارشی، می توانید هوک ها را نصب کنید:

@hook pre "echo 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook post "echo 1 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook flush "echo 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";

دستور مشخص شده با استفاده از پوسته اجرا می شود. "pre" به معنای اجرای دستور قبل است
اعمال قوانین فایروال، و "post" به معنای اجرای دستور بعد از آن است. قلاب های "فلاش".
بعد از اینکه ferm قوانین فایروال را پاک کرد (گزینه --flush) اجرا می شوند. شما می توانید هر کدام را نصب کنید
تعداد قلاب

ساخته شده است توابع


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

@eq(a,b)
دو مقدار را برای برابری آزمایش می کند. مثال:

@if @eq($DOMAIN، ip6) DROP;

@ne(a,b)
مشابه @eq، این تست عدم برابری را انجام می دهد.

@not(x)
یک مقدار بولی را نفی می کند.

@resolve((نام میزبان1 نام میزبان 2 ...) ، [نوع])
معمولاً نام هاست توسط iptables حل می شود. برای اینکه فرمت نام میزبان را حل کند، از
تابع @resolve:

saddr @resolve(my.host.foo) proto tcp dport ssh ACCEPT;
saddr @resolve((another.host.foo third.host.foo)) proto tcp dport openvpn ACCEPT;
daddr @resolve(ipv6.google.com، AAAA) proto tcp dport http ACCEPT;

به پرانتزهای دوتایی در خط دوم توجه کنید: جفت داخلی برای ایجاد لیست فرم،
و جفت بیرونی به عنوان جداکننده پارامتر تابع.

پارامتر دوم اختیاری است و نوع رکورد DNS را مشخص می کند. پیش فرض "A" است.

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

@cat(a b, ...)
تمام پارامترها را در یک رشته ترکیب کنید.

@substr(عبارت، انحراف، طول)
یک زیر رشته را از عبارت استخراج می کند و آن را برمی گرداند. کاراکتر اول در آفست 0 است
OFFSET منفی است، با این فاصله از انتهای رشته شروع می شود.

@length (بیان)
طول بر حسب کاراکتر مقدار EXPR را برمی‌گرداند.

@basename(مسیر)
نام پایه فایل را برای یک مسیر معین برگردانید (File::Spec::splitpath).

@dirname(مسیر)
نام آخرین دایرکتوری را برای یک مسیر معین برگردانید، با فرض اینکه آخرین جزء a است
نام فایل (File::Spec::splitpath).

@ipfilter(لیست)
آدرس های IP را که آشکارا با دامنه فعلی مطابقت ندارند، فیلتر می کند. به این معنا که
برای ایجاد متغیرها و قوانین مشترک برای IPv4 و IPv6 مفید است:

@def $TRUSTED_HOSTS = (192.168.0.40 2001:abcd:ef::40);

دامنه (ip ip6) chain INPUT {
saddr @ipfilter($TRUSTED_HOSTS) proto tcp dport ssh ACCEPT;
}

دستور پخت


La ./مثال ها/ دایرکتوری شامل پیکربندی ferm متعددی است که می توان برای شروع از آنها استفاده کرد
فایروال جدید این بخش شامل نمونه ها، دستور العمل ها و ترفندهای بیشتری است.

ساده بندر حمل و نقل
تابع Ferm کارهای روتین را سریع و آسان می کند:

@def &FORWARD_TCP($proto، $port، $dest) = {
زنجیره فیلتر جدول رابط FORWARD $DEV_WORLD outerface $DEV_DMZ daddr $dest proto $proto dport $port ACCEPT;
جدول nat زنجیره PREROUTING رابط $DEV_WORLD daddr $HOST_STATIC proto $proto dport $port DNAT به $dest;
}

&FORWARD_TCP(tcp, http, 192.168.1.2);
&FORWARD_TCP(tcp، smtp، 192.168.1.3);
&FORWARD_TCP((tcp udp)، دامنه، 192.168.1.4);

دور فرم
اگر ماشین مورد نظر قادر به اجرا نباشد فرم به دلایلی (شاید یک دستگاه تعبیه شده
بدون پرل)، می توانید آن را ویرایش کنید فرم فایل پیکربندی را روی کامپیوتر دیگری بگذارید و اجازه دهید فرم
یک اسکریپت پوسته در آنجا ایجاد کنید.

مثال برای OpenWRT:

ferm --remote --shell mywrt/ferm.conf >mywrt/firewall.user
chmod +x mywrt/firewall.user
scp mywrt/firewall.user mywrt.local.net:/و غیره/
ssh mywrt.local.net /etc/firewall.user

OPTIONS


--noexec را اجرا نکنید از iptables(8) دستورات، اما به جای آن رد شوید. از این طریق می توانید
داده های خود را تجزیه کنید، استفاده کنید -- خطوط برای مشاهده خروجی

-- فلاش قوانین فایروال را پاک می کند و خط مشی همه زنجیره ها را روی ACCEPT تنظیم می کند. فرم
برای تعیین اینکه کدام دامنه ها و جداول هستند به یک فایل پیکربندی نیاز دارد
متأثر، تحت تأثیر، دچار، مبتلا.

-- خطوط خطوط فایروال را که از قوانین ایجاد شده اند نشان دهید. نشان داده خواهند شد
درست قبل از اجرای آنها، بنابراین اگر پیغام خطا دریافت کردید از iptables(8)
و غیره، می توانید ببینید کدام قانون باعث خطا شده است.

--در ارتباط بودن
قوانین فایروال را اعمال کنید و از کاربر تأیید بخواهید. به
اگر در عرض 30 ثانیه پاسخ کاربر معتبری وجود نداشته باشد، مجموعه قوانین قبلی (نگاه کنید به
--تایم اوت). این برای مدیریت فایروال از راه دور مفید است: می توانید آزمایش کنید
قوانین بدون ترس از قفل کردن خود

--تایم اوت S If --در ارتباط بودن استفاده می شود، سپس اگر پاسخ معتبری از کاربر وجود نداشت، به عقب برگردید
بعد از این تعداد ثانیه پیش فرض 30 است.

--کمک فهرست مختصری از گزینه های خط فرمان موجود را نشان دهید.

- نسخه شماره نسخه برنامه را نشان می دهد.

--سریع حالت سریع را فعال کنید: ferm an iptables-save(8) فایل، و آن را نصب می کند
با iptables-restore(8). این بسیار سریعتر است، زیرا فرم تماس می گیرد از iptables(8)
یک بار برای هر قانون به طور پیش فرض.

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

--آهسته. تدریجی حالت سریع یعنی اجرا را غیرفعال کنید از iptables(8) برای هر قانون، و استفاده نکنید
iptables-restore(8).

--پوسته یک اسکریپت پوسته ایجاد کنید که فراخوانی می کند iptables-restore(8) و آن را چاپ می کند.
دلالت بر خطوط ----سریع دارد.

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

--دامنه {ip|ip6}
فقط دامنه مشخص شده را مدیریت کنید. فرم اگر دامنه خالی باشد ممکن است خروجی خالی باشد
در فایل ورودی پیکربندی نشده است.

--def '$name=value'
یک متغیر تعریف شده در فایل پیکربندی را لغو کنید.

با استفاده از خدمات onworks.net از ferm آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

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

Ad




×
تبلیغات
❤️اینجا خرید کنید، رزرو کنید یا بخرید - رایگان است، به رایگان ماندن خدمات کمک می‌کند.