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