Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: urgo272 22 Září 2014, 09:21:59
-
Ahoj všem,
chci poprosit o pár rad ohledně produkčního web serveru co se zabezpečení týče. V tuto chvíli jsem udělal pár základních věcí :
/etc/php5/apache2/php.ini
display_errors = Off
expose_php = Off
disable_functions = shell_exec, exec, system, passthru, proc_close, proc_open, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, dl, popen, pclose, chown, disk_free_space, disk_total_space, diskfreespace, fileinode, max_execution_time, set_time_limit, highlight_file, show_source, phpinfo, chgrp, symlink
allow_url_fopen = Off
allow_url_include = Off
Máte nějaké typy co je třeba upravit / vypnout dále ?
Díky moc
-
Určitě bych ještě ošetřil /tmp na spuštění cizího kódu
-
Určitě bych ještě ošetřil /tmp na spuštění cizího kódu
Ahoj, díky moc za typ, jen /tmp/ promiň za hlopou otázku, furt se učim, ale myslíš něco jako chmod 0666 /tmp/
-
No takhle úplně ne.
Jde o to, aby pokud někdo stáhne svůj kód do /tmp, aby se mu nepodařilo jej spustit.
Pokud uděláš jen 0666 na /tmp, už nebude tato maska na podadresáři. Úplně nejlepší je připojit /tmp jako particii bez práva spuštění.
Pokud už nemáš prostor, na hdd, kde particii vytvořit, udělej to přes mount obrazu.
Psal jsem o tom zde (http://lomitkari.cz/2014/06/26/jak-zabezpecit-tmp/)
-
No takhle úplně ne.
Jde o to, aby pokud někdo stáhne svůj kód do /tmp, aby se mu nepodařilo jej spustit.
Pokud uděláš jen 0666 na /tmp, už nebude tato maska na podadresáři. Úplně nejlepší je připojit /tmp jako particii bez práva spuštění.
Pokud už nemáš prostor, na hdd, kde particii vytvořit, udělej to přes mount obrazu.
Psal jsem o tom zde (http://lomitkari.cz/2014/06/26/jak-zabezpecit-tmp/)
Díky moc za super návod ;-) jen jedna věc:
# rm -rf /tmp
Jak jsem odebral adresář /tmp, tak už ho nenamountuju...
mount: přípojný bod /tmp neexistuje
A když jsem se chtěl kouknut tak
Nelze vytvořit dočasný adresář /tmp/mc-root: Adresář nebo soubor neexistuje (2)
Dočasné soubory se nebudou vytvářet
Stiskněte libovolnou klávesu pro pokračování...
A stále nic...
-
vytvořte /tmp a nastavte tato oprávnění: drwxrwxrwt
EDIT: smazat /tmp jako takové je chyba - chce to promazat jen jeho obsah...
-
vytvořte /tmp a nastavte tato oprávnění: drwxrwxrwt
EDIT: smazat /tmp jako takové je chyba - chce to promazat jen jeho obsah...
Super díky za radu,
takže jsem to nakonec udělal takhle:
# dd if=/dev/zero of=/home/tmp.img bs=1024 count=1000000
# mke2fs /home/tmp.img
# echo "/home/tmp.img /tmp ext2 loop,noexec,nosuid,rw 0 0" >>/etc/fstab
# rm -rf /tmp
# mkdir /tmp
# chmod +t /tmp
# mount /tmp
# chmod 0777 /tmp
Doufam že jsem si tim nic nezprasil :-D, je to tak ok ?
-
ještě sticky bit pro /tmp
-
ne, to je dost divoky .. nechapu co delas a jakej to ma smysl ..
mas proste udelat prazdnej adresar tmp a dat mu prava 1777 .. nemam ubu, ale predpokladam, ze v ubu to bude stejny:
# rpm -qf /tmp/
filesystem-13.1-3.1.2.x86_64
^^ ne, ze tam mate rpm, ale ze /tmp bude asi patrit nejakemu baliku
-
možná proto, že pokud to bude do /tmp extra mountované, tak je možné tomu fs dát noexec (pokud to jde i jinak na dílčí část filesystému, tak o tom nevím...)
EDIT: a koukám jestě nosuid
-
nevim co resite .. apache nepujde mimo svuj DocumentRoot a ServerRoot .. /tmp muzete nechat kompletne na pokoji .. neni potreba ho "molestit" ;)
-
možná proto, že pokud to bude do /tmp extra mountované, tak je možné tomu fs dát noexec (pokud to jde i jinak na dílčí část filesystému, tak o tom nevím...)
EDIT: a koukám jěstě nosuid
Ok, takže ještě přidam sticky bit, a mělo by to bejt ok ? Nebo ted jsem vážně nervozní z toho tempu jestli jsem to nedomršil :D failtoban, nějak nastavujete, nebo necháváte v default ?
-
nevim co resite .. apache nepujde mimo svuj DocumentRoot a ServerRoot .. /tmp muzete nechat kompletne na pokoji .. neni potreba ho "molestit" ;)
znovu .. proc mucis /tmp kdyz je to uplne zbytecny ????
opakuji .. httpd bezi v takovem semi-chrootu v ServerRoot a nikam jinam sahat nebude ..
-
nevim co resite .. apache nepujde mimo svuj DocumentRoot a ServerRoot .. /tmp muzete nechat kompletne na pokoji .. neni potreba ho "molestit" ;)
znovu .. proc mucis /tmp kdyz je to uplne zbytecny ????
opakuji .. httpd bezi v takovem semi-chrootu v ServerRoot a nikam jinam sahat nebude ..
Tak to se pleteš - do /tmp si php defaultně schovává uploadované soubory.
A bohužel že nebude mít +x /tmp neznamená, že to samé bude mít i adresář vytvořený v php ... si to zkus ;)
-
nevim co resite .. apache nepujde mimo svuj DocumentRoot a ServerRoot .. /tmp muzete nechat kompletne na pokoji .. neni potreba ho "molestit" ;)
znovu .. proc mucis /tmp kdyz je to uplne zbytecny ????
opakuji .. httpd bezi v takovem semi-chrootu v ServerRoot a nikam jinam sahat nebude ..
No tak teda jak :-D je tenhle postup ok ? nebo je to k ničemu...
# dd if=/dev/zero of=/home/tmp.img bs=1024 count=1000000
# mke2fs /home/tmp.img
# echo "/home/tmp.img /tmp ext2 loop,noexec,nosuid,rw 0 0" >>/etc/fstab
# rm -rf /tmp
# mkdir /tmp
# chmod +t /tmp
# mount /tmp
# chmod 0777 /tmp
Tak to se pleteš - do /tmp si php defaultně schovává uploadované soubory.
A bohužel že nebude mít +x /tmp neznamená, že to samé bude mít i adresář vytvořený v php ... si to zkus ;)
Co jiný vychytávky, na co si dát pozor, co poladit na produkčnim serveru...
-
hmm .. zajimava poznamka ..
nicmene to co delate mi nepripada uplne standardni .. teda alespon nikde jsem to nevidel .. a pokud chces neco spustit z noexec filesystemu, tak to bude platit jen pro ten shell ..
# dd if=/dev/zero of=/root/fs bs=1M count=1 &>/dev/null
# losetup --find --show /root/fs
/dev/loop0
# mkfs.ext4 /dev/loop0 &>/dev/null
# mount -vv -o noexec /dev/loop0 /mnt/tmp/
mount: /dev/loop0 mounted on /mnt/tmp.
# echo -e 'echo ahoj' > /mnt/tmp/ahoj
# chmod +x /mnt/tmp/ahoj
# /mnt/tmp/ahoj
bash: /mnt/tmp/ahoj: Permission denied
# bash /mnt/tmp/ahoj
ahoj
Jako ten soubor muze bejt porad includnutej a kdyz ho zavolas z jine PWD, tak to spustit normalne jde, takze to ochrana je spis takova pseudo ..