هذا هو نظام الأوامر الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
Ferm - محلل قاعدة جدار الحماية لنظام التشغيل Linux
موجز
سعر الصرف الثابت الخيارات ملف الإدخال
الوصف
سعر الصرف الثابت هي الواجهة الأمامية ل يبتابليس. يقرأ القواعد من ملف التكوين المنظم
والمكالمات يبتابليس(8) لإدخالها في النواة الجاري تشغيلها.
سعر الصرف الثابتالهدف هو جعل قواعد جدار الحماية سهلة الكتابة وسهلة القراءة. يحاول التقليل
المهمة الشاقة المتمثلة في كتابة القواعد، وبالتالي تمكين مسؤول جدار الحماية من الإنفاق
مزيد من الوقت لتطوير قواعد جيدة من التنفيذ السليم للقاعدة.
لتحقيق هذا، سعر الصرف الثابت يستخدم لغة تكوين بسيطة ولكنها قوية، والتي تسمح
المتغيرات، الوظائف، المصفوفات، الكتل. كما يسمح لك بتضمين ملفات أخرى، مما يسمح لك بذلك
يمكنك إنشاء مكتبات للهياكل والوظائف شائعة الاستخدام.
سعر الصرف الثابت، تُنطق "شركة"، وترمز إلى "من أجل سهولة وضع القواعد".
تنبيه
هذه الصفحة اليدوية تفعل ذلك ليست أنوي أن أعلمك كيفية عمل جدار الحماية وكيفية الكتابة بشكل جيد
قواعد. هناك بالفعل وثائق كافية حول هذا الموضوع.
مقدمة
لنبدأ بمثال بسيط:
إدخال السلسلة {
قبول بروتو تكب؛
}
سيؤدي هذا إلى إضافة قاعدة إلى سلسلة الإدخال المحددة مسبقًا، ومطابقة وقبول جميع برامج التعاون الفني
الحزم. حسنًا، لنجعل الأمر أكثر تعقيدًا:
سلسلة (الإدخال والإخراج) {
بروتو (udp tcp) قبول؛
}
سيؤدي هذا إلى إدراج 4 قواعد، وهي 2 في إدخال السلسلة، و2 في إخراج السلسلة، والمطابقة و
قبول كل من حزم UDP وTCP. عادة ستكتب هذا:
iptables -A INPUT -p tcp -j قبول
iptables -A OUTPUT -p tcp -j قبول
iptables -A INPUT -p udp -j قبول
iptables -A OUTPUT -p udp -j قبول
لاحظ مقدار الكتابة التي يتعين علينا القيام بها؟ :-)
في الأساس، هذا هو كل ما في الأمر، على الرغم من أنه يمكنك جعل الأمر أكثر تعقيدًا.
شيء للنظر فيه:
إدخال السلسلة {
قبول السياسة ؛
Daddr 10.0.0.0/8 بروتو تي سي بي دبورت! ftp Jump mychain sport :1023 TOS 4 settos 8 mark 2;
Daddr 10.0.0.0/8 proto tcp dport ftp REJECT;
}
نقطتي هنا هي أنك تحتاج إلى وضع قواعد لطيفة، وإبقائها قابلة للقراءة لك
الآخرين، وعدم جعله في حالة من الفوضى.
سيكون من المفيد للقارئ أن يتم وضع قواعد جدار الحماية الناتجة هنا كمرجع.
يمكنك أيضًا تضمين الإصدار المتداخل مع إمكانية قراءة أفضل.
حاول استخدام التعليقات لإظهار ما تفعله:
# يتيح هذا السطر استخدام وكيل http الشفاف للشبكة الداخلية:
بروتو TCP إذا eth0 Daddr! 192.168.0.0/255.255.255.0
dport http إعادة التوجيه إلى المنافذ 3128؛
سوف تكون شاكرا لذلك في وقت لاحق!
إدخال السلسلة {
قبول السياسة ؛
الواجهة (eth0 ppp0) {
# رفض الوصول إلى قراصنة notorius، قم بالعودة إلى هنا إذا لم يكن هناك تطابق
تم العثور على # لاستئناف جدار الحماية العادي
القفز الأشرار.
بروتوكول TCP Jump fw_tcp؛
بروتوكول udp الانتقال fw_udp؛
}
}
كلما زاد عدد عشك، كلما كان مظهره أفضل. تأكد من صحة الترتيب الذي تحدده
لن ترغب في القيام بذلك:
سلسلة FORWARD {
بروتو ! UDP قطرة؛
قبول بروتو تكب دبورت بروتوكول نقل الملفات؛
}
لأن القاعدة الثانية لن تتطابق أبدًا. أفضل طريقة هي تحديد كل شيء أولاً
مسموح به، ثم ينكر كل شيء آخر. انظر إلى الأمثلة للحصول على المزيد من اللقطات الجيدة.
معظم الناس يفعلون شيئًا مثل هذا:
بروتو تكب {
دبورت (
سش http بروتوكول نقل الملفات
) يقبل؛
دبورت 1024:65535! قبول متزامن؛
يسقط؛
}
هيكل OF A FIREWALL FILE
تبدو بنية ملف جدار الحماية المناسب مثل كود C المبسط. فقط القليل
يتم استخدام الأحرف النحوية في ملفات تكوين Ferm. إلى جانب هذه الخاصة
caracters، يستخدم Ferm "المفاتيح" و"القيم"، ويفكر فيها كخيارات ومعلمات، أو ك
المتغيرات والقيم، أيا كان.
بهذه الكلمات، يمكنك تحديد خصائص جدار الحماية الخاص بك. كل جدار الحماية
يتكون من شيئين: أولا، معرفة ما إذا كانت حركة مرور الشبكة تتوافق مع شروط معينة، و
ثانيا، ما يجب القيام به مع حركة المرور تلك.
يمكنك تحديد الشروط الصالحة لبرنامج واجهة النواة الذي تستخدمه،
المحتمل يبتابليس(8). على سبيل المثال، في iptables، عندما تحاول مطابقة حزم tcp،
أنت ستقول:
iptables --بروتوكول tcp
في فيرم، سوف يصبح هذا:
بروتوكول تكب؛
مجرد كتابة هذا في Ferm لا يفعل أي شيء، عليك أن تخبر Ferm (في الواقع، تحتاج إلى ذلك
اقول يبتابليس(8) والنواة) ماذا تفعل مع أي حركة مرور مطابقة لهذا الشرط:
iptables --protocol tcp -j قبول
أو ترجمت إلى سعر الصرف الثابت:
قبول بروتوكول TCP ؛
(أراضي البوديساتفا) ; الحرف هو في نهاية كل قاعدة فيرم. يتجاهل Ferm فواصل الأسطر، مما يعني أن
المثال أعلاه مطابق لما يلي:
بروتوكول TCP
يقبل؛
فيما يلي قائمة بالشخصيات الخاصة:
; هذه الشخصية تضع اللمسات الأخيرة على القاعدة.
مفصولة بفواصل منقوطة، يمكنك كتابة قواعد متعددة في سطر واحد، على الرغم من أن هذا
تقليل إمكانية القراءة:
قبول بروتوكول TCP ؛ بروتوكول UDP DROP؛
{} يحدد رمز التداخل "كتلة" من القواعد.
تحتوي الأقواس المتعرجة على أي عدد من القواعد المتداخلة. جميع المباريات قبل
يتم ترحيل الكتلة إلى هذه.
يُنهي قوس الإغلاق المتعرج مجموعة القواعد. لا ينبغي أن تكتب "؛" بعد
ذلك، لأن ذلك سيكون بمثابة قاعدة فارغة.
على سبيل المثال:
سلسلة الإدخال بروتو icmp {
قبول طلب الصدى من نوع icmp؛
يسقط؛
}
تعرض هذه الكتلة قاعدتين داخل الكتلة، وسيتم دمجهما مع أي شيء
أمامه، لذلك سوف تحصل على قاعدتين:
iptables -A INPUT -p icmp --icmp-type echo-request -j قبول
iptables -A المدخلات -p icmp -j DROP
يمكن أن يكون هناك مستويات تداخل متعددة:
إدخال السلسلة {
بروتو آي سي إم بي {
قبول طلب الصدى من نوع icmp؛
يسقط؛
}
دادر 172.16.0.0/12 رفض؛
}
لاحظ أن قاعدة "الرفض" لا تتأثر بـ "proto icmp"، على الرغم من عدم وجودها
';' بعد إغلاق القوس المتعرج. مترجم إلى iptables:
iptables -A INPUT -p icmp --icmp-type echo-request -j قبول
iptables -A المدخلات -p icmp -j DROP
iptables -A INPUT -d 172.16.0.0/12 -j رفض
$ التوسع المتغير. يستبدل '$FOO' بقيمة المتغير. انظر القسم
المتغيرات للتفاصيل.
& استدعاء الوظيفة. انظر القسم وظائف للتفاصيل.
() رمز المصفوفة. باستخدام الأقواس، يمكنك تحديد "قائمة" من القيم التي
يجب أن يتم تطبيقه على المفتاح الموجود على يساره.
على سبيل المثال:
البروتوكول (tcp udp icmp)
سيؤدي هذا إلى ثلاث قواعد:
... -ع تكب ...
... -p udp ...
... -p ICMP ...
يمكن "إدراج" القيم فقط، لذا لا يمكنك القيام بشيء مثل هذا:
بروتو تكب (قبول السجل)؛
لكن يمكنك القيام بذلك:
سلسلة (الإدخال والإخراج للأمام) بروتو (icmp udp tcp) DROP؛
(مما سيؤدي إلى تسع قواعد!)
يتم فصل القيم بمسافات. رمز المصفوفة هو كلا من اليسار واليمين
ترابطي، على عكس كتلة التداخل، التي تكون ترابطية يسارية فقط.
" # " رمز التعليق . أي شيء يتبع هذا الرمز حتى نهاية السطر هو
تجاهلها.
""الأمر""
قم بتنفيذ الأمر في الصدفة، وأدخل مخرجات العملية. انظر القسم
باكتيكس للتفاصيل.
'سلسلة'
اقتبس سلسلة قد تحتوي على مسافات بيضاء وعلامة الدولار وما إلى ذلك.
LOG log-prefix ' مرحبًا، هذه هي بادئة السجل الخاصة بي!';
"خيط"
اقتبس سلسلة (انظر أعلاه)، لكن المراجع المتغيرة التي تحمل علامة الدولار هي كذلك
مقيمة:
DNAT إلى "$myhost:$myport";
الكلمات الرئيسية
في القسم السابق، قدمنا بالفعل بعض الكلمات الرئيسية الأساسية مثل "سلسلة"،
"البروتوكول" و"القبول". دعونا استكشاف طبيعتها.
هناك ثلاثة أنواع من الكلمات الرئيسية:
· موقع تحدد الكلمات الرئيسية مكان إنشاء القاعدة. مثال: "الجدول"، "السلسلة".
· مباراة تقوم الكلمات الأساسية بإجراء اختبار على جميع الحزم المارة. القاعدة الحالية بدون
يسري مفعوله في حالة عدم نجاح واحدة (أو أكثر) من المباريات. مثال: "بروتو"، "داددر".
معظم التطابقات يتبعها معلمة: "proto tcp"، "daddr 172.16.0.0/12".
· الهدف تشير الكلمات الأساسية إلى ما يجب فعله بالحزمة. مثال: "قبول"، "رفض"،
"القفز".
تحدد بعض الأهداف المزيد من الكلمات الرئيسية لتحديد التفاصيل: "رفض الرفض باستخدام icmp-
صافي غير قابل للوصول".
كل قاعدة تتكون من أ موقع و الهدف، بالإضافة إلى أي عدد من اعواد الثقاب:
مرشح الجدول # الموقع
بروتو تكب دبورت (http https) # match
يقبل؛ # هدف
وبالمعنى الدقيق للكلمة، هناك نوع رابع: سعر الصرف الثابت الكلمات الرئيسية (التي تتحكم في الملفات الداخلية لـ Ferm
السلوك)، ولكن سيتم شرحها لاحقا.
المعاملات
العديد من الكلمات الرئيسية تأخذ المعلمات. يمكن تحديدها كأحرف حرفية أو مراجع متغيرة أو
القوائم (المصفوفات):
udp بروتو
صدردر $TRUSTED_HOSTS;
بروتو تكب دبورت (http https ssh)؛
بادئة سجل السجل "تنبيه سائق الحرب غير التقليدي:"؛
يمكن إلغاء بعضها (لا يمكن إلغاء القوائم):
بروتو !esp;
بروتو udp dport !domain;
الكلمات الرئيسية التي لا تحتوي على أي معلمات يتم إبطالها ببادئة '!':
بروتو تكب !syn;
عرض يبتابليس(8) لنرى أين ! ممكن استخدامه.
أساسي الكلمات الرئيسية
الموقع الكلمات المفتاحية
نطاق [الملكية الفكرية|ip6]
قم بتعيين المجال. "ip" هو الإعداد الافتراضي ويعني "IPv4" (iptables). "ip6" مخصص لـ IPv6
الدعم باستخدام "ip6tables".
جدول [تصفية|نات|مانجل]
يحدد جدول netfilter الذي سيتم إدراج هذه القاعدة فيه: "filter" (افتراضي)،
"نات" أو "مانجل".
سلسلة [اسم السلسلة]
تحدد سلسلة netfilter (ضمن الجدول الحالي) التي ستكون عليها هذه القاعدة
تم ادراجها ل. أسماء السلسلة المحددة مسبقًا الشائعة هي "INPUT"، و"OUTPUT"، و"FORWARD"،
"التوجيه الأولي"، "التأخير"، حسب الجدول. شاهد مرشح الشبكة
وثائق للحصول على التفاصيل.
إذا قمت بتحديد سلسلة غير موجودة هنا، فسيقوم Ferm بإضافة القاعدة إلى سلسلة مخصصة
بهذا الاسم.
سياسة [قبول|إسقاط|..]
يحدد السياسة الافتراضية للسلسلة الحالية (المضمنة فقط). يمكن أن يكون واحدا من
الأهداف المضمنة (قبول، إسقاط، رفض، ...). حزمة لا تطابق أي قواعد
في سلسلة سيتم التعامل معها على النحو المحدد في السياسة.
لتجنب الغموض، حدد دائمًا سياسات جميع السلاسل المحددة مسبقًا
صراحة.
@subchain ["اسم السلسلة"] { }
يعمل مثل مشغلي الكتلة العاديين (أي بدون @subchain الكلمة الأساسية)، باستثناء
أن سعر الصرف الثابت ينقل القواعد داخل الأقواس المتعرجة إلى سلسلة مخصصة جديدة. الاسم
لأنه يتم اختيار هذه السلسلة تلقائيًا بواسطة Ferm.
في كثير من الحالات، يكون هذا أسرع من مجرد كتلة، لأن النواة قد تتخطى أي جزء
كتلة ضخمة من القواعد عندما يكون الشرط المسبق خاطئًا. تخيل المثال التالي:
سلسلة مرشح الجدول INPUT {
الصدر (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
قبول proto tcp dport (http https ssh) ؛
قبول المجال proto udp dport ؛
}
}
وهذا يولد 20 القواعد. عندما تصل الحزمة التي لا تمر صدر
مطابقة، ومع ذلك فإنه يتحقق من جميع القواعد العشرين. مع @subchain، يتم هذا الفحص
مرة واحدة، مما يؤدي إلى تصفية الشبكة بشكل أسرع وتحميل أقل لوحدة المعالجة المركزية:
سلسلة مرشح الجدول INPUT {
صدر (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @subchain {
قبول proto tcp dport (http https ssh) ؛
قبول المجال proto udp dport ؛
}
}
اختياريًا، يمكنك تحديد اسم السلسلة الفرعية:
الصدر (1.2.3.4 2.3.4.5 3.4.5.6) @subchain "foobar" {
قبول proto tcp dport (http https ssh) ؛
قبول المجال proto udp dport ؛
}
يمكن أن يكون الاسم عبارة عن سلسلة حرفية مقتبسة، أو تعبيرًا موسعًا
مثل @cat("interface_", $iface) أو @substr($var,0,20).
يمكنك تحقيق نفس الشيء من خلال الإعلان صراحة عن سلسلة مخصصة، ولكن قد تشعر بذلك
ذلك باستخدام @subchain يتطلب كتابة أقل.
Basic يبتابليس مباراة الكلمات المفتاحية
الواجهة [اسم الواجهة]
حدد اسم الواجهة، أو بطاقة الشبكة الخارجية، مثل eth0، أو الطلب الهاتفي مثل
ppp1، أو أي جهاز تريد مطابقته لتمرير الحزم. إنه معادل
إلى المفتاح "-i". يبتابليس(8).
الواجهة الخارجية [اسم الواجهة]
مثل الواجهة، فقط لمطابقة الواجهة الصادرة للحزمة، كما في
يبتابليس(8).
بروتوكول [اسم البروتوكول|رقم البروتوكول]
تدعم النواة حاليًا كل من tcp وudp وicmp أو كل منهما
أرقام.
صدر|داددر [مواصفات العنوان]
التطابقات على الحزم الصادرة من العنوان المحدد (الصدر) أو المستهدفة
العنوان (دادر).
أمثلة:
الصدر 192.168/8 قبول؛ # (مطابق للواحد التالي :)
الصدر 192.168.0.0/255.255.255.0 قبول؛
بابا my.domain.com قبول؛
شظية
حدد أنه يجب مطابقة حزم IP المجزأة فقط. عندما تكون الحزم
أكبر من الحد الأقصى لحجم الحزمة الذي يمكن لنظامك التعامل معه (يسمى الحد الأقصى
وحدة النقل أو MTU) سيتم تقطيعها إلى أجزاء وإرسالها واحدة تلو الأخرى
حزم واحدة. يرى ifconfig(8) إذا كنت تريد العثور على MTU لنظامك (ملف
الافتراضي هو عادة 1500 بايت).
يتم استخدام الأجزاء بشكل متكرر في هجمات DOS، لأنه لا توجد طريقة للعثور عليها
من أصل حزمة جزء.
رياضة|بورت [مواصفات المنفذ]
يتطابق مع الحزم الموجودة على منفذ TCP أو UDP المحدد. "الرياضة" تطابق المصدر
المنفذ، و dport يطابق منفذ الوجهة.
لا يمكن استخدام هذه المطابقة إلا بعد تحديد "protocol tcp" أو "protocol udp"،
لأن هذين البروتوكولين فقط لهما منافذ بالفعل.
وبعض الأمثلة على المنافذ/النطاقات الصالحة:
dport 80 قبول؛
قبول dport http؛
dport ssh:http ACCEPT;
dport 0:1023 قبول؛ # يعادل :1023
بورت 1023:65535 قبول؛
اصطناعي حدد أنه يجب مطابقة علامة SYN في حزمة TCP، والتي يتم استخدامها
بناء اتصالات TCP جديدة. يمكنك تحديد الاتصالات الواردة مع هذا، و
قرر ما إذا كنت تريد السماح بذلك أم لا. الحزم التي لا تحتوي على هذه العلامة هي
ربما من اتصال قائم بالفعل، لذلك يعتبر معقولا
آمنة للسماح لهذه من خلال.
وحدة [اسم وحدة]
قم بتحميل وحدة iptables. توفر معظم الوحدات المزيد من الكلمات الرئيسية المتطابقة. سوف نصل الى
ذلك لاحقا.
Basic الهدف الكلمات المفتاحية
قفز [اسم السلسلة المخصصة]
يقفز إلى سلسلة مخصصة. إذا لم تتطابق أي قاعدة في السلسلة المخصصة، فسيتم إرجاع netfilter
إلى القاعدة التالية في السلسلة السابقة.
com.realgoto [اسم السلسلة المخصصة]
انتقل إلى سلسلة مخصصة. على عكس قفز اختيار، عودة لن تستمر في المعالجة
في هذه السلسلة ولكن بدلاً من ذلك في السلسلة التي اتصلت بنا عبرها قفز.
الكلمة الرئيسية com.realgoto تم اختياره خلال الفترة الانتقالية، لأن غوتو
(تم إهماله بالفعل) كان يستخدم ليكون اسمًا مستعارًا لـ قفز.
أقبل يقبل الحزم المطابقة.
إسقاط قم بإسقاط الحزم المطابقة دون إشعار آخر.
رفض يرفض الحزم المطابقة، أي إرسال حزمة ICMP إلى المرسل، وهو منفذ
لا يمكن الوصول إليها بشكل افتراضي. يمكنك تحديد نوع ICMP آخر.
يرفض؛ # الافتراضي لمنفذ icmp غير قابل للوصول
رفض الرفض مع عدم إمكانية الوصول إلى icmp-net؛
اكتب "iptables -j REJECT -h" للحصول على التفاصيل.
عودة قم بإنهاء السلسلة الحالية والعودة إلى سلسلة الاستدعاء (إذا كان "jump
تم استخدام [اسم السلسلة المخصصة]".
NOP لا يوجد إجراء على الإطلاق.
ADDITIONAL الكلمات الرئيسية
Netfilter معياري. قد توفر الوحدات أهدافًا إضافية وتطابق الكلمات الرئيسية. القائمة
تتزايد وحدات netfilter باستمرار، ويحاول Ferm مواكبة دعمها
الجميع. يصف هذا الفصل الوحدات المدعومة حاليًا.
يبتابليس مباراة نماذج
حساب حركة مرور الحساب لجميع المضيفين في الشبكة/قناع الشبكة المحدد. هذا هو واحد من
مطابقة الوحدات التي تتصرف كهدف، أي أنه سيتعين عليك في الغالب استخدام ملف NOP
استهداف.
حساب mod aname mynetwork aaddr 192.168.1.0/24 ashort NOP؛
com.addrtype
التحقق من نوع العنوان؛ إما عنوان المصدر أو عنوان الوجهة.
mod addrtype src-type BROADCAST؛
mod addrtype dst-type LOCAL؛
اكتب "iptables -m addrtype -h" للحصول على التفاصيل.
ah التحقق من رأس SPI في حزمة AH.
وزارة الدفاع آه ahspi 0x101؛
وزارة الدفاع آه ahspi! 0x200:0x2ff;
وسيطات إضافية لـ IPv6:
تعديل آه أهلين 32 قبول؛
وزارة الدفاع آه أهلين !32 قبول؛
تعديل آه أريس قبول؛
التعليق إضافة تعليق يصل إلى 256 حرفًا إلى القاعدة، بدون تأثير. لاحظ أن
على عكس التعليقات المخرمة ('#')، سيظهر هذا التعليق في "iptables -L".
تعديل تعليق التعليق "هذا هو تعليقي". يقبل؛
حالة
يتطابق إذا كانت القيمة في /proc/net/ipt_condition/NAME هي 1 (المسار هو
/proc/net/ip6t_condition/NAME لمجال ip6).
حالة الحالة المعدلة (abc def) قبول؛
حالة الحالة المعدلة !foo ACCEPT;
com.connbytes
قم بالمطابقة بعدد البايتات أو الحزم الخاصة بالاتصال (أو أحد التدفقين
التي تشكل الاتصال) تم نقلها حتى الآن، أو بمتوسط بايت لكل
رزمة.
mod connbytes connbytes 65536: connbytes-dir كلا البايتات في وضع connbytes ACCEPT؛
mod connbytes connbytes !1024:2048 connbytes-dir رد حزم وضع connbytes قبول؛
قيم صالحة لـ connbytes-dir: أصلي, الرد, على حد سواء. إلى عن على وضع connbytes:
الحزم, بايت, avgpkt.
comnlimit
يسمح لك بتقييد عدد اتصالات TCP المتوازية لكل خادم
عنوان IP للعميل (أو كتلة العنوان).
تعديل connlimit connlimit-فوق 4 رفض؛
mod connlimit connlimit-above !4 ACCEPT;
mod connlimit connlimit-فوق 4 connlimit-mask 24 REJECT؛
com.connmark
تحقق من حقل العلامة المرتبط بالاتصال، والذي تم تعيينه بواسطة هدف CONNMARK.
مود كونمارك مارك 64؛
علامة mod connmark 6/7 ؛
conntrack
تحقق من معلومات تتبع الاتصال.
mod conntrack ctstate (ذات صلة)؛
وزارة الدفاع conntrack ctproto tcp؛
وزارة الدفاع كونتراك ctorigsrc 192.168.0.2؛
مود كونتراك ctorigdst 1.2.3.0/24;
وزارة الدفاع كونتراك ctorigsrcport 67؛
وزارة الدفاع كونتراك ctorigdstport 22؛
مود كونتراك ctreplsrc 2.3.4.5;
وزارة الدفاع كونتراك ctrepldst! 3.4.5.6؛
وزارة الدفاع conntrack ctstatus مؤكدة؛
مود كونتراك ctexpire 60;
وزارة الدفاع conntrack ctexpire 180:240؛
اكتب "iptables -m conntrack -h" للحصول على التفاصيل.
com.dccp تحقق من السمات المحددة لـ DCCP (بروتوكول التحكم في ازدحام مخططات البيانات). هذا
يتم تحميل الوحدة تلقائيًا عند استخدام "بروتوكول DCCP".
بروتو dccp سبورت 1234 dport 2345 قبول؛
قبول أنواع dccp dccp (SYNCACK ACK) ؛
بروتو dccp dccp-أنواع! طلب إسقاط؛
بروتو dccp dccp-الخيار 2 قبول؛
dscp قم بمطابقة حقل DSCP ذو 6 بتات داخل حقل TOS.
وزارة الدفاع dscp dscp 11؛
وزارة الدفاع dscp dscp-class AF41؛
ECN قم بمطابقة بتات ECN لرأس IPv4 TCP.
mod ecn ecn-tcp-cwr;
وزارة الدفاع ECN ECN-TCP-ECE؛
وزارة الدفاع ECN ECN-IP-ect 2؛
اكتب "iptables -m ecn -h" للحصول على التفاصيل.
ESP التحقق من رأس SPI في حزمة ESP.
وزارة الدفاع esp espspi 0x101؛
وزارة الدفاع esp espspi! 0x200:0x2ff;
eui64 "تتطابق هذه الوحدة مع جزء EUI-64 من عنوان IPv6 عديم الحالة الذي تم تكوينه تلقائيًا.
إنه يقارن EUI-64 المشتق من عنوان MAC المصدر في إطار Ehternet مع
أقل 64 بت من عنوان مصدر IPv6. لكن البت "العالمي/المحلي" ليس كذلك
مقارنة. لا تتطابق هذه الوحدة مع إطار طبقة الارتباط الأخرى، وهي صالحة فقط في
سلاسل PREROUTING وINPUT وFORWARD."
تعديل eui64 قبول؛
غامض "تتطابق هذه الوحدة مع حد المعدل استنادًا إلى وحدة التحكم المنطقية الغامضة [FLC]."
تعديل الحد الأدنى الغامض 10 الحد الأعلى 20 قبول ؛
HBH يطابق رأس خيارات Hop-by-Hop (ip6).
تعديل hbh hbh-len 8 قبول؛
mod hbh hbh-len!8 قبول؛
mod hbh hbh-opts (1:4 2:8) قبول؛
hl يطابق حقل حد القفز (ip6).
mod hl hl-eq (8 10) قبول؛
تعديل hl hl-eq !5 قبول؛
قبول وزارة الدفاع hl hl-gt 15؛
تعديل hl hl-lt 2 قبول؛
المساعد يتحقق من الوحدة المساعدة conntrack التي تتعقب هذا الاتصال. قد يكون الميناء
المحدد بـ "-portnr".
قبول mod helper irc؛
قبول mod helper helper ftp-21؛
com.icmp تحقق من سمات ICMP المحددة. يتم تحميل هذه الوحدة تلقائيًا عند الاستخدام
"بروتوكول إي سي إم بي".
قبول طلب الصدى من نوع icmp proto icmp؛
يمكن أيضًا استخدام هذا الخيار في be ip6 المجال، على الرغم من أن هذا يسمى icmpv6 in
ip6tables.
استخدم "iptables -p icmp "-h"" للحصول على قائمة بأنواع ICMP الصالحة.
مجموعة الملكية الفكرية مطابقة مجموعة من عناوين IPv4.
mod iprange src-range 192.168.2.0-192.168.3.255;
وزارة الدفاع iprange DST المدى! 192.168.6.0-192.168.6.255;
ipv4options
تطابق مع خيارات رأس IPv4 مثل توجيه المصدر ومسار التسجيل والطابع الزمني و
تنبيه جهاز التوجيه.
تعديل ipv4options ssrr قبول؛
تعديل ipv4options lsrr قبول؛
تعديل ipv4options no-srr قبول؛
تعديل ipv4options!rr قبول؛
تعديل ipv4options !ts قبول؛
تعديل ipv4options!ra قبول؛
mod ipv4options !any-opt ACCEPT;
ipv6header
يطابق رأس ملحق IPv6 (ip6).
رأس mod ipv6header !(قفزة frag) قبول؛
رأس mod ipv6header (auth dst) قبول؛
com.hashlimit
يشبه "حد التعديل"، ولكنه يضيف القدرة على إضافة كل وجهة أو لكل منفذ
الحدود المدارة في جدول التجزئة.
وزارة الدفاع hashlimit hashlimit 10/دقيقة hashlimit-burst 30/دقيقة
hashlimit-mode dstip hashlimit-name foobar ACCEPT;
القيم المحتملة لوضع التجزئة: dstip dstport srcip srcport (أو قائمة ذات
أكثر من واحد منها).
هناك المزيد من الإعدادات الممكنة، اكتب "iptables -m hashlimit -h" لـ
كابل بيانات.
الطول تحقق من طول الحزمة.
طول وزارة الدفاع 128؛ # بالضبط 128 بايت
طول التعديل 512:768؛ # يتراوح
طول وزارة الدفاع! 256؛ # مرفوض
قصر يحد من معدل الحزمة.
الحد الأقصى للتعديل 1/ثانية؛
حد الحد الأقصى 15/دقيقة حد الانفجار 10؛
اكتب "iptables -m Limit -h" للحصول على التفاصيل.
لجنة الهدنة العسكرية قم بمطابقة عنوان MAC المصدر.
وزارة الدفاع ماك ماك المصدر 01:23:45:67:89؛
علامة يطابق الحزم بناءً على حقل علامة netfilter الخاص بها. قد يكون هذا عددًا صحيحًا 32 بت
بين شنومكس و شنومكس.
علامة التعديل 42؛
mh يطابق رأس التنقل (domain ip6).
قبول التحديث الملزم من النوع proto mh mh؛
متعدد المنافذ
مطابقة مجموعة من منافذ المصدر أو الوجهة (UDP وTCP فقط).
منافذ مصدر متعددة المنافذ (https ftp) ؛
منافذ وجهة متعددة المنافذ (مجال MySQL) ؛
تتمتع هذه القاعدة بميزة كبيرة مقارنة بـ "dport" و"sport": فهي تنشئ قاعدة واحدة فقط
لما يصل إلى 15 منفذًا بدلاً من قاعدة واحدة لكل منفذ.
نطة قم بمطابقة كل حزمة.
وزارة الدفاع ن كل 3؛
عداد mod nth 5 كل 2 ؛
mod nth start 2 كل 3؛
mod nth start 5 حزم 2 كل 6؛
اكتب "iptables -m nth -h" للحصول على التفاصيل.
osf قم بمطابقة الحزم وفقًا لنظام التشغيل الخاص بالمرسل.
وزارة الدفاع OSF النوع Linux؛
وزارة الدفاع أوسف! النوع FreeBSD ttl 1 log 1؛
اكتب "iptables -m osf -h" للحصول على التفاصيل.
كاتوا ديلز تحقق من المعلومات حول منشئ الحزمة، وهي معرف المستخدم، ومعرف المجموعة، ومعرف العملية،
معرف الجلسة واسم الأمر.
مالك وزارة الدفاع uid-owner 0؛
مالك وزارة الدفاع gid-owner 1000؛
مالك التعديل pid-owner 5432؛
مالك وزارة الدفاع سيد مالك 6543؛
مالك التعديل cmd-owner "sendmail" ؛
("cmd-owner"، و"pid-owner"، و"sid-owner" تتطلب تصحيحات kernel خاصة لا
المدرجة في نواة لينكس الفانيليا)
com.physdev يطابق الجهاز الفعلي الذي دخلت عليه الحزمة أو على وشك مغادرتها
آلة. وهذا مفيد للواجهات الجسرية.
وزارة الدفاع physdev physdev-in ppp1؛
وزارة الدفاع physdev physdev-out eth2؛
وزارة الدفاع physdev physdev-is-in؛
وزارة الدفاع physdev physdev-is-out؛
وزارة الدفاع physdev physdev-is-bridge؛
com.pkttype تحقق من نوع حزمة طبقة الارتباط.
وزارة الدفاع pkttype pkt نوع البث الأحادي؛
وزارة الدفاع pkttype pkt-نوع عريضة؛
وزارة الدفاع pkttype pkt نوع البث المتعدد؛
سياسة يطابق سياسة IPsec التي يتم تطبيقها على هذه الحزمة.
سياسة التعديل dir out pol ipsec قبول؛
سياسة التعديل صارمة reqid 23 spi 0x10 proto ah قبول؛
وضع سياسة التعديل Tunnel-src 192.168.1.2 قبول؛
وضع السياسة mod Tunnel-dst 192.168.2.1 قبول؛
سياسة التعديل الصارمة التالية reqid 24 spi 0x11 ACCEPT؛
لاحظ أن الكلمة بروتو يستخدم أيضًا كنسخة مختصرة من بروتوكول
(وحدة المطابقة المضمنة). يمكنك حل هذا التعارض عن طريق استخدام الطويل دائمًا
الكلمة بروتوكول.
مديرية الأمن العام كشف عمليات فحص منفذ TCP/UDP.
mod psd psd-عتبة الوزن 21 psd-عتبة التأخير 300
psd-lo-ports-weight 3 psd-hi-ports-weight 1 DROP;
حصة ينفذ حصص الشبكة عن طريق تقليل عداد البايت مع كل حزمة.
حصة تعديل الحصة 65536 قبول؛
عشوائية تطابق نسبة عشوائية من كافة الحزم.
معدل عشوائي متوسط 70؛
مملكة تطابق مجال التوجيه. مفيد في البيئات التي تستخدم BGP.
عالم التعديل عالم 3؛
الأخيرة قم بوضع علامة مؤقتًا على عناوين IP المصدر.
مجموعة وزارة الدفاع الأخيرة؛
وزارة الدفاع الأخيرة rcheck ثانية 60؛
تعديل اسم المصدر الذي تم تعيينه مؤخرًا "badguy" ؛
مجموعة التعديل الأخيرة rdest؛
تعديل اسم rcheck rsource الأخير "badguy" ثانية 60؛
وزارة الدفاع التحديث الأخير ثواني 120 عدد الزيارات 3 rttl؛
تحتوي وحدة netfilter هذه على عيب في التصميم: على الرغم من أنها يتم تنفيذها كمطابقة
الوحدة النمطية، لديها سلوك يشبه الهدف عند استخدام الكلمة الأساسية "set".
<http://snowman.net/projects/ipt_recent/>
rt قم بمطابقة رأس توجيه IPv6 (IP6 فقط).
Mod rt rt-type 2 rt-len 20 قبول؛
mod rt rt-type !2 rt-len !20 قبول;
تعديل rt-segsleft 2:3 قبول؛
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".
بروتو sctp سبورت 1234 dport 2345 قبول؛
أنواع قطع proto sctp فقط البيانات: كن مقبولاً؛
أنواع قطع proto sctp أي (INIT INIT_ACK) قبول؛
أنواع قطع proto sctp! الكل (HEARTBEAT) قبول؛
استخدم "iptables -p sctp "-h"" للحصول على قائمة بأنواع القطع الصالحة.
طقم يتحقق من IP/Port/MAC المصدر أو الوجهة مقابل مجموعة.
مجموعة mod set badguys src DROP؛
نرىhttp://ipset.netfilter.org/> لمزيد من المعلومات.
حالة التحقق من حالة تتبع الاتصال.
حالة وزارة الدفاع غير صالح DROP ؛
حالة وزارة الدفاع (أنشئت ذات الصلة) قبول ؛
اكتب "iptables -m State -h" للحصول على التفاصيل.
إحصائية
خليفة نطة و عشوائية، غير موثقة حاليا في يبتابليس(8) صفحة الدليل.
الوضع الإحصائي المعدل احتمال عشوائي 0.8 قبول ؛
الوضع الإحصائي المعدل nth كل 5 حزم 0 DROP؛
سلسلة يطابق سلسلة.
سلسلة سلسلة تعديل "foo bar" قبول؛
تعديل سلسلة algo kmp من 64 إلى 128 سلسلة سداسية عشرية "deadbeef" قبول؛
برنامج التعاون الفني التحقق من سمات TCP المحددة. يتم تحميل هذه الوحدة تلقائيًا عند الاستخدام
"بروتوكول تي سي بي".
بروتو تكب سبورت 1234؛
بروتو تكب دبورت 2345؛
علامات proto tcp tcp (SYN ACK) SYN؛
بروتو TCP TCP-الأعلام! (SYN ACK) SYN؛
بروتو tcp tcp-flags ALL (RST ACK)؛
بروتو تكب سين؛
بروتو تكب تكب-الخيار 2؛
بروتو تكب مس 512؛
اكتب "iptables -p tcp -h" للحصول على التفاصيل.
com.tcpmss تحقق من حقل TCP MSS لحزمة SYN أو SYN/ACK.
تعديل tcpmss mss 123 قبول؛
تعديل tcpmss mss 234:567 قبول؛
الوقت تحقق مما إذا كان وقت وصول الحزمة يقع في نطاق معين.
وقت التعديل يبدأ الساعة 12:00؛
تعديل الوقت الزمني 13:30؛
الأيام الزمنية المعدلة (الاثنين الأربعاء الجمعة)؛
تعديل الوقت datestart 2005:01:01;
تعديل الوقت datestart 2005:01:01:23:59:59;
تعديل الوقت datestop 2005:04:01;
تعديل الوقت الشهري (30 31)؛
وقت التعديل خلال أيام الأسبوع (الأربعاء والخميس)؛
وقت التعديل: 12:00 بالتوقيت العالمي؛
وقت تعديل الوقت 12:00 localtz؛
اكتب "iptables -m time -h" للحصول على التفاصيل.
سعال يطابق حزمة بقيمة TOS المحددة.
تعديل شروط الخدمة قبول تقليل التكلفة؛
تعديل شروط الخدمة! قبول الخدمة العادية؛
اكتب "iptables -m tos -h" للحصول على التفاصيل.
TTL يطابق حقل ttl (مدة البقاء) في رأس IP.
وزارة الدفاع ttl ttl-eq 12؛ #TTL يساوي
وزارة الدفاع ttl ttl-gt 10؛ # ttl أكبر من
وزارة الدفاع ttl ttl-lt 16؛ #TTL أقل من
u32 يقارن البيانات الأولية من الحزمة. يمكنك تحديد أكثر من مرشح في المزرعة
قائمة؛ لا يتم توسيعها إلى قواعد متعددة.
تعديل u32 u32 '6&0xFF=1' قبول؛
mod u32 u32 ('27&0x8f=7' '31=0x527c4833') DROP;
غير نظيفة يطابق الحزم التي تبدو مشوهة أو غير عادية. هذه المباراة ليس لها مزيد
المعلمات.
يبتابليس الهدف نماذج
تتوفر الأهداف الإضافية التالية في Ferm، بشرط أن تقوم بتمكينها
النواة الخاصة بك:
التصنيف
قم بتعيين فئة CBQ.
تصنيف فئة المجموعة 3:50؛
كلوستريب
قم بتكوين مجموعة بسيطة من العقد التي تشترك في عنوان IP وMAC معين.
يتم توزيع الاتصالات بشكل ثابت بين العقد.
CLUSTERIP مصدر تجزئة جديد لـ Clusterip 00:12:34:45:67:89
إجمالي العقد 4 العقدة المحلية 2 hash-init 12345؛
كونمارك
يضبط قيمة علامة netfilter المرتبطة بالاتصال.
علامة ضبط CONNMARK 42؛
علامة الحفظ CONNMARK؛
علامة استعادة CONNMARK؛
قناع حفظ علامة CONNMARK 0x7fff؛
قناع علامة الاستعادة CONNMARK 0x8000;
علامة الاتصال
تقوم هذه الوحدة بنسخ علامات الأمان من الحزم إلى الاتصالات (إذا لم تكن مُسماة)،
ومن الاتصالات مرة أخرى إلى الحزم (فقط إذا كانت غير مُسماة). تستخدم عادة في
بالتزامن مع SECMARK، فهو صالح فقط في جدول mangle.
حفظ CONNSECMARK؛
استعادة CONNSECMARK؛
DTA إلى [عنوان IP|نطاق IP|نطاق منفذ 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 السوداء المعروفة. لا يمكن إلا
يمكن استخدامها في الجدول Mangle.
ECN ecn-tcp-إزالة؛
HL قم بتعديل حقل IPv6 Hop Limit (ip6/mangle فقط).
HL hl-set 5؛
HL hl-dec 2؛
إتش إل هل-إنك 1؛
IPV4OPTSSTRIP
تجريد جميع خيارات IP من الحزمة. هذه الوحدة لا تأخذ أي خيارات.
IPV4OPTSSTRIP;
LOG قم بتسجيل كافة الحزم التي تطابق هذه القاعدة في سجل kernel. كن حذرا مع السجل
الفيضانات. لاحظ أن هذا "هدف غير منتهٍ"، أي اجتياز القاعدة
يستمر في القاعدة التالية.
سجل التحذير على مستوى السجل - بادئة السجل "أنظر إلى هذا:"؛
LOG log-tcp-sequence log-tcp-options;
خيارات تسجيل الدخول للملكية الفكرية؛
علامة يضبط حقل علامة netfilter للحزمة (عدد صحيح 32 بت بين 0 و
4294967295):
مارك مجموعة مارك 42؛
مجموعة مارك-xmark 7/3؛
مارك ومارك 31؛
مارك أو مارك 1؛
مارك اكسور-مارك 12؛
تنكر
الحزم المطابقة للتنكر. متبوعًا بشكل اختياري بمنفذ أو نطاق منفذ لـ
iptables. حدد "123" أو "123-456" أو "123:456". معلمة نطاق المنفذ
يحدد ما هي المنافذ المحلية التي يجب أن تنشأ منها الاتصالات المتنكرة.
حفلة تنكرية؛
تنكر إلى المنافذ 1234:2345؛
تنكر إلى المنافذ 1234:2345 عشوائي؛
مرايا الحقيبة هدف العرض التجريبي الذي يعكس حقول المصدر والوجهة
في رأس IP.
مرآة؛
NETMAP قم بتعيين شبكة كاملة على شبكة أخرى في نات الجدول.
NETMAP إلى 192.168.2.0/24؛
لا مسار قم بتعطيل تتبع الاتصال لجميع الحزم المطابقة لهذه القاعدة.
بروتو tcp dport (135:139 445) NOTRACK؛
NFLOG تسجيل الحزم عبر netlink؛ هذا هو خليفة أولوغ.
NFLOG nflog-group 5 nflog-prefix "أنظر إلى هذا: "؛
نطاق NFLOG nflog 256;
NFLOG nflog-عتبة 10;
NFQUEUE تتطلب قائمة انتظار مساحة المستخدم دعم nfnetlink_queue kernel.
proto tcp dport ftp NFQUEUE queue-num 20;
كيو قائمة انتظار مساحة المستخدم، السلف ل NFQUEUE. تذهب كافة الحزم إلى قائمة الانتظار 0.
بروتو تكب دبورت بروتوكول نقل الملفات قائمة الانتظار؛
إعادة توجيه إلى الموانئ [الموانئ]
وكيل شفاف: قم بتغيير عنوان IP الوجهة للحزمة إلى الجهاز
نفسها.
proto tcp dport http REDIRECT to-ports 3128;
proto tcp dport http REDIRECT to-ports 3128 Random;
نفسه يشبه SNAT، ولكن يتم تعيين العميل إلى نفس عنوان IP المصدر لجميع بياناته
اتصالات.
نفسه إلى 1.2.3.4-1.2.3.7؛
نفسه إلى 1.2.3.8-1.2.3.15 إيماءة؛
نفس 1.2.3.16-1.2.3.31 عشوائي؛
سيمارك يُستخدم هذا لتعيين قيمة علامة الأمان المرتبطة بالحزمة ليتم استخدامها من قبل
أنظمة الأمان الفرعية مثل SELinux. إنه صالح فقط في جدول Mangle.
SECMARK selctx "system_u:object_r:httpd_packet_t:s0";
طقم [إضافة مجموعة|حذف مجموعة] [اسم مجموعة] [العلم (الأعلام)]
أضف IP إلى المجموعة المحددة. يرىhttp://ipset.netfilter.org/>
proto icmp icmp-type echo-request SET add-set badguys src;
SNAT إلى [عنوان IP|نطاق IP|نطاق منفذ 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-إلى-pmtu;
شروط الخدمة الإعدادات [القيمة]
قم بتعيين بت نوع الخدمة لحزمة tcp على هذه القيمة. سيتم استخدام هذا من قبل
أيًا كان برنامج جدولة حركة المرور الذي يرغب في القيام به، غالبًا ما يكون جهاز Linux الخاص بك، ولكن ربما
أكثر. يتم إفراغ بتات المهام الأصلية والكتابة فوقها بهذه القيمة.
إعدادات TOS لتعظيم الإنتاجية؛
شروط الخدمة وشروط الخدمة 7؛
شروط الخدمة أو شروط الخدمة 1؛
شروط الخدمة xor-tos 4؛
اكتب "iptables -j TOS -h" للحصول على التفاصيل.
TTL قم بتعديل حقل رأس TTL.
TTL-ttl-set 16؛
TTL ttl-ديسمبر 1؛ #انخفاض بمقدار 1
تي تي إل تي تي إل-إنك 4؛ #زيادة بمقدار 4
أولوغ تسجيل الحزم إلى برنامج مساحة المستخدم.
ULOG ulog-nlgroup 5 ulog-prefix "أنظر إلى هذا: "؛
ULOG ulog-cprange 256؛
ULOG ulog-qthreshold 10;
أخرى DOMAINS
منذ الإصدار 2.0 ، سعر الصرف الثابت يدعم ليس فقط ip و ip6، لكن أيضا ARP (جداول ARP) و eb
(جداول تجسير إيثرنت). المفاهيم متشابهة يبتابليس.
arttables الكلمات المفتاحية
IP المصدر, عنوان الانترنت المطلوب
يطابق عنوان IPv4 المصدر أو الوجهة. مثل صدر و أبي في ip
المجال.
مصدر ماك, الوجهة ماك
يطابق عنوان MAC المصدر أو الوجهة.
الواجهة, الواجهة الخارجية
واجهة الإدخال والإخراج.
طول ح
طول الأجهزة من الحزمة.
إدخال السلسلة h-length 64 قبول؛
شفرة التشغيل رمز التشغيل، لمزيد من التفاصيل راجع يبتابليس(8).
رمز التشغيل 9 قبول؛
نوع ح نوع الجهاز.
قبول من النوع h 1؛
النموذج المبدئي
نوع البروتوكول.
النوع الأولي 0x800 قبول؛
تشويه
الكلمات الرئيسية mangle-ip-s, مانجل-IP-د, Mangle-mac-s, مانغل-ماك-د, mangle-target
يمكن استخدامها لتشويه ARP. يرى يبتابليس(8) لمزيد من التفاصيل.
ebtables الكلمات المفتاحية
بروتو يطابق البروتوكول الذي أنشأ الإطار، على سبيل المثال IPv4 or PPP. للحصول على القائمة، راجع
/etc/ethertypes.
الواجهة, الواجهة الخارجية
واجهة الإدخال والإخراج المادية.
منطقي في, منطقية
واجهة الجسر المنطقي
صدر, أبي
يطابق عنوان MAC المصدر أو الوجهة.
مباراة نماذج
يتم دعم وحدات المطابقة التالية: 802.3، arp، ip، mark_m، pkttype، stp،
شبكة محلية ظاهرية، سجل.
الهدف اضافات المتصفح
يتم دعم ملحقات الهدف التالية: arpreply، dnat، mark، redirect،
snat.
يرجى ملاحظة أن هناك تعارض بين --علامة من mark_m وحدة المباراة
و -j علامة. حيث سيتم تنفيذ كلاهما باستخدام الكلمة الأساسية Ferm علامة، ونحن
قررت حل هذه المشكلة عن طريق كتابة اسم الهدف بأحرف كبيرة كما في الآخر
المجالات. يعيد المثال التالي كتابة العلامة من 1 إلى 2:
علامة 1 مارك 2؛
التبادل المتقدم المزايا
المتغيرات
في ملفات جدار الحماية المعقدة، من المفيد استخدام المتغيرات، على سبيل المثال، لإعطاء شبكة
واجهة اسم ذو معنى.
لتعيين المتغيرات اكتب:
@def $DEV_INTERNET = eth0;
@def $PORTS = (http ftp);
@def $MORE_PORTS = ($PORTS 8080);
في كود المزرعة الحقيقي، يتم استخدام المتغيرات مثل أي معلمة كلمة رئيسية أخرى:
واجهة إدخال السلسلة $DEV_INTERNET proto tcp dport $MORE_PORTS ACCEPT؛
لاحظ أنه لا يمكن استخدام المتغيرات إلا في معلمات الكلمات الرئيسية ("192.168.1.1"، "http")؛ هم
لا يمكن أن تحتوي على كلمات رئيسية مثل "proto" أو "interface".
المتغيرات صالحة فقط في الكتلة الحالية:
@def $DEV_INTERNET = eth1;
إدخال السلسلة {
بروتو تكب {
@def $DEV_INTERNET = ppp0;
واجهة $DEV_INTERNET dport http ACCEPT؛
}
واجهة $DEV_INTERNET DROP؛
}
سيتم توسيعها إلى:
إدخال السلسلة {
بروتو تكب {
واجهة ppp0 dport http قبول؛
}
واجهة eth1 DROP؛
}
"def $DEV_INTERNET = ppp0" صالح فقط في كتلة "proto tcp"؛ الكتلة الأم
لا يزال يعرف "set $DEV_INTERNET = eth1".
يعد تضمين الملفات أمرًا خاصًا - فالمتغيرات المعلنة في الملف المضمن لا تزال متاحة في
كتلة الدعوة. يكون هذا مفيدًا عند تضمين ملف يعلن عن المتغيرات فقط.
أوتوماتيك المتغيرات
يتم تعيين بعض المتغيرات داخليًا بواسطة Ferm. يمكن للنصوص البرمجية Ferm استخدامها تمامًا مثل أي نصوص أخرى
المتغير.
FILENAME دولار
تم بدء اسم ملف التكوين المتعلق بمجلد الدليل في.
$FILEBNAME
الاسم الأساسي لملف التكوين.
$DIRNAME
دليل ملف التكوين.
$DOMAIN المجال الحالي. واحد من ip, ip6, ARP, eb.
جدول $ جدول netfilter الحالي.
سلسلة $ سلسلة netfilter الحالية.
خط دولار سطر البرنامج النصي الحالي. يمكن استخدامه مثل هذا:
@def &log($msg) = {
بادئة سجل السجل "rule=$msg:$LINE ";
}
.
.
.
&log("رسالة السجل");
وظائف
تشبه الوظائف المتغيرات، إلا أنها قد تحتوي على معلمات، وهي توفرها
أوامر Ferm، وليس القيم.
@def &FOO() = proto (tcp udp) dport domain;
&FOO() قبول;
@def &TCP_TUNNEL(منفذ $, $dest) = {
سلسلة مرشح الجدول واجهة FORWARD ppp0 proto tcp dport $port adddr $dest الواجهة الخارجية eth0 ACCEPT;
جدول nat chain PREROUTING واجهة ppp0 proto tcp dport $port adddr 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);
يجب أن يكون استدعاء الوظيفة الذي يحتوي على كتلة (مثل '{...}') هو الأمر الأخير في المزرعة
القاعدة، أي يجب أن يتبعها "؛". ال '&فوو ()'المثال لا يحتوي على كتلة، وبالتالي
يمكنك كتابة "قبول" بعد المكالمة. للتحايل على هذا، يمكنك إعادة ترتيب الكلمات الرئيسية:
@def &IPSEC() = { proto (esp ah); بروتو UDP dport 500؛ }
قبول إدخال السلسلة &IPSEC();
نقرات خلفية
باستخدام العلامات الخلفية، يمكنك استخدام مخرجات أمر خارجي:
@def $DNSSERVERS = `خادم أسماء grep / الخ / resolv.conf | awk '{طباعة $2}'`;
سلسلة INPUT proto tcp Saddr $DNSSERVERS ACCEPT؛
يتم تنفيذ الأمر باستخدام الصدفة (/ بن / ش)، تماما مثل backticks في بيرل. يفعل فيرم
لا تفعل أي توسع متغير هنا.
يتم بعد ذلك ترميز المخرجات وحفظها كقائمة تسلسلية (مصفوفة). الأسطر التي تبدأ بـ "#"
يتم تجاهلها؛ قد تحتوي الأسطر الأخرى على أي عدد من القيم، مفصولة بمسافة بيضاء.
ويشمل
(أراضي البوديساتفا) @يشمل تسمح لك الكلمة الأساسية بتضمين ملفات خارجية:
@تضمين 'vars.ferm';
اسم الملف مرتبط بالملف المستدعي، على سبيل المثال عند التضمين من
/etc/ferm/ferm.conf، ويتضمن البيان أعلاه /etc/ferm/vars.ferm. المتغيرات و
الوظائف المعلنة في ملف مضمن لا تزال متاحة في ملف الاستدعاء.
تتضمن يعمل داخل كتلة:
إدخال السلسلة {
@تضمين 'input.ferm';
}
إذا قمت بتحديد دليل (بعلامة "/") زائدة، فستكون جميع الملفات الموجودة في هذا الدليل
متضمنة، مرتبة أبجديًا:
@ تضمين 'ferm.d/';
مع رمز الأنبوب الزائد، سعر الصرف الثابت ينفذ أمر shell ويوزع مخرجاته:
@تضمين '/root/generate_ferm_rules.sh $HOSTNAME|'
الشرطية
الكلمة الرئيسية @لو يقدم تعبيرًا شرطيًا:
@if $condition DROP؛
يتم تقييم القيمة على أنها صحيحة تمامًا كما هو الحال في لغة Perl: صفر، والقائمة الفارغة، والسلسلة الفارغة خاطئة،
كل شيء آخر صحيح. أمثلة على القيم الحقيقية:
(أب)؛ 1؛ "فو"؛ (0 0)
أمثلة على القيم الخاطئة:
()؛ 0; '0'; ''
وهناك أيضا @آخر:
@if $condition DROP؛ @else REJECT;
لاحظ الفاصلة المنقوطة قبل @آخر.
ومن الممكن استخدام الأقواس المتعرجة بعد أي منهما @لو or @آخر:
@إذا $الشرط {
مارك مجموعة مارك 2؛
العودة؛
} @آخر {
مارك مجموعة مارك 3؛
}
وبما أن قوس الإغلاق المتعرج ينهي الأمر أيضًا، فلا داعي للفاصلة المنقوطة.
لا يوجد @elsif، استخدم @آخر @لو بدلا من ذلك.
على سبيل المثال:
@def $have_ipv6 = `test -f /proc/net/ip6_tables_names && echo 1 || صدى`;
@إذا $have_ipv6 {
المجال IP6 {
# ....
}
}
السنانير
لتشغيل أوامر مخصصة، يمكنك تثبيت الخطافات:
@hook قبل "الصدى 0>/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook post "echo 1>/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook دافق "صدى 0>/proc/sys/net/ipv4/conf/eth0/forwarding";
يتم تنفيذ الأمر المحدد باستخدام الصدفة. "pre" تعني تشغيل الأمر من قبل
تطبيق قواعد جدار الحماية، وكلمة "post" تعني تشغيل الأمر بعد ذلك. خطافات "دافقة".
يتم تشغيلها بعد قيام Ferm بمسح قواعد جدار الحماية (الخيار --flush). يمكنك تثبيت أي
عدد السنانير.
مدمج وظائف
هناك العديد من الوظائف المضمنة التي قد تجدها مفيدة.
@مكافئ(أ،ب)
اختبارات قيمتين للمساواة. مثال:
@if @eq($DOMAIN, ip6) DROP;
@ني(أ،ب)
على غرار @eq، يختبر هذا عدم المساواة.
@لا(س)
ينفي قيمة منطقية.
@الحل ((اسم المضيف1 اسم المضيف 2 ...)، [يكتب])
عادةً ما يتم حل أسماء المضيفين بواسطة iptables. للسماح لـ Ferm بتحليل أسماء المضيفين، استخدم الأمر
وظيفة @الحل:
Saddr @resolve(my.host.foo) proto tcp dport ssh ACCEPT;
Saddr @resolve((another.host.foothird.host.foo)) proto tcp dport openvpn ACCEPT;
Daddr @resolve(ipv6.google.com, AAAA) proto tcp dport http ACCEPT;
لاحظ الأقواس المزدوجة في السطر الثاني: الزوج الداخلي لإنشاء قائمة Ferm،
والزوج الخارجي كمحددات لمعلمات الوظيفة.
المعلمة الثانية اختيارية، وتحدد نوع سجل DNS. الافتراضي هو "أ".
كن حذرًا بشأن أسماء المضيفين التي تم حلها في تكوين جدار الحماية. قد تؤدي طلبات DNS إلى حظر
تكوين جدار الحماية لفترة طويلة، مما يترك الجهاز عرضة للخطر، أو قد يفشل.
@قطة(أ، b, ...)
قم بجمع جميع المعلمات في سلسلة واحدة.
@substr(التعبير، عوض، الطول)
يستخرج سلسلة فرعية من التعبير ويعيدها. الحرف الأول عند الإزاحة 0. إذا
قيمة OFFSET سالبة، وتبدأ بعيدًا عن نهاية السلسلة.
@الطول(التعبير)
إرجاع الطول بالأحرف بقيمة EXPR.
@الاسم الأساسي (المسار)
قم بإرجاع الاسم الأساسي للملف لمسار معين (File::Spec::splitpath).
@dirname(المسار)
قم بإرجاع اسم الدليل الأخير لمسار معين، على افتراض أن المكون الأخير هو a
اسم الملف (ملف::Spec::splitpath).
@ipfilter(قائمة)
يقوم بتصفية عناوين IP التي من الواضح أنها لا تتطابق مع المجال الحالي. إنه
مفيد لإنشاء متغيرات وقواعد مشتركة لـ IPv4 وIPv6:
@def $TRUSTED_HOSTS = (192.168.0.40 2001:abcd:ef::40);
المجال (ip ip6) سلسلة الإدخال {
Saddr @ipfilter($TRUSTED_HOSTS) proto tcp dport ssh ACCEPT;
}
وصفات الطبخ
(أراضي البوديساتفا) ./أمثلة/ يحتوي الدليل على العديد من تكوينات Ferm التي يمكن استخدامها للبدء
جدار الحماية الجديد. يحتوي هذا القسم على المزيد من العينات والوصفات والحيل.
سهل ميناء إعادة توجيه
وظيفة Ferm تجعل المهام الروتينية سريعة وسهلة:
@def &FORWARD_TCP($proto, $port, $dest) = {
سلسلة مرشح الجدول واجهة FORWARD $DEV_WORLD واجهة خارجية $DEV_DMZ $dest proto $proto dport $port ACCEPT;
جدول nat chain واجهة PREROUTING $DEV_WORLD adddr $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);
عن بعد سعر الصرف الثابت
إذا كان الجهاز المستهدف غير قادر على التشغيل سعر الصرف الثابت لسبب ما (ربما جهاز مضمن
بدون Perl)، يمكنك تحرير ملف سعر الصرف الثابت ملف التكوين على كمبيوتر آخر والسماح سعر الصرف الثابت
إنشاء برنامج نصي شل هناك.
مثال لـ 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 لا تنفذ يبتابليس(8) الأوامر، ولكن تخطي بدلا من ذلك. بهذه الطريقة يمكنك
تحليل البيانات الخاصة بك، واستخدام --خطوط لعرض الإخراج.
- دافق يمسح قواعد جدار الحماية ويضبط سياسة كافة السلاسل على قبول. سعر الصرف الثابت
يحتاج إلى ملف تكوين لذلك لتحديد المجالات والجداول
المتضررة.
--خطوط إظهار خطوط جدار الحماية التي تم إنشاؤها من القواعد. سيتم عرضهم
قبل تنفيذها مباشرة، لذلك إذا تلقيت رسائل خطأ من يبتابليس(8)
وما إلى ذلك، يمكنك معرفة القاعدة التي تسببت في الخطأ.
- تفاعلي
قم بتطبيق قواعد جدار الحماية واطلب من المستخدم التأكيد. يعود إلى
مجموعة القواعد السابقة إذا لم يكن هناك استجابة مستخدم صالحة خلال 30 ثانية (انظر
--نفذ الوقت). يعد هذا مفيدًا لإدارة جدار الحماية عن بُعد: يمكنك الاختبار
القواعد دون خوف من حبس نفسك.
--نفذ الوقت S If - تفاعلي تم استخدامه، ثم قم بالتراجع إذا لم تكن هناك استجابة صالحة للمستخدم
بعد هذا العدد من الثواني الافتراضي هو 30.
--مساعدة عرض قائمة مختصرة بخيارات سطر الأوامر المتاحة.
--الإصدار يظهر رقم إصدار البرنامج.
--بسرعة تمكين الوضع السريع: يقوم Ferm بإنشاء ملف iptables- حفظ(8) الملف، وتثبيته
مع استعادة iptables(8). هذا أسرع بكثير، لأن مكالمات Ferm يبتابليس(8)
مرة واحدة لكل قاعدة بشكل افتراضي.
يتم تمكين الوضع السريع بشكل افتراضي منذ ذلك الحين سعر الصرف الثابت 2.0، إهمال هذا الخيار.
--بطيء تعطيل الوضع السريع، أي تشغيل يبتابليس(8) لكل قاعدة، ولا تستعمل
استعادة iptables(8).
--الصدف قم بإنشاء برنامج نصي Shell الذي يستدعي استعادة iptables(٨) وطبعه.
يعني --سريع --خطوط.
--التحكم عن بعد إنشاء قواعد لجهاز بعيد. يدل - noexec و --خطوط. يمكن ان يكون
جنبا إلى جنب مع --الصدف.
--نطاق {الملكية الفكرية|ip6}
التعامل مع المجال المحدد فقط. سعر الصرف الثابت قد يكون الإخراج فارغًا إذا كان المجال
لم يتم تكوينه في ملف الإدخال.
- ديف '$الاسم=القيمة'
تجاوز المتغير المحدد في ملف التكوين.
استخدم Ferm عبر الإنترنت باستخدام خدمات onworks.net
