Node'unuzu Güvence Altına Alma

Bu kılavuzun amacı, node'unuzu kötü niyetli aktörlere karşı korumak için atabileceğiniz adımları size göstermektir. İster evde yerel bir sunucu, ister bulutta bir VPS sunucusu / sanal makine çalıştırıyor olun, buradaki ipuçları node'unuzu dış saldırılara karşı sağlamlaştırmanıza ve ömrü boyunca korumanıza yardımcı olacaktır.

Bu bölüm, yapmanız gereken temel eylemleri ve yararlı ancak zorunlu olmayan isteğe bağlı eylemleri açıklayacaktır.

NOT

Bu kılavuz, node makinenizi sağlamlaştırmak için yapabileceğiniz bazı şeylere giriş niteliğindedir. Komut satırı terminali konusunda rahatsanız ve node'unuzu korumada daha ileri gitmek istiyorsanız, popüler imthenachoman/How-To-Secure-A-Linux-Server kılavuzuna göz atın.

Bu Kılavuzdaki Varsayımlar

Bu kılavuz, node'unuzun Ubuntu 20.04 LTS çalıştırdığını varsayar. Kavramlar diğer sistemlere de taşınacaktır ancak örnek komutlar taşınmayabilir.

Bu kılavuzdaki tüm komutlarda olduğu gibi, ssh kullanarak node'unuzun komut terminaline uzaktan bağlandığınızı varsayıyoruz. ssh kullanımı konusunda tazelemeye ihtiyacınız varsa, önce Secure Shell'e Giriş kılavuzuna göz atın.

TEMEL: İstemci Makinenizi Güvende Tutun

NOT

Smartnode'unuzu yerel olarak kullanıyorsanız (doğrudan bağlı bir klavye ve monitör ile fiziksel olarak giriş yaparak), bu bölüm sizinle ilgili değildir - atlayabilirsiniz.

Çoğu Smartnode operatörü, ssh kullanarak başka bir bilgisayardan terminaline bağlanarak node'larıyla uzaktan etkileşime girer:

  • Bağlandığınız makine (bu durumda, node makineniz) sunucu olarak adlandırılır.
  • Bağlandığınız makine (dizüstü bilgisayarınız, masaüstünüz veya hatta telefonunuz gibi) istemci olarak adlandırılır.

Smartnode'unuzu güvence altına almak için yapabileceğiniz en önemli şeylerden biri istemci makinenizi güvende tutmaktır. İstemci makineniz tehlikeye girerse ve node'unuza giriş yapmak için kullanırsanız, node'a uyguladığınız güvenlik ayarlarının çoğu atlanabilir.

Örneğin: SSH istemcisi olarak bir dizüstü bilgisayar kullanıyorsanız ve üzerinde bir keylogger yüklüyse, SSH üzerinden bağlandığınızda node'da yazdığınız gizli şeyler (şifreniz veya kurtarma anımsatıcınız gibi) çalınır.

İstemci makinenizi güvende tutmak için kesin bir kılavuz yoktur, ancak bunun güvenliğinizde bir faktör olduğunun farkında olmak iyi bir ilk adımdır. İstemci makinenizin olabildiğince güvenli olduğundan emin olun.

İşte birkaç ipucu:

  • İstemci makinenizi riskli faaliyetler için kullanmayın (güvenilmeyen web sitelerini ziyaret etmek veya gereksiz programlar yüklemek gibi)
  • İstemci makinenizi en son güvenlik yamaları ile güncel tutun
  • Mümkünse, İşletim Sisteminiz için bir kötü amaçlı yazılım ve antivirüs koruma programı kullanın

Maksimum güvenlik için, SSH istemciniz olarak özel bir makine kullanmak isteyebilirsiniz, ancak bu sizin için pratik olmayabilir.

TEMEL: SSH Erişiminizi Güvence Altına Alın

NOT

Smartnode'unuzu yerel olarak kullanıyorsanız (doğrudan bağlı bir klavye ve monitör ile fiziksel olarak giriş yaparak), bu bölüm sizinle ilgili değildir - atlayabilirsiniz.

Smartnode'unuzu evde çalıştırıyor olsanız da uzak bir veri merkezinde VPS kullanıyor olsanız da, muhtemelen SSH üzerinden erişiyorsunuz veya SSH'yi kullanmasanız bile etkinleştirilmiştir.

SSH bağlantıları güvenli kriptografiye dayanır, ancak herhangi bir güvenli sistemde olduğu gibi, gerçek güvenlik onu doğru kullanmaktan gelir. SSH ayarlarınız için yapmanız gereken iki ana şey vardır:

  1. Uzaktan giriş için kullanıcı adı ve şifre yerine bir SSH anahtarı kullanın
  2. Şifre tabanlı kimlik doğrulamayı tamamen devre dışı bırakın, böylece SSH anahtarları tek uzaktan giriş seçeneği olur

Muhtemelen şimdi aşina olduğunuz gibi, SSH üzerinden node'unuza giriş yapmanın varsayılan yolu bir kullanıcı adı ve şifredir. Bunun dezavantajı, şifrenizin genellikle oldukça "kısa" bir şey olması ve kaba kuvvet saldırılarına karşı hassas olmasıdır.

Neyse ki, SSH üzerinden giriş yapmanın alternatif bir yolu vardır: bir SSH anahtar çifti.

SSH anahtar çiftleri blockchain cüzdanlarına benzer şekilde çalışır; genel bir kısım (cüzdan adresiniz gibi) ve özel bir kısımla gelirler (cüzdan adresinizin özel anahtarı gibi):

  • Genel kısmı node'unuza sağlarsınız. Bu şekilde, node bağlanmanıza izin verildiğini bilir ve gerçekten sizin bağlanmaya çalıştığınızı bilir.
  • Özel kısmı istemci makinenizde kendinize saklarsınız. Bu şekilde, siz (ve yalnızca siz) node'unuza bağlanabilirsiniz.
    • Özel kısmı bir şifre ile koruyabilir (ve korumalısınız!), böylece anahtarınızı çalan biri onu kullanamaz.
  • Bilgisayar perspektifinden bakıldığında, özel anahtar bir şifreden katlanarak daha zordur kırılması. Bu, node'unuza karşı kaba kuvvet saldırısı riskini azaltır.
İPUCU

Kendinizinkini oluşturmadan önce SSH anahtar çiftleri hakkında daha fazla bilgi edinmek isterseniz, bu bağlantılara göz atın:

SSH Anahtar Çifti Oluşturma

İstemci makinenizde yeni bir SSH anahtar çifti oluşturarak başlayalım. Dışarıda birçok anahtar çeşidi var, ancak mükemmel güvenlik sağlayan ed25519 adlı bir anahtar türü kullanacağız.

İstemci makinenizde aşağıdaki komutu çalıştırın (yani node makinenize SSH yaparken bunu çalıştırmamalısınız - yapıyorsanız, önce SSH'den çıkın):

ssh-keygen -t ed25519 -C "your_email@example.com"

Aşağıdakileri göreceksiniz:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):

Bu, özel anahtar dosyanızı nereye kaydetmek istediğinizi sorar. SSH, sağlanan varsayılanla uyumludur ve bunu seçerseniz sizin için otomatik olarak kullanır. Ancak, isterseniz başka bir şeye değiştirme seçeneğiniz vardır.

NOT

/home/username/.ssh/id_ed25519 yolu sadece bir örnektir, kullanıcı adınızın username olduğunu varsayar. Muhtemelen farklı bir kullanıcı adınız var. Bu kılavuzda yukarıdaki gibi bir yol gördüğünüzde, sisteminizin gerçek kullanıcı adınızla gerçekten yazdırdığı yolla değiştirin.

Varsayılan ayardan memnunsanız, basitçe Enter'a basın.

Aksi takdirde, anahtar için istediğiniz konumu yazın. Mutlak bir yol olmalıdır (örneğin Linux'ta /home/username/.ssh/rocketpool_key veya OSX'te /Users/username/.ssh/rocketpool_key). İşiniz bittiğinde Enter'a basın.

Enter'a bastıktan sonra şunu göreceksiniz:

Enter passphrase (empty for no passphrase):

Bu, özel anahtarın kendisi için şifre olacaktır. Node'unuza bağlanmak için anahtarı her kullandığınızda, önce bu şifreyi girmeniz gerekir.

UYARI

Bunu boş bırakmamalısınız - aksi takdirde, SSH anahtar dosyasına sahip olan herkes onu kullanabilir! Sadece sizin (ve yalnızca sizin) bileceği iyi bir şifre seçin.

Ayrıca, şifrenizi unutmayın - kaybederseniz bu şifreyi kurtarmanın bir yolu yoktur.

Şifreyi yazmayı bitirdikten sonra Enter'a basın. Onay için yeniden yazmanızı isteyecektir.

Bundan sonra, aşağıdaki gibi bir çıktı göreceksiniz:

Your identification has been saved in /home/username/.ssh/id_ed25519
Your public key has been saved in /home/username/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:CASbPZETiQ83lLhpUO2aoT05TxMVLwqiWtdsRtoPt4s your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| .o*==..         |
|. +=O...         |
|..+B++o .        |
|..=.+X o         |
|.+.=+.O S        |
|o.B.oo + .       |
|.  = .  o        |
|    .  . .       |
|      E .        |
+----[SHA256]-----+

İlk satır özel anahtarın konumunu belirtir, varsayılan olarak id_ed25519 olarak adlandırılır (dosya uzantısı olmadığına dikkat edin). Bu özel anahtar dosyası varsayılan konumdaysa Ubuntu, ssh kullandığınızda bu anahtarı sizin için otomatik olarak yükler.

İkinci satır genel anahtarın konumunu belirtir, varsayılan olarak id_ed25519.pub olarak adlandırılır. Bir sonraki adım için genel anahtara ihtiyacımız olacak.

NOT

Ubuntu bu yeni anahtarı otomatik olarak yüklemelidir. Ancak, bazı sistemler (macOS makineleri gibi) otomatik olarak yüklemeyecektir - bunu aşağıdaki komutla yapmalarını söylemeniz gerekir istemci makinenizde:

ssh-add $HOME/.ssh/id_ed25519

Bunun önceki adımda oluşturduğumuz özel anahtarın yolu olduğunu, genel anahtarın değil, unutmayın. Yolu, önceki adımda sisteminizin yazdırdığı yolla değiştirin.

ssh-agent'ın çalışmadığını söyleyen bir hata alırsanız, istemci makinenizde aşağıdaki komutu çalıştırarak başlatın:

eval $(ssh-agent)

Terminali her açtığınızda bu iki komutu yazmak istemiyorsanız, ~/.bashrc dosyanıza bir alias ekleyerek anahtarınızı eklemek için bir kısayol oluşturabilirsiniz.

Metin düzenleyiciyi kullanarak dosyayı açın:

nano ~/.bashrc

Sonuna bu satırı ekleyin (özel anahtar için varsayılan yolu kullandığınızı varsayarak - gerektiğinde güncelleyin):

alias loadkey='ssh-add $HOME/.ssh/id_ed25519'

Ctrl+O ve Enter, ardından Ctrl+X ile kaydedin ve çıkın. Ardından, değişikliklerin etkili olması için terminalinizi kapatın ve açın.

Artık anahtarı yüklemek için istemci makinenizde loadkey yazabilirsiniz.

Genel Anahtarı Node'unuza Ekleme

SSH anahtar çiftinizi aldıktan sonra, artık genel anahtarı node'unuza ekleyebilirsiniz. Bu, az önce oluşturduğunuz özel anahtarı kullanarak kullanıcı adınız ve şifreniz yerine ssh üzerinden bağlanmanıza izin verecektir.

Bunu yapmanın iki yolu vardır - biri işe yaramazsa, diğer yolu deneyin:

ssh-copy-id Kullanarak
Anahtarı Manuel Olarak Ekleme

Not: istemci makineniz Windows çalıştırıyorsa, ssh-copy-id henüz mevcut değildir. Lütfen "Anahtarı Manuel Olarak Ekleme" sekmesindeki talimatları izleyin.

İstemci makinenizde aşağıdaki komutu çalıştırın:

ssh-copy-id -i $HOME/.ssh/id_ed25519.pub username@node.ip.address

Örneğin, node'daki kullanıcı adım staker ve node'umun IP adresi 192.168.1.10 ise, aşağıdaki komutu çalıştırırım:

ssh-copy-id -i $HOME/.ssh/id_ed25519.pub staker@192.168.1.10

Aşağıdaki gibi bazı mesajlar göreceksiniz:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/username/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Bu, önce zaten orada olmadığından emin olmak için anahtarınızla giriş yapmaya çalıştığını söyler. Giriş başarısız olduğunda, yeni genel anahtarı node makinesine eklemenin uygun olduğunu bilir.

Ardından sizi node makinesindeki kullanıcının şifresi için isteyecektir. (Bunun SSH anahtarının şifresi olmadığını unutmayın!)

Kullanıcınızın şifresini girin ve aşağıdaki çıktıyı göreceksiniz:

Number of key(s) added: 1

Now try logging into the machine with:   "ssh 'username@node.ip.address'"
and check to make sure that only the key(s) you wanted were added.

Bu işe yaradı anlamına gelir!

Artık normalde yaptığınız gibi node'a ssh yapabilmelisiniz, ancak şimdi kullanıcı hesabının şifresini yazmanız gerekmeyecek.

Bunun yerine, SSH özel anahtarınızın şifresini yazmanız gerekecek. Sistem ayarlarınıza bağlı olarak, bunu yeniden başlatma başına yalnızca bir kez yapmanız gerekebilir veya node'unuza bağlanmak için anahtarı her kullandığınızda yapmanız gerekebilir.

Şifre ile Girişi Devre Dışı Bırakma

Bir SSH anahtar çifti kurmuş olsanız bile, node'unuz hala diğer makinelerin kullanıcı adı ve şifre yöntemini kullanarak giriş yapmaya çalışmasına izin verecektir. Bu, başlangıçta SSH anahtarlarını kullanmanın tüm amacını bozar, bu nedenle bir sonraki adım bunları devre dışı bırakmaktır.

NOT

SSH sunucusunun yapılandırmasını değiştirmek üzeresiniz. Tüm mevcut SSH oturumlarınız korunacaktır. Ancak, bir hata yaparsanız, artık yeni SSH oturumları oluşturamayabilir ve kendinizi makineden etkili bir şekilde kilitleyebilirsiniz.

Bunu önlemek için, sonraki adımlar için 2 SSH oturumu oluşturmanızı şiddetle öneririz - biri düzenleme ve test için, biri de herhangi bir bozucu değişikliği geri alabilmeniz için yedek olarak.

Makinenize her zamanki gibi ssh kullanarak giriş yaparak başlayın:

ssh user@your.node.ip.address

Bir hatırlatma olarak, bunu iki ayrı terminalde iki kez yapmalısınız, böylece her ihtimale karşı yedek bir oturumunuz olur. Şimdilik yedek oturumu görmezden gelebilirsiniz - ne zaman ihtiyacınız olacağını size söyleyeceğiz. Aşağıdaki komutları yalnızca ilk oturumda çalıştırın.

SSH sunucusu için yapılandırma dosyasını açın:

sudo nano /etc/ssh/sshd_config

sudo ile başlayan tüm komutlarda olduğu gibi, bu sizi kullanıcı hesabınızın şifresi için isteyecektir. Bu büyük bir dosyadır, bu nedenle klavyenizdeki ok tuşlarını veya Page Up / Page Down kullanarak içinde gezinmeniz gerekecektir.

Aşağıdaki değişiklikleri yapın:

  1. #AuthorizedKeysFile yorum satırıysa (önünde # varsa) yorum satırını kaldırın
  2. KbdInteractiveAuthentication yes'i KbdInteractiveAuthentication no'ya değiştirin ve yorum satırını kaldırın (önündeki #'yi kaldırarak) - SSH'nin eski sürümlerinin bu seçeneği KbdInteractiveAuthentication yerine ChallengeResponseAuthentication olarak adlandırdığını unutmayın
  3. PasswordAuthentication yes'i PasswordAuthentication no'ya değiştirin ve yorum satırını kaldırın (önündeki #'yi kaldırarak)
  4. PermitRootLogin yes'i PermitRootLogin prohibit-password'e değiştirin, zaten buna ayarlanmışsa ve önünde # yoksa değiştirmeyin

İşiniz bittiğinde, Ctrl+O ve Enter ile kaydedin, ardından Ctrl+X ile çıkın.

Son olarak, sudo sshd -T | grep -i passwordauthentication komutunu çalıştırın ve passwordauthentication no yazdırdığından emin olun. Yazdırmazsa, sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf komutunu çalıştırmanız ve bu dosyada da PasswordAuthentication yes'i PasswordAuthentication no'ya ayarlamanız gerekebilir. Daha önce olduğu gibi kaydedin ve çıkın, Ctrl+O ve Enter, ardından Ctrl+X.

Ardından, yeni ayarları alması için SSH sunucusunu yeniden başlatın:

sudo systemctl restart ssh.service

Bundan sonra, kullanıcı adı ve şifre ile SSH'ye giriş yapma devre dışı bırakılmalıdır.

NOT

Bu noktada, SSH oturumundan çıkmalı ve tekrar SSH yapmalısınız. Bunu başarılı bir şekilde yapabilirseniz, SSH yapılandırmanız hala geçerlidir!

Geri giremezseniz, yapılandırmanızla ilgili bir şeyler yanlış gitmiştir. Bu bölümün başında oluşturduğunuz yedek SSH oturumunu kullanarak /etc/ssh/sshd_config dosyasını değiştirin.

Hatayı bulmaya çalışın veya değişikliklerinizi geri alın, ardından sudo systemctl restart sshd kullanarak SSH sunucusunu yeniden başlatın.

Yeniden başlatıldıktan sonra, "diğer" terminalinizde SSH ile tekrar bağlanmayı deneyin. Bunu tekrar çalışana ve başarılı bir şekilde bağlanabilene kadar yapmaya devam edin.

(İsteğe Bağlı) İki Faktörlü Kimlik Doğrulamayı Etkinleştirme

İki faktörlü kimlik doğrulama, şifreniz veya SSH anahtarınıza ek olarak, genellikle birincil cihazınızdan ayrı bir cihazda ikinci bir güvenlik önlemi gerektirmeyi içerir.

Örneğin, hem şifre hem de Google Authenticator kodu (veya SMS kodu) kullanarak bir kripto borsası gibi bir web sitesinde oturum açmaya aşina olabilirsiniz. Bu iki adımlı süreç, iki faktörlü kimlik doğrulamanın bir örneğidir.

SSH de bir Google Authenticator kodu gerektirecek şekilde yapılandırılabilir, bu da SSH anahtarınızı ve parolasını bir şekilde tehlikeye atan bir saldırganın hala kimlik doğrulama uygulamasının bulunduğu cihaza ihtiyaç duyacağı anlamına gelir (muhtemelen telefonunuz). Bu, sisteminize ekstra bir güvenlik katmanı ekler.

UYARI

Bir şeyi yanlış yapılandırmanız durumunda node'unuza ikinci bir terminal ile SSH bağlantısı açmanızı şiddetle öneririz. Bu şekilde, kendinizi kilitlerseniz, hatalarınızı kolayca geri alabilmeniz için hala bağlı olan bir yedeğiniz olur.

Kendinizi kilitlerseniz, yerel monitör ve klavye aracılığıyla node'unuza fiziksel olarak erişmeniz, giriş yapmanız ve yanlış yapılandırmayı onarmanız gerekecektir.

Telefonunuzda henüz yoksa Google Authenticator (veya uyumlu bir eşdeğer) yükleyerek başlayın. Android kullanıcıları için, şifre kilitleme ve kullanışlı yedeklemeleri destekleyen açık kaynaklı bir alternatif olan andOTP'yi düşünün.

Ardından, node'unuza bu komutla Google Authenticator modülünü yükleyin:

sudo apt install -y libpam-google-authenticator

Şimdi PAM'a (pluggable authentication modules) bu modülü kullanmasını söyleyin. Önce yapılandırma dosyasını açın:

sudo nano /etc/pam.d/sshd

@include common-auth bulun (en üstte olmalıdır) ve önüne bir # ekleyerek yorum satırı yapın, böylece şöyle görünsün:

# Standard Un*x authentication.
#@include common-auth

Ardından, dosyanın en üstüne bu satırları ekleyin:

# Enable Google Authenticator
auth required pam_google_authenticator.so

Ardından dosyayı Ctrl+O, Enter ve Ctrl+X ile kaydedin ve çıkın.

Artık PAM Google Authenticator kullanmayı bildiğine göre, bir sonraki adım sshd'ye PAM kullanmasını söylemektir. sshd yapılandırma dosyasını açın:

sudo nano /etc/ssh/sshd_config

Şimdi KbdInteractiveAuthentication no satırını KbdInteractiveAuthentication yes olarak değiştirin, böylece şöyle görünsün:

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication yes

(SSH'nin eski sürümleri bu seçeneği KbdInteractiveAuthentication yerine ChallengeResponseAuthentication olarak adlandırır.)

Dosyanın en altına aşağıdaki satırı ekleyin, bu sshd'ye hem SSH anahtarına hem de Google Authenticator koduna ihtiyaç duyduğunu gösterir:

AuthenticationMethods publickey,keyboard-interactive:pam

Ardından dosyayı Ctrl+O, Enter ve Ctrl+X ile kaydedin ve çıkın.

Artık sshd kurulduğuna göre, 2FA kodlarımızı oluşturmamız gerekiyor. Terminalinizde şunu çalıştırın:

google-authenticator

İlk olarak, zaman tabanlı jetonlar hakkında sizi soracaktır. Bu soruya y deyin:

Do you want authentication tokens to be time-based: y

Artık ekranınızda büyük bir QR kodu göreceksiniz; eklemek için Google Authenticator uygulamanızla tarayın. Ayrıca, şuna benzer gizli anahtarınızı ve birkaç yedek kodu göreceksiniz:

Your new secret key is: IRG2TALMR5U2LK5VQ5AQIG3HA4
Your verification code is 282436
Your emergency scratch codes are:
  29778030
  86888537
  50553659
  41403052
  82649596
NOT

2FA uygulamanızın elverişli olmadığı durumlarda makineye giriş yapmanız gerektiğinde acil durum karalama kodlarını güvenli bir yere kaydedin. Uygulama olmadan, artık makineye SSH yapamazsınız!

Son olarak, size birkaç parametre daha soracaktır; önerilen varsayılanlar aşağıdaki gibidir:

Do you want me to update your "/<username>/.google_authenticator" file: y
Do you want to disallow multiple uses of the same authentication token: y
By default... < long story about time skew > ... Do you want to do so: n
Do you want to enable rate-limiting: y

İşiniz bittiğinde, yeni ayarları alması için sshd'yi yeniden başlatın:

sudo systemctl restart sshd

SSH anahtarlarınızla sunucunuza SSH yapmaya çalıştığınızda, artık bir 2FA doğrulama kodu için de sorulmalısınız, ancak şifre için sorulmamalıdır.

TEMEL: Otomatik Güvenlik Güncellemelerini Etkinleştirme

İşletim Sistemi satıcıları düzenli olarak güncellemeler ve güvenlik düzeltmeleri yayınlar, bu nedenle sisteminizi en son yamalarla güncel tutmanız önemlidir. Bunu yapmanın en kolay yolu otomatik güncellemeleri etkinleştirmektir.

Node makinenizde aşağıdaki komutları çalıştırın:

sudo apt update
sudo apt install -y unattended-upgrades update-notifier-common

/etc/apt/apt.conf.d/20auto-upgrades dosyasını düzenleyerek otomatik güncelleme ayarlarını değiştirebilirsiniz:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Bu, makul otomatik güncelleme ayarlarının bir örneğidir:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

# This is the most important choice: auto-reboot.
# This should be fine since Rocketpool auto-starts on reboot.
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Değişikliklerinizi eklemeyi bitirdiğinizde, Ctrl+O ve Enter ile kaydedin, ardından Ctrl+X ile çıkın.

Sonrasında, yeni ayarları yüklediğinizden emin olun:

sudo systemctl restart unattended-upgrades

TEMEL: Güvenlik Duvarı Etkinleştirme

Genel olarak, makineniz yalnızca Execution istemcinizin, Consensus istemcinizin ve Smartnode yığınınızın kullandığı bağlantı noktalarında ağ trafiğini kabul etmelidir. Bunu uygulamak ve beklenmedik veya istenmeyen trafiği önlemek için node'a bir güvenlik duvarı kurabiliriz.

NOT

Rocketpool kurulumu sırasında farklı bir execution/consensus istemci portu seçtiyseniz, ayarlarınızı yansıtacak şekilde aşağıdaki portları düzenlemeniz gerekir.

Ubuntu varsayılan olarak ufw (uncomplicated fire wall) ile birlikte gelir; bu, node'unuzun güvenlik duvarı ayarlarını yönetmek için kullanışlı bir yardımcı programdır.

Aşağıdaki komutlar ufw'yi Smartnode'unuz için iyi bir varsayılan yapılandırmayla kuracaktır. Bunları node makinenizde çalıştırın.

Sonraki kurallarca açıkça izin verilmedikçe bağlantıları devre dışı bırakın:

sudo ufw default deny incoming comment 'Deny all incoming traffic'

SSH'ye izin verin:

sudo ufw allow "22/tcp" comment 'Allow SSH'

Execution istemcisine izin verin (eski adıyla ETH1):

sudo ufw allow 30303/tcp comment 'Execution client port, standardized by Rocket Pool'
sudo ufw allow 30303/udp comment 'Execution client port, standardized by Rocket Pool'

Consensus istemcisine izin verin (eski adıyla ETH2):

sudo ufw allow 9001/tcp comment 'Consensus client port, standardized by Rocket Pool'
sudo ufw allow 9001/udp comment 'Consensus client port, standardized by Rocket Pool'

Lighthouse istemci v4.5.0+ çalıştırıyorsanız, gecikmeyi azaltmak / bant genişliğini artırmak için quic protokolünü kullanabilirsiniz, quic protokolü varsayılan olarak lighthouse'un --port + 1'ini quic mesajlarını dinlemek için kullanır: https://lighthouse-blog.sigmaprime.io/Quic,%20Networking.html

sudo ufw allow 8001/udp comment 'Consensus client port, standardised by Rocket Pool'

Son olarak, ufw'yi etkinleştirin:

sudo ufw enable
NOT

iptables uzmanları Docker'ın ufw ayarlarını atladığını fark edebilir. Kesinlikle konuşursak, bu Hybrid modda çalışmıyorsanız Execution ve Consensus istemci kurallarına ihtiyacınız olmadığı anlamına gelir. Ancak bunları eklemek hiçbir dezavantajı yoktur ve Hybrid moda geçerseniz güvenlik duvarı sorunlarıyla karşılaşmamanızı sağlar.

(İsteğe Bağlı) Kaba Kuvvet ve DDoS Korumasını Etkinleştirme

Sunucunuzu DDoS saldırılarından ve kaba kuvvet bağlantı girişimlerinden korumak için fail2ban kurabilirsiniz. Bu program gelen bağlantıları izler ve tekrar tekrar hatalı kimlik bilgileriyle giriş yapmaya çalışan IP adreslerini engeller.

Saldırı önleme hakkında daha fazla bilgi için bu kılavuza bakın.

Node makinenizde aşağıdaki komutları çalıştırın:

Hizmeti kurun:

sudo apt install -y fail2ban

Ardından, /etc/fail2ban/jail.d/ssh.local dosyasını açın:

sudo nano /etc/fail2ban/jail.d/ssh.local

Aşağıdaki içeriği ekleyin:

[sshd]
enabled = true
banaction = ufw
port = 22
filter = sshd
logpath = %(sshd_log)s
maxretry = 5

maxretry ayarını değiştirebilirsiniz, bu ayar saldırgan adresi kilitlemeden önce izin vereceği deneme sayısıdır.

İşiniz bittiğinde, Ctrl+O ve Enter ile kaydedin ve çıkın, ardından Ctrl+X.

Son olarak, hizmeti yeniden başlatın:

sudo systemctl restart fail2ban

Ve bununla, node'unuzun güvenlik duruşunu büyük ölçüde iyileştirdiniz. Tebrikler!