Jak wysłałbyś syslog * bezpiecznie * przez publiczny Internet?

20

Mam więc kilka serwerów, które chciałbym logować centralnie, ale oczywiście nie chcę bezpiecznie przesyłać danych przez Internet.

Próbowałem syslog-ng, ale nie mogę sprawić, by działał w bezpieczny sposób, normalny ssh -L PORT:localhost:PORT user@hosttunel SSH nie będzie działał, ponieważ uważam, że sprawia, że ​​dzienniki wydają się pochodzić z komputera lokalnego, a VPN wydaje się trochę przesadzony .

JamesHannah
źródło

Odpowiedzi:

19

Czy próbowałeś syslog-ng i stunnel?

  1. Zainstaluj Stunnel
  2. Utwórz pliki certyfikatów dla syslog-ng przez Stunnel
  3. Skonfiguruj stunnel do użytku z syslog-ng
  4. Zainstaluj syslog-ng
  5. Skonfiguruj syslog-ng
  6. GOTOWY!

UWAGA:

Stunnel ( http://www.stunnel.org ) to program, który pozwala szyfrować dowolne połączenia TCP wewnątrz protokołu SSL (Secure Sockets Layer) dostępnego zarówno w systemach Unix, jak i Windows. Stunnel pozwala zabezpieczyć demony i protokoły nieobsługujące protokołu SSL (takie jak POP, IMAP, LDAP itp.), Ponieważ Stunnel zapewnia szyfrowanie, nie wymagając żadnych zmian w kodzie demona.

KPWINC
źródło
Właśnie tego używamy do wysyłania syslog z naszej DMZ do naszej wewnętrznej sieci. Działa dobrze.
Kamil Kisiel
3
Co jest warte, syslog-ng 3.x obsługuje natywnie TLS, więc nie trzeba już używać stunnela.
syntezator
12

Krótka odpowiedź: VPN

Może to wydawać się przesadą, ale jest to właściwa odpowiedź i nie jest tak skomplikowana w konfiguracji.

Kevin Kuphal
źródło
dobrze!; openvpn.net jest naprawdę prosty w konfiguracji i po prostu działa.
pQd
Nie tylko to, ale także zapewnia znacznie większą elastyczność bezpiecznego zarządzania i monitorowania zdalnych maszyn. OpenVPN (a nawet IPSec) będzie znacznie lepszy na dłuższą metę.
Christopher Cashell
9

Rsyslog może to zrobić. Szyfrowanie ruchu Syslog za pomocą TLS

Brian De Smet
źródło
Czy nadal nie otwierasz portu do Internetu za pomocą tego rozwiązania? Nadal nie chciałbym tego robić dla czegoś takiego.
Kevin Kuphal
3
Kevin: Zakłada się, że twój serwer syslog spodziewałby się ruchu z pewnych określonych adresów IP, co jest łatwe do osiągnięcia za pomocą iptables
Matt Simmons
Większość dostawców usług w chmurze zezwala również na elastyczne grupy zabezpieczeń, które pozwalają na dodanie do białej listy określonych portów z określonych adresów IP.
jorfus
1

Użyj syslog-ng lub innego demona syslog, który obsługuje TCP.

Wyślij dane zaszyfrowanym tunelem. Nie używaj tunelu ssh, jest to zbyt skomplikowane.

Syslog UDP jest historycznym protokołem uszkodzonym, który powinien był zostać wyeliminowany dawno temu. Jeśli twój dostawca domyślnie to udostępnia, skorzystaj z nich.

Jeśli twój dostawca nie zapewnia rozwiązania syslog, które podpisuje każdą wiadomość przed wysłaniem, oprzyj się na nich.

Oprogramowanie jest łatwe, algorytmy są łatwe. Polityka instalowania go domyślnie nie jest.

Carlito
źródło
Syslog UDP ma pewne zalety, jeśli nie powoduje przestojów, jeśli miejsce docelowe ulegnie awarii na dłuższy czas. Nie jest to zbyt duży problem z syslog-ng, ale może być koszmarem w rsyslog. Wartość szyfrowania nie jest niczym, o co chciałbym zapytać, mówiąc to.
Florian Heigl
1

Prawdopodobnie nie wysłałbym danych dziennika przez Internet, ale w razie potrzeby zainstalowałem scentralizowanego hosta dziennika w lokalizacjach.

Obecnie wolę rsyslog niż syslog-ng. Jest to prawie spadek wymiany i zawiera wiele dokumentów i poradników, w tym jeden na temat wysyłania zaszyfrowanych danych za pomocą TLS / SSL (od wersji 3.1.1.0), starsze wersje mogą nadal używać stunnela .

Z mojego doświadczenia zarówno z rsyslog, jak i syslog-ng, rsyslog wygrywa w łatwości konfiguracji, zwłaszcza, że ​​możesz użyć istniejącego syslog.conf i dodać do niego.

Jeśli chodzi o wartość, Rsyslog jest domyślnym demonem syslog w Debian Lenny (5.0), Ubuntu i Fedorze .

jtimberman
źródło
Szkoda tylko, że rsyslog nie dodał jeszcze nowej (planowanej) składni pliku konfiguracyjnego. W tej chwili konfigurowanie rsyslog do czegokolwiek innego niż trywialne jest bolesne w porównaniu do syslog-ng.
Christopher Cashell
0

Używam rsyslog z tls. Istnieją pewne prace przygotowawcze poza zakresem: Wdróż lokalny urząd certyfikacji, dodaj certyfikat urzędu certyfikacji do każdego hosta, wygeneruj osobne certyfikaty dla każdego hosta. (teraz wszyscy twoi gospodarze mogą ze sobą rozmawiać ssl)

Musiałem także zainstalować rsyslog-gnutls:

sudo apt-get install rsyslog-gnutls

Ograniczyłem również wychodzące połączenie syslog (tcp 514), aby moi gospodarze mogli łączyć się tylko z moim serwerem rsyslog, i utworzyłem przychodzącą białą listę po stronie serwera rsyslog, aby tylko moi gospodarze mogli się łączyć.

w /etc/rsyslog.conf

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/my_keys/internal_CA.crt
$DefaultNetstreamDriverCertFile /etc/my_keys/my_hostname.crt
$DefaultNetstreamDriverKeyFile /etc/my_keys/my_hostname.key

$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer my_syslog_server.com
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@my_syslog_server.com:514 # forward everything to remote server

Wygląda na to, że konfiguracja syslog-ng jest jeszcze łatwiejsza. (chociaż nie próbowałem tego) syslog-ng /etc/syslog-ng/conf.d/99-graylog2.conf

destination remote-server {  
    tcp ("my_syslog_server.com" port(514)
        tls(ca_dir("/etc/my_keys/"))
    );
};
Jorfus
źródło