80 numaralı bağlantı noktasını nasıl açarım, böylece kök olmayan bir işlem buna bağlanabilir?


46

Mac'imde bir web sunucusunu root olmayan bir işlem olarak çalıştırmak istiyorum. Normalde yalnızca kök işlemleri 80 numaralı bağlantı noktasına (veya 1024'ün altındaki herhangi bir bağlantı noktasına) bağlanabilir.

80 numaralı bağlantı noktasını özellikle root dışı işlemlerin dinleyebilmesi için açabilir miyim?



daha unix.stackexchange.com soru gibi, değil mi?
Filip Bartuzi

1
Bir macos sisteminde ise neden unix?
Aralık'ta

Yanıtlar:


27

Bu, tasarım gereği zordur ve makinenize kök erişiminiz yoksa, aşağıdakilerin hiçbiri değişikliklerin yapılması için kök gerektirdiğinden işe yaramaz. Yine de bir kez değiştiğinde, kullanıcı alanı programları root kullanmadan erişebilecek.

Bunu başarmanın iki yaygın yolu vardır ve hangisini seçerseniz seçin, kısıtlamaya neden çalışmak istediğinize bağlı olacaktır:

Bağlantı noktası 80'i 8080 gibi başka bir bağlantı noktasına yöneltin

Makinenizi, tüm 80 bağlantı noktasını trafiği 8080 bağlantı noktasına ya da seçtiğiniz herhangi bir bağlantı noktasına geçirecek şekilde yeniden yapılandırarak, kullanıcı alanı sunucularına, erişim izni verilen alanda kök ayrıcalık bağlantı noktaları alma izni verebilirsiniz.

İşlem basittir:

Adım 1: Geçerli güvenlik duvarı kurallarını görüntüleyin.

sudo ipfw show

Adım 2: Bağlantı noktası iletme kuralı ekleme (80 - 8080)

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

Güvenlik duvarı kurallarınızı kaldırmak istiyorsanız çalıştırın:

sudo ipfw gömme

( kaynak )

Bu geçici bir değişikliktir ve en son satırda belirtilen şekilde yeniden başlattığınızda ya da temizlediğinizde geri döner.

Sen edebilirsiniz değişikliği kalıcı hale veya güvenlik açısından daha güvenli olan sunucu, başlatmadan önce bir başlangıç çizgisi olarak komutunu ekleyebilirsiniz.

Authbind kullanın

Authbind, bir programın tam root erişimi vermeden daha düşük seviyeli portlara erişimine izin vermek için özel olarak tasarlanmıştır.

OS X bağlantı noktası var:

https://github.com/Castaglia/MacOSX-authbind

Yine de IPv4 trafiği ile sınırlı olabilir, ancak gereksinimlerinizi karşılayıp karşılamadığını bulmak için ek araştırma yapmanız gerekebilir.


LOVE MacOSX-authbind ... Örneğin, 80 numaralı bağlantı noktasındaki bir web sunucusunu "normal Yönetici" olarak çalıştırmanıza izin verir. yani senin içinde launchd .plist... ` "ProgramArguments": [ "path/to/authbind", "/usr/bin/php", "-c", "/www/.router.ini", "-S", "0.0.0.0:80", "-t", "/www", "/www/.router.php"]Woohoo!
alex grey

13
OS X Yosemite kaldırır ipfw. Bu boşluk kullanarak alternatif bir çözümü tarif eder pf.
saat

Paylaşılan bir ortamdaysanız trafiği ayrıcalıklı olmayan bağlantı noktasına yeniden yönlendirmenin güvensiz olabileceğini unutmayın; başka bir işlem programınızdan önce bu bağlantı noktasına bağlanabilir ya da programınız hızlı bir şekilde yeniden başlatmak için bağlantı noktasını anlık olarak çözerse bile.
Lie Ryan,

authbind ist gerçekten harika bir çözüm, teşekkürler!
15’te

7

ncatTrafiği, başka bir bağlantı noktasında çalışan bir web sunucusundan iletmek için kullanabilirsiniz :

sudo ncat -l -p 80 -c ' ncat -l -p 1234'

Bu, 80 numaralı bağlantı noktasında trafiği localhost'a iletecektir: 1234. Bu biraz küflüyse de, hızlı testin ötesinde ve kesinlikle üretimde kullanmam.

Bunun kök olmayan bir işlemin buna bağlanmasına izin vermeyeceğini unutmayın, ancak bu örnekte işlemin bağlanabileceği bir bağlantı noktası seçerek, bu örnekte 1234, bağlantı noktası 80'e bağlanmış gibi görünecektir. 80 numaralı bağlantı noktasını bir güvenlik duvarıyla 1234 numaralı bağlantı noktasına iletmek, ancak çok daha geçici olarak iletmek.


2
Bu iyi bir geçici çözümdür. NB. ncatberaberinde nmapMac Port'lar ile kurulabiliyor sudo port install nmap. MacPorts'un kendisi macports.org/install.php adresinden yüklenebilir .
William Denniss

Bu sadece bana cilt verir: adres zaten kullanımda olan hataları.
Matt Joiner

Burada aynı - işe yaramadı. İşin
Sebastian J.

2

Port yönlendirme yapmak için ssh kullanabilirsiniz. Bu nedenle, 8080'de çalışan bir sunucunuz varsa, trafiği bağlantı noktası 80'den iletebilirsiniz. İşte, kullandığım ve trafiği ileten yerel apache'yi durduran bir komut dosyası:

forward8080to80.command:

echo "You may close this terminal and the forwarding will continue."
echo "To stop, kill the ssh process found by `sudo lsof -i ':80' | grep LISTEN`"
sudo apachectl stop
sudo ssh user@127.0.0.1 -L 80:127.0.0.1:8080

Ssh port yönlendirme oldukça düşük performansa sahip olabilir ve güvenlik özellikleri yerel> yerel bir ortamda pek bir anlam ifade etmemektedir. Osx'in yerleşik port yönlendirme veya ncat gibi bir şey kullanması daha iyi.
Shayne

-3

Yapmanız gereken şey yönlendiricinizdeki 80 numaralı bağlantı noktasını açmak ve web sunucunuzun yerel IP adresine yönlendirmektir. Ardından Mac'inizde, Sistem Tercihleri> Paylaşma tercih bölmesinden Web Paylaşımı'nı etkinleştirin ve seçtiğiniz dizine işaret edin. Geçmişte 10.6 Sunucuya geçene kadar bu benim için çalıştı.


1
Bunu kendi makinem için bir çözüm olarak arıyorum. Yönlendirici üzerinde kontrolüm olmadığı yerlerde çalışmak zorunda kaldığım için bu çözüm benim için işe yaramadı. Bir sunucu kuruyorsanız çalışması gerektiğinden şüpheleniyorum ve nedense kök erişimi yok.
Avner

Yani, açık olmak gerekirse, farklı istemci sitelerinde bir web sunucusu kurmaya çalışıyorsunuz, ancak 80 numaralı bağlantı noktasını açmaya erişiminiz yok mu? Erişiminiz yoksa, bağlantı noktasını yönlendirici üzerinde nasıl açacaksınız? Doğru mu anladım ya da temelden uzak mıyım?
Matt Love

Sadece 80 numaralı bağlantı noktasını bir üretim sunucusunda değil kendi geliştirme makinemde kullanmaya çalışıyorum. Zaten heroku üzerinde konuşlandırıyorum.
Avner
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.