Podstawowe zabezpieczenie serwera VPS


Podstawowe zabezpieczenie serwera VPS

Zabezpieczenie serwera VPS to niezbędna czynność którą należy wykonać niezwłocznie po zakupie serwera. Każdy jest odpowiedzialny za swoją maszynę!

– aktualizacja systemu:

lista pakietów:

apt-get update

pakiety:

apt-get upgrade

– zmiana domyślnego portu 22 dla protokołu SSH:

vim /etc/ssh/sshd_config

odświeżamy uprawnienia:

/etc/init.d/ssh restart

[uwaga] nie wpisywać numeru portu który jest już używany przez system. Podczas logowania przez ssh należy obowiązkowo podać numer portu.

– użytkownik root:

Przede wszystkim zmieniamy domyślne hasło wygenerowane podczas instalacji systemu dla użytkownika root:

passwd root

Należy koniecznie zablokować możliwość bezpośredniego logowania do maszyny dla użytkownika root:

W tym celu dodajemy nowego użytkownika:

adduser login

gdzie login to nazwa nowo tworzonego użytkownika. Po uzupełnieniu niezbędnych danych takich jak np. hasło, użytkownik zostanie utworzony.

aby zalogować się do systemu z uprawnieniami roota należy wpisać:

su root

i podać hasło dla użytkownika root.

Edytujemy teraz plik:

vim /etc/ssh/sshd_config

i linię:

PermitRootLogin yes

zamieniamy na:

PermitRootLogin no

odświeżamy uprawnienia:

/etc/init.d/ssh restart

pozwoli to wyłączyć możliwość logowania do maszyny bezpośrednio dla użytkownika root:

Access denied

– Fail2Ban – czyli blokowanie ataków brute force:

Fail2Ban to aplikacja, która powinna być zainstalowana na każdej maszynie działającej pod kontrolą Unix / Linux / BSD, która posiada zewnętrzne IP! Program działa za pomocą skanowania logów systemowych w przypadku wykrycia nieprawidłowości fail2ban w odpowiedni sposób blokuje atak.

instalacja:

sudo apt-get install fail2ban

podstawowa konfiguracja – kopiujemy plik jail.conf -> jail.local. Wynika to z faktu, że przy aktualizacji oprogramowania wszystkie zmiany mogą być napisane w głównym pliku konfiguracyjnym jail.conf – stąd zachodzi potrzeba jego skopiowania:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

modyfikujemy według własnych potrzeb:

[INCLUDES]
 
#before = paths-distro.conf
before = paths-debian.conf
 
# The DEFAULT allows a global definition of the options. They can be overridden
# in each jail afterwards.
 
[DEFAULT]
 
#
# MISCELLANEOUS OPTIONS
#
 
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8
 
# External command that will take an tagged arguments to ignore, e.g. <ip>,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command <ip>
ignorecommand =
 
# "bantime" is the number of seconds that a host is banned.
bantime  = 30
 
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 30
 
# "maxretry" is the number of failures before a host get banned.
maxretry = 1

odświeżamy konfigurację restartując program:

sudo /etc/init.d/fail2ban restart

Narzędzie Fail2Ban z powodzeniem można wykorzystać również do zabezpieczenia strony opartej na wordpressie:

instalacja pluginu:

WordPress Fail2ban Plugin

po instalacji zostanie wygenerowany plik – wordpress-hard.conf który należy przekopiować do odpowiedniego katalogu:

sudo cp /var/www/website_directory/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/

w pliku:

/etc/fail2ban/jail.local

dodajemy wpis tzw. więzienie – ban:

[wordpress-hard]
 
enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https

od tej pory po 3 nieudanych próbach logowania jest ban np. na 30 sekund (ustawione domyślnie przez parametr bantime = 30)

weryfikacja logów:

sudo tail /var/log/auth.log

status filtra:

sudo fail2ban-client status wordpress-hard

restart aplikacji:

sudo service fail2ban restart

status aplikacji:

sudo /etc/init.d/fail2ban status

wynik:

● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset:                                                                                                                                                              enabled)

Na Ubuntu w wersji 14.04 mogą wystąpić drobne problemy w działniu aplikacji, w tym celu należy:

service rsyslog restart

oraz w pliku:

/etc/fail2ban/jail.local

dokonać zmiany wpisu:

"backend = auto"

na

"backend = polling"

– automatyczna kopia baz danych:

instalacja narzędzia:

sudo apt-get install automysqlbackup

włączenie automatycznej kopii baz danych:

sudo automysqlbackup

w katalogu:

/var/lib/automysqlbackup

znajduje się struktura katalogów gdzie wykonywane są kopie zapasowe:

  • daily,
  • monthly,
  • weekly.

program dodaje odpowiednie wpisy w crontab:

 cat /etc/crontab

wynik:

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Leave a comment

Your email address will not be published.


*