Sam opis powstał w oparciu o różne list/dyskusje na stronach anglojęzycznych. Całość została zrobiona na stabilnej wersji Debiana ?sarge?. Sam nie testowałem, ale znajomy sprawdzał to samo dla mysqla w wersji 5.0 i powiedział, że też działa. Sprawdźcie dajcie znać. Docelowo miałem pisać jeszcze o instalacji apacha + chroot, ale takie dokumenty zostały już napisane, więc trzeba z tego korzystać linki są na samym końcu dokumentu
MYSQL 4.1 czyli zabawę czas zacząć.
Jeśli jeszcze nie macie zainstalowanego mysql?a to z konta roota wydajemy polecenie:
|
Oczywiście dajemy T i enter po zainstalowaniu sprawdzamy czy wszystko działa.
|
i powinniśmy uzyskać odpowiedź
|
Czyli mamy juz mysqla :). Teraz wybieramy sobie miejsce w którym chcielibyśmy zamknać naszego mysql?a. Ja wybrałem /servers/ więc:
|
Teraz musimy stworzyć naszemu mysql?owi środowisko do pracy.
Jesteśmy w katalogu /servers/mysql i wykonujemy następujące komendy.
|
Kopjujemy pare podstawowych lików:
|
Potrzebujemy pliku hosts ale tylko z wpisem o localhost. Albo kopiujemy go z /etc/ i usuwamy niepotrzebne wpisy albo:
|
To samo robimy z passwd, potrzebujemy go ale tylko z wpisem o użytkowniku który będzie uruchamiał mysql?a:
|
Teraz skopiujemy parę innych rzeczy, które napewno nam będą potrzebne:
|
Następnym krokiem będzie skopiowanie plików samego mysql?a. Czyli:
|
I jeszcze baze danych:
|
Teraz na chwile zajmiemy się naszymi plikami konfiguracyjnymi. Musimy wprowadzić następujące zmiany: w pliku /etc/mysql/debian.cnf trzeba zmienić linijke:
|
I w etc/mysql/my.cnf w sekcji [client]
|
i w tym samym pliku znajdź linijke chroot = i zmień ją na chroot = /servers/mysql jeśli takiej lińji niebędzie poprostu ją stwórz.
Już prawie mamy to co nam do szczęscia potrzeba, ale brak nam dwóch dość dziwnych urządzeń które normalnie znajduą się w katalogu /dev/. Czyli /dev/null i /dev/log:
|
Co do drugiego urządzenia jest ono tworzone przez syslogad i nie można go stwożyć sztucznie (przynajmniej ja nie umiem) dlatego należy zmienić sposób w jaki syslog startuje dodając mu przełącznik:
|
I wyłączyć i włączyć syslogd, sam restart nie pomaga nie wiem czemu. Na tym etapie możemy zrobić już /etc/init.d/mysql stop a potem start i mysql wystartuje w chrotowanym środowisku. Można teraz usuną pliki z bazą danych jak i /usr/share/mysql bo do prawidłowej pracy samego mysql?a nie są potrzebne przynajmniej z tego co do tej pory zauważyłem, ale wtedy skrypt startujący z mysql?em będzie mówił o braku pilków które tak naprawde są ale w innym miejscu widocznym dla mysql?a. W samym środowisku chroot nie stworzyliśmy także usera debian-sys-maint który niby jest potrzebny do prawidłowego działania crona, ale biorąc pod uwagę że jest w naszym normalnym systemie wszystko powinno działać normalnie. Jakby ktoś miał czas to stestować byłbym dźwięczny za uwagi. Ten sposób na zamknięcie mysql?a w danym katalogu jest mniej wygodny niż chroot np. apacha ale niestety jest to jedyny sposób jaki znalazłem. Jeśli masz już działającego apacha, chrootowanego lub nie to żeby móc cieszyć się nowym serverem mysql?a musisz edytować plik startowy /etc/init.d/mysql dodając do niego lińje mniej więcej w rejonach jak poniżej. Ważne jest to aby server mysql?a i server apacha znajdowały w tym samym systemie plików czyli na tej samej partycji. Poniżej wykomentowałem /etc/mysql/debian-start i serwer działa u mnie bez zarzutu, ale teoretycznie to powinno zostać.
|
Bezpieczeństwo a konfiguracja Mysql?a
Odizolowaliśmy sobie nasz serwerek ale teraz możemy zadać sobie pare pytań dzięki czemu nasze dziecko będzie pardziej bezpieczne. Czy potrzebujemy zdalnego dostępu do naszej bazy jeśli nie to powinniśmy wyłączyć nasłuchiwanie na porcie 3306 (taki jest chyba w standarzdzie) a nasze aplikacje nadal będą mogły korzystać z mysql?a poprzez sokety. Czyli jeśli nie interesuje nas dostęp zdalny w pliku /etc/mysql/my.conf w sekcji [mysqld] dopisujemy skip-networking
Następny krok wyłączamy funkcje LOAD DATA LOCAL INFILE które włączone zmniejszają naszą odporność na ataki SQL Injection. W tym samym pliku w tej samej sekcji dopisujemy lińje set-variable=local-infile=0
Kolejnym krokiem będzie zmiana hasła administratora:
|
Usuwamy baze danych test :)
|
Możemy zmienić również nazwe konta administratora:
|
Można też usunąć wszystkich ?niepotrzebnych? użytkowników, dlaczego można bo nie wiem jak bardzo w systemie jest potrzebne konto debian-sys-maint które ma związek ze skryptem startującym z mysql?em /etc/mysql/debian-start To tyle jeśli chodzi o mysql?a.
Jeśli interesuje Cię opis instalacji apacha2 http://dug.net.pl/texty/apache2.pdf
Jeśli chciałbyś zamknąć apacha w chroocie http://linio.terramail.pl/apache.html