Tor onion service மூலம் SSH அணுகுவது எப்படி?
எந்தவொரு திறந்த போர்ட்டும் இன்றி Tor onion service வழியாக SSH இணைப்பை ஏற்படுத்துவது எப்படி என்பதை அறியுங்கள். v3 client authorization மற்றும் லாக்-அவுட் தவிர்க்கும் முறைகள்.
Tor onion service வழியாக SSH பயன்படுத்துவதால் ஏற்படும் மாற்றங்கள்
Tor onion service வழியாக SSH பயன்படுத்துவது, எந்தவொரு port-லும் உள்வரும் இணைப்புகளை ஏற்காத ஒரு VPS-ஐ நிர்வகிக்க உங்களை அனுமதிக்கிறது. இந்த server Tor network-க்கு வெளியே அழைப்பை ஏற்படுத்தி, அந்த இணைப்பைத் திறந்து வைத்திருக்கும். உங்கள் SSH session அந்த இணைப்பின் வழியாகவே வருவதால், public IP address-ல் எந்தவொரு சேவையும் listening நிலையில் இருக்க வேண்டிய அவசியமில்லை.
இதன் விளைவு logs-ல் உடனடியாகத் தெரியும். public SSH port-ஐக் கொண்ட ஒரு server, தினமும் ஆயிரக்கணக்கான தோல்வியுற்ற கடவுச்சொல் முயற்சிகளை scanner-களிடமிருந்து பெறும். sshd-ஐ ஒரு onion service-க்கு பின்னால் நகர்த்தி, firewall-ல் உள்வரும் traffic-ஐத் தடுத்தால், /var/log/auth.log-ல் நீங்கள் தொடங்கிய session-கள் மட்டுமே பதிவாகும்.
இதன் பின்னடைவு என்னவென்றால், ஒவ்வொரு admin session-ன் பாதையிலும் tor இருக்கும். இது ஒரு userspace daemon ஆகும்; நீங்கள் login செய்வதற்கு முன்பு, ஒவ்வொரு reboot-க்குப் பிறகும் இது தொடங்கி bootstrap ஆக வேண்டும். port-ஐ மூடுவதற்கு முன்பே இதைக் கவனத்தில் கொள்ளுங்கள், ஏனெனில் இதில் ஏற்படும் தோல்வி, உங்களால் நேரில் அணுக முடியாத ஒரு machine-க்கான இணைப்பை இழக்கச் செய்துவிடும்.
எந்த மாற்றத்தையும் செய்வதற்கு முன் மீட்பு வழியை உறுதி செய்தல்
SSH-ஐப் பயன்படுத்தாத ஒரு மீட்பு வழி (recovery path) தயாராக இருக்கும் வரை எதையும் தொடங்க வேண்டாம்.
இப்போதே உங்கள் service provider-ன் control panel-ல் உள்ள VNC அல்லது serial console-ஐத் திறந்து, அதில் login செய்யவும். root password தெரியவில்லை என்றால், முதலில் panel மூலமாக root password-ஐ reset செய்து, அது வேலை செய்கிறதா என்பதை உறுதிப்படுத்தவும். நீங்கள் இதுவரை சோதித்துப் பார்க்காத console ஒரு மீட்பு வழியாகக் கருதப்படாது.
கீழே கொடுக்கப்பட்டுள்ள வரிசைமுறை முக்கியமானது. ஒவ்வொரு படியும் சரியாகச் செயல்படுவதை உறுதி செய்த பிறகே அடுத்த படிக்குச் செல்ல வேண்டும். onion route வேலை செய்யும் வரை port 22 திறந்திருக்க வேண்டும்.
- tor-ஐ நிறுவி, அது bootstrap ஆகிறதா என்பதை உறுதிப்படுத்தவும்.
- onion service-ஐ வரையறுத்து, அதன் முகவரியைப் படிக்கவும்.
- port 22 திறந்திருக்கும்போதே onion வழியாக இணைப்பைச் சோதிக்கவும்.
- client authorisation-ஐச் சேர்த்து, மீண்டும் இணைப்பைச் சோதிக்கவும்.
sshd-ஐ loopback-ல் bind செய்து, port 22-ஐ மூடவும்.- Reboot செய்த பிறகு, மீண்டும் onion வழியாக இணைக்கவும்.
முழு செயல்முறையின் போதும் உங்கள் தற்போதைய SSH session-ஐத் துண்டிக்க வேண்டாம். ஏற்கனவே உள்ள session, புதிய இணைப்புகளைத் தடுக்கும் firewall மாற்றங்களுக்குப் பிறகும் தொடர்ந்து செயல்படும் என்பதால், இதுவே உங்கள் முதல் மீட்பு வழியாகும்.
சர்வரில் 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 ஆனது loopback வழியாக sshd-ஐ அடைகிறது; இதனால்தான் sshd-ஐ பொது முகவரியில் (public address) இயங்குவதை நிறுத்த முடியும்.
sudo systemctl reload tor
sudo cat /var/lib/tor/ssh/hostnameஇது 56 base32 எழுத்துக்களையும், அதைத் தொடர்ந்து .onion-ஐயும் அச்சிடும். அந்த எழுத்துக்கள், encoded வடிவில் உள்ள அந்த service-ன் public key ஆகும். இதில் certificate authority-யோ அல்லது பெயர் பதிவு செய்யும் முறையோ கிடையாது.
/var/lib/tor/ssh/-ஐ Tor-ஐயே உருவாக்க அனுமதிக்கவும். நீங்களாகவே அதை உருவாக்கி, தவறான உரிமையாளரையோ (owner) அல்லது 0700-ஐ விடத் தளர்வான mode-ஐயோ கொடுத்தால், Tor அதைப் பயன்படுத்த மறுத்துவிடும்; மேலும், அந்த directory-ன் அனுமதி மிக அதிகமாக இருப்பதாக journal-ல் பதிவாகும். உள்ளே இருக்கும் கோப்புகள் அந்த service-ன் அடையாளமாகும்: hs_ed25519_secret_key என்பதுதான் அந்த முகவரி. அந்த directory-ஐ mode 600-ல் backup எடுத்து, server-க்கு வெளியே பாதுகாப்பாக வைக்கவும். அதை இழந்துவிட்டால், புதிய முகவரியை உருவாக்கி ஒவ்வொரு client-லும் configuration-ஐ மாற்ற வேண்டியிருக்கும்.
உங்கள் பணிநிலையத்திலிருந்து இணைத்தல்
உங்கள் பணிநிலையத்தில் ஒரு 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 அதை network-க்கு உள்ளேயே 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-ல் உள்ள வழிமுறைதான், ஆனால் ஒரு சிறிய மாற்றம் செய்யப்பட்டுள்ளது.
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 நிறுவலில் இருக்காது. இதனால் அந்த command 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-ல் உள்ள கோப்புகளை அதனால் வாசிக்க முடியாது. எனவே, அந்த directory-ஐ அந்த user அணுகக்கூடிய இடத்தில் வைக்கவும்.
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-ல் ssh ஒரு socket unit மூலம் செயல்படுகிறது, எனவே 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=, packaged unit-லிருந்து பெறப்பட்ட மதிப்பை நீக்குகிறது. அந்த வரியை விட்டுவிட்டால், நீங்கள் இரண்டாவது listener-ஐச் சேர்ப்பீர்கள், அதே சமயம் public 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 வரியைக் கொண்டு சரிபார்க்கவும். அந்த output-தான் இரண்டு நிலைகளிலும் ஆதாரமாகும்.
அடுத்து 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 verboseOutgoing 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 ஆக சிறிது நேரம் எடுக்கும், எனவே machine இயங்கிய சிறிது நேரத்திற்குப் பிறகே onion address பதிலளிக்கத் தொடங்கும்.
ஒருவேளை service மீண்டும் இயங்கவில்லை என்றால், 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 உலகம் முழுவதும் தோராயமாக தேர்ந்தெடுக்கப்பட்ட ஆறு இயந்திரங்கள் வழியாகச் செல்லும். இதில் தட்டச்சு செய்யும்போது குறிப்பிடத்தக்க தாமதம் இருக்கும், கோப்புகளை நகலெடுப்பது மெதுவாக இருக்கும். 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 rule சரியாக உள்ளதா என்பதைச் சார்ந்திருக்கத் தேவையில்லாத பாதுகாப்பு. இதில் scan செய்வதற்கு ports கிடையாது, banner-களைப் பெற முடியாது. இதன் முகவரியே ஒரு public key என்பதால், SSH தொடங்குவதற்கு முன்பே endpoint தனது அடையாளத்தை உறுதிப்படுத்துகிறது.
நடைமுறை ரீதியாக, இரண்டையும் பயன்படுத்துவதே சிறந்தது. அன்றாட பயன்பாட்டிற்கு WireGuard-ஐப் பயன்படுத்துங்கள்; WireGuard configuration தவறாக இருக்கும்போது, மாற்று வழியாக onion service-ஐ வைத்திருங்கள். இதனால் public SSH port-ஐத் திறப்பதற்குப் பதிலாக, ஒரே ஒரு UDP port மட்டும் திறந்திருக்கும். இவை எதுவுமே sshd-ஐப் பலப்படுத்துவதற்கு மாற்றாகாது: key-only authentication மற்றும் non-root login ஆகியவை இப்போதும் அவசியம். ஏனெனில், onion service network பாதையை மட்டுமே பாதுகாக்கிறது, அதற்கு அப்பால் உள்ளவற்றை அல்ல.
தோல்வி முறைகள் மற்றும் நீங்கள் காணும் பிழைகள்
Tor ஒருபோதும் Bootstrapped 0%-ஐ கடப்பதில்லை. வெளிச்செல்லும் போக்குவரத்து (outbound traffic) தடுக்கப்பட்டுள்ளது அல்லது கடிகார நேரம் மிக அதிகமாக வேறுபடுகிறது. sudo ufw status verbose மூலம் வெளிச்செல்லும் கொள்கையை (outgoing policy) சரிபார்க்கவும், பின்னர் timedatectl-ஐ இயக்கவும்.
systemctl status tor என்பது active (exited) என்று கூறுகிறது. இது Debian மற்றும் Ubuntu-வில் இயல்பானது. அதற்கு பதிலாக tor@default-ஐ வாசிக்கவும்.
விவரிப்பானைக் (descriptor) கண்டறிய முடியவில்லை. Tor, SOCKS நீட்டிக்கப்பட்ட பிழை F0-ஐ வழங்குகிறது, "Onion Service Descriptor Can Not be Found". விவரிப்பான் இன்னும் வெளியிடப்படவில்லை (reload செய்த பிறகு இதற்கு சிறிது நேரம் எடுக்கும்) அல்லது server-ல் tor இயங்கவில்லை என்று பொருள்.
F4, "Onion Service Missing Client Authorization". client-யிடம் tor பயன்படுத்தக்கூடிய பொருத்தமான .auth_private இல்லை. ClientOnionAuthDir என்பது torrc-ல் உள்ளதா, அந்த directory-ன் mode 0700 ஆக உள்ளதா, கோப்பின் பெயர் .auth_private-ல் முடிகிறதா மற்றும் debian-tor-ஆல் அதை வாசிக்க முடிகிறதா என்பதைச் சரிபார்க்கவும்.
F5, "Onion Service Wrong Client Authorization". private key, server-ல் உள்ள .auth கோப்புடன் பொருந்தவில்லை. base32 சரத்திற்குள் இருக்கும் கூடுதல் = அல்லது தேவையற்ற புதிய வரி (newline) இதற்கு காரணமாகிறது.
nc: invalid option -- 'X'. OpenBSD பதிப்பிற்கு பதிலாக GNU netcat நிறுவப்பட்டுள்ளது. sudo apt install -y netcat-openbsd-ஐ இயக்கவும்.
Could not resolve hostname. ssh சாதாரண DNS-ஐப் பயன்படுத்த முயன்றது, அதற்கு .onion-க்கு பதில் இல்லை, எனவே ProxyCommand இயங்கவில்லை. ~/.ssh/config-ல் உள்ள Host அமைப்பு நீங்கள் உள்ளிட்ட பெயருடன் பொருந்தவில்லை.
Permission denied (publickey). tunnel சரியாக வேலை செய்கிறது மற்றும் tor-ன் பணி முடிந்தது. இதை சாதாரண permission denied publickey சிக்கல் என்று கருதி, இதில் tor-ஐத் தவிர்க்கவும்.
FAQ
ஒரு onion service-ஐப் பயன்படுத்தினால் என் VPS-ல் open ports இருக்காது என்பது உண்மையா?
ஆம், sshd-ஐ 127.0.0.1-ல் bind செய்து, firewall மூலம் உள்வரும் traffic-ஐத் தடுத்த பிறகு இது சாத்தியம். Tor ஒரு relay-க்கு outbound TCP connection-ஐ உருவாக்குகிறது, உங்கள் session அதன் வழியாகவே திரும்ப வருகிறது. எனவே, உங்கள் server-ன் public address-ல் எந்தவொரு connection-ம் ஏற்கப்படாது. இதை server-ல் ss -tlnp கட்டளையைப் பயன்படுத்தியும், வெளியிலிருந்து port scan செய்தும் உறுதிப்படுத்தலாம். Control panel-ல் உள்ள provider-ன் network firewall-ஐ மறக்காதீர்கள்; இது ufw-லிருந்து தனிப்பட்டது, இதையும் நீங்கள் மூடி வைக்க வேண்டும்.
SSH-க்கு .onion address மட்டுமே போதுமான பாதுகாப்பா?
இல்லை. இந்த address 56 characters கொண்டது, இதை ஊகிக்கவோ அல்லது directory system மூலம் கண்டறியவோ முடியாது. எனவே இது ஒரு ரகசியம் போலச் செயல்படும், ஆனால் shell history மற்றும் config files மூலம் இது கசிய வாய்ப்புள்ளது. எனவே v3 client authorisation-ஐச் சேர்க்கவும். இதைச் செய்யும்போது, service descriptor உங்கள் client key மூலம் encrypt செய்யப்படும். இதனால், address-ஐ மட்டும் வைத்திருப்பவர் extended error F4-ஐப் பெறுவார், sshd-ஐ ஒருபோதும் அடைய முடியாது.
Reboot செய்த பிறகு tor தொடங்கவில்லை என்றால் என்னவாகும்?
நீங்கள் SSH access-ஐ முழுமையாக இழப்பீர்கள், ஏனெனில் onion address மட்டுமே உள்ளே செல்வதற்கான ஒரே வழியாக இருக்கும். இதனால்தான் port 22-ஐ மூடுவதற்கு முன்பே provider console-ஐச் சோதித்துப் பார்க்க வேண்டும். மேலும், boot ஆன பிறகு Tor bootstrap ஆவதற்குச் சிறிது நேரம் எடுக்கும், எனவே machine ping-க்கு பதில் அளித்தாலும், address பதில் அளிக்கச் சிறிது தாமதமாகும். ஒருவேளை அது பதில் அளிக்கவே இல்லை என்றால், console மூலம் login செய்து sudo journalctl -u tor@default -b-ஐப் படிக்கவும்; அதில் torrc syntax error அல்லது /var/lib/tor/ssh-ல் உள்ள permissions பிரச்சினை குறித்த விவரங்கள் இருக்கும்.
WireGuard-ஐ விட SSH over Tor மெதுவானதா?
ஆம், மிக அதிக அளவில் மெதுவானது. ஒரு onion service-க்கான connection தோராயமாக ஆறு relays வழியாகச் செல்கிறது, ஆனால் WireGuard உங்கள் server-க்கு நேரடியாக ஒரே ஒரு encrypted hop-ல் செல்கிறது. இதனால் தட்டச்சு செய்யும்போது தாமதம் (lag) உணரப்படும், கோப்புப் பரிமாற்றங்களும் மெதுவாக இருக்கும். பொதுவாக, அன்றாட வேலைகளுக்கு WireGuard-ஐயும், VPN config பழுதடைந்தால் பயன்படுத்தும் அவசரக்கால வழியாக onion service-ஐயும் வைத்திருப்பது சிறந்த முறையாகும்.