İnternete bağlamadan önce izinsiz girişlere ve zararlı yazılımlara karşı nasıl koruyabilirim (özellikle genel bir IP adresinde)?


60

Vahşi doğada çok sayıda Raspberry Pis ile ve bunların büyük gruplarının aynı şekilde yapılandırılmış olmaları ile (yeni flaşlı bir SD kart mevcut az sayıdaki görüntüden birine takıldığında), bunlar için cazip bir hedef olabilirler. botnet'ler dahil olmak üzere kötü amaçlı yazılım.

Bunu azaltmak için ne yapılabilir?

Birinin "pi" kullanıcısı (Debian) ve "root" (Arch.) Şifresini değiştirmesi gerektiği iyi bilinir. Fakat diğer sistem hesaplarına ne dersiniz (örneğin, "tli", "pnd"?) tüm birimler için muhtemelen aynı olan evrensel şifreler?

Ve Pi için mevcut olan SD görüntülerinde kurulu olan diğer paketlerdeki bilinen güvenlik açıkları var mı (ör. Donanım kısıtlamaları ya da bu paketlerin azaltma sürümleri nedeniyle)?

Özellikle ssh, mysql ve yeni kurulmuş bir görüntü üzerinde çalışabilecek diğer tüm servisler hakkında endişeliyim .

Yanıtlar:


23

Debian Squeeze image hisse senedi hakkında şu ana kadar farkettim:

  • / etc / shadow, pi hesabı olmayan hesaplar için bir sürü şifre karma içerir (buildbot, etc). Pi hesabınızdaki şifreyi, tabii ki, henüz yapmadıysanız (veya kendiniz için yeni bir kullanıcı hesabı açıp pi hesabını sildikten sonra) değiştirin, ancak diğer girişleri de düzenleyin ve karmaları * s ile değiştirin. Not / etc / passwd, adduser / deluser dışında kalanları karıştıran pi hesabı için yinelenen girişler içeriyor, sadece birini silin.

  • varsayılan ssh daemon yapılandırması uzaktan kök girişine izin verir. Bu devre dışı bırakılmalıdır.

  • bağlantıları dinleyen şeyleri kontrol etmek için netstat kullanmaya değer; tipik bir asgari Debian netinst'iyle karşılaştırıldığında şaşırtıcı miktarda malzeme çalışıyor. İhtiyacınız olan şeylere maruz kalmayı azaltmak genellikle iyi bir fikirdir , bu nedenle ilk önce her şeyi devre dışı bırakın veya güvenlik duvarını kapatın , sonra sadece kamuya açık olarak kasten görünür olmasını istediğiniz hizmetleri gösterin (genellikle sadece ssh veya ssh + http).

  • Görüntüdekileri kullanmak yerine ssh ana bilgisayar tuşlarını değiştirmek isteyeceksiniz (AIUI en son görüntü aslında ilk açılışta onları yeniden oluşturur)


1
İlk ifadenle ilgili problemi görmüyorum. Bu ek kullanıcılar ne için? Giriş için devre dışı bırakılmaları gerekmiyor mu? suOnlara deneyerek kontrol edebilirsiniz.
Jivings

2
Bu -1 vereceğim. Esas olarak, gölge dosyasını el ile düzenlemenizi önerirsiniz. Bu çok kötü bir fikir.
Jivings

@Jivings Hayır o değil. O kullanmak kadar iyi ima edebilir vipw; Bu kötü bir fikir mi? Hayır değil. Kullanarak ima etmek için +1 vipw.
user2497,

41

Güvenlik açıklarını ele almanın birçok yolu vardır, ancak bilmeniz gereken ilk şey, Linux'un diğer İşletim Sistemleri gibi izinsiz girişlere duyarlı olmamasıdır. Bu, temel olarak * NIX'i hedefleyen kötü amaçlı yazılımların bulunmamasından kaynaklanmaktadır. Bununla birlikte, sisteminize nasıl erişilebileceğini bilmek istersiniz.

Şifreler

Öncelikle giriş yapabilen herhangi bir kullanıcı için varsayılan şifreleri değiştirmelisiniz. Debian için bu sadece varsayılan kullanıcı Pi'dir . Arch Linux için bu süper kullanıcı köküdür . Parolalar kullanıcı olarak oturum açtığında passwdkomut satırına yazılarak değiştirilir .

Varsayılan parolanıza kaba kuvvet sözlüğü saldırıları yapmak oldukça basit olacağından güvenli bir parola ilkesi önerilir. Düzgün, orta uzunlukta bir şifre seçin.

bilinmezlik

Uzaktan erişim muhtemelen en önemli güvenlik açığıdır. Burada kullanabileceğimiz şey belirsizlikten güvenlik olarak adlandırılır . Yaygın bir saldırı yöntemi, açık portlar için bir dizi IP adresini taramaktır. Bu yüzden alabileceğimiz en basit önlemlerden biri, varsayılan portları kullanmayan bir kullanıcı olmak .

Burada yapılması gereken tek şey, yaygın olarak kullanılan protokoller için varsayılan portları değiştirmektir. Örneğin, varsayılan SSH portu 22 ve FTP 21'dir. Sistemimde SSH, bu protokolleri herhangi bir otomatik saldırıdan gizlemek zorunda olan 222 ve FTP 221'i kullanır.

Bağlantı Güvenliği

Öncelikle, en önemli güvenlik endişesi kök hesabı gerektiğidir değil SSH ile giriş yapmaya muktedir. /etc/ssh/sshd_configBu satırı yorumlayarak veya kaldırarak dosyadaki kök girişini devre dışı bırakabilirsiniz :

PermitRootLogin yes

Varsayılan olarak hayır olarak ayarlanmalıdır, ancak emin olmak en iyisidir.


Çok fazla SSH kullanıyorsanız ve orta saldırılardaki adam için endişeleniyorsanız, şifrenizle ilgili sözlük saldırıları yaparsanız, o zaman kullanabilirsiniz SSH Keys.

Anahtar tabanlı kimlik doğrulama, şifre kimlik doğrulamasına göre birkaç avantaja sahiptir; örneğin, anahtar değerlerin kaba kuvveti zorlamak, düz şifrelerden çok daha zordur.

SSH anahtar doğrulamasını ayarlamak için önce anahtar çiftini oluşturmanız gerekir. Bu, istemci makinenizde (Pi'ye erişmek istediğiniz makine) en kolay şekilde yapılır.

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.

Gördüğünüz gibi, bu iki dosya yarattı, özel anahtar id_rsave genel anahtar id_rsa.pub.

Özel anahtar yalnızca sizin tarafınızdan bilinir ve güvenli bir şekilde korunmalıdır . Buna karşılık, genel anahtar, bağlanmak istediğiniz herhangi bir SSH sunucusuyla serbestçe paylaşılabilir.

Öyleyse yapmak istediğimiz, genel anahtarı Ahududu Pi'ye kopyalamak . Bunu çok kolay bir şekilde yapabiliriz:

ssh-copy-id pi@address

Nerede piAhududu Pi kullanıcı adı ve addressPi IP adresidir.

Tekrar ediyorum, genel anahtarı dağıtıyoruz . Özel anahtar sizindir. Bu anahtarı serbest bırakmak için sıkıca tutun, sistemin güvenliğini bozar.

Arch Wiki Bunun nasıl mükemmel bir açıklama vardır:

Bir SSH sunucusu dosyada ortak anahtarınız olduğunda ve bir bağlantı istediğinizi gördüğünde, size bir meydan okuma oluşturmak ve göndermek için ortak anahtarınızı kullanır. Bu zorluk kodlanmış bir mesaj gibidir ve sunucu size erişim izni vermeden önce uygun yanıtla karşılanmalıdır. Bu kodlanmış mesajı özellikle güvenli kılan şey, yalnızca özel anahtarı olan biri tarafından anlaşılabilmesidir. Açık anahtar, mesajı şifrelemek için kullanılabilirken, aynı mesajın şifresini çözmek için kullanılamaz. Özel anahtarın sahibi yalnızca siz, sorunu doğru anlayabilecek ve doğru cevabı verebileceksiniz.

Genel anahtar kimlik doğrulamasının güvenliği hakkında daha fazla bilgi için Wikipedia'nın kapsamlı bir açıklaması vardır .

SSH güvenliğiyle, çok miktarda şifreli, güvenli veri aktarımı yapabilirsiniz. Pratik olarak, diğer tüm bağlantı noktalarının bağlantısı gerektiğinde SSH üzerinden yönlendirilebilir. X oturumunu SSH üzerinden de ileri sürerek başka bir makinede görünmesini sağlayabilirsiniz.

İlginç bir örnek olarak, dün Masaüstümde Eclipse kullanıyor, Raspberry Pi'mde görüntülüyordum ve fare ve klavyeyi Netbook'umdan kontrol ediyordum. SSH'nin gücü budur.

İzinler

Dosya izinleri, Linux güvenlik sisteminin bir parçasıdır. Dosyalarınızı ve klasörlerinizi kimin görebileceğini etkiler ve verilerinizi korumada çok önemli olabilirler. Örneğin, Raspberry Pi’ye normal bir kullanıcı olarak giriş yapın ve şunları çalıştırın:

cat /etc/shadow

shadowDosya sisteminde kullanıcılar için şifrelenmiş parolaları içerdiğinden, onu ona bakmak için kimse hakkında sadece istemem! Yani bu cevabı görmelisin:

cat: /etc/shadow: Permission denied

Bunun neden dosya izinlerine bakılarak olduğunu görebiliriz:

ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow

Bu bize dosyanın root'a ait olduğunu ve sadece sahibinin okuma / yazma izinlerine sahip olduğunu söyler. Bu çıktıyı kıralım.

-rw-------

Bu izinlerin durumu. İlk bit bize dosyanın türünü söyler ( -normal dosya anlamına gelir). Sonraki üç bit , dosya sahibinin kullanabileceği işlemleri temsil eder . İkinci üç bit grubu temsil eder ve son üç diğer veya herkes içindir. Böylece tam izinlere sahip bir dizin şöyle görünür:

drwxrwxrwx  10 root root   280 Jun 20 11:40 tmp/

Bu, sahibi, grubu ve diğer herkes için izinleri okur, yazar ve yürütür.

Bir sonraki önemli kısım iki isimdir. Bizim durumumuzda root root. İlk kullanıcı dosyanın sahibi . İkincisi, kullanıcı grubu . Mesela şunları görmek yaygın olurdu:

drwxr-xr-x  10 pi users   280 Jun 20 11:40 home/pi

Bu, kullanıcının pikendi dizininde okuma / yazma erişimine ve diğer tüm kullanıcılar için okuma erişimine izin verir .

Sekizlik değerler kullanılarak en sık belirtilen ve kontrol edilen izinler. Örneğin, sadece sahibi için rw ayarlamak istiyorsak şunu yazarız:

chmod 600 /path/to/file

Bu, Linux dosya izinleri hakkında daha fazla bilgi için temel bir genel bakış, işte size güzel bir makale.


Bu anlayış, dosya ve klasörleri güvence altına alırken önemlidir. Örneğin, az önce SSH anahtarlarını kurduğumuzu söyleyin. Kesinlikle başka kullanıcıların ~/.sshdizinimizde görmesini istemiyoruz , ya da özel anahtarımızı alabilecekler. Böylece onların okuma ayrıcalıklarını kaldırıyoruz:

chmod 700 ~/.ssh
ls -la ~/.ssh 
drwx------   2 james users  4096 Jun 18 03:05 .

Umarım bu, Linux’u güvenceye alma konusundaki endişelerinizi giderir. Bundan oldukça güvenli bir sistem olduğunu görebilmelisiniz ve dikkatli olursanız güvenlik sorunlarınız olmamalıdır.


10
Müstehcen sözlerinize katılmıyorum, cihazınızda açık olan bağlantı noktalarını eşleştirmek ve ssh sunucunuzu bulmak birkaç saniye sürer. Parola girişlerini devre dışı bırakın ve normal bağlantı noktalarına bağlı kalın. Hiç ftp'ye ihtiyacınız olduğundan şüpheliyim, bunun yerine scp kullanın.
Alex Chamberlain,

2
@AlexChamberlain Saldırganlar için geçici bir çarpmadır, ancak hiçbir şekilde yalnız bir çözüm değildir.
Jivings,

4
Varsayılan bağlantı noktalarının değiştirilmesi, genellikle sözlük saldırılarına yol açan daha düşük kapı çalma eğilimindedir. Tabi bunun çok küçük bir güvenlik önlemi olmasına rağmen, diğer avantajları da var. Güvenlikten daha önleyici bir eylemdir ancak yine de değerlendirmeye değer.
Beeblebrox

2
@AlexChamberlain, debian ssh key debacle sırasında 22 numaralı limanda birçok girişimi denedik ve hiçbiri başka bir yerde olmadı. Bu durumda, bilgisayar korsanları sömürülen ev sahiplerinden hangisinin değerli olduğunu bulmaya çalışırken farklı bir limanda koşmak size çok zaman kazandırırdı. Saldırgan sizi özellikle hedefliyorsa, SBO neredeyse hiç yardımcı olmuyor.
John La Rooy,

1
Katılıyorum. Anlatmak sadece değil olmasıydı thereotical - SBO kesinlikle son hafızasında bir zaman olmamıştır yaptığı yardım ve yapılan önemli bir fark.
John La Rooy,

6

Bruteforce saldırılarını önlemek için kurabilir ve yapılandırabilirsiniz fail2ban. Günlük dosyalarını (örneğin /var/log/auth.log) ayrıştırır ve birkaç giriş girişiminin başarısız olup olmadığını tespit etmeye çalışır. Ardından, kaynak IP adreslerini ile otomatik olarak yasaklayacaktır iptables.

İnternette bir sürü insan var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.