Bir üretim sunucusunun kurulu olması güvenli midir?


42

Sanal sunucu örneklerinin kurulumu sırasında bazı uygulamaların kullanılarak oluşturulmasını istiyorum make. Yüklemeyle ilgili herhangi bir güvenlik riski var makemı? Veya örnek dağıtılmadan önce temizlemeli miyim?

Ayrıca, gcckonuşlandırmadan önce uygulamaları oluşturmak için kullandığım sunucuda derleyici var .


4
Kendinizi daha iyi hissetmenizi sağlarsa, herhangi bir yere yüklenen herhangi bir yazılım parçası bir güvenlik açığına neden olur.
MDMoore313

1
Ve bir sunucuya root olmayan kabuk erişimi olan biri, kurulmasına gerek kalmayacak bir "distro bağımsız" derleyici paketini (.tar.gz)

1
Bana mı öyle geliyor, yoksa "güvenli mi?" ve "root erişimi" oldukça rahatsız edici ?
DNA,

2
Zaten kurulu olan gcc'niz varsa, potansiyel güvenlik sorununu daha da kötüleştirmenin hiçbir yolu yoktur.
Shadur

1
@Shadur GCC'nin sahip olması ne fark eder? Kullanıcı makineye zaten erişebiliyorsa, gcc'nin herhangi bir kopyasını önemsiz olarak yükleyebilir. Her neyse, gcc, ayrıcalıklı olmayan kullanıcılar tarafından kullanılmadığı sürece, ayrıcalıklı olmayan kullanıcılar için yararlı olabilir ve güvenlik riski taşımayabilir.
Vality

Yanıtlar:


50

Bazı insanlar bir üretim makinesindeki geliştirme araçlarının varlığının bir saldırganın hayatını kolaylaştıracağını iddia edecekler. Ancak bu, bir saldırgana giden ufak bir yol patlamasıdır, geliştirme araçlarını kurmak için veya aleyhine bulabileceğiniz herhangi bir argüman daha ağırlaşacaktır.

Bir saldırgan sisteme şu ana kadar girebildiyse, sunucuda ne tür bir araç bulunduğunu çağırabilirlerse, o zaman zaten ciddi bir güvenlik ihlali yaşarsınız. Geliştirme araçları olmadan, ikili verileri bir dosyaya yazmanın ve o dosya üzerinde bir chmod çalıştırmanın birçok yolu vardır. Bu noktada sistemde çalıştırılabilir bir özel yapı kullanmak isteyen bir saldırgan, bunu kendi makinelerinde derleyip sunucuya aktarabilir.

Dikkat edilmesi gereken daha başka önemli şeyler var. Yüklü bir yazılım parçası bir güvenlik hatası içeriyorsa, saldırgana maruz kalmasının birkaç yolu vardır:

  • Paket, bir suid veya sgid çalıştırılabilir içerebilir.
  • Paket sistemde hizmet vermeye başlıyor olabilir.
  • Paket, belirli koşullar altında otomatik olarak başlatılan komut dosyalarını yükleyebilir (bu, cron işlerini içerir; ancak, örneğin bir ağ arabiriminin durumu değiştiğinde veya bir kullanıcı oturum açtığında, komut dosyaları başka olaylar tarafından da başlatılabilir).
  • Paket cihaz inode'larını yükleyebilir.

Geliştirme araçlarının yukarıdakilerden biriyle eşleşmesini beklemiyorum ve bu nedenle yüksek riskli bir paket değil.

Geliştirme araçlarını kullanacağınız iş akışlarınız varsa, önce bunların makul iş akışları olup olmadığına karar vermelisiniz ve eğer öyleyse, geliştirme araçlarını kurmalısınız.

Sunucuda bu araçlara gerçekten ihtiyaç duymadığınızı tespit ederseniz, bunları çeşitli nedenlerle kurmaktan kaçınmalısınız:

  • Hem sunucuda hem de yedeklerde disk alanı kazandırır.
  • Daha az yüklü yazılım, bağımlılıklarınızın neler olduğunu izlemeyi kolaylaştırır.
  • Pakete ihtiyacınız yoksa, güvenlik riski çok küçük olsa bile, kurulmasından kaynaklanan ek güvenlik riskini almanın bir anlamı yoktur.

Güvenlik nedeniyle, ayrıcalıklı olmayan kullanıcıların sunucuya kendi çalıştırılabilir dosyalarını koymalarına izin vermezseniz, kaçınmanız gereken şey geliştirme araçları değil, yürütme izinleri bulunan dosya sistemlerinde bu kullanıcılara yazılabilir dizinlerdir. Bu koşullar altında bile geliştirme araçlarının kullanımı hala olabilir, ancak bu pek olası değildir.


6
Buna bazı üretim sistemlerinin yorumlanmış koda (örneğin, PHP, Perl, Python, ...) dayandığını eklerdim. Bu bağlamda geliştirme araçlarını yasaklamak mantıklı olmaz. Derleyicilerin gccbunlardan daha yüksek bir risk oluşturmayacaklarını düşünürdüm . Söylediğiniz gibi, bir sistemde kurulu derleyicileri kullanacak konumda olan bir saldırgan genellikle kendi (muhtemelen statik olarak bağlı) çalıştırılabilir dosyalarını yüklemek gibi daha da kötü şeyler yapacak bir konumda olacaktır.
Bruno,

3
İlgili: wget'in küçük bir sürümü (51 bayt?) . Aşağıdaki echoifadeleri kullanarak bir dosyayı sunucuya taşıyan bir saldırganın gerçek hayattan bir örneği . Tüm süreç aynı linkte bulunan bir betik ile otomatikleştirilmiştir.
Adi,

2
@Adnan, ilginç. Söyleyebileceğim kadarıyla, bu DVR örneğindeki ana güvenlik açığı, saldırganın ilk etapta 123456 şifresiyle ona root olarak ulaşabileceği gerçeğidir. (Saldırıdan önce) wget veya diğer araçlara sahip olmak veya sahip olmamak, gerçekten de pek alakalı değildir.
Bruno,

15

make'den farklı bir sözdizimine sahip bir kabuktur bash.

Bir derleyici benzeri gcc, awkstandardın awkdesteklemediği bir dizi değiştirme ile yapılandırılmış güçlüdür . POSIX uyumlu değildir sortveya catçıktıya çöp enjekte eder. viBaşlangıçta bazı düzenlemeler yapmak için yapılandırılmış etkileşimli bir metin editörüdür (düşünür ), daha sonra kullanıcı arayüzünü göstermeden önce çıkar.

İçlerinde doğal olarak güvensiz bir şey yoktur, onlar makinenizi bash + cat+ kabuk yönlendirmesine sahip olduğunuzdan daha güvensiz yapmazlar .


2
Zen bir cevap, nasıl değerlendireceğimi bilmiyorum.
kasperd

4
@ kasperd Bu yanıtın ciddi olması amaçlanmıştır. Bir programcının bakış açısını getirmenin faydalı olabileceğini düşündüm. Bir girişi çıktıya çeviren bir işlev, çıktısı CPU tarafından anlaşılabilir bir formatta olduğu için bir güvenlik açığı oluşturmaz.
ignis

1
Yaptığın konuya katılıyorum. Bence cevabınız zaten ona katılmış olan herkes için harika bir okuma. Ben sadece cevabınızın buna katılmayan birine şaka olarak gelebileceğinden endişe ediyorum.
kasperd

Bu cevabı kabul edilen cevaptan daha çok seviyorum :)
Ruslan

15

makekendisi iyi. makesadece bir bağımlılık izleme ve otomasyon çerçevesidir. Genellikle, derleyicilerle birlikte kullanılır ve tercih edilen bir şekilde, tamamen gerekli olmadıklarından bir üretim sisteminde bulunmamalıdır. Aynı şey, ihtiyaç duyulmayan tüm paketler için de geçerlidir; bunlar paylaşılan kütüphaneler, tercümanlar, vb. Olsun. Üretim sistemlerine yüklenen yazılımlar kesinlikle kontrol edilmeli ve yalnızca uygulama için gereken paketler mevcut olmalıdır.

Uygulamanızı bir yapı sunucusunda oluşturmalı, paketlemeli ve ardından ikili paketi üretim sisteminize yerleştirmelisiniz.

Not: yerel paketleme aletleri emmek . Onları kırmaya çalışırken bile canını sıkma. Bunun yerine, Jordan Sissel's'i kontrol edin fpm. Ambalajı mutlak bir keyif haline getirir.


8
Burada meraktan ve cehaletten rica ediyorum: Neden derleyicilerin varlığının “önemli bir güvenlik sorunu” olduğunu söylüyorsunuz? Bir derleyicinin kurulmasında güvenlik sorunu nedir? Bu sadece sizin kodunuzu ilk önce bir üretim sunucusunda oluşturmamanız gerektiği ve bu nedenle derleyicinin gereksiz olduğu ya da derleyicinin varlığında önemli bir güvenlik sorunu var mı?
reirab

11
Uygulamalarınızı ayrı bir sunucuda oluşturmak iyi bir fikir olsa da, bir üretim sistemindeki derleyicilerin varlığının önemli bir güvenlik sorunu olduğunu söylemek mantıklı değil. Betik dilleri ve JIT-derlenmiş sistemler (Perl, Python, Java, ...)?
Bruno,

3
Bir üretim ortamında derleyicilerinin varlığı değil "önemli bir güvenlik riski". Ben kendim echove 'yi kullanarak ikili dosyaları ele geçirdik base64. Aslında, bir dizi echoifadeyle ve başka bir araçla bile yapamazsınız .
Adi,

1
Herkese iyi puanlar. Açıklığa kavuşturmak için cevabımı düzenledim.
AÇA

9

Aksine, potansiyel sorun makeüretim sunucusunda olmamakla değil , potansiyel sorun, test edilmiş önceden oluşturulmuş görüntüleri dağıtmak yerine uygulamaları üretim sunucusunda oluşturmaktır. Bu metodolojinin geçerli nedenleri olabilir, ancak buna şiddetle karşı çıkacağımı iddia etmem istendi.


4

makeBir üretim sunucusuna kurulup kurulmayacağını soruyorsunuz , fakat benim asıl sorum şu olacaktır: Bu üretim sunucusuna kimlerin erişimi var ve bir saldırı ile uğraşmak için ne gibi önlemleriniz var? Eğer makeyüklü ama birisi kazanç değildi rooterişim, tahmin et ne oldu? Manuel olarak makeve istedikleri her şeyi kurabilirler .

İstenmeyen erişimi engellemek istediğiniz kadar bilgisayar güvenliği ile ilgili gerçekler, erişimi engelleme konusunda takıntılı olmak şu kadar önemli değildir:

  1. Sunucuya kim erişebilir?
  2. Aradan sonra geri almak için ne yapabilirsiniz?

Bunların hepsi ne tür bir iş yaptığınıza bağlı. Öncelikle web sunucusu dünyasında çalışıyorum ve benim tutumum temelde, üretim sunucusuna benden erişim sağlayan herkesin yetenek, bilgi ve olgunluk sağlaması gerekiyor. Bu kadar. Bazen birkaç gün sürer. Bazen aylar sürer. Ancak, temel olarak, üretim sunucularındaki en iyi güvenlik hattınız, sunucuları sertleştirmek için yaptığımız diğer birçok şeyin üstündeki erişimi kontrol etmektir.


1

makekendisi zararsızdır. Tek yaptığı uygulamaları, belirlediğiniz bağımlılıklara ve sistemde hangi dosyaların mevcut olduğuna bağlı olarak, belirli bir düzende uygulamaları çalıştırmaktır. Yükleme işleminin bir parçası olarak bile faydalı olabilir: önceden oluşturulmuş dosyaları gitmeleri gereken yere koymak veya birim sınamalarını veya diğer şeyleri çalıştırmak için kullanabilirsiniz.

Ancak, tam olarak ne için kullanmak istediğinizi düşünmeniz gerekir . Genellikle uygulamalar oluşturmak için derleyici ve diğer araçlar ile birlikte kullanılır ve bu savunma için bazı satırları geçersiz kılmak için kullanılabilir. Ancak make, araçlar mevcut değilse bunları yapamazsınız.

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.