Merci pour la réponse, je vais regarder du côté de ELRepo.
Par "version 2.6.31 -rc3 jusqu'à la version stable 3.14.3" j'avais compris qu'au delà de la version 2.6.31-rc3 seule la 3.14.4 était épargnée par la faille. Ce qui voudrait dire que la 2.6.32 l'est aussi.
D'ailleurs si je tape :
zgrep CONFIG_PERF_EVENTS /boot/config-*
J'ai bien :
/boot/config-2.6.32-431.11.2.el6.x86_64:CONFIG_PERF_EVENTS=y
/boot/config-2.6.32-431.5.1.el6.x86_64:CONFIG_PERF_EVENTS=y
/boot/config-2.6.32-431.el6.x86_64:CONFIG_PERF_EVENTS=y
Ce qui, si j'ai bien compris, est la preuve de la vulnérabilité.
Cela m'a même permis de régler un autre problème par la même occasion ;)
Donc en PHP je crée mon arborescence avec mkdir() et mes liens avec symlink() puis je fais un exec('zip untruc.zip . > /dev/null &') et tout marche d'enfer.
Ce serait la solution de dernier recours, en effet.
Disons que la perte en espace disque et en temps est énorme dans ce cas.
Parce qu'on doit effectuer une copie de 2Go de fichiers en plus, et on a dans ce cas les fichiers d'origine, le dossier temporaire et le zip final.
Pour info, à la base je n'ai pas un zip, mais une arborescence du type :
/uploads/pictures/00000040/
/uploads/pictures/00000040/0000000118/
/uploads/pictures/00000040/0000000118/thumbnails/
/uploads/pictures/00000040/0000000121/
/uploads/pictures/00000040/0000000121/thumbnails/
/uploads/pictures/00000058/
/uploads/pictures/00000058/0000000215/
/uploads/pictures/00000058/0000000215/thumbnails/
screen comme tu dis m'a l'air fait pour ça, mais avec un script de connexion qui récupère ton screen automatiquement. ça ne suffirait pas ?
Je l'avais fait il y a longtemps pour récupérer automatiquement le tty1 d'une machine sans écran qui utilisait un périphérique compatible clavier (lecteur RFID) pour entrer des données.
Merci beaucoup, je vais étudier la doc de haproxy et de varnish (au premier abord, le second me parait plus simple à configurer reste à voir au niveau de l'efficacité).
#!/bin/sh
#
# /etc/init.d/tomcat -- startup script for the Tomcat servlet engine
#
. /etc/init.d/functions
VERSION=7
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=tomcat$VERSION
DESC="Tomcat servlet engine"
DAEMON=/usr/bin/jsvc
CATALINA_HOME=/usr/share/$NAME
DEFAULT=/etc/default/$NAME
# Run Tomcat as this user ID
TOMCAT_USER=tomcat
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 /usr/lib/jvm/java-1.6.0 /usr/lib/jvm/java-1.6.0-openjdk.x86_64 /usr/lib/jre-1.6.0-openjdk.x86_64 /usr/lib/jre-1.5.0 /usr/lib/j2sdk1.4-sun /usr/lib/j2sdk1.4-blackdown /usr/lib/j2se/1.4 /usr/lib/j2sdk1.4-ibm /usr/lib/j2sdk1.3-sun /usr/lib/j2sdk1.3-blackdown /usr/lib/jvm/java-gcj /usr/lib/kaffe"
# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME_TMP="$jdir"
# checks for a real JDK like environment, needed to check if
# really the java-gcj-compat-dev package is installed
if [ -r "$jdir/bin/jdb" ]; then
JAVA_HOME="$JAVA_HOME_TMP"
fi
fi
done
export JAVA_HOME
# Directory for per-instance configuration files and webapps
CATALINA_BASE=/usr/share/$NAME
# Use the Java security manager? (yes/no)
TOMCAT_SECURITY=no
# Timeout in seconds for the shutdown of all webapps
TOMCAT_SHUTDOWN=30
# End of variables that can be overwritten in $DEFAULT
# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
. "$DEFAULT"
fi
test -f $DAEMON || exit 0
[ -z "$TOMCAT_USER" ] && TOMCAT_USER=tomcat7
# Check if we use gij
gij=no
"$JAVA_HOME/bin/java" -version 2>&1 | grep -q "^gij (GNU libgcj)" && gij=yes
# gij doesn't support a security manager yet (see bug #399595)
if [ "$gij" = "yes" ]; then
echo -e "The java-gcj-compat-dev environment currently doesn't\nsupport a security manager. See README.Debian." | logger -p daemon.warning -t $NAME
fi
# Set java.awt.headless=true if JAVA_OPTS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
# It also looks like the default heap size of 64M is not enough for most cases
# se the maximum heap size is set to 128M
if [ -z "$JAVA_OPTS" ]; then
JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
fi
JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_BASE/temp"
JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=$CATALINA_HOME/conf/jaas.config"
# Set the JSP compiler if set in the tomcat7.default file
if [ -n "$JSP_COMPILER" ]; then
JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER"
fi
if [ "$TOMCAT_SECURITY" = "yes" ]; then
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$CATALINA_BASE/conf/catalina.policy"
fi
# juli LogManager disabled if running under gij (see bug #395167)
if [ "$gij" != "yes" ]; then
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
fi
# Define other required variables
CATALINA_PID="/var/run/$NAME.pid"
BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap
JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar"
export CATALINA_PID
# Look for Java Secure Sockets Extension (JSSE) JARs
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
JSSE_HOME="${JAVA_HOME}/jre/"
fi
export JSSE_HOME
start() {
if [ -z "$JAVA_HOME" ]; then
echo "no JDK found - please set JAVA_HOME"
exit 1
fi
if [ ! -d "$CATALINA_BASE/conf" ]; then
echo "invalid CATALINA_BASE specified"
exit 1
fi
echo "Starting $DESC" "$NAME"
ISSTARTED=-1
if [ -f "${CATALINA_PID}" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
ISSTARTED=0
else
rm -f $CATALINA_PID
fi
else
pid=$(pgrep -u ${TOMCAT_USER} jsvc)
if [ -n "$pid" ]; then
ISSTARTED=0
fi
fi
if [ $ISSTARTED -ne 0 ]; then
# Create catalina.policy (for the security manager)
rm -f "$CATALINA_BASE/conf/catalina.policy"
umask 022
echo "// AUTO-GENERATED FILE -- DO NOT EDIT!" \
> "$CATALINA_BASE/conf/catalina.policy"
echo "// Edit the files in /etc/$NAME/policy.d/ instead" \
>> "$CATALINA_BASE/conf/catalina.policy"
echo "" >> "$CATALINA_BASE/conf/catalina.policy"
policies=$(ls $CATALINA_BASE/conf/policy.d/*.policy 2> /dev/null | wc -l)
if [ "$policies" != "0" ]; then
cat $CATALINA_BASE/conf/policy.d/*.policy \
>> "$CATALINA_BASE/conf/catalina.policy"
fi
# Clean up and set permissions on required files
find "$CATALINA_BASE"/temp/ -mindepth 1 -exec rm -f {} +
chown --dereference "$TOMCAT_USER" "$CATALINA_BASE/conf" \
"$CATALINA_BASE/conf/tomcat-users.xml" \
"$CATALINA_BASE/logs" "$CATALINA_BASE/temp" \
"$CATALINA_BASE/webapps" "$CATALINA_BASE/work" \
|| true
$DAEMON -user "$TOMCAT_USER" -cp "$JSVC_CLASSPATH" \
-outfile SYSLOG -errfile SYSLOG \
-pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS"
else
echo "(already running)"
fi
}
stop() {
echo "Stopping $DESC" "$NAME"
ISSTARTED=-1
if [ -f "${CATALINA_PID}" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
ISSTARTED=0
fi
else
pid=$(pgrep -u ${TOMCAT_USER} jsvc)
if [ -n "$pid" ]; then
ISSTARTED=0
fi
fi
if [ $ISSTARTED -eq 0 ]; then
$DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \
-stop "$BOOTSTRAP_CLASS"
else
echo "(not running)"
fi
}
restart() {
# Restart
stop
echo "Sleeping for 2 seconds."
sleep 2
start
}
status() {
RETVAL="1"
if [ -f "${CATALINA_PID}" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
echo "$0 is already running (${kpid})"
RETVAL="0"
else
echo "lock file found but no process running for pid $kpid"
fi
else
pid=$(pgrep -u ${TOMCAT_USER} jsvc)
if [ -n "$pid" ]; then
echo "$0 running (${pid}) but no PID file exists"
RETVAL="0"
else
echo "$0 is stopped"
fi
fi
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: tomcat {start|stop|restart|status}"
exit 1
esac
exit 0
J'ai essayé toutes les formes possibles déjà et le résultat est le même.
Le simple fait d'avoir une commande pgrep avec résultat vide arrête le script. J'ai fait deux tests en mettant une commande pgrep sans résultat puis une commande avec résultat au début de mon script.
Premier test :
echo 'begin test'
pgrep test
echo 'end test'
Résultat :
begin test
Second Test :
echo 'begin test'
pgrep tty
echo 'end test'
Résultat :
begin test
1510
1512
1513
1515
1517
1519
1521
end test
Starting Tomcat servlet engine tomcat7
(already running)
Lorsque pgrep renvoie un pid, tout se passe correctement, mais si tomcat n'est pas démarré et que pgrep ne renvoie rien, l'exécution du script ne va pas plus loin que cette ligne.
J'essaye d'adapter le script pour ne pas utiliser start-stop-daemon, mais il s'arrête quelque part dans ce bloc sans me dire ni où ni pourquoi :
ISSTOPPED="0"
if [ -f "${CATALINA_PID}" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
ISSTOPPED="-1"
fi
else
pid="$(pgrep -u ${TOMCAT_USER} java)"
if [ -n "$pid" ]; then
ISSTOPPED="-1"
else
rm -f $CATALINA_PID
fi
fi
jsvc fait partie de Apache Commons Daemon
Il permet de faire fonctionner un programme java utilisant son API (dans ce cas Tomcat) en tant que démon.
Avec le lancement classique un crash de java signifie que Tomcat est down, mais avec jsvc il récupère le crash et reste up. Ce qui est préférable sur un serveur web en production.
Pour avoir Tomcat 7 sur CentOS 6 il m'a fallut l'installer à partir du repo JPackage.
À l'installation avec Yum aucun script n'a été généré. De toute façon le script par défaut utilise startup.sh et non jsvc.
Comment pourrais-je adapter ce script pour utiliser jsvc ? (Sur un serveur web en production mieux vaut gérer les plantages potentiels de java)
Le lecteur de codes-barres agit comme un clavier, et donc l'application qui l'utilise ne peut pas être un démon en tâche de fond.
Il faut que le programme Java attende une entrée clavier.
Pour un pc correct ce n'est pas le problème, j'ai un fixe P4C 2.54GHz et un portable Turion 64 X2 et ma copine à un portable de même ordre et vient de commander un fixe Core 2 Duo.....
C'est surtout que je veux faire un banc de tests avec des machines de tous types pour tester les applications que je programme.
Il ne me restera plus qu'à trouver un JRE qui puisse fonctionner sur la "bête de course" !
PS : Merci Philippe pour ton lien. C'est bizarre qu'ils aient mis la version 6.0 et pas la 6.1 par contre.
[^] # Re: Tu es certainement déjà protégé
Posté par Raphaël MICHEL . En réponse au message CentOS 6.5 - Passer du noyau 2.6.32 à la version 3.14.4. Évalué à 1.
Merci,
là, en effet, c'est plus clair.
[^] # Re: do the math
Posté par Raphaël MICHEL . En réponse au message CentOS 6.5 - Passer du noyau 2.6.32 à la version 3.14.4. Évalué à 1.
Merci pour la réponse, je vais regarder du côté de ELRepo.
Par "version 2.6.31 -rc3 jusqu'à la version stable 3.14.3" j'avais compris qu'au delà de la version 2.6.31-rc3 seule la 3.14.4 était épargnée par la faille. Ce qui voudrait dire que la 2.6.32 l'est aussi.
D'ailleurs si je tape :
zgrep CONFIG_PERF_EVENTS /boot/config-*
J'ai bien :
/boot/config-2.6.32-431.11.2.el6.x86_64:CONFIG_PERF_EVENTS=y
/boot/config-2.6.32-431.5.1.el6.x86_64:CONFIG_PERF_EVENTS=y
/boot/config-2.6.32-431.el6.x86_64:CONFIG_PERF_EVENTS=y
Ce qui, si j'ai bien compris, est la preuve de la vulnérabilité.
[^] # Re: unzip/move/zip
Posté par Raphaël MICHEL . En réponse au message Créer une archive zip de 2Go en modifiant les chemins dans l'archive. Évalué à 2.
Géniale ta solution !
Cela m'a même permis de régler un autre problème par la même occasion ;)
Donc en PHP je crée mon arborescence avec mkdir() et mes liens avec symlink() puis je fais un exec('zip untruc.zip . > /dev/null &') et tout marche d'enfer.
[^] # Re: unzip/move/zip
Posté par Raphaël MICHEL . En réponse au message Créer une archive zip de 2Go en modifiant les chemins dans l'archive. Évalué à 0.
Ce serait la solution de dernier recours, en effet.
Disons que la perte en espace disque et en temps est énorme dans ce cas.
Parce qu'on doit effectuer une copie de 2Go de fichiers en plus, et on a dans ce cas les fichiers d'origine, le dossier temporaire et le zip final.
Pour info, à la base je n'ai pas un zip, mais une arborescence du type :
/uploads/pictures/00000040/
/uploads/pictures/00000040/0000000118/
/uploads/pictures/00000040/0000000118/thumbnails/
/uploads/pictures/00000040/0000000121/
/uploads/pictures/00000040/0000000121/thumbnails/
/uploads/pictures/00000058/
/uploads/pictures/00000058/0000000215/
/uploads/pictures/00000058/0000000215/thumbnails/
# screen comme tu dis m'a l'air fait pour ça
Posté par Raphaël MICHEL . En réponse au message Se connecter à une session console ou SSH. Évalué à 2.
screen comme tu dis m'a l'air fait pour ça, mais avec un script de connexion qui récupère ton screen automatiquement. ça ne suffirait pas ?
Je l'avais fait il y a longtemps pour récupérer automatiquement le tty1 d'une machine sans écran qui utilisait un périphérique compatible clavier (lecteur RFID) pour entrer des données.
[^] # Re: finalement ce que tu cherches...
Posté par Raphaël MICHEL . En réponse au message [iptables] Dérouter vers un autre port les connexions arrivant sur le port 80 via un domaine précis. Évalué à 0.
merci pour varnish ^
Par contre avec mod_proxy on passe par Apache, ce qui enlève l'intérêt principal de Node.js qu'est la rapidité.
# Résolu
Posté par Raphaël MICHEL . En réponse au message [iptables] Dérouter vers un autre port les connexions arrivant sur le port 80 via un domaine précis. Évalué à 0.
Merci beaucoup, je vais étudier la doc de haproxy et de varnish (au premier abord, le second me parait plus simple à configurer reste à voir au niveau de l'efficacité).
[^] # Re: Premier paquet
Posté par Raphaël MICHEL . En réponse au message [iptables] Dérouter vers un autre port les connexions arrivant sur le port 80 via un domaine précis. Évalué à 0.
Donc, comment faudrait-il faire ?
# Et Voilà !
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 1.
Je crois être arrivé à un résultat fonctionnel :
[^] # Re: Script qui s'arrête
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 0.
Non, c'était bien pgrep qui posait problème, et je viens de trouver la raison. Il y avait cette ligne au début du script :
Je ne sais pas trop à quoi elle servait mais le fait de la commenter fait que pgrep ne plante plus le script.
[^] # Re: Script qui s'arrête
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 1.
J'ai essayé toutes les formes possibles déjà et le résultat est le même.
Le simple fait d'avoir une commande pgrep avec résultat vide arrête le script. J'ai fait deux tests en mettant une commande pgrep sans résultat puis une commande avec résultat au début de mon script.
Premier test :
Résultat :
Second Test :
Résultat :
[^] # Re: Script qui s'arrête
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 0.
En fait, mon problème vient de cette ligne-là :
Lorsque pgrep renvoie un pid, tout se passe correctement, mais si tomcat n'est pas démarré et que pgrep ne renvoie rien, l'exécution du script ne va pas plus loin que cette ligne.
# Script qui s'arrête
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 0.
J'essaye d'adapter le script pour ne pas utiliser start-stop-daemon, mais il s'arrête quelque part dans ce bloc sans me dire ni où ni pourquoi :
[^] # Re: faire simple
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 0.
Regarde cette ligne :
jsvc fait partie de Apache Commons Daemon
Il permet de faire fonctionner un programme java utilisant son API (dans ce cas Tomcat) en tant que démon.
Avec le lancement classique un crash de java signifie que Tomcat est down, mais avec jsvc il récupère le crash et reste up. Ce qui est préférable sur un serveur web en production.
[^] # Re: faire simple
Posté par Raphaël MICHEL . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 0.
Pour avoir Tomcat 7 sur CentOS 6 il m'a fallut l'installer à partir du repo JPackage.
À l'installation avec Yum aucun script n'a été généré. De toute façon le script par défaut utilise startup.sh et non jsvc.
Comment pourrais-je adapter ce script pour utiliser jsvc ? (Sur un serveur web en production mieux vaut gérer les plantages potentiels de java)
[^] # Re: Obligé?
Posté par Raphaël MICHEL . En réponse au message Auto-login sans interface graphique en lancement commande. Évalué à 2.
Il faut que le programme Java attende une entrée clavier.
[^] # Re: Se méfier de sa mémoire...
Posté par Raphaël MICHEL . En réponse au message [Cherche antiquité] Mandrake Linux 6.1 (Hélios). Évalué à 1.
En effet, je n'ai pas fini de galérer, mais j'aime ça les défis !
[^] # Re: Se méfier de sa mémoire...
Posté par Raphaël MICHEL . En réponse au message [Cherche antiquité] Mandrake Linux 6.1 (Hélios). Évalué à 1.
C'est surtout que je veux faire un banc de tests avec des machines de tous types pour tester les applications que je programme.
Il ne me restera plus qu'à trouver un JRE qui puisse fonctionner sur la "bête de course" !
PS : Merci Philippe pour ton lien. C'est bizarre qu'ils aient mis la version 6.0 et pas la 6.1 par contre.