این سامانه یک دروازه امنیتی (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 | مستندات فارسی سازگار با Microsoft Word | خیر |
فایلهای زیر را در پوشه روت وبسرور کپی کنید:
| فایل | توضیح | اجباری |
|---|---|---|
index.php | صفحه اصلی سامانه | بله |
admin.php | پنل مدیریت | بله |
config.json | فایل تنظیمات | بله |
.htaccess | حفاظت فایلها از دانلود مستقیم | بله |
در اولین ورود به پنل مدیریت، میتوانید رمز عبور تعیین کنید یا از تعیین رمز صرف نظر کنید. در صورت تعیین رمز، فایل auth.dat ایجاد شده و رمز عبور به صورت هش ذخیره میشود.
{
"redirect_url": "http://172.16.87.1",
"known_ip": "80.75.3.42"
}
| پارامتر | توضیح | مثال |
|---|---|---|
redirect_url | آدرس مقصد برای هدایت کاربران VPN | http://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-Protection | admin.php |
| Cookie امن | Cookie با پارامترهای httponly و samesite تنظیم شده | admin.php |
| Sanitize خروجی | تمام خروجیها با htmlspecialchars() ایمنسازی شده | هر دو فایل |
| Sanitize ورودی | اعتبارسنجی IP با filter_var() و URL با FILTER_SANITIZE_URL | هر دو فایل |
| غیرفعال کردن Error Display | خطاها در سرور لاگ میشوند نه در صفحه (در محیط production) | php.ini |
| محافظت فایلهای حساس | مسدودسازی دانلود مستقیم فایلهای حساس از طریق وب | .htaccess |
فایل .htaccess دسترسی مستقیم کاربران به فایلهای حساس را از طریق مرورگر مسدود میکند.
| فایل محافظت شده | دلیل | |
|---|---|---|
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 |
config.json را با دسترسی 644 تنظیم کنیدlogs.csv را با دسترسی 644 تنظیم کنیدauth.dat (در صورت ایجاد) را با دسترسی 600 تنظیم کنیدphp-fpm به جای mod_php استفاده کنیدdisplay_errors = Off# فقط اجازه دسترسی به پورت 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
تاریخ آخرین بهروزرسانی مستندات: تیرماه ۱۴۰۵