🌐

مستندات جامع سامانه وضعیت شبکه

سامانه بررسی اتصال VPN و مدیریت بازدیدکنندگان
شرکت زیرساخت ایران برنا
تاریخ تدوین: تیرماه ۱۴۰۵
نسخه: 1.0
محرمانه

فهرست مطالب

  1. معرفی سامانه
  2. ساختار فایل‌ها
  3. نصب و راه‌اندازی
  4. راهنمای کاربر (صفحه اصلی)
  5. راهنمای مدیریت (پنل ادمین)
  6. مستندات امنیتی
  7. تهدیدات و آسیب‌پذیری‌ها
  8. توصیه‌های امنیتی
  9. عیب‌یابی

۱. معرفی سامانه

۱.۱ خلاصه

این سامانه یک دروازه امنیتی (Gateway) است که دسترسی کاربران به صفحه وضعیت شبکه را منوط به اتصال موفق از طریق VPN سازمانی می‌کند. کاربرانی که از طریق VPN متصل شده باشند، به صفحه اصلی سامانه هدایت می‌شوند و سایر کاربران، صفحه هشدار دریافت می‌کنند.

۱.۲ قابلیت‌های اصلی

۱.۳ فناوری‌های استفاده شده

فناوریکاربرد
PHP 7.4+پردازش سمت سرور، احراز هویت، ثبت لاگ
HTML5 / CSS3رابط کاربری واکنش‌گرا
JavaScriptجستجوی زنده، شناسایی مرورگر، تایمر
CSVذخیره‌سازی لاگ‌ها
JSONذخیره‌سازی تنظیمات

۲. ساختار فایل‌ها

📄 index.php — صفحه اصلی (بررسی VPN + لاگ + ریدایرکت)
📄 admin.php — پنل مدیریت (ورود + لاگ‌ها + تنظیمات + تغییر رمز)
📄 config.json — فایل تنظیمات (آدرس مقصد، IP شناخته‌شده)
📄 .htaccess — حفاظت فایل‌ها از دانلود مستقیم
📄 logs.csv — فایل لاگ اتصالات (خودکار ساخته می‌شود)
📄 .attempts — فایل موقت شمارش تلاش‌های ناموفق ورود
📄 documentation.html — مستندات فارسی سامانه
📄 documentation.docx — مستندات فارسی (سازگار با Word)

توضیح فایل‌ها

فایلتوضیحقابل ویرایش
index.phpصفحه اصلی - بررسی VPN، ثبت لاگ، ریدایرکت، صفحه بلاکخیر (مگر توسعه)
admin.phpپنل مدیریت - ورود، مشاهده لاگ‌ها، تنظیمات، تغییر رمز عبورخیر (مگر توسعه)
config.jsonتنظیمات سامانه (آدرس مقصد، IP شناخته‌شده)بله - از پنل مدیریت
.htaccessحفاظت تمام فایل‌ها از دانلود مستقیم توسط مرورگرخیر
logs.csvفایل لاگ اتصالات (زمان، آی‌پی، کامپیوتر، مرورگر، وضعیت)خودکار — قابل پاک‌سازی از پنل
.attemptsفایل موقت شمارش تلاش‌های ناموفق ورودخودکار
documentation.htmlمستندات کامل فارسی سامانه ( قابل چاپ)خیر
documentation.docxمستندات فارسی سازگار با Microsoft Wordخیر

۳. نصب و راه‌اندازی

۳.۱ پیش‌نیازها

۳.۲ مراحل نصب

فایل‌های زیر را در پوشه روت وب‌سرور کپی کنید:

فایلتوضیحاجباری
index.phpصفحه اصلی سامانهبله
admin.phpپنل مدیریتبله
config.jsonفایل تنظیماتبله
.htaccessحفاظت فایل‌ها از دانلود مستقیمبله
  1. فایل‌های بالا را در پوشه روت وب‌سرور کپی کنید
  2. اطمینان حاصل کنید پوشه مبدأ قابل نوشتن باشد (برای ایجاد خودکار logs.csv)
  3. آدرس وب‌سایت را در مرورگر باز کنید
  4. صفحه اصلی باید IP شما را نمایش دهد
  5. با VPN متصل شوید و مجدداً بررسی کنید — باید به آدرس مقصد هدایت شوید

۳.۳ تنظیم رمز عبور ادمین

در اولین ورود به پنل مدیریت، می‌توانید رمز عبور تعیین کنید یا از تعیین رمز صرف نظر کنید. در صورت تعیین رمز، فایل auth.dat ایجاد شده و رمز عبور به صورت هش ذخیره می‌شود.

۳.۴ تنظیمات config.json

{
    "redirect_url": "http://172.16.87.1",
    "known_ip": "80.75.3.42"
}
پارامترتوضیحمثال
redirect_urlآدرس مقصد برای هدایت کاربران VPNhttp://172.16.87.1
known_ipآی‌پی شناخته‌شده80.75.3.42

۴. راهنمای کاربر (صفحه اصلی)

۴.۱ سناریوهای نمایش

وضعیترفتار
کاربر با VPN متصل (IP شناخته‌شده)لاگ ثبت → صفحه تأیید → ریدایرکت خودکار
کاربر بدون VPNلاگ ثبت → صفحه هشدار «اتصال VPN الزامی»

۴.۲ اطلاعات نمایشی

صفحه اصلی پس از تأیید VPN، اطلاعات اتصال را نمایش داده و پس از ۲ ثانیه به آدرس مقصد ریدایرکت می‌شود.

۴.۳ دسترسی به پنل مدیریت

برای ورود به پنل مدیریت، ۷ بار پشت سر هم روی متن «زیرساخت ایران برنا» در فوتر کلیک کنید. دکمه پنل مدیریت به صورت موقت نمایش داده می‌شود و پس از ۳ ثانیه محو می‌شود.

۵. راهنمای مدیریت (پنل ادمین)

۵.۱ ورود به پنل

آدرس: admin.php — در اولین ورود امکان تعیین یا صرف نظر از رمز عبور وجود دارد.

۵.۲ بخش‌های پنل

۵.۳ عملیات

عملیاتتوضیح
ذخیره تنظیماتتغییر IP مبدأ و مقصد هدایت
پاک کردن لاگ‌هاحذف تمام رکوردهای لاگ
خروجی CSVدانلود فایل CSV از لاگ‌ها
جستجوفیلتر زنده لاگ‌ها بر اساس آی‌پی، کامپیوتر یا مرورگر
تازه‌سازیبازخوانی صفحه
خروجپایان نشست مدیریت

۵.۴ نمایش لاگ‌ها

هر ردیف شامل: زمان، آی‌پی، نام کامپیوتر، مرورگر و وضعیت است. ردیف‌های «عدم اتصال VPN» با پس‌زمینه قرمز مشخص می‌شوند.

۶. مستندات امنیتی

۶.۱ اقدامات امنیتی اعمال شده

اقدامتوضیحفایل
هش رمز عبور (bcrypt)رمز عبور با password_hash() هش شده و هرگز به صورت متن ساده ذخیره نمی‌شودauth.dat
مقاومت در برابر حمله Timingبررسی رمز عبور با hash_equals() انجام می‌شودadmin.php
محافظت CSRFتمام فرم‌ها دارای توکن CSRF هستندadmin.php
محدودیت تلاش ورودحداکثر ۵ تلاش ناموفق در ۵ دقیقهadmin.php
بازسازی Sessionپس از ورود موفق، شناسه نشست بازسازی می‌شودadmin.php
هدرهای امنیتیX-Content-Type-Options, X-Frame-Options, CSP, X-XSS-Protectionadmin.php
Cookie امنCookie با پارامترهای httponly و samesite تنظیم شدهadmin.php
Sanitize خروجیتمام خروجی‌ها با htmlspecialchars() ایمن‌سازی شدههر دو فایل
Sanitize ورودیاعتبارسنجی IP با filter_var() و URL با FILTER_SANITIZE_URLهر دو فایل
غیرفعال کردن Error Displayخطاها در سرور لاگ می‌شوند نه در صفحه (در محیط production)php.ini
محافظت فایل‌های حساسمسدودسازی دانلود مستقیم فایل‌های حساس از طریق وب.htaccess

۶.۲ حفاظت فایل‌های حساس

فایل .htaccess دسترسی مستقیم کاربران به فایل‌های حساس را از طریق مرورگر مسدود می‌کند.

۶.۳ سیستم احراز هویت

ورود به پنل مدیریت از سه لایه امنیتی بهره می‌برد:

  1. رمز عبور bcrypt: مقاوم در برابر حملات Brute-Force و Rainbow Table
  2. محدودیت تلاش: پس از ۵ بار رمز اشتباه، حساب برای ۵ دقیقه قفل می‌شود
  3. Session Regeneration: پس از ورود موفق، شناسه نشست تغییر می‌کند (جلوگیری ا Session Fixation)

۶.۳ محافظت CSRF

هر عملیات تغییردهنده (ذخیره تنظیمات، پاک‌سازی لاگ، خروج) نیاز به توکن CSRF دارد. توکن با random_bytes(32) تولید و با hash_equals() مقایسه می‌شود.

۷. تهدیدات و آسیب‌پذیری‌ها

۷.۱ تهدیدات شناسایی شده و اقدامات انجام شده

فایل محافظت شدهدلیل
config.jsonشامل تنظیمات آدرس مقصد و IP شناخته‌شده — افشای آن اطلاعات شبکه را لو می‌دهد
logs.csvشامل لاگ تمام بازدیدها و آدرس‌های IP — افشای آن حریم خصوصی را نقض می‌کند
auth.datشامل هش رمز عبور ادمین — افشای آن امنیت پنل مدیریت را به خطر می‌اندازد
.attemptsشامل اطلاعات تلاش‌های ناموفق ورود
تمام پسوندهای .json, .dat, .csv, .log, .bak, .old, .swp, .tmpجلوگیری از دانلود فایل‌های پشتیبان و موقت
تهدیدسطح خطراقدام امنیتی
XSS (Cross-Site Scripting)بالاSanitize خروجی با htmlspecialchars در تمام نقاط خروجی
CSRF (Cross-Site Request Forgery)بالاتوکن CSRF در تمام فرم‌ها + بررسی hash_equals
Brute Forceبالامحدودیت ۵ تلاش در ۵ دقیقه + قفل موقت
Session Fixationمتوسطبازسازی Session ID پس از ورود موفق
Password Crackingمتوسطهش bcrypt با salt خودکار
Clickjackingمتوسطهدر X-Frame-Options: DENY
MIME Sniffingپایینهدر X-Content-Type-Options: nosniff
Timing Attackپایینمقایسه با hash_equals (زمان ثابت)
Info Leakageپایینعدم نمایش خطا به کاربر، عدم افشای رنج IP

۷.۲ تهدیدات باقیمانده (Risk Accepted)

۱. نفوذ از طریق شبکه داخلی: اگر مهاجم به شبکه داخلی LAN دسترسی داشته باشد، می‌تواند مستقیماً به وب‌سرور متصل شود. راه‌حل: محدودسازی دسترسی در سطح فایروال.

۲. نفوذ به فایل‌های لاگ: اگر مهاجم دسترسی سیستم‌عامل داشته باشد، می‌تواند فایل logs.csv را بخواند. راه‌حل: محدودسازی دسترسی فایل‌ها در سطح OS.

۳. حمله به رمز عبور: اگر رمز عبور ضعیف باشد، قابل حدس است. راه‌حل: استفاده از رمز عبور قوی (حداقل ۱۲ کاراکتر).

۸. توصیه‌های امنیتی

۸.۱ الزامی

  1. فایل config.json را با دسترسی 644 تنظیم کنید
  2. فایل logs.csv را با دسترسی 644 تنظیم کنید
  3. فایل auth.dat (در صورت ایجاد) را با دسترسی 600 تنظیم کنید
  4. HTTPS را فعال کنید (SSL/TLS)
  5. فایروال سرور را طوری تنظیم کنید که فقط IP‌های مجاز بتوانند به پورت وب‌سرور متصل شوند

۸.۲ توصیه شده

  1. از php-fpm به جای mod_php استفاده کنید
  2. Error reporting را در production غیرفعال کنید: display_errors = Off
  3. لاگ‌ها را به صورت دوره‌ای بکاپ بگیرید
  4. از ابزارهای مانیتورینگ مثل Fail2Ban برای نظارت بر تلاش‌های ناموفق استفاده کنید
  5. نسخه PHP را به روز نگه دارید

۸.۳ ساختار فایروال پیشنهادی (iptables)

# فقط اجازه دسترسی به پورت 80 از شبکه داخلی
iptables -A INPUT -p tcp --dport 80 -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

۹. عیب‌یابی

مشکلعلت احتمالیراه‌حل
صفحه بلاک نمایش داده می‌شودVPN متصل نیست یا IP شناخته نیستاتصال VPN را بررسی کنید و IP خود را با ipconfig چک کنید
آی‌پی 127.0.0.1 نمایش داده می‌شوددسترسی از localhostاز طریق آدرس LAN وصل شوید
آی‌پی ::1 نمایش داده می‌شودIPv6 loopbackبا آدرس IPv4 وصل شوید
ریدایرکت انجام نمی‌شودآدرس مقصد نادرست استconfig.json را بررسی کنید
لاگ ثبت نمی‌شوددسترسی نوشتن وجود ندارددسترسی پوشه را بررسی کنید
نمی‌توان وارد پنل شدرمز عبور اشتباه یا قفل موقت۵ دقیقه صبر کنید یا auth.dat را حذف کنید تا رمز بازنشانی شود
فرم ذخیره نمی‌شودCSRF token نامعتبرصفحه را رفرش کنید و مجدداً تلاش کنید

شرکت زیرساخت ایران برنا

تلفن: 41758000 داخلی 111

تاریخ آخرین به‌روزرسانی مستندات: تیرماه ۱۴۰۵