Tegyük biztonságossá a CMSMS-t
(import a http://www.cmsmadesimple.hu oldalról)
A telepítés és a magyarítás után (sőt lehet, hogy inkább előtt!) talán a legfontosabb feladat, hogy biztonságossá tegyük CMSMS oldalunkat. Mivel nem akarok butaságot írni, gondoltam a cmsms wiki talán nem téved, inkább lefordítottam és összefoglaltam azt:
Forrás
Ez egy rövid összefoglaló a fórumon, a wiki-n és egyéb oldalakon taláható, ezen témakört érintő útmutatóknak.
Nem végleges változat, a jövőben kiegészülhet.
Rendszer beállítások: (unix)
- Tartsuk rendszerünket mindíg naprakész (friss) állapotban (használjuk a cron-t, hogy folyamatosan tudjunk a rendelkezésre álló frissítésekről)
- Futtassuk Apache-unkat chroot-Jail módban. Itt egy pillanatra megállunk: ha nem Apache, akkor utána kell nézni (ez most nem feladatom). Chroot-jail egy biztonsági megoldás, amely megakadályozza a futó process-t hogy hozzáférjen a file-rendszer egyéb részeihez. +link
- Használjunk jó "erős" jelszót. Soha ne lépjünk be root-ként, vagy sudo-t használva.
- Amennyiben szükséges, hogy távolról csatlakozzunk a szerverhez, feltétlenül SSH-t használjunk.
- Használjunk tűzfalat/DMZ-t és figyeljük az összes hozzáférést SNORT-tal (hálózati behatolásjelző rendszer)
- Csak a szükséges programokat telepítsük és ami nem szükséges, azt töröljük (service/daemon).
- Csak a szükséges portokat nyissuk meg.
- Ha db-manager tools-t akarunk telepíteni (pl. phpmyadmin) nevezzük át a default program könyvtárat pl.: "/pma39xRlklkLK3d"és védjük azt --> .htaccess és .htpassword
- Gyakran ellenőrizzük az Apache és a rendszer log file-okat.
- Backup --> az utolsó esély!!!
Készítsünk teljes backup-ot a rendszerünkről. Rendszeresen mentük a mysql dump és CMSMS file-jainkat (/image, /upload).
Paranoid user-eknek: Több backup-ot készítsünk és elkülönítve (fizikailag is) tároljuk, egymástól távol. (megj.: ez már tényleg paranoia, de mivel ártani nem árt, hát tessék...)
PHP beállítások:
Minimálisan az alábbi beállításokat alkalmazzuk a php.ini file-ban:
expose_php = Off
display_errors = Off
log_errors = On
register_globals = Off
allow_url_fopen = Off
allow_url_include = Off
Megjegyzés: Az első sort csak abban az esetben kommentezzük ki, ha feltétlenül szükségünk van erre a funkcióra!
- Ha nincs rá feltétlenül szükségünk a PHP futtatáshoz, a felesleges modulokat (pl.: CLI) távolítsuk el (uninstall). Néhány funkció nem fog futni (pl.: GD), ezért az eltávolítás előtt teszteljük.
- Távolítsuk el a kiterjesztésekre vonatkozó, de nem használt utasításokat a php.ini-ből
- Ellenőrizzük és szükség szerint állítsuk be a php.ini file jogosultságait és tulajdonosát.
Apache beállítások:
Ha nem létezik, hozzuk létre és másoljuk be a CMSMS főkönyvtárába a .htaccess file-t az alábbi tartalommal:
# option to remove directory listings in all folder
# (avoid publishing unwanted contents)
Options -Indexes
# Deny access to config.php
# This can be useful if php ever breaks or dies
# Use with caution, this may break other functions of CMSms that use a
# config.php file. This may also break other programs you have running
# under your CMSms install that use config.php. You may need to add
# another .htaccess file to those directories to specifically allow config.php.
<Files "config.php">
order allow,deny
deny from all
</Files>
# URL Filtering helps stop some hack attempts
#IF the URI contains a "http:"
RewriteCond %{QUERY_STRING} http\: [OR]
#OR if the URI contains a "["
RewriteCond %{QUERY_STRING} \[ [OR]
#OR if the URI contains a "]"
RewriteCond %{QUERY_STRING} \] [OR]
#OR if the URI contains a "<script>"
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#OR script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#OR any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
#IF the URI contains UNION
RewriteCond %{QUERY_STRING} UNION [OR]
#OR if the URI contains a *
RewriteCond %{QUERY_STRING} \*
#then deny the request (403)
RewriteRule ^.*$ - [F,L]
# End URL Filtering
# No sense advertising what we are running
ServerSignature Off
# HTTP response header forced to be "Server: Apache" only
# Sometimes this istruction must be saved inside httpd.conf or
#apache.conf or sites-enabled instead of .htaccess
ServerTokens Prod
CMSMS beállítások:
- Használjunk erős admin jelszót.
- Soha ne használjuk az "admin" vagy az "adminisztrátor (vagy ennek változatai) neveket a CMSMS admin felhasználó neveként. Használjunk más nevet, de ne felejtsük el, hogy ha admin-ként írunk bejegyzést, akkor a név megjelenik az oldalon.
- Nevezzük át az admin könyvtárat, például "admin39xRlklkLK3d". (Ne használjunk könnyen kitalálható nevet) Ne felejtsük el, hogy ebben az esetben a config.php-ben is meg kell változtatni a beállításokat: $config['admin_dir'] ="admin39xRlklkLK3d"
- Védjük jelszóval az admin könyvtárat.
Sok tárhelyszolgáltató engedélyezi ezeket a honlapok esetében (még több nem, főleg az ingyenes tárhelyek!). Ha lehetséges, akkor módosítsuk az Apache SSL (Secure Socket Layer) beállításait az alábbi módon:
AuthName "Protected Area"
AuthType Basic
AuthUserFile /var/www/ admin39xRlklkLK3d /.htpasswd
require valid-user
</Directory>
itt pedig --> /admin39xRlklkLK3d /.htpassword:
- Állítsuk be, hogy a CMSMS mindenképpen az SSL-t használja a beléptetéshez.
Ezt az alábbi módon tehetjük meg: hozzuk létre ezt a file-t az admin könyvtárban:
/admin39xRlklkLK3d /.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
- Ellenőrizzük a config.php file jogosultságainak beállítását.
Telepítés, vagy frissítés során 777-re kell állítani, de amint a feladatot befejeztük állítsuk 444-re, vagy ha ez lehetséges 440-re. Ha nincs SSH hozzáférési lehetőségünk, megtehetjük ezt FTP-n keresztül is.
- Ellenőrizzük a /tmp könyvtár jogosultságait.
Próbáljunk meg alacsonyabb jogosultságot beállítani a könyvtárnak és alkönyvtárainak. Például: 775 --> 755-re vagy 750-re.
- Ellenőrizzük az /uploads könyvtár jogosultságait.
A fentiekhez hasonló módon. Próbáljuk ki, hogy honlapunk-ra fel tudunk-e tölteni képeket? A Globális beállításoknál állítsuk a "File létrehozási maszk (umask)"-ot 002-re (022-ről), hogy thumbnail létrehozása lehetséges legyen.
- Soha ne legyen látható az oldalon (például a láblécben) a CMSMS verzió száma! (ez érdekes, mert alapból a láblécben ez megjelenik!)
(Ha elfelejtünk frissíteni az egész világ tudni fog róla!)
- Védjük a /lib könyvtárat
Hozzuk létre a /lib/.htaccess file-t az alábbi módon:
deny from all
allow from 192.168.0.0/24 #your admin network
# allow files .js in /lib avoiding errors related to js calling e.g. tag {startExpandCollapse}
<Files ~ ".*\.js$">
Order deny,allow
Allow from all
</Files>
Hát "röviden" ennyi. Igyekeztem pontosan fordítani és remélem szakmai hibát sem vétettem.

