Skocz do zawartości

Konfiguracja serwera VPS


Rekomendowane odpowiedzi

Ten poradnik zakłada, że posiadacie "goły" system Linuks zainstalowany na swoim serwerze. Od siebie mogę polecić trzy systemy na serwer: Debiana, CentOS i Ubuntu. Te trzy systemy testowałem, były bardzo stabilne i końcowo zdecydowałem zaufać CentOS i na tym systemie będę opisywał poszczególne kroki.

 

 

Spis treści:

 

Copyright by slawek481 @ FixItPc.pl

Kopiowanie całości (bądź części) tego poradnika bez mojej wiedzy i zgody zabronione.

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Co jest potrzebne do połączenia się z serwerem?

 

 

W e-mailu od serwerowni, na pewno dostaliśmy adres IP serwera oraz hasło root.

Aby zarządzać zdalnie serwerem, ściągamy programik Putty.

 

1. Uruchamiamy Putty.

 

28wc7j4.png

 

W okienku Host Name (or IP address) wpisujemy adres IP naszego serwera, który otrzymaliśmy w e-mailu. Zaznaczamy SSH. Klikamy Open.

 

2. Wyskakuje nam okienko konsoli:

 

68yg75.jpg

 

login as: wpisujemy root i wciskamy ENTER

 

3. Wyskakuje nam:

 

root@xx.xxx.xxx.xxx's password:

 

Wpisujemy swoje hasło konta root, które otrzymaliśmy w e-mailu i wciskamy ENTER

 

<blink>UWAGA!</blink> Ze względów bezpieczeństwa, przy wpisywaniu hasła nie wyświetlają się żadne gwiazdki, kropki etc.

 

4. Jeśli wszystko dobrze wykonaliśmy (hasło było poprawne), ujrzymy coś takiego:

 

rml2kn.jpg

 

Gratuluję! Właśnie dostałeś się do katalogu głównego Twojego serwera :)

 

Teraz można przejść do następnej części artykułu, mianowicie instalacji serwera WWW.

Odnośnik do komentarza

Instalacja LAMP

 

 

1. Co oznacza skrót LAMP?

 

LAMP jest to akronim utworzony z pierwszych liter wyrazów1:

 

Linux - system operacyjny

Apache - serwer WWW

MySQL - serwer bazodanowy

PHP - interpreter języka skryptowego.

 

2. Skoro już wiemy, co to jest LAMP i do czego służy, przejdźmy do procesu instalacji.

 

- Na początek zaktualizujmy repozytoria by być pewnym, ze instalujemy najnowszą, dostępną wersję oprogramowania. Wpisujemy:

yum upgrade

 

Gdy już zostanie wybrany najszybszy serwer lustrzany, wpisujemy litanię:

 

yum install httpd mysql-server php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

 

Powyższe polecenie właściwie załatwi wszystko za nas, tzn zainstaluje na początek wszystko co jest nam potrzebne do odpalenia serwera WWW.

 

 

 

1 http://pl.wikipedia.org/wiki/LAMP

Odnośnik do komentarza

Konfiguracja LAMP

 

W tej części poradnika postaram się opisać najważniejsze części plików konfiguracyjnych Apache, PHP i MySQL.

 

Apache:

 

W konsoli wklepujemy komendę:

vim /etc/httpd/conf/httpd.conf

 

Tweak ustawień:

 

Timeout 120 << czas, po którym przeglądarka wyświetla komunikat, że serwer nie odpowiada.

KeepAlive On << koniecznie ustawione na on. Znacząco odciąża serwer gdy nasza strona zawiera dużo obrazków.

MaxKeepAliveRequests 100 << Maksymalna ilość konkurencyjnych zapytań w jednej sekundzie

KeepAliveTimeout 15 << określa jak długo serwer ma czekać na następne żądanie zanim zakończy połączenie. Najlepiej ustawić 2-3 sek.

 

Dobór odpowiedniego MPM dla odpowiedniego typu serwera.

 

Worker MPM używa dużej ilości procesów potomnych (mówiąc prościej - procesów "dzieci" laugh.gif), doskonale nadaje się na serwery wieloprocesorowe, jednak jego stabilność jest krótko mówiąc do bani. Jeden proces potomny może rozłożyć cały serwer. Zjada mało pamięci RAM.

 

<IfModule worker.c>

StartServers 5

MaxClients 10

MinSpareThreads 7

MaxSpareThreads 21

ThreadsPerChild 25

MaxRequestsPerChild 25

</IfModule>

 

Prefork MPM tak samo jak Worker używa wielu procesów potomnych, jednakże ten moduł jest jednowątkowy, co sprawdza się doskonale w użytku z jednostkami wyposażonymi w pojedynczy procesor. Jest także o wiele stabilniejszy od Workera, jednakże jako że nie ma rzeczy doskonałych na tym świecie, charakteryzuje się dużym (czasami nawet ogromnym) zużyciem pamięci RAM.

 

<IfModule prefork.c>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

ServerLimit 50

MaxClients 50

MaxRequestsPerChild 0

</IfModule>

 

Powyższe ustawienia pochodzą z mojego własnego VPS o konfigu: ~3GHz zegara procesora, 2 GB RAM, choć generalnie nie ma złotego środka na konfiguracje apache. Trzeba metodą prób i błędów wypracować sobie ustawienia ;)

 

ServerSignature Off << wyłącza wyświetlanie informacji o zainstalowanym OS na serwerze i wersji Apache, PHP itd. Zalecam mieć to wyłączone ze względów bezpieczeństwa.

 

PHP:

 

W konsoli wydajemy polecenie:

vim /etc/php.ini

 

Najważniejsze elementy do zmiany:

 

max_execution_time = 60

memory_limit = 128M

upload_max_filesize = 50M

 

max_execution_time - maksymalny czas, przez jaki skrypty PHP będą się wykonywać. Zalecam ustawienie 60-120 sekund.

memory_limit - maksymalna ilość pamięci RAM, którą w jednej chwili może zaalokować skrypt.

upload_max_filesize - maksymalny rozmiar uploadowanych plików. Zalecane ustawić dużą wartość, jeśli zamierzamy importować bazę przez phpmyadmina.

 

 

MySQL:

 

Konfiguracja MySQL (jak z resztą Apache) zależy od zasobów przydzielonych nam przez hostingodawcę. Aby ułatwić sobie konfigurację MySQL, pobierzemy narzędzie mysqltuner. Wystarczy w konsoli wklepać krótką komendę:

cd /tmp

wget mysqltuner.pl

 

Następnie, nadajemy uprawnienia jako aplikacja:

chmod a+x mysqltuner.pl

 

Uruchamiamy aplikację poleceniem:

perl mysqltuner.pl

 

Narzędzie komunikuje się z nami w języku angielskim. W pierwszej kolejności, zapyta się o dane dostępowe do serwera MySQL:

Please enter your MySQL administrative login: root

Kolejny komunikat - pytanie o hasło (ustawialiśmy je podczas instalacji MySQL, pamiętacie? ;) )

Please enter your MySQL administrative password:

 

Utworzy się raport, mniej więcej w tym stylu:

 

>> MySQLTuner 1.0.1 - Major Hayden <major@mhtx.net>

>> Bug reports, feature requests, and downloads at http://mysqltuner.com/

>> Run with '--help' for additional options and output filtering

Please enter your MySQL administrative login: root

Please enter your MySQL administrative password:

 

-------- General Statistics --------------------------------------------------

[--] Skipped version check for MySQLTuner script

[OK] Currently running supported MySQL version 5.0.77

[OK] Operating on 32-bit architecture with less than 2GB RAM

 

-------- Storage Engine Statistics -------------------------------------------

[--] Status: -Archive +BDB -Federated +InnoDB -ISAM -NDBCluster

[!!] InnoDB is enabled but isn't being used

[!!] BDB is enabled but isn't being used

[OK] Total fragmented tables: 0

 

-------- Performance Metrics -------------------------------------------------

[--] Up for: 22m 21s (19 q [0.014 qps], 13 conn, TX: 8K, RX: 1K)

[--] Reads / Writes: 100% / 0%

[--] Total buffers: 34.0M global + 2.7M per thread (100 max threads)

[OK] Maximum possible memory usage: 302.7M (29% of installed RAM)

[OK] Slow queries: 0% (0/19)

[OK] Highest usage of available connections: 1% (1/100)

[OK] Key buffer size / total MyISAM indexes: 8.0M/67.0K

[!!] Key buffer hit rate: 0.0% (1 cached / 1 reads)

[!!] Query cache is disabled

[OK] Temporary tables created on disk: 0% (0 on disk / 4 total)

[!!] Thread cache is disabled

[OK] Table cache hit rate: 50% (6 open / 12 opened)

[OK] Open file limit used: 1% (12/1K)

[OK] Table locks acquired immediately: 100% (13 immediate / 13 locks)

[!!] Connections aborted: 30%

 

-------- Recommendations -----------------------------------------------------

General recommendations:

Add skip-innodb to MySQL configuration to disable InnoDB

Add skip-bdb to MySQL configuration to disable BDB

MySQL started within last 24 hours - recommendations may be inaccurate

Enable the slow query log to troubleshoot bad queries

Set thread_cache_size to 4 as a starting value

Your applications are not closing MySQL connections properly

Variables to adjust:

query_cache_size (>= 8M)

thread_cache_size (start at 4)

 

 

W zaznaczonej na czerwono części wypisane są wszystkie elementy, które wymagają poprawek do stabilnej pracy serwera. Aby je wprowadzić, wpisujemy:

vim /etc/my.cnf

 

Jak posługiwać się vim?

szukamy podanych wartości, które wymagają poprawek, zmieniamy i zapisujemy. (Patrz "Jak posługiwać się vim").

Odnośnik do komentarza

Instalacja panelu zarządzania serwerem

 

Panel zarządzania serwerem, którego instalację opiszę, zwie się Virtualmin GPL. Jest to bardzo dobry panel, a przede wszystkim darmowy. (Oczywiście są płatne alternatywy - CPanel, DirectAdmin, Plesk [powyżej jednej domeny]).

 

1. Pobieramy skrypt instalacyjny na serwer:

cd /tmp

wget http://software.virtualmin.com/gpl/scripts/install.sh

 

2. Nadajemy uprawnienia instalacyjne:

chmod a+x install.sh

 

3. Uruchamiamy instalator Virtualmin

sh install.sh

 

4. Wyskoczy nam informacja o wersji i o systemach operacyjnych obecnie wspieranych:

 

Welcome to the Virtualmin GPL installer, version 1.0.4

 

WARNING:

 

The installation is quite stable and functional when run on a freshly

installed supported Operating System, but upgrades from existing .wbm-

based systems, or systems that already have Apache VirtualHost

directives or mail users, will very likely run into numerous problems.

Please read the Virtualmin Administrators Guide before proceeding if

your system is not a freshly installed and supported OS.

 

This script is not intended to update your system! It should only be

used to install Virtualmin, on a supported OS. If you have previously

installed Virtualmin via this script or the GPL version of this script,

upgrades and updates should be handled within Virtualmin itself. Once

Virtualmin is installed, you never need to run this script again.

 

The systems currently supported by install.sh are:

CentOS 4 and 5 on i386 and x86_64

Debian 4.0 and 5.0 on i386 and amd64

Ubuntu 8.04 LTS and 10.04 LTS on i386 and amd64

 

If your OS is not listed above, this script will fail. More details

about the systems supported by the script can be found here:

 

http://www.virtualmi...os-support.html

 

Na pytanie: "Continue?" odpowiadamy wciskając y na klawiaturze, a następnie ENTER.

 

4. Wyskoczy nam pytanie o nazwę hosta. Wpisujemy np komputer.localhost, serwer.localhost, dowolną nazwę. Najlepiej, żeby było to z coś.localhost, żeby nie mylić domen lokalnych z domenami internetowymi.

 

5. Instalator przygotowywuje serwer do instalacji Virtualmin, instaluje zależności itd...

 

6. Gdy już konfiguracja systemu operacyjnego i zależności, instalator przejdzie do części właściwej - instalacji pakietu podstawowego Virtualmin.

 

7. W pewnym momencie wyskoczy to:

 

-WARNING: Your ClamAV installation is OUTDATED!

WARNING: Local version: 0.96 Recommended version: 0.96.1

\WARNING: getfile: daily-10678.cdiff not found on remote server (IP: 194.186.47.19)

WARNING: getpatch: Can't download daily-10678.cdiff from database.clamav.net

/WARNING: getfile: Error while reading database from database.clamav.net (IP: 199.184.215.2): Operation now in progress

WARNING: getpatch: Can't download daily-10678.cdiff from database.clamav.net

-WARNING: getfile: daily-10678.cdiff not found on remote server (IP: 209.209.47.66)

WARNING: getpatch: Can't download daily-10678.cdiff from database.clamav.net

WARNING: Incremental update failed, trying to download daily.cvd

 

Zignorować - to tylko komunikat o zdezaktualizowanym antywirusie i niemożności aktualizacji.

 

8. Tadamm! Virtualmin zainstalowany. Logujemy się do niego przez https://ipserwera:10000/, login to root a hasło to hasło do konta root.

 

Ważne! Pamiętajcie o https, Virtualmin nie pozwala na logowanie bez SSL. Należy też dodać certyfikat do wyjątków.

 

Konfigurację Virtualmina opiszę w innym poradniku ;)

Odnośnik do komentarza

Zabezpieczanie serwera

 

Opiszę tutaj kilka moim zdaniem najważniejszych rzeczy dotyczących bezpieczeństwa Waszego serwera.

 

1. Zmiana domyślnego portu logowania SSH.

 

Boty próbujące dostać się do serwera przez SSH domyślnie przeszukują port 22. Aby się przed tym uchronić, należy zmienić port nasłuchu SSH.

 

W konsoli wklepujemy:

vim /etc/ssh/sshd_config

 

Poszukujemy linijki:

 

Port 22

 

Zmieniamy "22" na dowolną liczbę z przedziału >5000. Zapamiętaj to, co wpiszesz, gdyż od restartu SSH będziesz w Putty wpisywał nowy port!

 

Dodatkowo:

MaxAuthTries 6

 

Zmieniamy "6" na 3. Po 3 nieudanych próbach zalogowania serwer zamknie połączenie. Utrudnia to robotę botom, które metodą słownikową próbują odgadnąć hasło dostępu.

 

Zapisujemy plik i restartujemy ssh:

/etc/init.d/sshd restart

 

2. Jeżeli na naszym VPSie ma stać nie tylko strona/forum a np także serwer TeamSpeak, pod żadnym pozorem nie uruchamiamy go jako root! Należy stworzyć nowego użytkownika:

 

adduser slawek481

 

nadać mu silne hasło:

 

passwd slawek481

 

Wyskoczy nam:

Changing password for user slawek481.

New UNIX password:

wpisujemy hasło.

 

Retype new UNIX password:

wpisujemy hasło ponownie. Jeśli po tym wszystkim ukaże nam się:

 

passwd: all authentication tokens updated successfully.

to znaczy, że hasło zostało ustanowione. Następnie logujemy się przez SSH na utworzonego przed chwilą użytkownika i majstrujemy ;)

 

3. Instalacja fail2ban

 

fail2ban jest skryptem, który banuje adres IP na ustaloną ilość czasu, po nieudanych próbach logowania do SSH i FTP.

 

1. Wklepujemy kolejno do konsolki jako root:

cd /tmp

wget http://superb-west.dl.sourceforge.net/sourceforge/fail2ban/fail2ban-0.8.1.tar.bz2

tar -xjvf fail2ban-0.8.1.tar.bz2

cd fail2ban-0.8.1

python setup.py install

 

2. Konfiguracja fail2ban.

vim /etc/fail2ban/jail.conf

 

Jako że nie chcemy banować samych siebie, wklepujemy tam coś takiego:

 

ignoreip = 127.0.0.1 192.245.12.0/24 xxx.xxx.xx.x/19 xxx.xx.xxx.x/24

 

w miejsce xxxxxx wstawiamy swoje IP.

 

Zaznacz tylko te chronione usługi, które tak naprawdę potrzebujesz. W naszym przypadku SSH i FTP. Zmieniamy enabled = na true w obu przypadkach.

 

bantime = 600

Długość bana (w sekundach).

 

findtime = 600

Po jakim czasie fail2ban ma zresetować liczbę nieudanych prób logowania. Przykład: Ktoś 2 razy źle wpisał hasło. Jeśli w ciągu 600 sekund ponownie źle wprowadzi hasło, zostanie zbanowany. Po 600 sekundach znowu będzie mógł dwa razy się pomylić.

 

maxretry = 3

 

Maksymalna ilość prób logowania zanim IP zostanie zbanowane. Zalecam pozostawienie domyślnej wartości.

 

 

 

To wszystko! :) Masz już skonfigurowany serwer z panelem do zarządzania, gotowy do stawiania stronki i zabezpieczony przed najprostszymi atakami :cheer: :cheer:

Odnośnik do komentarza
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...