Red Hat 6.x / CentOS 6.x
Przechowywanie logów systemowych w jednym scentralizowanym miejscu, poza utworzeniem serwera logów, wymaga od administratora odpowiedniej konfiguracji wszystkich serwerów - klientów tej usługi.Konfiguracja taka, zależnie od wymogów może odbywać się na kilka sposobów. My wykorzystamy możliwość szyfrowania transmisji, i tak jak w przypadku serwera centralnego przeprowadzimy nieco rozszerzoną konfigurację rsyslog.
Do komunikacji z serwerem kolekcjonującym logi niezbędne będzie odpowiednie przygotowanie certyfikatów ssl dla wszystkich klientów.
Certyfikat serwera
Certyfikat naszego klienta spreparujemy analogicznie do certyfikatu rsyslog na serwerze centralnym. W tym celu na naszym serwerze konieczne będzie doinstalowanie pakietu zawierającego niezbędne narzędzie:
[root@rsyslog-c1 ~]# yum install gnutls-utils
Ze względów bezpieczeństwa nie możemy dopuścić do ujawnienia klucza prywatnego serwera, dlatego certyfikat utworzymy w katalogu z ograniczonymi uprawnieniami odczytu dla innych niż root użytkowników, mianowicie w /etc/pki/rsyslog:
[root@rsyslog-c1 ~]# cd /etc/pki/rsyslog/
W pierwszej kolejności musimy utworzyć klucz prywatny serwera, a na jego podstawie wygenerować request certyfikatu:
[root@rsyslog-c1 rsyslog]# certtool --generate-privkey --outfile key.pem
Generating a 2048 bit RSA private key...
[root@rsyslog-c1 rsyslog]# certtool --generate-request --load-privkey key.pem --outfile request.pem
Generating a PKCS #10 certificate request...
Country name (2 chars): PL
Organization name:
Organizational unit name:
Locality name:
State or province name:
Common name: rsyslog-c1.my.domain
UID:
Enter a dnsName of the subject of the certificate:
Enter the IP address of the subject of the certificate:
Enter the e-mail of the subject of the certificate:
Enter a challenge password:
Does the certificate belong to an authority? (y/N):
Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/N):
Will the certificate be used for encryption (RSA ciphersuites)? (y/N):
Is this a TLS web client certificate? (y/N): y
Is this also a TLS web server certificate? (y/N): y
Generating a 2048 bit RSA private key...
[root@rsyslog-c1 rsyslog]# certtool --generate-request --load-privkey key.pem --outfile request.pem
Generating a PKCS #10 certificate request...
Country name (2 chars): PL
Organization name:
Organizational unit name:
Locality name:
State or province name:
Common name: rsyslog-c1.my.domain
UID:
Enter a dnsName of the subject of the certificate:
Enter the IP address of the subject of the certificate:
Enter the e-mail of the subject of the certificate:
Enter a challenge password:
Does the certificate belong to an authority? (y/N):
Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/N):
Will the certificate be used for encryption (RSA ciphersuites)? (y/N):
Is this a TLS web client certificate? (y/N): y
Is this also a TLS web server certificate? (y/N): y
Tak przygotowany request należy podpisać przy użyciu centrum autoryzacyjnego CA - w naszym przypadku będzie to CA serwera centralnego rsyslog. Po skopiowaniu requestu na serwer CA tworzymy podpisany certyfikat serwera:
[root@syslog-server pki]# certtool --generate-certificate --load-request request.pem --outfile cert.pem --load-ca-certificate CA/certs/ca.pem --load-ca-privkey CA/private/ca-key.pem
Generating a signed certificate...
Enter the certificate's serial number in decimal (default: 1442152178):
Activation/Expiration time.
The certificate will expire in (days): 730
Extensions.
Do you want to honour the extensions from the request? (y/N):
Does the certificate belong to an authority? (y/N):
Is this a TLS web client certificate? (y/N): y
Is this also a TLS web server certificate? (y/N): y
Enter a dnsName of the subject of the certificate: rsyslog-c1.my.domain
Enter a dnsName of the subject of the certificate:
Enter the IP address of the subject of the certificate:
Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/N):
Will the certificate be used for encryption (RSA ciphersuites)? (y/N):
X.509 Certificate Information:
Version: 3
Serial Number (hex): 55f57ef2
Validity:
Not Before: Sun Sep 13 13:49:41 UTC 2015
Not After: Tue Sep 12 13:49:45 UTC 2017
Subject: C=PL,CN=rsyslog-c1.my.domain
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
b1:e0:6e:68:88:8d:e6:75:68:28:0f:5f:0e:f4:a0:fd
52:bb:cd:17:31:24:60:a4:23:ec:3a:36:02:e5:8d:87
23:b3:64:5a:a5:34:19:3e:e0:25:dc:0f:61:28:53:df
4c:cc:e9:b8:9a:d9:72:d1:7a:09:00:7e:2a:ff:38:d8
01:41:67:19:ca:77:00:1d:35:44:22:fc:7b:13:66:a0
02:9e:81:33:b9:ee:c8:c2:ed:16:4d:dc:0d:a6:ce:c9
0a:f6:e0:98:27:ba:61:a2:36:c3:6c:2f:9e:d4:8f:7d
63:20:18:44:98:26:13:88:16:1b:a5:a0:c7:43:9d:eb
dd:bf:50:97:91:2b:b5:3c:ee:e2:83:68:52:f7:c1:9a
f3:5a:85:2b:78:24:a3:24:5b:e6:91:bb:5c:c0:f7:7c
15:3e:71:ef:a0:d4:26:ac:47:aa:ca:35:36:4f:5b:fd
2d:9a:0d:64:c1:09:7a:de:ed:f4:9b:66:1b:c3:c9:01
9b:5e:65:97:e7:74:ce:f1:d9:dc:12:33:49:2a:82:42
1f:53:64:d1:f4:52:6e:b8:fe:12:02:21:43:47:a7:47
29:ef:f6:92:9f:de:7a:ab:91:bb:19:16:6d:60:50:6f
a1:35:7f:52:da:a9:a0:71:0a:11:e9:d1:1a:35:3e:21
Exponent (bits 24):
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): FALSE
Key Purpose (not critical):
TLS WWW Client.
TLS WWW Server.
Subject Alternative Name (not critical):
DNSname: rsyslog-c1.my.domain
Subject Key Identifier (not critical):
c0b42d4b74b13cf134558d248d4f09a4f2627f4d
Authority Key Identifier (not critical):
b7539df12f3859ff625c5b67756bb3e74bacc0c3
Other Information:
Public Key Id:
c0b42d4b74b13cf134558d248d4f09a4f2627f4d
Is the above information ok? (Y/N): y
Signing certificate...
Generating a signed certificate...
Enter the certificate's serial number in decimal (default: 1442152178):
Activation/Expiration time.
The certificate will expire in (days): 730
Extensions.
Do you want to honour the extensions from the request? (y/N):
Does the certificate belong to an authority? (y/N):
Is this a TLS web client certificate? (y/N): y
Is this also a TLS web server certificate? (y/N): y
Enter a dnsName of the subject of the certificate: rsyslog-c1.my.domain
Enter a dnsName of the subject of the certificate:
Enter the IP address of the subject of the certificate:
Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/N):
Will the certificate be used for encryption (RSA ciphersuites)? (y/N):
X.509 Certificate Information:
Version: 3
Serial Number (hex): 55f57ef2
Validity:
Not Before: Sun Sep 13 13:49:41 UTC 2015
Not After: Tue Sep 12 13:49:45 UTC 2017
Subject: C=PL,CN=rsyslog-c1.my.domain
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
b1:e0:6e:68:88:8d:e6:75:68:28:0f:5f:0e:f4:a0:fd
52:bb:cd:17:31:24:60:a4:23:ec:3a:36:02:e5:8d:87
23:b3:64:5a:a5:34:19:3e:e0:25:dc:0f:61:28:53:df
4c:cc:e9:b8:9a:d9:72:d1:7a:09:00:7e:2a:ff:38:d8
01:41:67:19:ca:77:00:1d:35:44:22:fc:7b:13:66:a0
02:9e:81:33:b9:ee:c8:c2:ed:16:4d:dc:0d:a6:ce:c9
0a:f6:e0:98:27:ba:61:a2:36:c3:6c:2f:9e:d4:8f:7d
63:20:18:44:98:26:13:88:16:1b:a5:a0:c7:43:9d:eb
dd:bf:50:97:91:2b:b5:3c:ee:e2:83:68:52:f7:c1:9a
f3:5a:85:2b:78:24:a3:24:5b:e6:91:bb:5c:c0:f7:7c
15:3e:71:ef:a0:d4:26:ac:47:aa:ca:35:36:4f:5b:fd
2d:9a:0d:64:c1:09:7a:de:ed:f4:9b:66:1b:c3:c9:01
9b:5e:65:97:e7:74:ce:f1:d9:dc:12:33:49:2a:82:42
1f:53:64:d1:f4:52:6e:b8:fe:12:02:21:43:47:a7:47
29:ef:f6:92:9f:de:7a:ab:91:bb:19:16:6d:60:50:6f
a1:35:7f:52:da:a9:a0:71:0a:11:e9:d1:1a:35:3e:21
Exponent (bits 24):
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): FALSE
Key Purpose (not critical):
TLS WWW Client.
TLS WWW Server.
Subject Alternative Name (not critical):
DNSname: rsyslog-c1.my.domain
Subject Key Identifier (not critical):
c0b42d4b74b13cf134558d248d4f09a4f2627f4d
Authority Key Identifier (not critical):
b7539df12f3859ff625c5b67756bb3e74bacc0c3
Other Information:
Public Key Id:
c0b42d4b74b13cf134558d248d4f09a4f2627f4d
Is the above information ok? (Y/N): y
Signing certificate...
Przygotowany w ten sposób certyfikat przenosimy na nasz serwer kliencki. Należy również pamiętać o przeniesieniu na nasz serwer certyfikatu centrum autoryzacji, czyli w naszym przypadku pliku /etc/pki/CA/certs/ca.pem
Konfiguracja klienta rsyslog
Przygotowaliśmy już certyfikaty, więc nadeszła pora na konfigurację samego pliku /etc/rsyslog.conf. Podobnie jak w przypadku serwera, dyrektywy wysyłające nasze logi na serwer centralny umieściłem na początku pliku:
[root@rsyslog-c1 ~]# vi /etc/rsyslog.conf
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/key.pem
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer rsyslog-server.my.domain
$ActionSendStreamDriverMode 1
*.* @@rsyslog-server.my.domain:6514
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/key.pem
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer rsyslog-server.my.domain
$ActionSendStreamDriverMode 1
*.* @@rsyslog-server.my.domain:6514
Istotne jest, aby nazwa serwera centralnego była rozwiązywalna (umieszczona w DNS lub w /etc/hosts)
Przed adresem serwera rsyslog w konfiguracji użyte zostały znaki @@. Oznacza to, że do komunikacji pomiędzy maszynami zostanie użyty protokół tcp. Możemy wymusić używanie udp poprzez pozostawienie pojedynczego @ (należy wówczas pamiętać o otwarciu ruchu dla udp).
Troubleshooting
Podczas zabaw z usługą natknąłem się na kilka błędów, które nie są chyba typowe (nie znalazłem żadnych odpowiedzi w popularnej wyszukiwarce ;) ), a wyniknęły z różnego rodzaju literówek i błędów konfiguracyjnych:* W /var/log/messages serwera pojawia się wpis:
rsyslogd-2085: peer did not provide a certificate, not permitted to talk to it [try http://www.rsyslog.com/e/2085 ]
Należy zweryfikować, czy ścieżki do certyfikatów hosta-klienta są poprawne i czy linijki nie są zahashowane, oznacza to bowiem, że serwer nie ma poprawnie wskazanego certyfikatu, którym może się przedstawić.
* W /var/log/messages serwera pojawia się:
rsyslogd: not permitted to talk to peer, certificate invalid: signer is not a CA
Ten błąd wygenerowałem sobie przez nieuwagę. Powodem było niewłaściwe wygenerowanie CA, a ściślej mówiąc podczas jego generowania nie wskazałem opcji "Does the certificate belong to an authority". Jeśli widzisz ten błąd, jest duże prawdopodobieństwo, że coś jest nie tak z Twoim CA - spróbuj wygenerować nowe i podpisać certyfikaty jeszcze raz.
* W /var/log/messages nie widać żadnych błędów, a logi maszyny-klienta nie odkładają się ani w plikach zdalnych, ani lokalnie.
W taki sposób może objawiać się brak certyfikatu CA na maszynie-kliencie rsyslog.
Brak komentarzy:
Prześlij komentarz