# ایمن سازی اعتبارسنج ها

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

با توجه به سرمایه و مسئولیتی که در راه‌اندازی یک اعتبارسنج وجود دارد، محافظت از نود در برابر حملات **DoS** و **DDoS** یک انتخاب اختیاری نیست؛ بلکه یکی از الزامات اصلی عملیات اعتبارسنجی است.

***

## معماری Sentry Node؛ محافظت در برابر DDoS

<p align="right">موثرترین راه برای محافظت از اعتبارسنج در برابر حملات مستقیم شبکه، استفاده از معماری <strong>Sentry Node</strong> است.</p>

<p align="right">در این ساختار، نود اعتبارسنج شما هرگز به‌صورت مستقیم در معرض اینترنت عمومی قرار نمی‌گیرد. در عوض، یک یا چند Sentry Node؛ که همان Full Nodeهای استاندارد دات‌وان هستند؛ به‌عنوان واسطه میان اعتبارسنج و شبکه گسترده‌تر P2P عمل می‌کنند.</p>

<p align="right">ویژگی‌های کلیدی این معماری:</p>

* Sentry Nodeها در فضای IP خصوصی فعالیت می‌کنند و مانع دیده‌شدن مستقیم اعتبارسنج می‌شوند.
* در صورت هدف قرار گرفتن، Sentry Nodeها به‌سرعت قابل استقرار مجدد هستند و می‌توان IP آن‌ها را تغییر داد.
* پیشنهاد بلاک‌ها و رأی‌های اعتبارسنج، از طریق لایه Sentry به‌صورت قابل اتکا به شبکه می‌رسد.
* هویت و موقعیت اعتبارسنج شما از دید Peerهای عمومی پنهان می‌ماند.

***

## مرحله ۱؛ راه‌اندازی نودها

<p align="right">یک شبکه خصوصی ایجاد کنید که شامل نود اعتبارسنج و یک یا چند Sentry Node باشد.<br>برای استقرار هر نود، راهنمای راه‌اندازی Full Node را دنبال کنید.</p>

<p align="right">اتصال‌های trusted را فقط میان اعتبارسنج و Sentry Nodeهای خودش تنظیم کنید.</p>

<p align="right">⚠️ <strong>هشدار:</strong> تحت هیچ شرایطی RPC endpointهای اعتبارسنج خود را در معرض شبکه عمومی قرار ندهید.</p>

***

## مرحله ۲؛ افزودن Sentry Nodeها به‌عنوان Static Peer

<p align="right">به کنسول هر Sentry Node متصل شوید و برای دریافت اطلاعات <code>enode</code> آن، دستور زیر را اجرا کنید:</p>

```
admin.nodeInfo.enode
```

<p align="right">خروجی، یک URL از نوع <code>enode</code> با ساختاری مشابه زیر خواهد بود:</p>

```
enode://f2da64f49c30a0038bba3391f40805d531510c473ec2bcc7c201631ba003c6f16fa09e03308e48f87d21c0fed1e4e0bc53428047f6dcf34da344d3f5bb69373b@[::]:30306?discport=0
```

<p align="right"><strong>نکته:</strong><br><code>[::]</code> نشان‌دهنده آدرس localhost یعنی <code>127.0.0.1</code> است.</p>

<p align="right">اگر Sentry Nodeها داخل یک شبکه محلی هستند، IP درست هر میزبان را با استفاده از <code>ifconfig</code> پیدا کنید.<br>اگر Sentry Nodeها روی سرورهای خارجی قرار دارند، از IP عمومی آن‌ها در URL مربوط به <code>enode</code> استفاده کنید.</p>

<p align="right">پس از جایگزین کردن <code>[::]</code> با IP درست، ورودی‌های <code>enode</code> را به فایل <code>config.toml</code> نود اعتبارسنج اضافه کنید:</p>

```
# پنهان کردن اعتبارسنج از public discoveryNoDiscovery = true# اتصال فقط به Sentry NodeهاStaticNodes = [  "enode://f2da64f49c30a0038bba3391f40805d531510c473ec2bcc7c201631ba003c6f16fa09e03308e48f87d21c0fed1e4e0bc53428047f6dcf34da344d3f5bb69373b@[10.1.1.1]:30306",  "enode://{sentry-node-2-enode}@[10.1.1.2]:30306"]
```

<p align="right">قرار دادن مقدار زیر:</p>

```
NoDiscovery = true
```

<p align="right">باعث می‌شود اعتبارسنج شما خودش را به شبکه عمومی P2P معرفی نکند و فقط از طریق Sentry Nodeهایی که به‌صورت مشخص تعریف شده‌اند ارتباط بگیرد.</p>

***

## مرحله ۳؛ بررسی اتصال‌ها

<p align="right">به کنسول نود اعتبارسنج متصل شوید و فعال بودن اتصال به Sentry Nodeها را بررسی کنید:</p>

```
admin.peers
```

<p align="right">در خروجی باید جزئیات هر Sentry Node تنظیم‌شده را ببینید.</p>

<p align="right">اگر یکی از Sentry Nodeها نمایش داده نمی‌شود، موارد زیر را بررسی کنید:</p>

* URL مربوط به `enode`
* آدرس IP
* تنظیمات پورت اتصال

***

## تنظیمات فایروال

<p align="right">قوانین درست فایروال برای جلوگیری از دسترسی غیرمجاز به نود اعتبارسنج ضروری هستند.<br>کلاینت <code>geth</code> دات‌وان برای عملکردهای مختلف از چند پورت استفاده می‌کند:</p>

| پورت  | پروتکل    | کاربرد                        | اقدام پیشنهادی                                               |
| ----- | --------- | ----------------------------- | ------------------------------------------------------------ |
| 30303 | TCP + UDP | Listener شبکه P2P و کشف نودها | **باز باشد**؛ برای مشارکت در شبکه ضروری است                  |
| 8545  | TCP       | JSON-RPC API                  | **از بیرون مسدود شود**؛ هرگز در معرض دسترسی عمومی قرار نگیرد |
| 8546  | TCP       | WebSocket API                 | **از بیرون مسدود شود**؛ فقط برای استفاده داخلی               |

## قوانین اجرایی

<p align="right">برای حفظ امنیت نود، این قوانین باید اعمال شوند:</p>

* ترافیک ورودی و خروجی روی پورت `30303` برای اتصال P2P مجاز باشد.
* هرگونه دسترسی خارجی به پورت‌های `8545` و `8546` در سطح فایروال مسدود شود.
* اگر از معماری Sentry Node استفاده می‌کنید، دسترسی P2P روی نود اعتبارسنج فقط به IP آدرس‌های Sentry Nodeهای خودتان محدود شود.
* اگر ماژول HTTP برای راه‌اندازی شما ضروری نیست، آن را به‌طور کامل غیرفعال کنید.

***

## چک‌لیست امنیتی

<p align="right">پیش از فعال شدن روی Mainnet، موارد زیر را بررسی کنید:</p>

* [ ] نود اعتبارسنج به‌صورت مستقیم از اینترنت عمومی قابل دسترسی نیست.
* [ ] Sentry Nodeها راه‌اندازی شده‌اند و به‌عنوان peerهای فعال تأیید شده‌اند.
* [ ] مقدار `NoDiscovery = true` در فایل `config.toml` اعتبارسنج تنظیم شده است.
* [ ] پورت‌های RPC، یعنی `8545` و `8546`، در سطح فایروال مسدود شده‌اند.
* [ ] فایل‌های keystore به‌صورت امن و آفلاین بکاپ‌گیری شده‌اند.
* [ ] رمزهای کلیدهای BLS و Consensus به‌شکل امن نگهداری می‌شوند و به‌صورت متن ساده روی سرور ذخیره نشده‌اند.
* [ ] مانیتورینگ و هشداردهی برای آپ‌تایم و تعداد slashها فعال است.
* [ ] نود پشتیبان اعتبارسنج آماده‌سازی شده و آماده استفاده است.

***

## اصول عمومی امنیت

<p align="right">علاوه بر معماری Sentry و تنظیمات فایروال، رعایت موارد زیر به‌شدت توصیه می‌شود:</p>

### مدیریت کلیدها

<p align="right">کلیدهای خصوصی Consensus و BLS را روی فضای ذخیره‌سازی رمزنگاری‌شده نگهداری کنید.<br>هرگز فایل‌های کلید را از طریق کانال‌های رمزنگاری‌نشده منتقل نکنید.<br>برای استقرارهای عملیاتی و production، استفاده از <strong>Hardware Security Module (HSM)</strong> را در نظر بگیرید.</p>

### کنترل دسترسی

<p align="right">دسترسی SSH به نود اعتبارسنج و Sentry Nodeها را فقط به احراز هویت مبتنی بر کلید محدود کنید.<br>ورود با رمز عبور را غیرفعال کنید.<br>سطح دسترسی را به حداقل تعداد اپراتورهای قابل اعتماد محدود نگه دارید.</p>

### سلامت نرم‌افزار

<p align="right">باینری نود، سیستم‌عامل و وابستگی‌های نرم‌افزاری را همیشه به‌روز نگه دارید.<br>اطلاعیه‌های نسخه‌های جدید دات‌وان را دنبال کنید و وصله‌های امنیتی را به‌موقع اعمال کنید.</p>

### پاسخ به حادثه

<p align="right">برای مواجهه با خرابی نود، احتمال افشای کلید، یا رویدادهای غیرمنتظره slashing، یک فرایند مکتوب و مشخص داشته باشید.<br>باید بدانید در مواقع اضطراری چگونه نود را خاموش کنید و در صورت نیاز، اعتبارسنج را از وضعیت jail خارج کنید.</p>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dotone.network/documentation/dotone-smartchain-persian/aatbarsnj/aymn-sazy-aatbarsnj-ha.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
