İçeriğe atla
ColliePWA

02/Documentation

Güvenlik: çalıştırmadan önce okuyun

Bir Collie'nin dışa açtığı alanlar, savunmalar ve bir cihazı yazma kimlik bilgisi olarak eşleme

Collie, tasarımı gereği makinenize uzaktan kabuk erişimi sağlar. Tek bir Collie API çağrısı, rastgele tuş vuruşlarını doğrudan canlı bir terminal bölmesine gönderir. URL'ye ağ erişimi olan herkes her bölmeyi okuyabilir (kaynak kodu, gizli anahtarlar, ortam değişkenleri, aracı çıktısı) ve kullanıcınız olarak komut çalıştırabilir.

Herhangi bir yalıtılmış alan (sandbox) ve komut izin listesi yoktur; çünkü komutları filtrelemek aracın amacını geçersiz kılar. URL'ye bir root girişi gibi yaklaşın.

Bir aygıtı eşleyin: yazma kimlik bilgisi

# on the host — prints an 8-character code and a QR code, good for 10 minutes
bin/collie pair

Bu işlem yalnızca yazma yolunu kapatır; açık bıraktığı kısımları aşağıdaki risk modeli kapsar.

Telefonda Collie uygulamasını açın, AyarlarEşlenmiş aygıtlar yoluna gidin ve aygıt için bir etiketle birlikte kodu girin ya da doğrudan bu ekranı kod doldurulmuş halde açmak için komut tarafından yazdırılan QR kodunu tarayın. Telefon, dönen belirteci saklar. Collie yalnızca özeti tutar ve belirteç bir kez görüntülenir. İşlemi yeniden başlatmanız gerekmez; çalışan arka plan programı eşlemeleri ve iptalleri bir sonraki istekte uygular.

İki aygıt denetimi farklı soruları yanıtlar; herhangi birini, ikisini birden veya hiçbirini çalıştırabilirsiniz:

sorargüveniriptal yöntemi
COLLIE_DEVICE_HEADERbu aygıt operatörün listesinde mi?vekil sunucunuza, arındırdığı bir adı eklemesi içinCOLLIE_DEVICE_ALLOWLIST dosyasını düzenleyip yeniden başlatarak
eşlemebu aygıt düzenlediğim bir kimlik bilgisini taşıyor mu?ağdaki hiçbir şeyecollie devices revoke <label>: anında

Eşleme ek bir altyapı gerektirmez. Üstbilgi ekleyecek bir vekil sunucunun bulunmadığı doğrudan bir tailscale serve kurulumuna uygundur.

Her iki seçenek de yalnızca yazma erişimini denetler. Okuma istekleri, aynı köken denetimini geçen her şeye açık kalır.

bin/collie devices list             # what holds a credential, and when each was last seen
bin/collie devices revoke old-phone # effective immediately, no restart

Yazma denetimi yalnızca en az bir aygıt eşlendiğinde etkindir. collie pair komutunu çalıştırana kadar hiçbir aygıt eşlenmez, bu nedenle o zamana kadar okuma ve yazma işlemleri eskisi gibi çalışır. Önce mevcut telefonunuzu eşleyin. Son aygıtın iptal edilmesi, erişimin kilitlenmesini önlemek için denetimi yeniden devre dışı bırakır.

Beş başarısız kod denemesi kodu geçersiz kılar; bu durum collie pair komutunu yeniden çalıştırmayı gerektirir.

Birden çok örneğin çalıştığı bir ana makinede, komutların başına COLLIE_INSTANCE=<name> ekleyin ve telefonda ilgili örneğin URL'sini açın (Tek bir konakta birden fazla Collie örneği).

Risk modeli

Temel güvenlik sınırları ve riskler:

  • Kullanıcı izinlerinizle çalışır. Collie; ~/.ssh, git push --force, rm -rf ve sudo dahil olmak üzere tüm erişim haklarınızı devralır.
  • Kimlik doğrulama insanları değil, cihazları tanımlar. Tailscale, cihazı tutan kullanıcı yerine donanım uç noktasını doğrular. Parola veya kullanıcı oturumu yoktur; kilidi açık veya çalınmış bir telefon açık bir kabuk sağlar. Cihazı eşleyerek bunu hafifletebilirsiniz (yukarıda). Yerleşik boşta kalma kilidi yalnızca gözetimsiz bir ekranı karartır ve gerçek bir güvenlik sınırı sağlamaz (ADR 0007).
  • Tüm yerel sistem kullanıcıları bağlantı noktasına erişebilir. Standart terminal çoklayıcı soketleri (tmux, zellij, herdr), diğer yerel kullanıcıların erişimini kısıtlamak için dosya sistemi izinlerini kullanır. Collie, kendisini her yerel UID'ye açık hale getiren yerel bir TCP bağlantı noktasını dinler. Eşleme veya cihaz başına denetim yazma erişimini sınırlar; ancak okuma işlemleri tüm yerel kullanıcılar tarafından erişilebilir kalır. Bu, yürütme risklerini sınırlar ancak verilerin ifşa edilmesini engellemez (ARCHITECTURE.md §6).
  • Tek bir örnek tüm oturumları açığa çıkarır. Varsayılan olarak, tek bir Collie işlemi, korumalı alan oturumları dahil olmak üzere Herdr yapılandırma kökü altında bulunan her çoklayıcı oturumunun önüne geçer (Çoklu oturum).
  • COLLIE_STATE_DIR taşımadığı sürece ~/.local/state/collie/audit.log olan Yazma işlemleri <state-dir>/audit.log konumuna kaydedilir. Sunucu; gelen tüm tuş vuruşlarını, yanıtları, dosya yüklemelerini ve bölme/sekme yaşam döngüsü olaylarını günlüğe kaydeder. Bir denetim günlüğünün erişim denetimi yerine olay sonrasında görünürlük sağladığını unutmayın (ARCHITECTURE.md §6).
  • Varsayılan savunma denetimleri. Collie yalnızca geri döngü (loopback) arabirimlerine bağlanır, trafiği yalnızca tailscale serve veya eşdeğer bir ters proxy üzerinden yönlendirir ve katı CSP kuralları, aynı kök denetimleri ve host üstbilgisi doğrulaması uygular. Bölme çıktısı innerHTML yerine React metin düğümleri olarak işlenir. Asla tailscale funnel kullanmayın veya ham bir bağlantı noktasını dışa açmayın. Belirli donanımları yetkilendirmek için doğrudan eşleme kullanın veya proxy'niz cihaz kimlikleri ekliyorsa aşağıdaki iki COLLIE_DEVICE_* değişkenini kullanın.
değişkenne yapar
COLLIE_ALLOW_NON_LOOPBACK_BIND=1Yalnızca geri döngüye bağlanma kuralını devre dışı bırakır; ayarlanmadığında köprü 0.0.0.0 adresine bağlanmayı reddeder.
COLLIE_ALLOW_ANY_HOST=1Varsayılan olarak açık olan ve başarısızlık durumunda erişimi engelleyen host üstbilgisi doğrulamasını devre dışı bırakır.
COLLIE_TRUSTED_USERTailscale-User-Login üstbilgisi eksik olan veya eşleşmeyen bir isteği reddeder.
COLLIE_TRUSTED_USER_OPTIONAL=1Eksik bir Tailscale-User-Login üstbilgisine izin verir (etiketli düğümler bunu hiçbir zaman göndermez).
COLLIE_DEVICE_HEADERVekil sunucunuzun bir aygıt kimliğiyle eklediği üstbilginin adı.
COLLIE_DEVICE_ALLOWLISTYazma iznine sahip, virgülle ayrılmış aygıt kimlikleri; diğer tüm aygıtlar salt okunur kalır (docs/deployment.md).
🚫 Collie ile tailscale funnel seçeneğini asla kullanmayın. Funnel trafiği genel internete yönlendirir, oysa tailscale serve erişimi özel tailnet ağınızla sınırlar. Collie uygulamasını Funnel üzerinden çalıştırmanın desteklenen bir kullanım senaryosu yoktur.

Tailscale ACL'leri ve COLLIE_TRUSTED_USER ile erişimi daha da sınırlandırın. Olduğu gibi, garanti verilmeksizin sağlanır.

Makinenizden dışarı ne çıkar

Varsayılan olarak ve ilke gereği hiçbir şey. Collie hiçbir kurulum olayı, kullanım istatistiği, kilitlenme raporu veya analitik göndermez. Bunları etkinleştiren bir bayrak yoktur.

Kendiliğinden giden tek çağrı güncelleme denetimidir: sürümünüzü en yeni etiketle karşılaştıran, GitHub genel etiketler API'sine (bridge/update.ts) yönelik anonim bir HTTPS GET çağrısıdır. Sizin veya makineniz hakkında hiçbir veri taşımaz, yalnızca statik collie-update-check kullanıcı aracısını içerir.

Veri toplama özelliği eklenirse, açık onay üst sınırdır: varsayılan olarak kapalıdır, görünür bir soru olarak sorulur, asla bir bayrakla veya varsayılan bir ayarla getirilmez. Bu sözün kaldırılması uyumsuz bir değişiklik olur (ADR 0034).

Bu sayfayı GitHub üzerinde düzenleyin