Bezpieczeństwo systemów komputerowych na przykładzie systemu Linux Debian czyli konfiguracja i instalacja LMS. "LMS" jest skrótem od "LAN Management System". Jest to zestaw aplikacji w PHP, C i Perlu, ułatwiających zarządzanie sieciami osiedlowymi (popularnie zwanymi Amatorskimi Sieciami Komputerowymi), korzystających z bazy danych MySQL, PostgreSQL lub SQLite. Główne założenia to uzyskanie jakości usług oraz obsługi użytkowników na poziomie providera z prawdziwego zdarzenia. Najbardziej podstawowe cechy LMS to:
generowanie praktycznie jakiegokolwiek konfiga na podstawie danych o komputerach w bazie (przykładowe konfigi obejmują rc.masq na iptables, dhcpd.conf, oidentd_masq.conf, /etc/ethers, dns prosty i odwrotny, htb),
wizualizacja statystyk wykorzystania łącza,
system obsługi zgłoszeń (Helpdesk).
Całość została wymyślona w ramach administracji ASK NetX i tam jest nieustannie rozwijana i poddawana testom.
LMS nie zastąpi Ci umiejętności jakie powinien mieć administrator. Jeśli nie potrafisz wykonać tak prostych czynność jak instalacja czy konfiguracja, prawdopodobnie nie będziesz umiał dostroić LMS do swojego systemu. Tak więc bez znajomości systemów U*IX się nie obejdzie. Jeżeli natomiast przez to przebrniesz otrzymujesz w zamian profesjonalne oprogramowanie, które w znacznym stopniu usprawni Twoją pracę.
$ cd /var/www $ wget http://lms.rulez.pl/download/stable/lms-x.x.x.tar.gz $ tar zxf lms-x.x.x.tar.gz
Dostępne są dwa rodzaje paczek z LMS - zawierające bibliotekę Smarty (lms-x.x.x+libs.tar.gz) i bez niej. Jeżeli nie skorzystałeś z wersji archiwum zawierającej biblioteki, pobierz ją i umieść w katalogu lib. $ cd /var/www/lms/lib $ wget http://smarty.php.net/distributions/Smarty-2.6.0.tar.gz $ tar zxf Smarty-2.6.0.tar.gz $ mv Smarty-2.6.0/libs Smarty
| Położenie wszystkich katalogów możesz zmienić w sekcji [directories] pliku lms.ini. |
Pliki z konfiguracją (sample/lms.ini i sample/lms-mgc.ini) umieść w katalogu /etc/lms.
Skrypty wykonywalne z katalogu bin najlepiej przenieść do katalogu /usr/sbin.
| Serwer www musi mieć prawo odczytu pliku lms.ini oraz prawa odczytu i zapisu do katalogu backup. Stanowi to potencjalne obniżenie poziomu bezpieczeństwa systemu. Ale mamy tutaj do czynienia z interpreterem PHP więc o calkowitym bezpieczeństwie można zapomnieć :-) Dziś w dobie MATRIXA (każdy uważa się za NEO), ataków hakerów nikt nie może czuć się bezpieczny. Moja rada : używaj PHP ale miej oczy na około głowy :-P |
Ponieważ LMS-UI jest napisane w PHP, niezbędny jest serwer WWW z interpreterem tego języka. Preferowanym serwerem jest Apache (http://www.apache.org/).
Interpreter powinien być w wersji 4.2.x lub nowszej, chociaż działa też poprawnie na 4.1.x (ale ponieważ większość webmasterów pracuje na 4.2.3, nie można zagwarantować poprawnej pracy na starszych wersjach. Osobiście polecam najmniej zawodną PHP 4.0. można ściągnąć ze strony http://www.php.net/.
LMS nie będzie działał prawidłowo na wersjach MySQL starszych od 3.23.xx.
LMS współpracuje także z PostgreSQL w wersji 7.3.x lub nowszych.
Przy współpracy LMS'a z bazą danych SQLite nie stwierdzono żadnych problemów z tym, że jedyną przetestowaną wersją jest wersja 2.8.11.
LMS-UI do pracy wymaga jeszcze biblioteki Smarty (http://smarty.php.net/) w wersji 2.5.0 lub wyższej.
O ile dla LMS-UIwystarczy to co powyżej, to żeby mieć działający LMS-MGC i resztę skryptów potrzebujemy także Perla i moduły do niego, które można pobrać z http://www.cpan.org/
Ta bardzo popularna baza jest dostępna z większością dystrybucji Linuksa. Jeżeli jednak będziesz musiał ją zainstalować samodzielnie, zacznij od ściągnięcia źródeł z http://www.mysql.org/.
Po rozpakowaniu, wejdź do katalogu z naszym MySQL i wydaj kolejno polecenia: $ ./configure --prefix=/usr/local/mysql $ make $ make install $ /usr/local/mysql/bin/mysql_install_db $ chown mysql -R /usr/local/mysql/var $ /usr/local/mysql/bin/safe_mysqld & $ /usr/local/mysql/bin/mysqladmin -u root password nowe_hasło
Konieczne to jest jeżeli uruchamiasz LMS po raz PIERWSZY. Jeżeli uaktualniasz LMS z poprzedniej wersji, odpowiednie adnotacje co należy zrobić z bazą danych są w pliku ChangeLog. Tak więc, wejdź do katalogu w którym masz LMS'a i uruchom shell mysql'a: mysql -u[tutaj wpisz użytkownika z pełnym dostępem do bazy] -p Enter password:[podaj hasło] mysql> create database lms; mysql> grant usage on lms.* to lms@localhost; mysql> grant select,insert,update,delete,create,alter on lms.* to lms@localhost identified by 'haslo'; mysql> flush privileges; mysql> use lms; mysql> source doc/lms.mysql;
Ponieważ MySQL jest domyślną bazą dla LMS'u, konfiguracja ogranicza się do podania w sekcji [database] pliku /etc/lms/lms.ini hasła i użytkownika: user = lms password = hasło_z_pkt.3
Po takim zabiegu, o ile LMS'owi uda się nawiązać połączenie do bazy danych, można już bez problemu dostać się do systemu. Jeżeli jednak w bazie danych nie ma żadnego konta administratora, jedyną rzeczą jaką zobaczysz będzie formularz dodania administratora. Jeżeli podasz prawidłowe dane administratora, LMS przeniesie Cię na stronę logowania gdzie od razu będziesz mógł użyć nowo utworzonego konta.
Zatrzymaj się tutaj i dodaj coś do crona, tak dla pewności: 30 5 3,10,17,21,28 * * /usr/bin/mysqldump -u lms --password=Twoje-super-tajne-hasło \ --add-drop-table --add-locks lms > backups/lms-auto-"$(date +%s)".sql
Spowoduje to wykonywanie o 5:30 rano, każdego 3, 10, 17, 21 i 28 dnia miesiąca automagicznie zrzutu danych z mysqla.
Jest to jedynie zaproponowany schemat uzależniony od środowiska i aktualnych zapotrzebowań osób, z którymi przyszło mi współpracować na zajęciach z administracji systemów. Prawdziwy koszmar :-) Dlatego poprawne wdrożenie LMS-a zależy ściśle od systemu na jakim pracujemy. Można przetestować LMS-a na stronie http://www.lms.rulez.pl/ i logując się jako login: root, hasło: test sprawdzić jego możłiwości. POLECAM!!!
Osobiście uważam, że jest to jedno z lepszych oprogramowań do administrowania serwerem za pośrednictwem WWW, zaś szereg opcji może w znacznym stopniu ułatwić pracę nad lokalną siecią.