salut,
voila LE topic pour securiser sa machine (passerelle ou autre )
bon, on commence doucement, je propose ke vous postiez vos commentaires et autres experiences perso
voilou, longue vie a ce topic
ATTENTION !!
pour ceux qui sont toujours avec une version 4.3.4 de PHP, upgradez de suite, une faille existe et permet d'executer du code arbitraire, notemment par le biais de backdoor ou rootkit !!
vous êtes prévenus
(merci à jowile pour avoir testé ça pour nous
----------------------------------------------------------------
le commencement :
Mots de passe
Il faut commencer par mettre au moins un user sur la machine en + de root, et ce, pour lancer les services
Ensuite, mettre des mots de passe d AU MOINS 8 caracteres (alphabetique + numerique + tous les autres : *-_][() ....)
Preferez l utilisation de la fonction mkpasswd plutot que vos mots de passe, car il seront moins aleatoires
ensuite, mettre comme shell pour tous les autres comptes, le shell /bin/false
il est tout a fait possible de mettre /bin/false pour apache
en fait vous pouvez mettre ce shell pour pratiquement tous les services
voila ceux ki ont /bin/false chez moi :
- games
- postgres
- www-data
- backup
- operator
- irc
- nobody
- identd
- sshd
- postfix
on peut surement mettre ca aussi a sys, bin, lp ...
pensez aussi a mettre des mots de passe vide pour ces users (champ a x dans /etc/passwd et a * ds /etc/shadow)
Services
Il faut commencer par virer tous les services non utilises (meme virer les executables )
bon, on peut aussi chrooter les services (on vera pour l explication )
EDIT: bon j ai essaye chroot et makejail (2 prog differents pour chrooter des services) et je dois dire ke c est la croix et la baniere !!!
alors peut etre que pour un apache de base sans ssl ni php ou mysql c est simple, mais moi avec php + openssl en module, chroot n a jamais voulu marcher
pour makejail, j ai reussi a lancer apache en jail, mais le site ne marchait plus
donc retour a mon bon vieux apache-ssl en mode normal
Ssh avec clées + passphrase
But :se logguer (avec ssh evidemment ) mais par cle + pass phrase uniquement, et interdire les connexions pas mot de passe uniquement
c est tres simple :
generer sa paire de cles privee/publique :
rentrer une passphrase NON VIDE !
(cle de 1024 bits par defaut)
copier sa cle publique sur la machine ou l on veut pouvoir se loguer
scp /home/toto/.ssh/id_dsa.pub toto@mon_pc_sécurisé:/home/toto/.ssh/authorized_keys |
sur la machine sécurisée : mettre l option
PasswordAuthentication no
|
ds /etc/ssh/sshd_config et relancer sshd
voila, ca marche
ps : pour les nomades avec cle usb par exmple : copier sa cle privee (id_dsa) sur la machine d ou vous voudrez vous connecter
ps2 : vous pouvez faire l inverse bien sur : rajouter une cle + passphrase sur la machine securisee
nb : pour les gens sous windows utilisant putty, il faut d abord penser a modifier sa cle privée avec putty-gen sinon ca ne marchera jamais
Kernel Grsecurity + ACLs
La, c est la partie bas niveau
Grsecurity est un "pack" de patchs securité, qui permettent notemment l'évasion d un chroot, l apport des ACLs, la restriction des sockets, etc .
Commencez deja par recuperer le patch correspondant a votre noyau sur www.grsecurity.org
ensuite, patchez !
il fo ensuite recompiler votre kernel en activant grsecurity bien sur
hop hop on reboot
le kernel patché ne suffit pas, il faut activer grsecurity au moyen d un programme en userland (de la meme facon k iptables koi) : gradm
donc :
ensuite, il faut un script pour ke grsecurity soit activé au boot :
#!/bin/sh
# Script de paramètrage GRSEC.
# Auteur: SP18. (sp18@trackfire.net)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
dir=/proc/sys/kernel/grsecurity
# does the kernel support grsec? yes, continue.. no, STOP
if [ ! -d $dir ]
then
echo "Your kernel doesn't support grsec..."
exit 1
fi
# can i jump explications here? ;)
# yeah !
case "$1" in
start)
id=1
;;
stop)
id=0
;;
lock)
# we are locking grsec in order to skip troubles !
echo 1 >> ${dir}/grsec_lock
echo "Grsec's parameters are now locked. If you wan't to change them, you MUST reboot your linusque ! don't you mister grsec? ;)"
exit 0
;;
*)
echo "Usage: $0 [start|stop|lock]"
exit 0
;;
esac
# script is doing a listing of grsec's directory files..
for a in `ls $dir`
do
# if file is grsec_lock .. just warn it ! © nike
if [ $a == "grsec_lock" ]
then
echo "grsec_lock.. bypass .. must exec $0 lock !"
else
# BUT script applies rules :)
echo $id >> ${dir}/${a}
fi
done
# 0 in order to skip apache's troubles !
echo 0 >> ${dir}/tpe_restrict_all |
ce script n est pas de moi
Voila, deja avec ca beaucoup de choses sont limitées, mais ce n est rien comparé a ce ke peuvent faire les ACLs !!! (on vera ca plus tard )
ps : j ai eu klk pb avec grsec et nfs : il ne se lancait plus car grsec le killait (a cause d un pb de socket )
ATTENTION : ne pas utiliser l option lock pour ce script : sinon, pour modifier les options grsecurity, il faut rebooter !!
Firewall
Bien sur, un petit iptables avec de bonnes regles :
- tous les ports de fermes
- ouverture uniquement des ports necessaires
- no reponse aux pings
- logs des packets douteux (la y a un paquet de criteres !!!)
- + tout ce qui vous passe par la tete (ban d IP, etc.)
pour ceux dont la syntaxe rebute encore pas mal (dont moi ) voici le lien vers le script iptables surement le plus connu : celui d arno
http://freshmeat.net/projects/ipta [...] pic_id=151
bon deja, la avant ke klk un rentre ca devient chaud
Web
Enfin, faire tres tres tres attention a ce qui peut etre execute par apache (php, cgi, etc.)
la il faut faire gaffe aux erreurs d include, sql injection etc.
normalement, apache par defaut n est pas sensible au XSS ou CSS
Ne mettez pas la possibilite de lister les repertoires, ca vous evitera des mauvaises surprises
attention aux droits accordes au ftp aussi
bien sur, avec les distribs modernes (debian donc ), lancer un petit apt-get update && apt-get upgrade
pour Mandrake après avoir configuré les sources security, c'est :
urpmi.update -a && urpmi --auto-select + urpmi kernel si besoin de MAJ le kernel. (merci Mjules )
TOUS LES JOURS !!!
Apache
Bon, voici un debut de "securisation" de apache
Tout, d abord, si votre site ne sert ke pour vous ou klk personnes passez le en ssl (port 443 )
ca restrindra de maniere plus ke significative le nombre d attaques !!
(j avais des km de logs d attaques IIS sur le port 80:lol
lorsqu apache se bind sur un port < 1024 il doit etre lance en root (car ces ports lui sont reserves)
donc vous pouves toujours essayer de le chrooter (j ai pas reussi avec apache-ssl )
ensuite, interdisez l affichage de l arborescence des repertoires : virer simplement l option
faites aussi attention aux liens symboliques, qui sont suivis par defaut
voilou, j attends vos precision + contributions
Autres liens utiles
Audit, liens utils sur la secu - post plus en rapport avec la partie sombre de la force : failles, exploits, etc.
Security Focus - Le site de la secu, en anglais
Security Focus Unix - Le site de la secu, partie Unix (donc ki nous interesse plus )
Toute la secu internet - site generaliste regroupant pas mal de liens sur tous les sujets de la secu
HSC - Site de secu en francais
KernelNewbies - Site de patch pour le kernel (rubrique secu notamment)
Sécuriser sa Debian
Sécuriser sa debian (oui encore )
Un excellent site qui rappelle les bases des protocoles, la sécurisation en générale, les outils de scan et le maniement d'iptable. (Sidounet)
Message édité par Tomate le 22-10-2004 à 15:44:19
---------------
:: Light is Right ::