Bądź na bieżąco - RSS

Jak używać SSH jako VPN: przewodnik po Shuttle

24 lutego, 2024 | Brak Komentarzy | Kategoria: Linux, MacOS, Porady
Suttle

Termin “Poor Man’s VPN” często odnosi się do prostych, niestandardowych rozwiązań służących do tworzenia wirtualnych sieci prywatnych (VPN), które nie wykorzystują dedykowanego oprogramowania VPN. Zamiast tego mogą używać innych technologii, takich jak SSH (Secure Shell), do tworzenia zabezpieczonych tuneli przez Internet.

SSH jest często wykorzystywane do tworzenia prostych VPNów, ponieważ umożliwia szyfrowane połączenie między dwoma punktami w sieci. Przykładowo, można przekierować ruch z lokalnego komputera przez zdalny serwer SSH, co zadziała podobnie jak VPN, dzięki tunelowaniu ruchu sieciowego i umożliwi bezpieczny dostęp do zasobów sieciowych.

Shuttle to narzędzie działające jako transparentny serwer proxy, służący jako prosty zamiennik VPN. Działa poprzez przekierowanie ruchu za pomocą SSH. Nie wymaga uprawnień administratora i jest kompatybilne z Linuxem i MacOS. Ponadto obsługuje tunelowanie DNS, co jest istotne w kontekście przekierowania całego ruchu przez łącze VPN. Można go zainstalować na wiele sposobów, w tym przez menedżery pakietów w różnych dystrybucjach Linuxa, PyPI, Homebrew, a także bezpośrednio z kodu źródłowego. Dokumentacja jest dostępna online, a sshuttle może być również konfigurowany jako usługa.

Przykład użycia komendy sshuttle do przekierowania całego ruchu z lokalnego komputera przez połączenie SSH wraz z przekazywaniem zapytań DNS wygląda następująco:

sshuttle -r username@remote_host 0/0 -vv --dns

W powyższym poleceniu:

  • -r username@remote_host określa zdalnego użytkownika i host, przez który ma być przekierowany ruch.
  • 0/0 oznacza, że cały ruch ma być przekierowany.
  • -vv włącza tryb szczegółowych informacji (verbose).
  • --dns oznacza, że zapytania DNS również będą przekierowywane przez połączenie SSH.

Więcej informacji i opcji konfiguracyjnych można znaleźć w dokumentacji sshuttle dostępnej na GitHubie.

G

Tagi: , , , ,

Debian Jessie – sshd i obsługa PAM

21 stycznia, 2017 | Brak Komentarzy | Kategoria: Linux, Porady

Debian PAMW najnowszej wersji Debiana (Jessie), nie wiedzieć skąd pojawił się błąd związany z obsługą sesji SSH. Do tej pory, wykonując typowe prace administracyjne takie jak aktualizacje, w szczególności wymianę jądra systemu na nowszą wersję, nie było żadnego problemu kiedy trzeba było wydać polecenie reboot. Serwer prawidłowo kończył sesję SSH i po krótkiej chwili można było znowu się połączyć. O ile oczywiście dał radę podnieść się po naszych zabiegach. Tym razem jest inaczej. Krótko mówiąć sesja SSH zawiesza się i bez siłowego zamknięcia terminala nie ma mowy o kontynuowaniu pracy. Związane jest to z obsługą biblioteki PAM. Żeby pozbyć się opisanej niedogodności konieczna jest instalacja dodatkowych bibliotek, które nie są dostarczane w standarowej wersji:

apt-get install libpam-systemd dbus

Na tym nie koniec. Musimy upewnić się, że nasz daemon sshd ma włączoną obsługę PAM. Tak inaczej wystarczy wydać polecenie:

 grep -i UsePAM /etc/ssh/sshd_config

i ewentualnie odkomentować w pliku /etc/ssh/sshd_config wspomnianą linię. Na koniec restartujemy sshd:

/etc/init.d/ssh restart

MG

Tagi: , , ,

Budowa serwera SFTP na bazie SSH i Debiana

21 maja, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

SFTPJak powszechnie wiadomo nie wynaleziono jeszcze bardziej popularnej usługi do transferu plików niż FTP. Być może większość administratorów wolałaby korzystać z innych rozwiązań ale tak się składa, że znają prawie wszyscy użytkownicy i to oni z reguły wymuszają stosowanie FTP. Podstawowy problem w tym przypadku to brak szyfrowania transmisji co przede wszystkim oznacza przesyłanie haseł jawnym tekstem. Jednak mając gotowy serwer z Linuxem oraz dostępem zdalnym po SSH można pokusić się o przygotowanie serwera SFTP, który zachowując większość funkcji FTP będzie zabezpieczał odpowiednio nasze połączenia. Co więcej jeśli ktoś dotychczas korzystał z bardzo popularnych programów typu WinSCP czy FileZilla to zasadniczo nie powinien mieć żadnych problemów z korzystaniem z SFTP bowiem obsługa tego ostatniego została już zaimplementowana w tych windowsowych klientach. Zatem do dzieła.

Po pierwsze sprawdzamy czy obsługa SFTP została włączona w konfiguracji serwera OpenSSH. Plik /etc/ssh/sshd_config powinien zawierać wpis:

Subsystem sftp internal-sftp

Teraz, na końcu pliku możemy dodać sekcje dla nowego konta z dostępem SFTP:

Match User KontoSFTP
  ChrootDirectory /home
  AllowTCPForwarding no
  X11Forwarding no
  ForceCommand internal-sftp

Oczywiście zakładam, że wcześniej założyliśmy sobie takie konto w systemie. Po ponownym uruchomieniu serwera SSH wszystko powinno zacząć działać… oprócz dwóch drobnostek.

Na pewno warto zadbać aby użytkownik KontoSFTP nie miał dostępu shellowego do systemu. W tym celu musimy zmienić mu domyślny shell. Najpierw sprawdzamy czy możemy użyć shella typu sftp-server:

cat /etc/shells

Jeśli nie zostanie wyświetlona nazwa sftp-server powinniśmy użyć polecenia:

echo '/usr/lib/openssh/sftp-server' >> /etc/shells

Teraz możemy już zmodyfikować konto naszego użytkownika:

usermod -s /usr/lib/openssh/sftp-server KontoSFTP

Druga sprawa to powinniśmy zmienić prawa dostępu do tych podkatalogów w /home, do których chcemy zabezpieczyć dostęp. W ten sposób nasz użytkownik nie będzie mógł zwiedzać innych podkatalogów. Dla każdego z zabezpieczanych katalogów należy wydać polecenie:

chmod 700 /home/NazwaZabezpieczanegoKatalogu

Po wykonaniu powyższych czynności możemy cieszyć się nowym serwerem SFTP. Powyższe uwagi dotyczą rzecz jasna mojego ulubionego Debiana.

MG

Tagi: , , , , ,

Jak ograniczyć liczbe równoczesnych połączeń z serwerem SSH

3 maja, 2013 | Brak Komentarzy | Kategoria: Linux, Porady, Windows

SSHObecnie sieci VPN są zagadnieniem powszechnie znanym, szeroko komentowanym i zalecanym we wdrożeniach biznesowych. Istnieje cała masa gotowych rozwiązań sprzętowych, na poziomie aplikacji itp. Praktycznie każdy administrator może sam, według uznania, wybrać wygodne narzędzie. Różnią się one algorytmami, wymaganiami oraz niestety ceną. Czy można zbudować skalowalny dostęp VPN do firmy, który nie będzie wymagał dużych środków finansowych? Jednym z szeroko ostatnio polecanych rozwiązań jest VPN z wykorzystaniem serwera SSH. Elementami tej techniki są m. in.: (a) serwer dostępowy, zrealizowany np. jako sewer Linux z demonem SSHD oraz (b) aplikacja kliencka, która potrafi zestawić szyfrowany tunel np. Bitwise Tunellier.

Jeden z problemów, związanych z opisywanym tunelem SSL polega na tym, że klient może kreować równocześnie wiele połączeń, korzystających w tym samym czasie, z tego samego konta dostępowego. Być może nie jest to rzecz dyskwalifikująca całość, jednak w codziennej praktyce administratorskiej może utrudniać życie. W końcu chcemy aby logi systemowe były jasne i przejrzyste – słowem czytelne. Najlepiej aby jedno połączenie, czyli wspomniany tunel SSL, było przypisane tylko i wyłączenie do jednego konta.

Przykładowe rozwiązanie dla systemu Linux, z serwerem dostępowym bazującym na dystrybucji Debian Squeeze, polega na odpowiedniej modyfikacji pliku ‘/etc/security/limits.conf‘. Zawiera on m. in. defincje dotycząca liczby równoczesnych sesji SSH dla jednego konta dostępowego. W opisywanym rozwiązaniu należy dodać następującą linie przed znacznikiem ‘# End of file‘:

@sshlimited     -       maxlogins       1

I to wszystko, jak zwykle w przypadku Linuxa, krótko i na temat 🙂

MG

Tagi: , , , , ,

Problemy z SSH

4 października, 2010 | Brak Komentarzy | Kategoria: Linux, Porady

Tym razem króciutko. Chciałem napisać o rzeczy, który bardzo długo spędzała mi sen z powiek. Nigdy nie było dość czasu żeby się tym zająć a sprawa jest niezwykle prosta. Każdy użytkownik terminala linuksowego na pewno korzystał z połaczeń za pomocą ssh. Jednak czasami ze względu na rekonfigurację, prace administracyjne lub inne przyczyny zdarza się zmiana klucza publicznego zdalnego hosta. Ponieważ jest on zapisywany w ‘.ssh/known_hosts‘ przy następnej próbie połączenia otrzymamy komunikat zaczynający się od tekstu ‘WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!‘. Przyznam, że zdarzało mi się kasować cały plik ‘known_host‘ a następnie dopisywać od początku klucze hostów w trakcie pierwszego połączenia. Czy było to lenistwo, niecierpliwość? Zapewne po trochu wszystko. A przecież można usunąć klucz tylko wybranego hosta używając polecenia:

ssh-keygen -R hostname

Prawda, że proste?

MG

Tagi: , ,