Sdílejte chiptron.cz na sociálních sítích



RSS feeds

Základní zabezpečení linux serveru / How to secure linux serverTisk


Rád bych hned na začátek uvedl, že nejsem profesionál v oboru bezpečnosti, ale rád bych zde zveřejnil článek pojednávající o základním zabezpečením linux serveru. Článek vychází z nastudované literatury a tak nějak i ze zkušeností.

Příchodem Raspberry Pi, Cubieboard nebo Banana Pi se rozmohla možnost mít doma i vlastní server. Ano, zní (a je) to naprosto super, mít vlastní stránky u sebe na serveru a pokud máte veřejnou IP adresu, nic vám nebrání se dostat na vaše stránky i z jiné, než lokální sítě. S tímto počinem ale přicházejí i rizika a nejsou vůbec malá. Ve světě internetu existují stovky, tisíce, milióny robotů zkoušející se dostat na nejrůznější servery a stejně tak i lidé, kteří to chtějí zkusit sami.
Další částí možných útočníků jsou sousedi, kteří to mohou zkusit také - student střední nebo i základní školy chce "hacknout" všechno :-)

Vycházejme z modelové situace, aby to vysvětlování bylo alespoň trochu účelné (mnoho informací lze však převést i na jiné situace).
Máme doma server s Raspberry Pi (Banana Pi, BeagleBone, Cubieboard aj.) a nainstalovaným OS Raspbian (Cubian, Debian, Ubuntu, arcOS aj). Zabezpečení samotných stránek je jedna věc, druhá je přístup do serveru.

1.) Heslo
Ano, heslo, ač si to myslet nemusíte, je jedno z nejdůležitější informací. Nejenom, že útočník získá přístup k vašemu serveru, on to heslo bude zkoušet i na jiné služby na celém webu. Heslo volte dostatečně dlouhé s množstvím "vychytávek". Použití písmen, číslic, interpunkce (, ! @ .) a mimo jiné i kombinaci malých a velkých písmen. Ale v souhrnu, pokud použijete heslo: heslo12345, není to nic moc. Naproti tomu heslo: ToJeMujServer!2000. Už je znatelně lepší. Čeština má i tu výhodu, že velké množství robotů pracuje tzv. slovníkovým útokem (seznam hesel, která se používají při prolamování hesel), a tak české slovní spojení byste tam moc často nepotkali.

2.) Aktualizujte programy - UPDATE & UPGRADE
Aktualizace programů je velmi důležitá. V opravných balících jsou řešeny různé problémy od nahlášených "bug" až po bezpečnostní záplaty.

3.)Méně je více
Bezpečností problémy, které by se mohly zneužít jsou častější u softwaru třetích stran než samotného systému. Proto používejte jenom ty nejnutnější, a pokud možno i "nejkvalitnější", software.

4.) Zapomeňte na protokol telnet, rlogin, rsh nebo podobné
Tudy cesta nevede. Základem je šifrované spojení. Tyto programy neposkytují dostatečnou ochranu mezi klientem a serverem ať už je to samotné šifrované spojení, ověřování či jiné ochranné prvky.
Co tedy použít, a linuxové distribuce tím disponují, je použití SSH (Secure Shell) protokolu. U použití SSH protokolu je velké množství nastavení, jak lépe zabezpečit samotný server:
změnit SSH port. SSH protokol komunikuje defaultně na portu 22.
Změnu portu provedete v souboru /etc/ssh/sshd_config na řádce: Port 22. Při zadávání nového portu buďte patrní abyste nepoužili port, na kterém pracuje jiný program - třeba OS Cubian má výchozí port 36000.
použijte SSH Protokol 2. Tato verze protokolu je bezpečnější než verze před ní.
Zamezte přistup loginu root. První, co bude robot zkoušet, bude login s názvem root. V /etc/ssh/sshd_config se nachází příkaz: PermitRootLogin yes. Ten přepište na no.
Povolte pouze některé uživatele, kteří se mohou přihlásit přes SSH v AllowUsers UserName.
Chcete-li zvýšit zabezpečení, můžete zvolit IP adresu nebo rozsah IP adres, na kterých bude SSH server naslouchat - ListenAddress.
Nebo v souborech /etc/hosts.allow a /etc/hosts.deny můžete nastavit, které konkrétní IP adresy mají přístup k jakým službám.
/etc/hosts.allow:
ALL: localhost #povoleni pristupu ke vsem sluzbam z localhost
ALL: 192.168.100.101 #povoleni pristupu ke vsem sluzbam z teto IP adresy
sshd: 110.120.130.140 #povoleni pristupu k SSH z teto IP adresy

/etc/hosts.deny:
ALL: 10.13.14.15 #pro tuto IP adresu je zakazan pristup ke vsem sluzbam
sshd: 100.101.102.103 #povoleni pristupu k SSH serveru pro tuto IP adresu

Budete-li používat server v negrafickém prostředí, zakažte spouštění softwaru v X modu - X11Forwarding yes přepište na no.
Pokud vám šifrované heslo posílané přes půlku světa nepřipadá dost bezpečné, zvolte cestu přihlašování skrze SSH klíč. Velmi hezký článek vyšel na stránce root.cz - Jak se přihlašovat na SSH bez zadávání hesla.
Jak bylo zmíněno, používejte šifrované spojení: místo telnet, použijte ssh. Místo FTP použijte SFTP.

5.) Vytvořte si svého uživatele a smažte toho přednastaveného: pi, cubie atp
Na stránce linux-mint-czech.cz naleznete podrobný návod jak na to.

6.) Pouze jeden uživatel může mít všechna práva
Nepřidávejte každého uživatele do sudoers se všemi právy (sudo visudo).

7.) Zdržení vás nezabije
Pokud máte v nastavení sudo mcedit /etc/login.defs nějaké zdržení po několika neúspěšných pokusech o přihlášení, je to jenom dobře. Čas k prolomení hesla se několikanásobně zvětší. To samé platí o počtu špatných hesel. Nastavte proto rozumnou hodnotu - např. počet opakování hesla 3, čas k pokusu o opětovné přihlášení 60 (60s).

8.) Informace o hesle
Je dobré vědět, jak dlouho je vaše heslo už v provozu nebo zda máte nastavenou expiraci hesla. To vše zjistíte pomocí příkazu chage -l UserName. Zároveň toto můžete změnit skrze terminál opět přes příkaz chage, výsledek a hash hesla se uloží v /etc/shadow. Jak použít příkaz chage se dozvíte pomocí příkazu chage --help.

9.) Připojená jednotka nemusí vše
Při automatickém mount v /etc/fstab jednotky můžete nastavit, co vše se má dovoleno připojené zařízení vykonat.
noexec - znemožní spouštět soubory na tomto médiu
nodev - nepovolí speciální znak zařízení na partition
nosuid - nenastaví přístup na partition
modelové použití: /dev/sda5 ext3 defaults,noexec,nosuid,nodev 1 2
svazek | souborový systém | upřesňující volba | zálohování souborů (program dump) | pořadí, v jakém nástroj fsck kontroluje oddíly (1 - kořenový systém souborů, 2 - všechny ostatní)


Máte nějaké další rady a nápady jak lépe zabezpečit server? Nebo jste v článku našli chybu/y? Kontaktujte nás, prosím, na: chiptron(a)seznam(dot)cz

zdroje: http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni
http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh
http://cs.wikipedia.org/wiki/Fstab
http://www.cyberciti.biz/tips/linux-security.html
http://www.tecmint.com/linux-server-hardening-security-tips/

<#EN>

I would like to tell you that I'm not prefessional in security, but i would like to show you article about basic security of linux server. Sources for this article is my own experinces and literature search.

With distribution of single-board computers as Rasberry Pi, Banana Pi, Cubieboard was created possibility to have own server at the home. Yes, it's amazing and if you have public IP address, you can connect from anywhere. You have to think for possible dangerous and these dangerous aren't negligible. In the world of internet exists a lot of robots which want to give access to your server.
Other atackers can be neighbors. Yes, student of primary school or high school want be hacker - they want hack everything :-)

We have a model situation (It will be easier to explain).
We have server with Raspberry Pi (Banana Pi, BeagleBone, Cubieboard etc.) with OS Raspbian (Cubian, Debian, Ubuntu, arcOS etc.). The security of websites is one security problem, the second security problem is access to the server.

1.) Password
Password is the most important security from all. The attacker give access to the server for first, but finally he will try to use it for access to on other websites and other services. The password has to be long as you will remeber :-) with a lot of "features". Don't forget, you can use also small and high letters, interpunction (, ! @ .) and numbers. Password type: password1234 isn't so strong as you thing. But password type: ThisIsMyServer!2000 is better. Czech, Poland, Italy or other unengland languages have advantage. Sometimes words probably will not in hackers dictionary (this is list of passwords which is used for attacks to other services - e-mail etc.) .

2.) Keep actually version of programs - UPDATE & UPGRADE
Updates are really important. In repaired packages are "bug" solutions and security fixes.

3.)Sometimes less is more, than you think.
A lot of security problems are caused third-party software. Don't use a lot of unnecessary softwares.

4.) Forget for protocol of telnet, rlogin, rsh or something else
No way. Primary is crypted connection. These programs don't provide good protection between client and server.
Use SSH (Secure Shell). A linux distributions have SSH protocol. You can use a lot of settings for better security.
Change SSH port. Yes, it's not the best protection, but it helps you. Default port is 22 and this change through /etc/ssh/sshd_config at the line Port 22. For example the Cubian uses default port 36000.
Use SSH protocol version 2. At the line Protocol 2.
Forbid root login to access through SSH. In /etc/ssh/sshd_config at the line PermitRootLogin yes change to no.
Enable only someone users: AllowUsers UserName
SSH server can be set to listen only some IP address. ListenAddress
Or, you can set /etc/hosts.allow and /etc/hosts.deny specific IP address which have access to specific services.
/etc/hosts.allow:
ALL: localhost #enable access to all services for localhost
ALL: 192.168.100.101 #enable access to all services for this IP address
sshd: 110.120.130.140 #enable access to the SSH server only from this IP address

/etc/hosts.deny:
ALL: 10.13.14.15 #forbid access to all services for this IP address
sshd: 100.101.102.103 #forbid access to the SSH server from this IP address

Will be your server only webserver? Forbid X mode. X11Forwarding yes change to no.
You can use SSH key instead of password. How to do: http://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/.
Use crypted connection SSH instead of telnet or rlogin. STFP instead of FTP.

5.) Make your own user and remove default login: pi, cubie etc
How to do: http://www.tecmint.com/add-users-in-linux/

6.) Only one user can do everything
Don't add every user to the sudoers (sudo visudo).

7.) Waiting doesn't kill you
If you have set waiting in the sudo mcedit /etc/login.defs after failed login attempts, it's really good. Time for cracking will be several times larger. It's same as number of failed login attempts. Set some good values. For example: waiting time is 60 (60s) and number of failed attempts is 3.

8.) Information about password
Do you know how long is your password active? No? You can find with chage -l UserName. You can change it through terminal chage --help. The new settings of user account will be saved in /etc/shadow.

9.) Reduce devices
You can use permission what the device can with automatic mount in /etc/fstab.
noexec - znemožní spouštět soubory na tomto médiu
nodev - nepovolí speciální znak zařízení na partition
nosuid - nenastaví přístup na partition
example: /dev/sda5 ext3 defaults,noexec,nosuid,nodev 1 2
device-spec | mount-point | fs-type | options | dump | pass


Do you have other ideas how to improve secure in linux server? Did you find mistake/error/bug in the articles? Write me e-mail: chiptron(a)seznam(dot)cz

sources: czech: http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni
czech: http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-prakticke-rady-pro-zabezpeceni-ssh
http://en.wikipedia.org/wiki/Fstab
http://www.cyberciti.biz/tips/linux-security.html
http://www.tecmint.com/linux-server-hardening-security-tips/

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,887,629 návštěv