Tor onion service மூலம் SSH அணுகுவது எப்படி?
VPS-ல் எந்தவொரு inbound port-ஐயும் திறக்காமல் SSH இணைப்பை ஏற்படுத்துவது எப்படி என்பதை அறிக. v3 client authorization மற்றும் lockout ஏற்படாமல் தடுக்கும் முறைகளை இதில் காணலாம்.
Tor onion service வழியாக SSH பயன்படுத்துவதால் ஏற்படும் மாற்றங்கள்
Tor onion service வழியாக SSH-ஐப் பயன்படுத்துவது, எந்தவொரு port-லும் உள்வரும் இணைப்புகளை ஏற்காத ஒரு VPS-ஐ நிர்வகிக்க உங்களை அனுமதிக்கிறது. இந்த server Tor network-க்கு வெளியே அழைப்பை ஏற்படுத்தி, அந்த இணைப்பைத் தொடர்ந்து திறந்த நிலையில் வைத்திருக்கும். உங்கள் SSH session அந்த இணைப்பின் வழியாகவே வருவதால், public IP address-ல் எந்தவொரு சேவையும் listening நிலையில் இருக்க வேண்டிய அவசியமில்லை.
இதன் விளைவு log-களில் உடனடியாகத் தெரியும். Public SSH port கொண்ட ஒரு server, தினமும் ஆயிரக்கணக்கான தோல்வியுற்ற கடவுச்சொல் முயற்சிகளை scanner-களிடமிருந்து பெறும். sshd-ஐ ஒரு onion service-க்கு பின்னால் நகர்த்தி, firewall-ல் உள்வரும் traffic-ஐத் தடுத்தால், /var/log/auth.log-ல் நீங்கள் தொடங்கிய session-கள் மட்டுமே பதிவாகும்.
இதன் பின்னடைவு என்னவென்றால், ஒவ்வொரு admin session-ன் பாதையிலும் tor இருக்கும். இது ஒரு userspace daemon ஆகும்; ஒவ்வொரு முறை reboot செய்த பிறகும், நீங்கள் login செய்வதற்கு முன்பாக இது தொடங்கி, bootstrap ஆக வேண்டும். port-ஐ மூடுவதற்கு முன்பே இதைக் கவனத்தில் கொள்ளுங்கள், ஏனெனில் இதில் ஏற்படும் தோல்வி, உங்களால் நேரில் அணுக முடியாத ஒரு machine-க்கான இணைப்பை இழக்கச் செய்துவிடும்.
எந்த மாற்றத்தையும் செய்வதற்கு முன் மீட்பு வழியை உறுதி செய்தல்
SSH-ஐப் பயன்படுத்தாத ஒரு மீட்பு வழி (recovery path) தயாராக இருக்கும் வரை எதையும் தொடங்க வேண்டாம்.
இப்போதே உங்கள் service provider-ன் console-ஐத் திறக்கவும். Control panel-ல் உள்ள VNC அல்லது serial console-ஐப் பயன்படுத்தி login செய்யவும். root password தெரியவில்லை என்றால், முதலில் panel மூலம் root password-ஐ reset செய்யவும் மற்றும் அது வேலை செய்கிறதா என்பதை உறுதிப்படுத்தவும். நீங்கள் இதுவரை சோதித்துப் பார்க்காத console ஒரு மீட்பு வழி ஆகாது.
கீழே கொடுக்கப்பட்டுள்ள வரிசை முக்கியமானது. ஒவ்வொரு படியும் சரியாகச் செயல்படுவதை உறுதி செய்த பின்னரே அடுத்த படிக்குச் செல்ல வேண்டும். onion route வேலை செய்யும் வரை port 22 திறந்திருக்க வேண்டும்.
- tor-ஐ நிறுவி, அது bootstraps ஆகிறதா என்பதை உறுதிப்படுத்தவும்.
- onion service-ஐ வரையறுத்து, அதன் முகவரியைப் படிக்கவும்.
- port 22 திறந்திருக்கும்போதே onion வழியாக இணைப்பை ஏற்படுத்தவும்.
- client authorisation-ஐச் சேர்த்து, மீண்டும் இணைக்கவும்.
sshd-ஐ loopback-ல் பிணைத்து (bind), port 22-ஐ மூடவும்.- Reboot செய்து, மீண்டும் onion வழியாக இணைக்கவும்.
இந்த முழு செயல்முறையின் போதும் உங்கள் தற்போதைய SSH session-ஐத் திறந்தே வைத்திருக்கவும். ஏற்கனவே உள்ள ஒரு session, புதிய இணைப்பைத் தடுக்கும் firewall மாற்றத்திற்குப் பிறகும் தொடர்ந்து செயல்படும். எனவே, இதுவே உங்கள் முதல் மீட்பு வழியாகும்.
server-ல் tor-ஐ நிறுவுதல்
Ubuntu-வின் சொந்த repository-ல் tor கிடைக்கிறது, ஆனால் அந்த build பெரும்பாலும் பழைய பதிப்பாகவே இருக்கும். Tor Project-ன் repository-ல் அவர்களின் ஆவணங்களில் குறிப்பிடப்பட்டுள்ள தற்போதைய பதிப்பு உள்ளது. அவர்களின் apt repository guide-ல் உள்ள கட்டளைகளைப் பயன்படுத்தி அதைச் சேர்க்கவும்.
sudo apt update
sudo apt install -y apt-transport-https wget gpg
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null/etc/apt/sources.list.d/tor.sources-ஐ எழுதவும். Suites உங்கள் release codename-ஐ எடுத்துக்கொள்ளும், அதை lsb_release -cs அச்சிடும் (Ubuntu 24.04-ல் noble).
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: noble
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpgsudo apt update
sudo apt install -y tor deb.torproject.org-keyring
sudo journalctl -u tor@default -n 20 --no-pagerLog-ன் இறுதியில் Bootstrapped 100% (done) இருக்க வேண்டும். அதற்கு கீழே சிக்கிக்கொண்டால், tor-ஆல் network-ஐ அடைய முடியவில்லை என்று அர்த்தம். இது பெரும்பாலும் outbound firewall விதி அல்லது தவறான clock அமைப்பால் ஏற்படுகிறது.
Unit பெயர் ஒரு பொறி. எல்லாம் சரியாக இருந்தாலும் systemctl status tor, Active: active (exited) என்றுதான் காட்டும். ஏனெனில் Debian மற்றும் Ubuntu-வில் tor ஒரு multi-instance master unit-ஆக தொகுக்கப்பட்டுள்ளது; அதன் ஒரே வேலை உண்மையான instance-ஐ இயக்குவது மட்டுமே. Daemon ஆனது tor@default.service என்ற பெயரில் இயங்குகிறது. status மற்றும் journalctl-க்கு அந்தப் பெயரைப் பயன்படுத்தவும். tor-ஐ start, stop மற்றும் reload செய்வது அந்த instance-ஐ சென்றடையும், எனவே sudo systemctl reload tor நீங்கள் எதிர்பார்ப்பது போலவே செயல்படும்.
Port 22-க்கான onion service-ஐ வரையறுத்தல்
/etc/tor/torrc-ல் இரண்டு வரிகளைச் சேர்க்கவும்.
HiddenServiceDir /var/lib/tor/ssh/
HiddenServicePort 22 127.0.0.1:22இரண்டாவது வரி, onion முகவரியில் உள்ள virtual port 22-ஐ ஏற்றுக்கொண்டு, அந்த server-ல் உள்ள 127.0.0.1:22-க்கு இணைப்பை ஏற்படுத்த Tor-க்கு அறிவுறுத்துகிறது. Tor ஆனது sshd-ஐ loopback வழியாக அணுகுகிறது; இதனால்தான் sshd-ஐ பொது முகவரியில் (public address) இயங்குவதை நிறுத்த முடியும். அந்த இரண்டாவது வரியை 127.0.0.1:80-ல் உள்ள ஒரு web server-க்கு மாற்றினால், அதே இரண்டு கட்டளைகளும் onion முகவரியில் ஒரு தளத்தை வெளியிடும், இது Tor நிறுவப்பட்ட பிறகு இயக்கக்கூடிய பயனுள்ள இரண்டாவது சேவையாகும்.
sudo systemctl reload tor
sudo cat /var/lib/tor/ssh/hostnameஇது 56 base32 எழுத்துக்களையும், அதைத் தொடர்ந்து .onion-யையும் அச்சிடும். அந்த எழுத்துக்கள் சேவையின் public key-ன் குறியீட்டு வடிவமாகும். இதில் certificate authority அல்லது பெயர் பதிவு (name registration) எதுவும் இல்லை.
/var/lib/tor/ssh/-ஐ Tor-யே உருவாக்க அனுமதிக்கவும். அதை நீங்களாகவே தவறான உரிமையாளருடன் (owner) உருவாக்கினாலோ அல்லது 0700-ஐ விடத் தளர்வான mode-ல் வைத்தாலோ, Tor அதைப் பயன்படுத்த மறுத்துவிடும்; மேலும் அந்த directory அதிக அனுமதிகளைக் (permissive) கொண்டிருப்பதாக journal-ல் பதிவாகும். உள்ளே இருக்கும் கோப்புகளே சேவையின் அடையாளமாகும்: hs_ed25519_secret_key என்பதுதான் அந்த முகவரி. அந்த directory-ஐ mode 600-ல் backup எடுத்து, அதை server-க்கு வெளியே பாதுகாப்பாக வைக்கவும். ஏனெனில் அதை இழப்பது என்பது புதிய முகவரியைப் பெறுவதற்கும், ஒவ்வொரு client-லும் configuration-ஐ மாற்றுவதற்கும் வழிவகுக்கும்.
உங்கள் workstation-லிருந்து இணைத்தல்
உங்கள் workstation-ல் ஒரு tor client தேவைப்படுகிறது, இதற்கு எந்தவிதமான configuration-ம் தேவையில்லை. Debian அல்லது Ubuntu-வில் இது sudo apt install -y tor netcat-openbsd ஆகும். Tor அதன் பிறகு 127.0.0.1:9050-ல் SOCKS5 proxy-ஆக இயங்கும். SOCKS என்பது ஒரு பொதுவான proxy protocol ஆகும். பதிப்பு 5-ல் IP முகவரிக்கு பதிலாக hostname-ஐயே பயன்படுத்த முடியும், இதுவே இங்கு மிக முக்கியமான அம்சமாகும்.
OpenSSH-ல் சொந்தமாக SOCKS client கிடையாது, எனவே ஒரு helper program மூலம் இணைப்பை ஏற்படுத்த வேண்டும். இதை ~/.ssh/config-ல் சேர்க்கவும்.
Host myvps
HostName xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion
User admin
ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:9050 %h %p
ServerAliveInterval 30-X 5 என்பது SOCKS5-ஐத் தேர்ந்தெடுக்கிறது மற்றும் -x 127.0.0.1:9050 உள்ளூர் tor-ஐச் சுட்டிக்காட்டுகிறது. %h என்பது onion பெயரை tor-க்கு ஒரு பெயராக வழங்குகிறது, எனவே tor அதை நெட்வொர்க்கிற்குள் resolve செய்கிறது. இது OpenBSD netcat-ஆகவே இருக்க வேண்டும். GNU netcat-ல் -X வசதி இல்லை, அது nc: invalid option -- 'X' பிழையுடன் நின்றுவிடும்.
ssh myvpsமுதல் இணைப்பு மெதுவாக இருக்கும், ஏனெனில் மற்ற செயல்பாடுகளுக்கு முன்பாக tor ஒரு circuit-ஐ உருவாக்குகிறது. வழக்கம்போல host key fingerprint-ஐ ஏற்கவும். இதிலிருந்து வழக்கமான SSH key கையாளுதல் முறையே மாற்றமின்றிப் பொருந்தும். போக்குவரத்து முறை மாறியுள்ளது, ஆனால் authentication மாறவில்லை.
ஒருமுறை மட்டும் பயன்படுத்த வேண்டுமெனில், config entry-ஐத் தவிர்க்கலாம்: torsocks ssh admin@xxxxx.onion அதே வேலையைச் செய்யும்.
v3 client authorisation-ஐச் சேர்த்தல்
தற்போதைய நிலையில், முகவரியைத் தெரிந்துகொள்பவர் எவரும் உங்கள் SSH banner-ஐ அணுகி, ஊகிக்கத் தொடங்க முடியும். Onion முகவரிகளை directory system-லிருந்து கண்டறிய முடியாது, எனவே முகவரியே ஒரு ரகசியமாகச் செயல்படுகிறது. ஆனால், shell history மற்றும் git repository-ல் பதிவேற்றப்படும் config files போன்றவற்றின் மூலம் இது கசிய வாய்ப்புள்ளது. Client authorisation இந்த இடைவெளியை அடைக்கிறது. சேவை தனது descriptor-ஐ client key மூலம் குறியாக்கம் செய்து வெளியிடுகிறது; எனவே முகவரி தெரிந்தும் key இல்லாத ஒருவரால் சேவையைக் கண்டறிய முடியாது.
Client-ல் ஒரு x25519 key pair-ஐ உருவாக்கவும். இது Tor Project-ன் client authorisation guide-லிருந்து பெறப்பட்ட pipeline ஆகும், இதில் ஒரு மாற்றம் செய்யப்பட்டுள்ளது.
openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem
grep -v " PRIVATE KEY" /tmp/k1.prv.pem | base64 -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key
openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64 -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.keyமேற்கண்ட வரிகளின் வெளியிடப்பட்ட பதிப்பு base64pem -d-ஐப் பயன்படுத்துகிறது, இது சாதாரண Ubuntu நிறுவலில் இருக்காது. இதனால் கட்டளை base64pem: command not found பிழையுடன் நின்றுவிடும். GNU base64 -d அதே PEM body-ஐ decode செய்யும், எனவே அதற்குப் பதிலாக அதைப் பயன்படுத்தவும்.
Server-ல், public key-ஐ நிறுவவும்.
sudo install -d -m 700 -o debian-tor -g debian-tor /var/lib/tor/ssh/authorized_clients
echo "descriptor:x25519:PASTE_PUBLIC_KEY_HERE" | sudo tee /var/lib/tor/ssh/authorized_clients/laptop.auth >/dev/null
sudo chown debian-tor:debian-tor /var/lib/tor/ssh/authorized_clients/laptop.auth
sudo systemctl reload tor.auth-ல் முடியும் கோப்புகள் மட்டுமே வாசிக்கப்படும். இதை laptop.auth.txt எனச் சேமித்தால், tor கோப்பைப் புறக்கணித்துவிடும், எந்தப் பிழையும் காட்டாது, சேவை முகவரி தெரிந்த அனைவருக்கும் திறந்தே இருக்கும்.
Client-ல், private key-ஐ நிறுவவும். Ubuntu-வில் tor daemon debian-tor user-ஆக இயங்குகிறது, அதனால் உங்கள் home directory-ல் உள்ள கோப்புகளை அதனால் வாசிக்க முடியாது. எனவே, அந்த user அணுகக்கூடிய இடத்தில் directory-ஐ வைக்கவும்.
sudo install -d -m 700 -o debian-tor -g debian-tor /var/lib/tor/onion_auth
echo "ADDRESS_WITHOUT_DOT_ONION:descriptor:x25519:PASTE_PRIVATE_KEY_HERE" | sudo tee /var/lib/tor/onion_auth/myvps.auth_private >/dev/null
sudo chown debian-tor:debian-tor /var/lib/tor/onion_auth/myvps.auth_private
sudo chmod 600 /var/lib/tor/onion_auth/myvps.auth_privateClient-ன் /etc/tor/torrc-ல் ClientOnionAuthDir /var/lib/tor/onion_auth-ஐச் சேர்த்து tor-ஐ reload செய்யவும். நீங்கள் tor-ஐ உங்கள் சொந்த user-ஆக இயக்குகிறீர்கள் என்றால் (உதாரணமாக macOS-ல் Homebrew build), ClientOnionAuthDir-ஐ 0700 mode-ல் ~/.tor/onion_auth-க்குச் சுட்டிக்காட்டவும்.
அந்தக் கோப்பிற்குள் இருக்கும் முகவரி .onion suffix இல்லாமல் இருக்கும் 56 எழுத்துக்கள் ஆகும். முடித்ததும் /tmp/k1.prv.pem மற்றும் /tmp/k1.prv.key-ஐ நீக்கிவிடவும்.
இப்போது இரு திசைகளிலும் சோதிக்கவும். ssh myvps இன்னும் இணைக்கப்பட வேண்டும். Key இல்லாத ஒரு machine-லிருந்து அதே முகவரியை அணுகினால் அது தோல்வியடைய வேண்டும். அந்தத் தோல்வியே authorisation செயலில் இருப்பதற்கான சான்றாகும்.
Port 22-ஐ இந்த வரிசையில் மூடவும்
முதலில் ஒரு பாதுகாப்பு ஏற்பாட்டைச் செய்யவும். நீங்கள் தவறுதலாக வெளியேற்றப்பட்டால், பதினைந்து நிமிடங்களுக்குப் பிறகு கீழே உள்ள இரண்டு மாற்றங்களையும் இந்த ஒரு கட்டளை ரத்து செய்துவிடும்.
sudo systemd-run --on-active=15m --unit=ssh-rescue \
/bin/sh -c 'ufw allow 22/tcp; rm -f /etc/systemd/system/ssh.socket.d/override.conf; systemctl daemon-reload; systemctl restart ssh.socket'Onion route சரியாகச் செயல்படுவதை உறுதி செய்த பிறகு, sudo systemctl stop ssh-rescue.timer மூலம் அதை ரத்து செய்யவும்.
அடுத்து, பொது முகவரியில் (public address) sshd கேட்பதை (listening) நிறுத்தவும். Ubuntu 24.04, socket unit மூலம் ssh-ஐ இயக்குகிறது, எனவே sshd_config-ல் உள்ள ListenAddress புறக்கணிக்கப்படும்: sshd அல்ல, ssh.socket தான் listening socket-ஐக் கட்டுப்படுத்துகிறது. நீங்கள் எந்த நிலையில் இருக்கிறீர்கள் என்பதைச் சரிபார்க்கவும்.
systemctl is-enabled ssh.socketஅது enabled என்று காட்டினால், sudo systemctl edit ssh.socket-ஐ இயக்கி இதைச் சேர்க்கவும்.
[Socket]
ListenStream=
ListenStream=127.0.0.1:22வெற்று ListenStream=, தொகுக்கப்பட்ட unit-லிருந்து பெறப்பட்ட மதிப்பை நீக்குகிறது. அந்த வரியை விட்டுவிட்டால், நீங்கள் ஏற்கனவே உள்ள பொது முகவரியுடன் சேர்த்து இரண்டாவது listener-ஐச் சேர்ப்பீர்கள்; இதுவே இந்தச் செயல்பாடு தோல்வியடைவதற்கான பொதுவான காரணமாகும், ஆனால் அது வெளிப்படையாகத் தெரியாது.
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
ss -tlnp | grep ':22'ss என்பது 127.0.0.1:22-ஐக் காட்ட வேண்டும், 0.0.0.0:22-ல் எதுவும் இருக்கக்கூடாது. ssh.socket முடக்கப்பட்டிருந்தால், /etc/ssh/sshd_config.d/10-onion.conf-ல் ListenAddress 127.0.0.1-ஐச் சேர்த்து, sudo systemctl restart ssh-ஐ இயக்கி, அதே ss வரியைக் கொண்டு சரிபார்க்கவும். அந்த வெளியீடுதான் இரண்டு நிலைகளிலும் ஆதாரமாகும்.
அடுத்து firewall, இது சாதாரண VPS-ல் ufw விதி மேலாண்மை சார்ந்தது. முதலில் sudo ufw status numbered-ஐ இயக்கி, அது பட்டியலிடும் SSH விதிகளில் எதை வேண்டுமானாலும் நீக்கவும்.
sudo ufw status numbered
sudo ufw delete allow OpenSSH
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw status verboseவெளியேறும் traffic-ஐ (outgoing traffic) அனுமதிக்கவும். Tor ஆனது 443 மற்றும் 9001 போன்ற ports மூலம் relays-உடன் இணைகிறது, எனவே outbound default-deny கொள்கை Tor bootstrapping-ஐ நிறுத்திவிடும், அதே நேரத்தில் நீங்கள் உள்ளே நுழைய இருந்த ஒரே வழியையும் அது நீக்கிவிடும். பெரும்பாலான சேவை வழங்குநர்கள் control panel-ல் தனிப்பட்ட network firewall-ஐ இயக்குகிறார்கள். அங்கேயும் port 22-ஐ மூடவும், இல்லையெனில் ufw என்ன காட்டினாலும் அந்த port அணுகக்கூடியதாகவே இருக்கும்.
இந்த server-ல் Docker இயங்கினால், பணியை முடிப்பதற்கு முன் அதன் published ports-ஐச் சரிபார்க்கவும். Docker அதன் சொந்த விதிகளை அதே tables-ல் எழுதுகிறது மற்றும் ufw-ஐத் தாண்டி container ports-ஐ வெளியிடுகிறது, எனவே ufw deny கொள்கை முழுமையான பாதுகாப்பைத் தராது.
நம்பகத்தன்மைக்கு முன் Reboot செய்யவும்
systemctl is-enabled tor@default
sudo rebootமுதல் கட்டளை service enabled நிலையில் இருப்பதாகக் காட்டவில்லை என்றால், நீங்கள் reboot செய்வதற்கு முன் sudo systemctl enable tor@default கட்டளையை இயக்கவும். இரண்டு நிமிடங்கள் காத்திருந்து, பின் ssh myvps கட்டளையை இயக்கவும். கணினி இயங்கிய பிறகு Tor bootstrap ஆக வேண்டும், எனவே கணினி தயாரான சிறிது நேரத்திற்குப் பிறகே onion address பதிலளிக்கத் தொடங்கும்.
ஒருவேளை அது மீண்டும் இயங்கவில்லை என்றால், console-ஐத் திறந்து sudo journalctl -u tor@default -b-ஐப் படிக்கவும். torrc syntax பிழை அல்லது directory அனுமதிச் சிக்கல் இருந்தால் அது அங்கு காட்டப்படும். மாற்றங்களைச் சேமிக்கும் முன் torrc திருத்தங்களைச் சரிபார்க்கவும்.
sudo -u debian-tor tor --verify-configWireGuard tunnel-உடன் ஒப்பிடும்போது இதன் செலவு என்ன
சொந்த VPS-ல் இயங்கும் WireGuard VPN-உடன் ஒப்பிடும்போது, onion service மெதுவானது மற்றும் கணிக்க முடியாதது. இதைத் தேர்ந்தெடுக்கும் முன், இதிலுள்ள சாதக பாதகங்களைச் சரியாகப் புரிந்துகொள்ளுங்கள்.
Latency (தாமதம்). ஒரு client circuit மூன்று relays-களைக் கொண்டது, service பக்கத்தில் மேலும் மூன்று relays இணையும். எனவே, உங்கள் keystrokes உலகம் முழுவதும் சீரற்ற முறையில் தேர்ந்தெடுக்கப்பட்ட சுமார் ஆறு இயந்திரங்கள் வழியாகச் செல்லும். Interactive typing-ல் குறிப்பிடத்தக்க தாமதம் இருக்கும், கோப்புகளை நகலெடுப்பது மெதுவாக இருக்கும். WireGuard ஒரே ஒரு hop-ஐ மட்டுமே சேர்க்கிறது. time ssh myvps 'echo ok' மூலம் உங்கள் சூழலில் இதை அளவிடுங்கள், ஏனெனில் tor உருவாக்கும் circuit-ஐப் பொறுத்து இந்த அளவு மாறுபடும்.
Critical path-ல் உள்ள userspace daemon. WireGuard kernel-ல் இயங்குகிறது, network-உடன் சேர்ந்து இதுவும் தொடங்கும். Tor என்பது ஒரு process; இது தொடங்கி, bootstrap ஆகி, ஒரு guard relay-ஐ அடைந்தால் மட்டுமே வேலை செய்யும். இது தோல்வியுற்றால், நீங்கள் provider console-ஐத்தான் அணுக வேண்டும்.
Clock accuracy (கடிகாரத் துல்லியம்). Onion service descriptors குறிப்பிட்ட கால இடைவெளிகளில் வெளியிடப்படுகின்றன. எனவே, system clock தவறாக இருந்தால், எந்தத் தெளிவான பிழைச் செய்தியும் இன்றி address lookup தோல்வியடையும். timedatectl கட்டளை System clock synchronized: yes என்று காட்ட வேண்டும்.
இதற்குப் பதிலாக உங்களுக்குக் கிடைப்பது, firewall விதி சரியாக உள்ளதா என்பதைச் சார்ந்து இருக்க வேண்டிய அவசியமில்லாத பாதுகாப்பு. இதில் scan செய்ய ports இல்லை, banner-களைப் பெற முடியாது. மேலும், இந்த முகவரியே ஒரு public key என்பதால், SSH தொடங்குவதற்கு முன்பே endpoint தனது அடையாளத்தை உறுதிப்படுத்துகிறது.
நடைமுறை ரீதியாக, இரண்டையும் பயன்படுத்துவதே சிறந்தது. தினசரி பயன்பாட்டிற்கு WireGuard-ஐ வைத்துக்கொள்ளுங்கள், WireGuard configuration-ல் பிழை ஏற்படும்போது பயன்படுத்த onion service-ஐ ஒரு மாற்று வழியாக வைத்துக்கொள்ளுங்கள். இது பொதுவான SSH port-ஐத் திறந்து வைப்பதற்குப் பதிலாக, ஒரே ஒரு UDP port-ஐ மட்டும் திறந்து வைக்க அனுமதிக்கிறது. இவை எதுவுமே sshd-ஐ பலப்படுத்துவதற்கு மாற்றாகாது: key-only authentication மற்றும் non-root login ஆகியவை இப்போதும் அவசியம். ஏனெனில், onion service network பாதையை மட்டுமே பாதுகாக்கிறது, அதற்கு அப்பால் உள்ளவற்றை அல்ல.
தோல்வி நிலைகளும் நீங்கள் காணும் பிழைகளும்
Tor ஒருபோதும் Bootstrapped 0%-ஐக் கடப்பதில்லை. வெளிச்செல்லும் traffic தடுக்கப்பட்டுள்ளது அல்லது clock நேரம் மிக அதிகமாக வேறுபடுகிறது. sudo ufw status verbose மூலம் outgoing policy-ஐச் சரிபார்த்து, பின் timedatectl-ஐ இயக்கவும்.
systemctl status tor, active (exited) என்று கூறுகிறது. இது Debian மற்றும் Ubuntu-வில் இயல்பானது. அதற்குப் பதிலாக tor@default-ஐப் படிக்கவும்.
descriptor-ஐக் கண்டறிய முடியவில்லை. Tor, SOCKS extended error F0-ஐத் தருகிறது, "Onion Service Descriptor Can Not be Found". descriptor இன்னும் வெளியிடப்படவில்லை (reload செய்த பிறகு இதற்குச் சிறிது நேரம் எடுக்கும்) அல்லது server-ல் tor இயங்கவில்லை என்று பொருள்.
F4, "Onion Service Missing Client Authorization". tor பயன்படுத்தக்கூடிய பொருத்தமான .auth_private client-இடம் இல்லை. ClientOnionAuthDir torrc-ல் உள்ளதா, directory-ன் mode 0700 ஆக உள்ளதா, கோப்பின் பெயர் .auth_private-ல் முடிகிறதா, மற்றும் debian-tor-ஆல் அதை வாசிக்க முடிகிறதா என்பதைச் சரிபார்க்கவும்.
F5, "Onion Service Wrong Client Authorization". private key, server-ல் உள்ள .auth கோப்புடன் பொருந்தவில்லை. base32 string-க்குள் இருக்கும் கூடுதல் = அல்லது தேவையற்ற புதிய வரி (newline) இதற்குக் காரணமாகிறது.
nc: invalid option -- 'X'. OpenBSD netcat-க்கு பதிலாக GNU netcat நிறுவப்பட்டுள்ளது. sudo apt install -y netcat-openbsd-ஐ இயக்கவும்.
Could not resolve hostname. ssh சாதாரண DNS-ஐப் பயன்படுத்த முயன்றது, அதற்கு .onion-க்கு பதில் இல்லை, எனவே ProxyCommand இயங்கவில்லை. ~/.ssh/config-ல் உள்ள Host pattern நீங்கள் உள்ளிட்ட பெயருடன் பொருந்தவில்லை.
Permission denied (publickey). tunnel வேலை செய்கிறது, tor-ன் பணி முடிந்தது. இதை சாதாரண permission denied publickey சிக்கல் எனக் கருதி, இதில் tor-ஐத் தவிர்க்கவும்.
FAQ
Onion service-ஐப் பயன்படுத்தினால் எனது VPS-ல் திறந்த நிலையில் ports இருக்காதா?
ஆம், sshd-ஐ 127.0.0.1-ல் பிணைத்து (bind), firewall மூலம் உள்வரும் traffic-ஐத் தடுத்த பிறகு, எந்த port-ம் திறந்திருக்காது. Tor ஒரு relay-க்கு outbound TCP இணைப்பை உருவாக்குகிறது, உங்கள் session அதன் வழியாகவே பயணிக்கிறது. எனவே, உங்கள் server-ன் public address-ல் எந்த இணைப்பும் ஏற்கப்படாது. இதை உறுதிப்படுத்த server-ல் ss -tlnp கட்டளையைப் பயன்படுத்தவும், வெளியிலிருந்து ஒரு port scan செய்யவும். உங்கள் cloud provider-ன் control panel-ல் உள்ள network firewall-ஐ மறக்காதீர்கள்; இது ufw-லிருந்து தனிப்பட்டது, இதையும் நீங்கள் மூட வேண்டும்.
SSH-க்கு .onion address மட்டுமே போதுமான பாதுகாப்பா?
இல்லை. இந்த முகவரி 56 எழுத்துக்களைக் கொண்டது, இதை ஊகிக்கவோ அல்லது directory system மூலம் கண்டறியவோ முடியாது. எனவே இது ஒரு ரகசியம் போலச் செயல்படும், ஆனால் shell history மற்றும் config கோப்புகள் மூலம் இது கசிய வாய்ப்புள்ளது. எனவே v3 client authorisation-ஐச் சேர்க்கவும். இதைச் செய்யும்போது, service descriptor உங்கள் client key மூலம் encrypt செய்யப்படும். இதனால் முகவரி மட்டும் தெரிந்த ஒருவருக்கு extended error F4 மட்டுமே கிடைக்கும், அவர்களால் sshd-ஐ அணுகவே முடியாது.
Reboot செய்த பிறகு tor தொடங்கவில்லை என்றால் என்னவாகும்?
நீங்கள் SSH அணுகலை முழுமையாக இழப்பீர்கள், ஏனெனில் onion address மட்டுமே உள்ளே நுழைய ஒரே வழி. இதனால்தான் port 22-ஐ மூடுவதற்கு முன்பே provider console-ஐச் சோதித்துப் பார்க்க வேண்டும். மேலும், boot ஆன பிறகு Tor bootstrap ஆவதற்குச் சிறிது நேரம் எடுக்கும், எனவே machine ping-க்கு பதில் அளிக்கும் நேரத்தை விட, onion address பதில் அளிக்க அதிக நேரம் எடுக்கும். ஒருவேளை அது பதில் அளிக்கவில்லை என்றால், console மூலம் login செய்து sudo journalctl -u tor@default -b-ஐப் படிக்கவும்; அங்கு torrc syntax பிழை அல்லது /var/lib/tor/ssh-ல் உள்ள அனுமதி (permissions) தொடர்பான சிக்கல்கள் பதிவாகியிருக்கும்.
WireGuard-ஐ விட SSH over Tor மெதுவானதா?
ஆம், மிக அதிக அளவில் மெதுவானது. ஒரு onion service-க்கான இணைப்பு தோராயமாக ஆறு relays வழியாகச் செல்கிறது, ஆனால் WireGuard உங்கள் server-க்கு நேரடியாக ஒரே ஒரு encrypted hop-ல் செல்கிறது. இதனால் தட்டச்சு செய்யும்போது தாமதம் (lag) இருக்கும், கோப்புப் பரிமாற்றமும் மெதுவாக இருக்கும். பொதுவாக, அன்றாட வேலைகளுக்கு WireGuard-ஐப் பயன்படுத்திக்கொண்டு, VPN configuration பழுதடைந்தால் அவசரக்கால வழியாக (emergency route) onion service-ஐ வைத்திருப்பது சிறந்த முறையாகும்.