VPN یا Virtual Private Network یکی از ابزارهای است که می تواند به امنیت، حریم شخصی و ناشناسی شما در اینترنت کمک کند در صورتی که موارد زیر را در نظر بگیرید:
نکات مربوط به سرور لینوکس:
نکته 1 .حتما پورت ssh سرور را عوض کنید
با nano یا vi
sudo nano /etc/ssh/sshd_config
تغییر پورت 22 به پورت دلخواه
در ابونتو سرور
service ssh restart
در centos
systemctl restart sshd
اگر بخواهید مجدد وصل بشید:
ssh root@ip -p portj
نکته 2. حتما پسورد پیچیده ای برای سرورتان در نظر بگیرید
passwd root or anyuser
نکته 3. حتما سرورتان را آپدیت نگه دارید
yum update -y
اگر yum update && yum upgrade -y بزنید پکیج های قدیمی نیز پاک خواهد شد.
apt update && apt upgrade -y
نکته 4. فایروال سرور را کانفیگ ( جهت جلوگیری شناسایی وی پی ان سرور و حملات) و همیشه روشن نگه دارید
Iptables
Firewalld
Ufw
# Flush existing rules and set the default policies to DROP
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Allow incoming connections related to established outbound connections
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# Allow SSH traffic from a trusted IP (replace 192.168.1.100 with your IP)
iptables -A INPUT -p tcp –dport 22 -s 192.168.1.100 -j ACCEPT
# Log and block port scanning attempts
iptables -N LOG_AND_DROP
iptables -A INPUT -p tcp –tcp-flags SYN,ACK SYN,ACK -j LOG_AND_DROP
iptables -A LOG_AND_DROP -m limit –limit 1/s -j LOG –log-prefix “Port Scanning: ” –log-level 4
iptables -A LOG_AND_DROP -j DROP
# Log and block excessive ICMP (ping) requests
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s -j LOG –log-prefix “ICMP Flood: ” –log-level 4
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
# Log and block excessive UDP packets (DDoS protection)
iptables -A INPUT -p udp -m limit –limit 10/s -j LOG –log-prefix “UDP Flood: ” –log-level 4
iptables -A INPUT -p udp -j DROP
# Log and block all other incoming traffic
iptables -A INPUT -j LOG –log-prefix “Blocked: ” –log-level 4
iptables -A INPUT -j DROP
ufw
# Reset UFW to default settings
sudo ufw –force reset
# Set default policies to DROP
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow incoming SSH traffic from a trusted IP (replace 192.168.1.100 with your IP)
sudo ufw allow from 192.168.1.100 to any port 22 proto tcp
# Create a custom chain to log and block port scanning attempts
sudo ufw route allow in proto tcp from any to any port 1:65535 log prefix “[UFW BLOCK] Port Scanning: ” limit rate 1/minute
sudo ufw route deny in proto tcp from any to any port 1:65535
# Create a custom chain to log and block excessive ICMP (ping) requests
sudo ufw route allow in proto icmp from any log prefix “[UFW BLOCK] ICMP Flood: ” limit rate 1/second
sudo ufw route deny in proto icmp from any
# Create a custom chain to log and block excessive UDP packets (DDoS protection)
sudo ufw route allow in proto udp from any log prefix “[UFW BLOCK] UDP Flood: ” limit rate 10/second
sudo ufw route deny in proto udp from any
# Enable UFW
sudo ufw enable
Explanation:
• The first command (sudo ufw –force reset) resets UFW to default settings to ensure a clean configuration.
• The next two commands set the default policies to DROP for incoming traffic and ALLOW for outgoing traffic.
• SSH traffic is allowed from a trusted IP address (replace 192.168.1.100 with your IP).
• Custom UFW chains are created to log and block port scanning attempts, excessive ICMP requests, and excessive UDP packets.
Keep in mind that UFW rules are processed in order, so make sure to place the more specific rules (e.g., allow SSH) before the generic log and block rules.
Remember that UFW is just a front-end to iptables and does not provide all iptables features. For more complex firewall rules, you may need to work directly with iptables or use other firewall management tools. Always exercise caution when modifying firewall rules to avoid unintended consequences.
نکته 5. جهت جلوگیری از حمله بروت فورس ترجیحا از key authentication استفاده کنید همچنین می توانید از fail2ban استفاده کنید.
https://www.puttygen.com
sudo nano /etc/ssh/sshd_config
PasswordAuthentication yes
PasswordAuthentication no
sudo systemctl restart sshd
https://github.com/fail2ban/fail2ban
نکات خود VPN
نکته 6. از vpn protocol استفاده کنید که قابلیت kill switch داشته باشد مثل openvpn
نکته 7. حتما از رمزنگاری قوی AES256 در openvpn خود استفاده کنید.
# Port and Protocol
port 1194
proto udp
# Server Mode
mode server
tls-server
# Certificates and Keys
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh.pem
# Cipher Settings
cipher AES-256-CBC
auth SHA256
# Network Configuration
server 10.8.0.0 255.255.255.0
push “redirect-gateway def1 bypass-dhcp”
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”
# Security
user nobody
group nobody
persist-key
persist-tun
# Compression
comp-lzo
# Verbosity
verb 3
# Enable TLS-Auth for additional security (optional)
;tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
# VPN Connection Keepalive
keepalive 10 120
# Additional Hardening Options
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
نکته 8. جهت جلوگیری از ipleak و ارور 403 گوگل ipv6 را غیر فعال کنید.
nano /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
sudo sysctl -p
نکته 9. DOH را روی سرورتان جهت جلوگیری از DNS leak فعال کنید
sudo yum install dnscrypt-proxy
sudo apt update
sudo apt install dnscrypt-proxy
nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
مقادیر زیر جایگزین شود
listen_addresses = [‘127.0.0.1:53’] server_names = [‘cloudflare’]
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
nano /etc/resolv.conf
nameserver 127.0.0.1
برای تست که درست کار میکند:
dig @127.0.0.1 google.com
نکته 10. حتما پسورد پیچیده برای پروفایل کلاینت وی پی ان در نظر بگیرید.
سمت کلاینت
نکته 11. حتما webrtc را روی مرورگر غیر فعال کنید تا ip اصلی شما ایران افشا نشود.
نکته 12. از تنظیمات حریم شخصی سیستم عاملتان حتما location را خاموش کنید.
نکته 13. از تنظیمات حریم شخصی سیستم عاملتان شناسایی زبان را خاموش کنید.
خرید وی پی ان
نکته 14. اگر vpn تجاری خرید کردید مثل HMA nORD و … حتما 2FA و MFA را رویشان فعال کنید.
نکته 15. از هر شخص یا هر مغازه یا هر آشنایی وی پی ان خرید نکنید!
ترجیحا از جایی که با کریپتو می توان خرید کرد خرید کنید.
نکات امنیتی در مورد V2ray
نکته 16. استفاده از اسکریپت های آماده، پنل های مدیریت آماده بدون ارزیابی امنیتی کار اشتباهی است و خود آن می تواند یک بکدور(در پشتی روی سرور شما باشد). همیشه همیشه همیشه از منابع معتبر هسته v2ray را نصب کنید و همچنین برنامه کلاینت آن را برای سیستم عاملتان دانلود و نصب کنید.
نکته 17. می توان در v2ray outbound را به یک سرور دیگر فرستاد و امکان شنود و دستکاری وجود داشته باشد.
نکته 18. حتما برای رمزنگاری از AES256 و احراز هویت از HMAC-SHA256 استفاده کنید
نکته 19. قبل از کانفیگ سرور یا عوض کردن هر قابلیت یا فعال غیر فعال کردن در موردش مطالعه کنید این ممکنه باعث مشکل امنیتی برای سرور شما بشه
نکته 20. حتما از آپدیت بودن هسته v2ray و کلاینت که روی گوشی یا سیستمتان دارید مطمن بشوید تا از بروز مشکلات امنیتی که امنیت حریم شخصی و ناشناسی شما را بخطر می اندازد جلوگیری کنید.
نکته اضافه شده:
وارپ یک قابلیت cloudflare برای رمزنگاری ترافیک می باشد که شما می توانید از آن در outbound x-ui نیز جهت امنیت بالاتر استفاده کنید
لینک زیر آموزش نحوه استفاده از آن می باشد:
https://github.com/chika0801/Xray-examples/blob/main/wireguard.md
نکته 21. هنگام ساختن inbound هر کدام از تنظیمات به چه معنا هستند.
Remark : صرفا اسم
protocol ها vmess vless trojan همگی دارای قابلیت رمزنگاری احراز هویت می باشند
vless و trojan الگوریتم های رمزنگاری پیچده تری نسبت به vmess دارند.
هر سه حریم شخصی شما را حفظ خواهند کرد.
این سه نمی توانند موجب ناشناسی شما شوند برای ناشناسی باید از پیچیدگی مثل proxy chains استفاده شود تا قابلیت ردگیری سخت شود!
Disable Insecure Encryption حتما این را فعال کنید تا الگوریتمهای رمزنگاری که پیچدگی لازم را ندارند غیر فعال کند برای اتصال شما به امنیت و حریم شخصی شما کمک می کند.
Transmission به معنای بستر انتقال می باشد و هیچ ربطی به امنیت شما ندارد!
TCP یک بستر انتقال قابل اعتماد را فراهم می کند و با رمزنگاری TLS تطابق بهتری را دارد
KCP یا kernel control protocol بر اساس UDP است و به مراتب سرعت بهتری دارد مثل TCP kcp هم میتواند با TLS رمز شود!
websocket: یک پروتکل که برای شما ارتباط دو طرفه با یک کانکشن TCP برقرار می کند برای امن کردن آن حتما باید از TLS استفاده کنید.
HTTP2: یک ورژن ارتقا یافته http هست و می تواند با tls امن شود.
QUIC یا همان Quick UDP Internet Connections یک روش انتقال داده که توسط گوگل پیاده سازی شده موقعی که یوتیوب می بینید با ای روش انتقال داده صورت می پذیرد امنیت بسیار خوبی را دارد و در برابر شنود امن است.
Grpc یک فریمورک فراخوانی داده از راه دور است و مثل بقیه امکان امن شدن با TLS را دارد.
HTTP Camouflage یک قابلیت برای مبهم سازی ترافیک است و توانایی تغییر رفتار و شبیه شدن به یک مرورگر را با استفاده از قابلیت ها زیر دارد در واقع برای عدم شناسایی ترافیک از این مورد استفاده می شود.
User agent header
اضافه کردن header
شبیه سازی مروگر
هر چقدر پیچدگی را بالاتر برده شود خوب بالطب شناسایی ترافیک پیچیده تر خواهد شد ولی این مورد صد در صد نیست!
TLS Transport Layer Security تنظیمات رمزنگاری می باشد که باید حتما انجام شود
قابلیت های کاربردی
sni
Server Name Indication
یک قابلیت است که اگر فعال کنید با توجه به Certificate که دارید ip resolve می شود بزارید مثال خیلی ساده بزنم شما با sni درخواست میفرستید به google.com ولی چون sni فعال certificate که با tls گرفتیم مشصه issued to soheilsec.com پس تو هدر پکت google.com ولی سایت من را باز خواهد کرد.
UTLs در واقع شبیه ساز که ترافیک وب معمولی به نظر برسه
allow insecure زمانی فعال می شود که certificate self signed گرفته باشید یا روی ای پی https فعال شده باشد که توصیه نمیشود.
Reject Unknown SNI این کمک را می کند که کسی که sni ندارد نتواند دسترسی یا شناسایی سرور داشته باشد.
sniffing یک قابلیت کاربردی x-ui میباشد که می تواند ترافیک ها را بر اساس protocol ها که در تصویر مشخص شده تفکیک کند و شما بتواند outbound مشخص برای هر کدام را داشته باشید.
نکات اضافی:
میشه اگر openvpn سرور داریم ترافیک از TOR بگذرونیم
اول باید TOR را روی سرور ابونتو یا centos خود نصب کنید
sudo apt update
sudo apt install tor
sudo systemctl status tor
sudo yum install tor
sudo systemctl start tor
sudo systemctl enable tor
باید در کانفیگ فایل tor به عنوان local proxy کانفیگ کنید
nano /etc/tor/torrc
SocksPort 9050
و برای اینکه NAT بشه روی TOR باید از iptables استفاده کرد:
# Enable IP forwarding
echo “net.ipv4.ip_forward = 1” | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl -p /etc/sysctl.d/99-ip-forward.conf
# Set up NAT using iptables
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o tun0 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
همچنین بعدش اگر openvpn دارید باید تو کانفیگ سرورش route اضافه بشه:
push “route 0.0.0.0 0.0.0.0 10.0.0.1” # Replace with the IP address of the Tor SOCKS proxy
sudo systemctl restart tor
sudo systemctl restart openvpn