OpenSWAN
Z wiki linux-user
| Linia 20: | Linia 20: | ||
yum install openswan* | yum install openswan* | ||
co spowoduje zainstalowanie pakietu '''OpenSWAN'''. Od teraz mamy już wszystko co potrzeba do przystąpienia do konfiguracji bezpiecznego kanału. | co spowoduje zainstalowanie pakietu '''OpenSWAN'''. Od teraz mamy już wszystko co potrzeba do przystąpienia do konfiguracji bezpiecznego kanału. | ||
| + | |||
| + | === Konfiguracja === | ||
| + | Przed przystąpieniem do konfiguracji musimy ustalić co tak na prawdę chcemy osiągnąć. Mamy wiele możliwości, w tym miejscu postaram się przedstawić jeden z nich tzn połączenie dwóch sieci w jedną. W przypadku gdy mamy dwa odziały jednej firmy w różnych miejscach takie działanie będzie jak najbardziej uzasadnione. Przyjmuję następujące dane: | ||
| + | |||
| + | '''oddział A''' | ||
| + | serwer linux | ||
| + | ip zew 81.192.0.186 | ||
| + | lokalna sieć 10.0.0.0/16 | ||
| + | '''oddział B''' | ||
| + | serwer linux | ||
| + | ip zew 81.192.0.185 | ||
| + | lokalna sieć 10.1.0.0/16 | ||
| + | Tworzymy/edytujemy plik ''/etc/ipsec.conf'', tak aby wyglądał następująco na serwerze A | ||
| + | |||
| + | '''serwer A''' | ||
| + | vim /etc/ipsec.conf | ||
| + | version 2.0 # conforms to second version of ipsec.conf specification | ||
| + | config setup | ||
| + | interfaces=%defaultroute | ||
| + | forwardcontrol=yes | ||
| + | rp_filter=0 | ||
| + | nat_traversal=no | ||
| + | conn linux-to-linux | ||
| + | auth=esp | ||
| + | authby=rsasig | ||
| + | pfs=yes | ||
| + | left=81.192.0.186 | ||
| + | leftsubnet=10.0.0.0/16 | ||
| + | leftid=81.192.0.186 | ||
| + | leftrsasigkey=(klucz publiczny serwera A) | ||
| + | right=81.192.0.185 | ||
| + | rightsubnet=10.1.0.0/16 | ||
| + | rightid=81.192.0.185 | ||
| + | rightrsasigkey=(klucz publiczny B) | ||
| + | auto=add | ||
| + | Taką samą konfigurację tworzymy na serwerze B odpowiednio zamieniając adresy IP. | ||
| + | |||
| + | '''serwer B''' | ||
| + | vim /etc/ipsec.conf | ||
| + | version 2.0 # conforms to second version of ipsec.conf specification | ||
| + | config setup | ||
| + | interfaces=%defaultroute | ||
| + | forwardcontrol=yes | ||
| + | rp_filter=0 | ||
| + | nat_traversal=no | ||
| + | conn linux-to-linux | ||
| + | auth=esp | ||
| + | authby=rsasig | ||
| + | pfs=yes | ||
| + | left=81.192.0.185 | ||
| + | leftsubnet=10.1.0.0/16 | ||
| + | leftid=81.192.0.185 | ||
| + | leftrsasigkey=(klucz publiczny serwera B) | ||
| + | right=81.192.0.186 | ||
| + | rightsubnet=10.0.0.0/16 | ||
| + | rightid=81.192.0.186 | ||
| + | rightrsasigkey=(klucz publiczny A) | ||
| + | auto=add | ||
| + | ==== znaczenie opcji ==== | ||
| + | |||
| + | *'''authby=rsasig''' uwierzytelnianie za pomocą RSA | ||
| + | *'''left=81.192.0.186''' lokalny adres rutera serwera A | ||
| + | *'''leftsubnet=10.0.0.0/16''' sieć LAN za ruterem serwera A | ||
| + | *'''leftrsasigkey=O8wq3…''' klucz publiczny serwera A | ||
| + | *'''right=81.192.0.185''' ip bramy serwera B | ||
| + | *'''rightsubnet=10.1.0.0/16''' sieć LAN za serwerem B | ||
| + | *'''rightrsasigkey=8qw9Hwdf…''' klucz publiczny serwera B | ||
| + | |||
| + | === Generowanie kluczy RSA === | ||
| + | Musimy wygenerować odpowiednie klucze potrzebne do autoryzacji serwerów. Aby to uczynić wydajemy odpowiednie polecenia na obu serwerach | ||
| + | ipsec rsasigkey 1024 > /etc/ipsec.d/rsa.key | ||
| + | jeżeli po tym poleceniu dostajemy błąd w stylu | ||
| + | ipsec rsasigkey: configdir is required | ||
| + | możemy użyć polecenia w inny sposób | ||
| + | ipsec rsasigkey 1024 --configdir /etc/pki/nssdb/ > /etc/ipsec.d/rsa.key | ||
| + | Po wygenerowaniu kluczy na obu serwerach należy przekopiować klucz publiczny, który zaczyna się od opcji ''pubkey=…'' do pliku ''/etc/ipsec.conf'' w miejsce przy opcji ''leftrsasigkey=….'' W taki sam sposób musisz przekopiować klucz publiczny '''serwera A''' na '''serwer B''' do pliku ''/etc/ipsec.conf/'' w miejsce opcji ''rightrsasigkey=…'' i w analogiczny sposób z '''serwera B''' na '''serwer A'''. Kolejnym krokiem jest przekopiowanie w odpowiednie miejsce klucza prywatnego. Aby to uczynić edytujemy plik ''/etc/ipsec.secrets'' zmieniamy go w następujący sposób, kopiując z pliku ''/etc/ipsec.d/rsa.key'' sekcje od ''Modules:'' do końca pliku | ||
| + | |||
| + | '''serwer A''' | ||
| + | vim /etc/ipsec.secrets | ||
| + | 81.192.0.186 81.192.0.185: RSA { | ||
| + | Modulus:0xb10c2d1d1b87d51b919e2f7e550ff83d57fa776e74b88f559659857fdfa | ||
| + | 61d0fbb27a9ac7da9671d97283aa8258ca922267fc83d9b68219d71b2f3999ce49349 | ||
| + | d904ed1f887928ga722b85b281306e4f977604b74fcf1ef50ca147d52ad95d0fc3cc4 | ||
| + | 7e8e6992a511ebfbba0d43360a6ae4c399e4beea3559b763d556fbb0785 | ||
| + | PublicExponent: 0x03 | ||
| + | # everything after this point is CKA_ID in hex format when using NSS | ||
| + | PrivateExponent: 0x2xc949962dadb0f6eef6b2e2cea15274d5d0c48f | ||
| + | Prime1: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | Prime2: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | Exponent1: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | Exponent2: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | Coefficient: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | CKAIDNSS: 0x2xc949962dadb0f6eef6b2e2cea15274d5r0c48f | ||
| + | }Tak samo postępujemy na '''serwerze B''' zmieniając jedynie kolejność adresów IP. Pierwszy IP wskazuje na maszyne lokalną następny na maszyne odległą. | ||
| + | |||
| + | === Operacje końcowe === | ||
| + | |||
| + | Aby zweryfikować poprawność naszej konfiguracji włączamy '''ipsec''' na obu serwerach | ||
| + | /etc/init.d/ipsec start | ||
| + | lub | ||
| + | ipsec setup start | ||
| + | a następnie wydajemy polecenie | ||
| + | ipsec verify | ||
| + | jeżeli dostajemy błąd typu | ||
| + | NETKEY detected, testing for disabled ICMP send_redirects [FAILED] | ||
| + | NETKEY detected, testing for disabled ICMP accept_redirects [FAILED] | ||
| + | musimy wyłączyć send_redirects oraz accept_redirects dla ICMP, wydajemy polecenie | ||
| + | echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects | ||
| + | echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects | ||
| + | jeżeli wszystko ruszyło jak należy możemy rozpocząć połączenie wydając polecenie | ||
| + | ipsec auto --up linux-to-linux | ||
| + | w tym słowo ''linux-to-linux'' jest nazwą połączenia zawartą w pliku ''/etc/ipsec.conf''. Po tych operacjach powinniśmy mieć możliwość połączenia się z '''bramy A''' do '''bramy B''' i na odwrót. Aby zweryfikować czy napewno wszystko poszło jak należy i jesteśmy połączeni z '''serwerem B''' możemy wydać polecenie | ||
| + | ip xfrm state | ||
| + | Do rozwiązania ewentualnych problemów może pomóc nam polecenie | ||
| + | ipsec auto --status | ||
| + | |||
| + | <br /><google1 style="4"></google1> | ||
