Ubuntu szerver alapbeállítás

Miután elkészültünk Ubuntu 18.04 telepítésünkkel, még nem eshetünk neki web szerünk installálásának. Először frissítenünk kell a telepítési csomagunkat, el kell végeznünk néhány ubuntu szerver alapbeállítás és biztonság módosítást, hogy megnehezítsük a támadási kísérleteket.

Biztonság – szerver alapbeállítás

Jelen leírás nem ad tökéletes védelmet, de a gyári telepítési beállításoktól sokkal nagyobb biztonságot nyújt. A lenti lépésekben biztonságosabbá tesszük az ssh kapcsolatot, lecserélve a felhasználó/jelszó belépési lehetőséget a publikus/privát kulcs használatával. Beállítunk egy alapszintű tűzfalat. Megkeserítjük a behatolók életét ip cím blokkolással a fail2ban segítségével.

Ha teljeskörű szerver hackelés elleni védelemre van szükséged, keress minket, kérj árajánlatot.

Követelmény

Feltelepített Ubuntu 18.04 LTS szerver, például a korábbi telepítési leírásunk alapján.

Megjegyzés

Minden parancsot root felhasználóként belépve indítunk el ebben az útmutatóban. Ha te nem szeretnél belépni, akkor a lent felsorolt parancsok elé a “sudo” szöveget írd be.

Apt repository (forrás gyűjtemény) módosítása

Módosítani fogjuk az /etc/apt/sources.list fájl tartalmát, hozzáadjuk a universe és multiverse repokat. Lehetséges, hogy már benne vannak, akkor csak ellenőrizzük le (friss telepítésnél már benne lesz).

Leegyszerűsítve az alábbi sorokat kell kikommentelni illetve beszúrni a lista végére:

nano /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic universe
deb http://archive.ubuntu.com/ubuntu bionic-updates universe
deb http://archive.ubuntu.com/ubuntu bionic multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates multiverse 

Futtassuk le az alábbi parancsot a lista frissítéséhez.

apt update

Ha kiváncsiak vagyunk rá, hogy milyen alkalmazásokat, modulokat kell frissítenünk, az alábbi paranccsal megnézheted.

apt list --upgradable

Indítsuk el a frissítést az alábbi paranccsal.

apt upgrade

Ha azt láttad, hogy új kernel csomag is telepítésre került, indítsd újra a szervert. Nem kötelező, de akkor nem a legfrissebb kernel lesz a gépen, és egyszer úgyis újra kell indítanod a rendszert.

reboot

Váltsuk át a rendszerfuttató héjat dash-ről bash-re. Jelenleg a /bin/sh a /bin/dash -re mutató link.

dpkg-reconfigure dash
	Use dash as the default system shell (/bin/sh)? --> <No>

Apparmor letiltása és eltávolítása

Az AppArmor egy biztonsági bővítény, hasonlóan, mint a SELinux. Ez a lépés nem kötelező, de sok fejfájástól megóvhatjuk magunkat, ha eltávolítjuk az AppArmort. Óráink mehetnek el a hiba elhárítására nagyobb rendszernél, majd a végén úgyis az derül ki, hogy az AppArmor okozta a problémát.

Ezért eltávolíthatjuk.

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

Rendszer óra szinkronizálása NTP szerverrel

Fizikai szerverek esetén jó ötlet, ha az órát NTP szerverhez (network time protocol)  szinkronizáljuk, így elkerülhetünk sok problémát, például debuggolásnál, ha megadott időpontra kell keresnünk hibát.

De szükséges akkor is, ha olyan webes alkalmazást szeretnénk futtatni, ami a böngésző kliens óráját is nézi. Virtuális gépnél elhagyhatjuk, de én mindenhova telepíteni szoktam.

apt-get -y install ntp

És a szervered órája máris szinkronizálva lesz.

SSH szolgáltatás biztonságosabbá tétele

Távoli root bejelentkezés tiltása

Tiltsjuk le a távoli root bejelentkezést az ssh kapcsolaton, hogy még biztonságosabb legyen Ubuntu 18.04 szerverünk. Ehhez az alábbi parancsot futtassuk le. Ez az ubuntu szerver alapbeállítás kardinális része.

nano /etc/ssh/sshd_config

Keressük meg (Ctrl+W) az alábbi szöveget PermitRootLogin és írjuk át erre.

PermitRootLogin no

Mentsük el a változtatásokat a Ctrl+X, Y billentyűparancsokkal.

RSA kulcsos hitelesítés beállítása

A felhasználónév/jelszó párosítás nem a legbiztonságosabb kombináció, nyílt teret adunk a betörésre ha nem elég erős jelszót használunk. A hackertámadások a legtöbb esetben bot hálózatokból érkeznek, amik megpróbálják feltörni a legtöbbször használt felhasználói nevekhez tartozó jelszavakat, ami számunkra is borzasztó veszélyes és kellemetlen.

Sokkal komolyabb védelmet érhetünk el, ha privát/publikus kulcsot használunk bejelentkezéshez, ezeket az adatokat sokkal nehezebb megszerezni a nem kívánatos személyeknek. Az autentikációs kulcsot legegyszerűbben a PuTTY Key Generator alkalmazással hozhatsz létre.

Futtasd a PuTTYgen alkalmazást, majd nyomj a Generate gombra.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Mozgasd az egered a fenti üres területen, így generálod le kulcsod.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Ha kész, a key commentbe add meg felhasználói neved, a key passphrase-be pedig egy bonyolult jelszót, majd ugyanezt még egyszer az alatta lévő mezőbe a megerősítéshez.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Mentsd el a publikus (pl. ubuntu.pub) és privát kulcsod (pl. ubuntu.ppk). Később még szükség lesz rá, illetve más szervereknél is fel tudod majd használni, ha akarod. Még ne zárd be az ablakot.

A fenti Public key mező tartalmát másold ki, és a szerveredre lépjünk vissza. Most a saját fiókodba lépj be. Ha még root felhasználóként vagy bent, akkor írd be az exit parancsot, ezzel visszatérsz fiókodba.

ubuntu@droid1:~$ mkdir ~/.ssh

Hozd létre az alábbi fájlt, és másold be a publikus kulcsot (SHIFT+INS).

nano ~/.ssh/authorized_keys
Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Lépjünk vissza root felhasználóra (sudo -s). Tiltsuk le a jelszavad bejelentkezést az ssh kapcsolaton. Ehhez újra nyissuk meg az sshd konfig fájlt.

nano /etc/ssh/sshd_config

Keressük meg (Ctrl+W) a PasswordAuthentication sort és írjuk át.

PasswordAuthentication no

Mentsük el a változtatásokat a Ctrl+X, Y billentyűparancsokkal, és indítsuk újra az ssh szolgáltatást.

sudo service ssh restart

Kapcsolat tesztelése

Teszteljük le az ssh kapcsolatot, ehhez a PuTTY alkalmazást használjuk. Próbáljuk ki az előző felhasználó/jelszó páros módon, ha jól csinltuk, az alábbi hiba fogad minket.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Akkor örülhetünk igazán, ha a generált kulcsunk felhasználásával be is tudunk majd lépni :).

Ehhez állítsuk be privát kulcsunkat a szerver kapcsolathoz a Category menüpontok alatt. Keressük meg a Connection -> SSH -> Auth menüpontot és válasszuk ki a .ppk privát kulcsunk, majd nyomjuk meg az Open gombot.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Ha minden sikeres volt, akkor az alábbi felület fogad minket, ahol megadhatjuk felhasználói nevünket, majd a kulcs generálásako megadott passphrase jelszavunkat írjuk be.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Örülünk? Ha bujottál, gratulálok, ha nem, akkor a konzolban nézd át, mit írhattál el, vagy keress engem facebook oldalunkon, segítek.

Ubuntu 18.04 LTS szerver alapbeállítás RSA kulcsos hitelesítés beállítása

Tűzfal beállítása

Az Ubuntu egy nagyon könnyen kezelhető tűzfallal érkezik, melynek neve UFW (Uncomplicated Firewall). Ha a mi telepítési leírásunk alapján mentél végig, akkor biztosan fel van telepítve a tűzfal, csak nem aktív. Ellenőrizzük le, hogy fent van-e és milyen állapotban van.

ufw status
	Status: inactive

Ha nincs fent akkor telepítsük az alábbi paranccsal. Ha a fenti sort látjuk, akkor ezt a lépést kihagyhatod.

apt install ufw

Mivel webszervert szeretnénk telepíteni és ssh-n is el szeretnénk érni (ftp kiszolgálót sosem telepítek éles szerverre). ezért engedélyezzük ezeket a protokollokat, mielőtt aktiváljuk a tűzfalat és kitiltjuk saját magunkat is.

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Most már engedélyezhetjük tűzfalunkat.

sudo ufw enable
	Command may disrupt existing ssh connections. Proceed with operation (y|n)? --> Y

Mielőtt kilépnénk, nézzük meg a tűzfal szabályokat az alábbi beszédesebb paranccsal.

sudo ufw status verbose

Az alábbi sorokat kell látnunk.

	Status: active
	Logging: on (low)
	Default: deny (incoming), allow (outgoing), disabled (routed)
	New profiles: skip
	To Action From
	-- ------ ----
	22/tcp ALLOW IN Anywhere
	80/tcp ALLOW IN Anywhere
	443/tcp ALLOW IN Anywhere
	22/tcp (v6) ALLOW IN Anywhere (v6)
	80/tcp (v6) ALLOW IN Anywhere (v6)
	443/tcp (v6) ALLOW IN Anywhere (v6)

Fail2ban telepítése

Bármelyik, nyilvánosan elérhető szerver potenciális célpontja a hacker támadásoknak. Megpróbálhatnak mindenféle támadást indítani a szerverre, és az egyetlen módja annak, hogy kísérleteiket hiábavalóvá tegyük, ha a Fail2Ban alkalmazást feltesszük. Ez a lépés az ubuntu szerver alapbeállítás utolsó eleme.

A Fail2ban az IP tables használatával egyszerűen csökkenti a támadási kísérleteket azzal, hogy kitiltja a felhasználókat (azok ip címeit), akik megpróbálnak csatlakozni a szerverhez a sikertelen bejelentkezési kísérletek függvényében.

A Fail2ban telepítését az alábbi paranccsal végezhetjük el.

sudo apt install fail2ban

A Fail2ban alapértelmezett beállításokat tartalmaz, melyeket a config fájl átírásával módosíthatunk. Az ssh kapcsolatunk védelméhez az aláábi sorokat illesszük be a jail.local fájlba.

sudo nano /etc/fail2ban/jail.local
	[sshd]
	enabled = true
	port = 22
	filter = sshd
	logpath = /var/log/auth.log
	maxretry = 3

Majd indítsuk újra a Fail2Ban alkalmazást, hogy életbe lépjen védelmünk.

sudo systemctl restart fail2ban

Ezekkel a beállításokkal 3 sikertelen bejelentkezési kísérlet után kitiltjuk a próbálkozó ip címét. Ha nem jól írjuk be jelszavunkat, saját magunkat is kitiltjuk, így innentől odafigyeléssel pötyögjünk.

Konklúzió

Bár a fent leírtak nem adnak teljeskörű védelmet, máris sokat tettünk a behatolások ellen. Ha webes alkalamzásokat szeretnél publikusan futtatni, akkor gondoskodni kell a webszerver, a php és adatbázis megfelelő védelméről is.

Az ubuntu szerver alapbeállítás el is készült. Ha ettől többet szeretnél, keress meg minket, kérj árajánlatot és elvégezzük a szervered teljes védelmét a webes támadások ellen is.