دیوارههای آتش با پایش وضعیت (Stateful Firewalls) و دروازههای تبدیل نشانی شبکه (NAT) با این هدف بنیادین طراحی میشوند که حصاری نامتقارن برای حفاظت از شبکه پدید آورند: دستگاههای داخلی مجازند بدون ممانعت اتصالات خروجی برقرار کنند، در حالی که ترافیک ناخواسته و خودسرانه از اینترنت عمومی به سرعت مسدود میگردد. در ساختارهای سازمانی، مدیران شبکه بر این باورند که پیوستن به تونلهای رمزنگاریشده VPN این مصونیت را برای تمامی ایستگاههای کاری تأمین میکند.
با این وجود، یک سازوکار قدیمی در پشته شبکه هسته لینوکس میتواند این سازوکار دفاعی را بیاثر کند: دستیارهای ردگیری اتصال در Netfilter (Connection Tracking Helpers) که به درگاههای لایه کاربردی (ALG) نیز معروفند. این ماژولهای هسته به منظور سازگاری با پروتکلهای قدیمی چنددرگاهی (نظیر SIP، H.323 یا حالت فعال FTP)، محتوای رمزنگارینشده بستهها را در سطح هسته کاوش نموده و روزنههای نفوذ موقتی در دیواره آتش پدید میآورند بدون اینکه هویتسنجی از کاربر صورت پذیرد.
با بهرهگیری از یک روش نفوذ به نام NAT Slipstreaming، نفوذگران خارجی میتوانند با بهرهبرداری از یک مرورگر اینترنتی معمولی، هسته لینوکس را فریب داده تا گذرگاههایی مخفی به سوی کارخواههای داخلی و سرویسهای محلی شبکه VPN بگشاید. درک دقیق سازوکار درونی ALG و اعمال جداسازی کامل وضعیت، پیششرطی حیاتی برای مصونسازی درگاههای سازمانی VPN است.
نحوه باز شدن روزنههای نفوذ توسط دستیارهای کمکی Netfilter:
مسیر دادههای مجاز (خروجی از شبکه داخلی):
رایانه داخلی ──[TCP:5060 / درخواست SIP]──> درگاه لینوکس / گره VPN ──> سرور VoIP خارجی
│
▼ (nf_conntrack_sip محتوا را تحلیل میکند)
استخراج پورت رسانهای متغیر: 40000
ثبت در جدول انتظارات (Expectations):
[IP بیرونی -> IP داخلی : UDP 40000]
ورود بسته بدون درخواست مستقیم (به علت وضعیت "RELATED"):
مبدأ خارجی ──[بسته داده UDP:40000]──> درگاه لینوکس ──[تطبیق با جدول انتظار]──> رایانه داخلی
(قاعده دیواره آتش: "ct state related accept" ورود ترافیک را مجاز میداند)
سناریوی بهرهبرداری NAT Slipstreaming:
تارنمای آلوده ──[کدهای WebRTC / فرم POST با دادههای جعلی SIP]──> مرورگر قربانی
└── مرورگر بستهای منطبق بر مرز قطعهبندی TCP ارسال میکند ──> درگاه لینوکس
└── دستیار هسته دادههای HTTP را به جای SIP فرض میکند ──> باز شدن درگاه به شبکه داخلی و VPN!
سازوکار پردازش دستیارهای ردگیری اتصال Netfilter
اکثر پروتکلهای انتقال امروزی وضعیت نشستها را بر پایه سرآیندهای لایه ۴ (نشانیهای IP و شماره درگاههای TCP/UDP) مدیریت میکنند. با این حال، برخی پروتکلهای طراحیشده در دهههای پیشین، نشانیهای IP و درگاههای کمکی تبادل داده را مستقیماً درون متن محتوای لایه کاربردی درج مینمایند:
۱. پروتکل FTP در حالت فعال (RFC 959): کارخواه دستوری با ساختار PORT h1,h2,h3,h4,p1,p2 را روی درگاه ۲۱ میفرستد. سپس سرور خارجی اتصالی را به سوی پورت اعلامشده توسط کارخواه آغاز میکند.
۲. پروتکل آغاز نشست (SIP / RFC 3261): پیامهای کنترلی از طریق پورت ۵۰۶۰ ردوبدل میشوند. بخش SDP درون پیام، درگاههای پویای UDP را برای جابهجایی جریانهای صوتی و تصویری RTP تعیین میکند.
۳. پروتکلهای H.323 و TFTP: از الگوهای رفتاری مشابهای برای ایجاد کانالهای داده جداگانه بهره میگیرند.
برای جلوگیری از اخلال در عملکرد این نرمافزارها پس از تبدیل نشانی شبکه، هسته لینوکس تحلیلگرهای ویژهای را در خود جای داده است (nf_conntrack_sip، nf_conntrack_ftp، nf_conntrack_tftp، nf_conntrack_irc).
زمانی که دادهها با یک دستیار فعال همخوانی داشته باشند، هسته متن بسته را پویش میکند. پس از شناسایی دستور تعیین درگاه، توابع nf_ct_expect_alloc() و nf_ct_expect_related() فراخوانی میشوند. این رخداد رکوردی در جدول انتظارات هسته (/proc/net/nf_conntrack_expect) ثبت مینماید. هنگامی که بستهای از اینترنت به سوی این درگاه گسیل شود، Netfilter آن را در وضعیت RELATED طبقهبندی میکند. با توجه به اینکه قواعد استاندارد دیواره آتش شامل چنین دستوری هستند:
# قاعده متداول برای پذیرش بستههای وابسته
nft add rule inet filter input ct state established,related accept
بسته به آسانی از سد فیلترهای ورودی گذشته و مستقیم به سامانه مورد نظر در شبکه داخلی تحویل میگردد.
تهدید امنیتی: حمله نفوذ مخفیانه NAT Slipstreaming
در سالهای ۲۰۲۰ و ۲۰۲۱ میلادی، پژوهشگر امنیتی سمی کامکار آسیبپذیریهای نهفته در دستیارهای کمکی را آشکار ساخت و نشان داد چگونه میتوان با سوءاستفاده از یک برگه وب در مرورگر معمولی، گذرگاههای نفوذ را باز کرد.
مراحل شکلگیری حمله
حمله NAT Slipstreaming از طریق هماهنگسازی پیچیده پروتکلها به نتیجه میرسد:
۱. تطبیق مرز بستههای شبکه: نفوذگر کاربر را به صفحهای مخرب میکشاند. کدهای جاوااسکریپت بستههایی را از طریق WebRTC یا فرمهای ارسالی به سوی سرور نفوذگر ارسال میکنند.
۲. سنجش Path MTU و قطعهبندی TCP: اسکریپت با تخمین اندازه مجاز بستهها، دادههای HTTP را طوری تنظیم میکند که دستورات جعلشده SIP یا FTP دقیقاً در سرآغاز یک قطعه مجزای TCP جای گیرند.
۳. تحریک کاوشگر هسته لینوکس: هرچند دادهها در سطح مرورگر از جنس HTTP هستند، هنگام عبور از درگاه لینوکس، ماژول nf_conntrack_sip سرآیندهای معتبر SIP (نظیر Contact: sip:victim@192.168.1.50:8080) را شناسایی کرده و ارتباط را گفتوگوی صوتی معتبر میپندارد.
۴. ایجاد روزنه نفوذ ناخواسته: ماژول کمکی یک مدخل در جدول انتظارات هسته برای درگاه TCP/UDP 8080 (یا هر درگاه حساسی مثل SSH و پایگاههای داده) باز میکند.
۵. دسترسی بیواسطه به شبکه خصوصی: سرور مهاجم فوراً با نشانی IP عمومی دروازه روی آن درگاه ارتباط میگیرد. این بسته با عنوان RELATED وارد شده، تغییر آدرس یافته و مستقیماً به سرویسهای حساس داخل شبکه یا VPN هدایت میشود.
جریان اجرای حمله NAT Slipstreaming:
[سرور نفوذگر] ◄───── بارگذاری اسکریپت آلوده ─────► [مرورگر رایانه قربانی]
│ │
│ ساخت درخواستهای HTTP
│ تنظیم بر لبه قطعه TCP
▼ ▼
[درگاه دریافت ۵۰۶۰] ◄── بسته حاوی داده ساختگی SIP ──────── [درگاه لینوکس]
│ │
│ قلاب nf_conntrack_sip:
│ شناسایی "Contact: :22"
│ درج رکورد در جدول انتظارات
▼ ▼
ارسال بسته کاوشگر ──[TCP SYN: درگاه ۲۲]──> [نشانی IP عمومی درگاه]
│
شناسایی به عنوان "RELATED"
│
▼
دسترسی مستقیم به پورت SSH
یا خدمات حساس درون VPN!
چالشهای مضاعف: تحریف محتوا و مهارناپذیری سرویس
علاوه بر خطر رخنه به شبکههای بسته، این ماژولها پیامدهای ناخواسته دیگری دارند:
- دستکاری بستههای داده (ALG Translation): برخی دستیارها محتوای متنی بستهها را تغییر میدهند تا نشانیهای محلی را با نشانیهای اینترنتی هماهنگ کنند. این مداخله امضاهای اعتبارسنجی در رمزنگاریهای مبدأ تا مقصد را مخدوش مینماید.
- تکمیل ظرفیت جدول انتظارات: حملات سیلآسا میتوانند جدول
net.netfilter.nf_conntrack_expect_maxرا انباشته کنند که به مختل شدن اختصاص نشستهای معتبر در درگاه VPN منجر میگردد.
تدابیر امنیتی و مقاومسازی درگاههای VPN
برای خنثیسازی خطرات ماژولهای کمکی، به کار بستن سیاستهای دفاعی چندلایه اجتنابناپذیر است:
۱. غیرفعالسازی انتساب خودکار دستیارها
در هستههای مدرن لینوکس، فعالسازی خودکار غیرفعال شده است، با این حال اسکریپتهای مدیریتی قدیمی ممکن است آن را سهواً فعال نمایند. لازم است این تنظیم در /etc/sysctl.d/99-security.conf درج گردد:
# جلوگیری قطعی از انتساب خودکار دستیارهای ردگیری
net.netfilter.nf_conntrack_helper = 0
اعمال بدون درنگ تنظیمات:
sysctl -w net.netfilter.nf_conntrack_helper = 0
با مقدار 0، هسته لینوکس هرگز بدون دستور مستقیم دیواره آتش، متن دادهها را واکاوی نخواهد کرد.
۲. مهار دستیارها در چارچوب nftables
اگر سامانههای تلفنی قدیمی الزاماً به دستیار نیاز دارند، باید دامنه آن را منحصراً به نشانیهای مشخص محدود ساخت:
# تعریف صریح شیء کمکی در nftables
table inet filter {
ct helper sip-helper {
type "sip" protocol udp
l3proto ip
}
chain prerouting {
type filter hook prerouting priority -150; policy accept;
# فعالسازی صرفاً برای سرور تلفنی سازمانی معین
ip saddr 10.200.0.10 udp dport 5060 ct helper set "sip-helper"
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established accept
# محدود ساختن به بازه مشخص درگاههای صوتی
ct state related udp dport 10000-20000 accept
}
}
۳. بهکارگیری سازوکارهای نوین در لایه کاربردی
زیرساختهای معاصر نیازی به ماژولهای کمکی در هسته ندارند. سامانههای نوین چندرسانهای بر استانداردهای ایمن استوارند:
- STUN (RFC 8489): کشف نشانی بیرونی بدون نیاز به دستکاری در بسته.
- TURN (RFC 8656): هدایت جریانهای رسانهای از طریق کارگزار واسط در صورت عدم اتصال مستقیم.
- ICE (RFC 8445): انتخاب خودکار پایدارترین مسیر از میان بسترهای رمزنگاریشده.
حفاظت دادهها با TLS و DTLS مانع از دخالت هسته لینوکس شده و حمله NAT Slipstreaming را غیرممکن میسازد.
پایش و راستیآزمایی مستمر
مدیران شبکه میتوانند وضعیت باز بودن روزنهها را مستقیماً ارزیابی کنند:
# مشاهده رکوردهای موجود در جدول انتظار
conntrack -L expect
# فهرست ماژولهای کمکی بارگذاریشده
lsmod | grep nf_conntrack_
# تخلیه ماژولهای غیرضروری
modprobe -r nf_nat_sip nf_conntrack_sip nf_nat_ftp nf_conntrack_ftp
در دروازههای ایمن، خروجی دستور conntrack -L expect همواره باید نشاندهنده نبود رکورد باز (0 expectations) باشد.
معماری ایمن در سامانه VPNRice RiceGuard
پلتفرم VPNRice در هسته فناوری RiceGuard مبانی صفر اعتماد را اعمال نموده است:
۱. حذف کامل درگاههای ALG: در سرورهای RiceGuard دستور net.netfilter.nf_conntrack_helper = 0 پایدار بوده و کلیه ماژولهای کمکی سنتی خارج شدهاند.
۲. اعتبارسنجی تکتک بستهها با رمزنگاری قوی: کلیه تبادلات با کلیدهای عمومی پروتکل Noise در WireGuard تأیید میشوند. هر بستهای که دارای امضای معتبر نباشد پیش از ورود به سازوکار وضعیت طرد میگردد.
۳. جداسازی نهایی دستگاهها: سامانههای متصل به RiceGuard از سازوکار مهار محلی بهره میبرند و مرورگرها قادر به گشودن رخنه نفوذ نخواهند بود.
برای مدیران شبکههای سازمانی، حذف دستیارهای کمکی Netfilter گامی اساسی در ارتقای امنیت به شمار میرود. خاموش کردن ماژولهای ALG در هسته و بهرهگیری از پروتکلهای رمزنگاری معاصر، سد دفاعی دروازههای VPN را در برابر نفوذهای پنهانی نفوذناپذیر نگاه میدارد.



