Bu eğitimde, bir SSH sunucusuna I2P veya i2pd kullanarak uzaktan erişmek için bir I2P tünelinin nasıl kurulacağı ve ayarlanacağı anlatılacak. Şimdilik, SSH sunucunuzu bir paket yöneticisinden kuracağınızı ve bir hizmet olarak çalıştırdığınızı varsayıyoruz.
Varsayımlar: Bu rehberde, birkaç şeyi varsayıyorum. Özel kurulumunuzda ortaya çıkabilecek sorunlara bağlı olarak, özellikle de yalıtım için sanal makineler veya kapsayıcılar kullanıyorsanız, bunların ayarlanması gerekebilir. Bu eğitimde, I2P yönelticisinin ve SSH sunucusunun aynı yerel sunucuda çalıştığı varsayılıyor. Ya yeni kurulmuş bir sshd kullanarak ya da eski anahtarları silip yeniden oluşturulmasını sağlayarak yeni SSH sunucu anahtarlarını kullanmalısınız. Örneğin:
sudo service openssh stop sudo rm -f /etc/ssh/ssh_host_* sudo ssh-keygen -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key sudo ssh-keygen -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key sudo ssh-keygen -N "" -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key sudo ssh-keygen -N "" -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
Birinci adım: SSH sunucusu için I2P tünelini kurun
Java I2P kullanarak
Java I2P web arayüzünü kullanarak (Yöneltici panonuzun bağlantısı)Gizli hizmetler yönetimi seçeneğine gidin ve tünel yardımcısını başlatın.
Tünel Yardımcısı
Bu tüneli SSH sunucusu için kurduğunuzdan tünel türünü "Sunucu" olarak seçmelisiniz.
Daha sonra ince ayar yapmalısınız. Ancak Standart tünel türüyle başlamak en kolayıdır.
İyi bir açıklama yazın:
Ve SSH sunucusunun nerede kullanılacağını anlatın.
Sonuçları gözden geçirin ve ayarlarınızı kaydedin.
Gelişmiş Ayarlar
Şimdi gizli hizmetler yönetimi bölümüne geri dönün ve var olan gelişmiş ayarlara bakın. Toplu bağlantılar yerine etkileşimli bağlantılar kullanılması ayarını kesinlikle değiştirmek istersiniz.
Bunun yanında, diğer seçenekler, SSH sunucunuza erişme başarımını etkileyebilir. Anonimliğiniz hakkında o kadar endişeli değilseniz, durak sayısını azaltabilirsiniz. Hız konusunda sorun yaşıyorsanız, daha yüksek bir tünel sayısı yardımcı olabilir. Birkaç yedek tünel büyük olasılıkla iyi fikirdir. Değerlerle biraz oynamanız gerekebilir.
Son olarak, tüm ayarlarınızın etkili olması için tüneli yeniden başlatın.
Özellikle çok sayıda tünel çalıştırmayı seçerseniz, "Boştayken azaltılsın" seçeneği de ilginçtir. Hizmet uzun süre boşta beklerse çalışan tünellerin sayısı azaltılır.
i2pd kullanarak ~~~~~~~~~~---------------------------
i2pd ile tüm yapılandırma web arayüzü yerine dosyalar ile yapılır. i2pd ile bir SSH hizmet tüneli yapılandırmak için, aşağıdaki örnek ayarları anonimlik ve başarım gereksinimlerinize göre düzenleyin ve bunları tunnels.conf dosyasına kopyalayın.
[SSH-SERVER] type = server host = 127.0.0.1 port = 22 inbound.length = 1 outbound.length = 1 inbound.quantity = 5 outbound.quantity = 5 i2cp.reduceOnIdle = true keys = ssh-in.dat
I2P yönelticinizi yeniden başlatın
İkinci adım: SSH sunucusunu kurun
- SSH sunucunuza nasıl erişmek istediğinize bağlı olarak, ayarlarda birkaç değişiklik
- yapmak isteyebilirsiniz. Tüm SSH sunucularında (Public-Key Authentication, root
olarak oturum açma vb.) yapmanız gereken bilinen SSH koruma işlemlerinin yanı sıra, SSH sunucunuzun sunucu tüneliniz dışındaki herhangi bir adresi dinlemesini istemiyorsanız, AddressFamily değerini inet ve ListenAddress değerini 127.0.0.1 olarak ayarlamalısınız.
AddressFamily inet ListenAddress 127.0.0.1
SSH sunucunuz için 22 dışında bir bağlantı noktası kullanmayı seçerseniz, I2P tünel yapılandırmanızdaki bağlantı noktasını değiştirmeniz gerekecektir.
Üçüncü adım: SSH istemcisi için I2P tünelini kurun
İstemci bağlantınızı yapılandırmak için SSH sunucusunun I2P yöneltici panosunu görebilmeniz gerekecektir. Bu kurulumla ilgili güzel bir şey, I2P tüneline ilk bağlantının kimliğinin doğrulanmasıdır. Bu durum, ilk kullanıma güvenilme senaryolarında olduğu gibi, SSH sunucusuna ilk bağlantınızın MITM ile yapılması riskini bir şekilde azaltır.
Java I2P kullanarak
Tünel Yardımcısı
İlk olarak, gizli hizmetler yöneticisinden tünel yapılandırma yardımcısını başlatın ve bir istemci tüneli seçin.
Ardından, standart tünel türünü seçin. Daha sonra bu yapılandırmada ince ayar yapacaksınız.
İyi bir açıklama yazın.
Tek zor olabilecek bölüm budur. I2P yöneltici panosunda gizli hizmetler yönetimi bölümüne gidin ve SSH sunucu tünelinin base64 "yerel hedefini" bulun. Bu bilgiyi bir sonraki adıma kopyalamanın bir yolunu bulmanız gerekecek. Ben genellikle Tox kullanıyorum. Çoğu kişi için herhangi bir kayıt dışı uygulama yeterli olmalıdır.
İstemci aygıtınıza iletilen bağlanmak istediğiniz base64 hedefini bulduktan sonra bunu istemci hedef alanına yapıştırın.
Son olarak, SSH istemcinizin bağlantı kuracağı yerel bir bağlantı noktası ayarlayın. Yerel bağlantı noktası base64 hedefine ve dolayısıyla SSH sunucusuna bağlanacaktır.
Otomatik başlatmayı isteyip istemediğinize karar verin.
Gelişmiş Ayarlar
Daha önce olduğu gibi, etkileşimli bağlantılar için iyileştirilebilecek ayarları değiştirmek isteyeceksiniz. Ek olarak, sunucuda istemci beyaz listesini ayarlamak istiyorsanız, "Kalıcı istemci tüneli kimliğini etkinleştirmek için anahtar oluşturulsun" seçeneğini işaretlemelisiniz.
i2pd kullanarak
Bunun için, tunnels.conf dosyanıza aşağıdaki satırları ekleyebilir ve başarım/anonimlik gereksinimlerinize uygun ayarları yapabilirsiniz.
[SSH-CLIENT] type = client host = 127.0.0.1 port = 7622 inbound.length = 1 outbound.length = 1 inbound.quantity = 5 outbound.quantity = 5 i2cp.dontPublishLeaseSet = true destination = thisshouldbethebase32ofthesshservertunnelabovebefore.b32.i2p keys = ssh-in.dat
İstemcide I2P yönelticisini yeniden başlatın
Dördüncü adım: SSH istemcisini kurun
I2P üzerinde sunucunuza ile bağlantı kurmak amacıyla bir SSH istemcisi kurmanın birçok yolu vardır. Ancak SSH istemcinizi anonim olarak güvenceye almak için yapmanız gereken birkaç şey vardır. İlk olarak, anonim ve anonim olmayan SSH bağlantılarınızı kirletme riskiniz olmaması için kendisini yalnızca SSH sunucusuna tek bir özel anahtarla tanımlayacak şekilde yapılandırmalısınız.
$HOME/.ssh/config dosyanızda aşağıdaki satırların bulunduğundan emin olun:
IdentitiesOnly yes Host 127.0.0.1 IdentityFile ~/.ssh/login_id_ed25519
Alternatif olarak, seçeneklerinizi dayatmak ve otomatik olarak I2P bağlantısı kurmak için bir .bash_alias kaydı yapabilirsiniz. Fikri anladınız, IdentitiesOnly seçeneğini dayatmanız ve bir kimlik dosyası belirtmeniz gerekiyor.
i2pssh() { ssh -o IdentitiesOnly=yes -o IdentityFile=~/.ssh/login_id_ed25519 firstname.lastname@example.org:7622 }
Beşinci adım: Yalnızca istemci tünelini beyaz listeye alın
Bu seçenek, aşağı yukarı isteğe bağlıdır, ancak oldukça havalıdır ve hedefinize rastlayan kişilerin bir SSH hizmeti barındırdığınızı anlamasını engeller.
İlk olarak, kalıcı istemci tüneli hedefini alın ve sunucuya iletin.
İstemcinin base64 hedefini sunucunun hedef beyaz listesine ekleyin. Artık yalnızca o belirli istemci tünelinden sunucu tüneline bağlantı kurabilirsiniz ve başka hiç kimse bu hedefe bağlanamaz.
Karşılıklı kimlik doğrulama FTW.