Skip to content

Commit

Permalink
add firewall,fallback,chains
Browse files Browse the repository at this point in the history
  • Loading branch information
alireza0 committed Sep 13, 2023
1 parent 6edf071 commit c1f0f49
Show file tree
Hide file tree
Showing 11 changed files with 206 additions and 0 deletions.
164 changes: 164 additions & 0 deletions content/fa/docs/security/chains.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
---
title: "زنجیره پراکسی ها"
weight: 4
description: >
استفاده از چندین سرور به صورت زنجیره پشت سر هم
---

به صورت عمومی، استفاده از ارتباط مستقیم کاربر با سرور اصلی توصیه نمیشود. این کار باعث امنیت پایین و تشخیص زود هنگام سرور شما توسط فیلترچی و ربات ها میشود.

## پرکاربرد ترین پراکسی ها
خود نرم افزار xray به عنوان یک پراکسی قوی با امکانات زیاد برای پنهان شدن از دید فیلترچی استفاده میشود. به دلیل استفاده زیاد از این نرم افزار، فیلترچی به دنبال شناسایی و فیلترکردن ارتبطات با این سرورهاست. برای اینکه سرور اصلی از گزند فیلترچی در امان بماند، بهتر است از ترکیب یک یا چند پراکسی دیگر استفاده کرد.

### ۱. سرویس‌های ابری
سرویس های ابری امروزه به عنوان یکی از پر کاربرد ترین روشها برای افزایش امنیت، سرعت و راحتی وب سایت ها به کار میرود. شما میتوانید با پنهان کردن سرور خود پشت این سرویس ها به مخفی سازی سرور اصلی کمک کنید.
![](../cloud-proxy.png)
{{< alert color="success" title="مزایا" >}}
* سادگی
* وجود سرویس های رایگان
* امکان استفاده از سرویس های grpc,WebSocker,HTTP,H2
{{< /alert >}}
{{< alert color="warning" title="معایب" >}}
* دارای قوانین متفاوت
* لزوم تغییر آدرس ها
* امکان فیلتر شدن آدرس های سرویس ابری
* امکان استفاده از پورت های محدود و مشخص در نسخه رایگان
{{< /alert >}}

### ۲. سرور پراکسی محلی
با استفاده از یک نرم افزار پراکسی نظیر nginx و یا HAproxy روی یک سرور محلی میتوانید ترافیک کاربران را به جای ارسال مستقیم به خارج، به سرور محلی بفرستید. این ترکیب نیاز به داشتن اطلاعات کافی برای تنظیم این نرم افزارها دارد.
![](../local-proxy.png)
{{< alert color="success" title="مزایا" >}}
* امکانات بیشتر
* فیلترینگ روی دیتاسنترهای محلی کمتر اعمال میشود
* تغییر آدرس و ارسال درخواست ها با پارامتر های مناسب
* استفاده رایگان از نرم افزار
* امکان استفاده از پرتکل های بیشتر
{{< /alert >}}
{{< alert color="warning" title="معایب" >}}
* نیاز به کار با محیط متنی و اتصال به سرور
* همه درخواست ها با آدرس سرور محلی در سرور خارج دریافت میشود
* سرور محلی باید خریداری شود
* محدودیت های دیتاسنترهای محلی
* خطر شناسایی خریدار سرور
{{< /alert >}}

### ۳. استفاده از Port forward
با استفاده از نرم افزار iptables در لینوکس، شما میتوانید از ویژگی port forward استفاده کنید.
![](../iptables-portforward.png)

برای این کار باید از دیتاسنترهای محلی سرور تهیه کنید و تنظیمات زیر را روی سرور اعمال کنید:

توضیح: آدرس فرضی a.b.c.d برای آدرس IP سرور خارج درنظر گرفته شده. لطفا با آدرس واقعی تعویض شود.
```
iptables -A PREROUTING -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A PREROUTING -p icmp -j ACCEPT
iptables -A PREROUTING -j DNAT --to-destination a.b.c.d
```
1. دستور اول پورت ssh را برای دسترسی به سرور محلی استثنا میکند.
2. دستور دوم برای عدم ارسال ping به سرور خارج استفاده شده.
3. دستور سوم بقیه درخواست ها را به آدرس سرور خارج ارسال میکند

{{< alert color="success" title="مزایا" >}}
* سادگی
* فیلترینگ روی دیتاسنترهای محلی کمتر اعمال میشود
* قابلیت استفاده از همه پروتکل ها
* در صورت فیلتر شدن سرور خارجی، میتوان به راحتی با تغییر دستور سوم، سرور جدید را معرفی کرد
{{< /alert >}}
{{< alert color="warning" title="معایب" >}}
* نیاز به کار با محیط متنی و اتصال به سرور
* همه درخواست ها با آدرس سرور محلی در سرور خارج دریافت میشود
* سرور محلی باید خریداری شود
* محدودیت های دیتاسنترهای محلی
* خطر شناسایی خریدار سرور
{{< /alert >}}

### ۴. استفاده از dokodemo-door
این مدل میتواند تا حدودی بهتر از مدل قبلی کار کند، ولی از نظر نوع کارکرد مشابه هستند.

تفاوت اصلی این روش این است که ترافیک دریافت شده قابلیت گذر از تنظیمات مسیریابی xray را دارد و میتوان با x-ui تمامی عملیات ها را با پنل وب انجام داد.

برای اینکار میبایست روی سرور محلی سرور xray و یا x-ui را نصب کرده و برای هر سرویس یک dokodemo-door با پورت مجزا تعیین کنید.
در تنظیم زیر پورت ۸۴۴۳ سرور محلی به پورت ۸۴۴۳ از سرور خارج ارسال میشود:
```json
{
"listen": null,
"port": 8443,
"protocol": "dokodemo-door",
"settings": {
"address": "a.b.c.d",
"port": 8443,
"network": "tcp",
"followRedirect": false,
}
}
```
تنظیم مشابه در x-ui:
![](../dokodemo-door.png)

{{< alert color="success" title="مزایا" >}}
* سادگی
* امکان استفاده از روتینگ ها و امکانات xray
* فیلترینگ روی دیتاسنترهای محلی کمتر اعمال میشود
* قابلیت استفاده از همه پروتکل ها
* در صورت فیلتر شدن سرور خارجی، میتوان به راحتی با تغییر آدرس، از سرور جدید استفاده کرد
{{< /alert >}}
{{< alert color="warning" title="معایب" >}}
* همه درخواست ها با آدرس سرور محلی در سرور خارج دریافت میشود
* سرور محلی باید خریداری شود
* محدودیت های دیتاسنترهای محلی
* خطر شناسایی خریدار سرور
{{< /alert >}}

### ۵. زنجیره xray
یکی از قابلیت های فوق العاده نرم افزارهای v2ray/xray امکان اتصال به به سرور دیگر و تشکیل زنجیره پراکسی هاست. به طور کلی، دو بخش مهم این نرم افزار ها به ایجاد زنجیره کمک میکنند:
1. inbound: وظیفه دریافت درخواست‌ها را دارد
2. outbound: وظیفه ارسال درخواست‌ها را دارد

در واقع نرم افزار سمت کاربر هم از همین متد برای اتصال استفاده میکند. سپس تمام ترافیک را به خروجی (outbound) ارسال میکند.
در سرور هدف، ترافیک ورودی (inbound) دریافت شده و به خروجی (outbound) ارسال میشود. این زنجیره ادامه دارد تا اینکه یک سرور که در دنیای اینترنت آزاد قرار دارد، از طریق پروتکل هایی نظیر freedom در بخش outbound خود بتوانند درخواست کاربر اولیه را به سرور مقصد هدایت کنند.

![](../xray-chain.png)

در این میان، نقش بخش هایی نظیر routing برای مسیردهی به درخواست ها باید در نظر گرفته شود.(خطوط آبی در شکل بالا)

برای استفاده از مزایای این روش، میبایست خروجی سرورها به سرور بعدی متصل شود.

نمونه تنظیم بخش خروجی (outbound)در تنظیمات xray:

```json
"outbounds": [
{
"tag": "next_xray",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "a.b.c.d",
"port": 1443,
"users": [
{
"id": "",
"encryption": "none"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "none"
}
},
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
```
Binary file added content/fa/docs/security/cloud-proxy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/fa/docs/security/dokodemo-door.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/fa/docs/security/fallback-proxy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions content/fa/docs/security/fallback.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,37 @@ description: >
استفاده از فالبک
---

نقل از [راهنمای XTLS](https://xtls.github.io/en/config/features/fallback.html#fallback)
> فالبک یکی از قدرتمندترین ویژگی های Xray است که می تواند به طور موثر از کاوش فعال (Active Probing) جلوگیری کند و به شما امکان می دهد از یک پورت برای چندین سرویس استفاده کنید.
ویژگی ضد کاوش فعال با قدرت بالا، مکانیزم منحصربه‌فرد ارسال جواب در اولین درخواست را دارد.
فالبک همچنین می تواند انواع مختلف ترافیک را بر اساس مسیر (path) برای اشتراک بین چند سرویس را روی یک پورت ارائه کند.

## کمک های اصلی فالبک

۱. به جای تقسیم ترافیک بین پورت های ناشناخته و متعدد از یک پورت و یا چند پورت شناخته شده استفاده میشود. در این حالت، وقتی ترافیک زیادی به سمت سرور میرسد، از نظر فیلترچی مشکوک به نظر نمیرسد.

۲. هدر های پراکسی به جای معرفی xray ، به صورت نرم افزار های شناخته شده مثل nginx معرفی میشوند تا فیلترچی و ربات‌ها از روی اطلاعات هدر نتوانند ماهیت سرور را تشخیص دهند.

۳. با توجه به خاصیت ضد کاوش فعال (Anti Active Probing) وقتی تقاضاهای متعددی برای تشخیص نوع فعالیت سرور ارسال میشود، فالبک با تشخیص آنها، جوابی شبیه سرور معمولی وب ارسال میکند تا مشکوک به نظر نرسد.

۴. با ترکیب فالبک و نرم افزار های دیگر پراکسی وب مانند nginx و HAproxy میتوان قابلیت های جذاب دیگری اضافه کرد که باعث گمراه شدن تست های دستی میشود. به عنوان مثال با ارسال همه درخواست های ناشناس به nginx میتوان مانند یک وبسایت معمولی و یا سرور api به درخواست جواب داد.

## محدودیت ها
۱. فالبک را فقط میتوان روی سرویس های VLESS و Trojan تنظیم کرد. مدل انتقال (transmission) سرویس حتما باید TCP باشد و حتما TLS فعال و گواهی ها به درستی تنظیم شده باشد.

۲. بدون استفاده از نرم افزار های کمکی، برای تعریف سرویس جدید در پشت فالبک، فقط میتوانید از مدل های انتقال H2، HTTP و WebSocket استفاده کنید.

۳. سرویس های پشت فالبک حتما باید بدون TLS باشند.

## مدل های ترکیبی استفاده از فالبک
با ترکیب فالبک و نرم افزارهای دیگر میتوانید از خاصیت ها و پروتکل های بیشتری استفاده کنید
### فالبک پشت پراکسی
در این حالت جوابگوی اصلی روی پورت سرور، نرم افزار پراکسی است و بر اساس درخواست کاربر به سمت فالبک و یا سرویس های دیگر هدایت میشود. مزیت این حالت استفاده از امکانات بیشتر نرم افزار پراکسی است.

![](../proxy-fallback.png)

### پراکسی پشت فالبک
برای استفاده از خاصیت های ضد تشخیص فعال پرقدرت فالبک این روش میتواند بهترین اثر را داشته باشد. در این حالت جوابگوی اصلی درخواست کاربر، سرویس فالبک است و براساس تنظیمات مشخص شده، ترافیک را به سرویس های دیگر و یا نرم افزار پراکسی هدایت میکند.

![](../fallback-proxy.png)

File renamed without changes.
Binary file added content/fa/docs/security/iptables-portforward.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/fa/docs/security/local-proxy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/fa/docs/security/proxy-fallback.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions content/fa/docs/security/reverse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "تانل معکوس"
weight: 5
description: >
تانل از سرور خارج به سرور داخلی با روش تانل معکوس (reverse)
---

در حال آماده سازی...
Binary file added content/fa/docs/security/xray-chain.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c1f0f49

Please sign in to comment.