• Gönderilme: 2019-06-15
  • Yazar: idk

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.

Use the wizard to create a "Server" tunnel

Daha sonra ince ayar yapmalısınız. Ancak Standart tünel türüyle başlamak en kolayıdır.

Of the "Standard" variety

İyi bir açıklama yazın:

Describe what it is for

Ve SSH sunucusunun nerede kullanılacağını anlatın.

Point it at the future home of your SSH server

Sonuçları gözden geçirin ve ayarlarınızı kaydedin.

Save the settings.

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.

Configure your tunnel for interactive connectionss

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.

If you're not concerned about anonymity, then reduce tunnel length.

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.

Reduce on idle, if you chose a high number of tunnels

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

System Message: WARNING/2 (Blog, line 131)

Definition list ends without a blank line; unexpected unindent.

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.

Use the wizard to create a client tunnel

Ardından, standart tünel türünü seçin. Daha sonra bu yapılandırmada ince ayar yapacaksınız.

Of the Standard variety

İyi bir açıklama yazın.

Give it a good description

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.

Find the destination you want to connect to

İstemci aygıtınıza iletilen bağlanmak istediğiniz base64 hedefini bulduktan sonra bunu istemci hedef alanına yapıştırın.

Affix the destination

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.

Choose a local port

Otomatik başlatmayı isteyip istemediğinize karar verin.

Decide if you want it to autostart

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.

Configure it to be interactive

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 serveruser@127.0.0.1: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.

Get the client destination

İ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.

And paste it onto the server whitelist

Karşılıklı kimlik doğrulama FTW.