Skip to content →

Catégorie : Webapps

Laverna, une application web de Notes

En cherchant une application pour auto-h√©berger mes notes et remplacer EverNote, j’ai √©t√© s√©duit par l’application Laverna.

Les fonctionnalit√©s qui m’ont attir√©es sont les suivantes :

  • G√©rer vos notes, m√™me lorsque vous √™tes d√©connect√©
  • Cryptage s√©curis√© c√īt√© client (AES)
  • Possibilit√© de synchroniser avec DropBox – ce que je ne ferais pas bien entendu ūüôā
  • Boutons de contr√īle WYSIWYG
  • Coloration syntaxique¬†
  • Raccourcis clavier

Pour une démonstration : https://laverna.cc/

Pour l’installation, il suffit de faire un git clone du repository dans un Virtual Host s√©curis√© : https://github.com/Laverna/laverna

Bref, une application web de plus auto-hébergée !

One Comment

Apache et Roundcube, sécurisation et obfuscation de version

Apr√®s installation d’un serveur de mail pour remplacer Google Apps sur mon domaine perso, j’ai trouv√© que Roundcube √©tait le seul webmail qui me plaisait √† peu pr√®s.

Quelques tips et tricks sur la s√©curisation de Apache / PHP et Roundcube, pas sur les serveurs Postfix / Dovecot, qui je l’esp√®re, viendront ici alimenter le blog avec du fail2ban …

  • Configuration du vHost et s√©curisation dossiers “sensibles”
<VirtualHost *:443>
        ServerAdmin postmaster@beufa.net
        ServerName  x.beufa.net
        DocumentRoot /var/www/x
        SSLEngine on
        SSLCipherSuite ALL:!ADH:RC4+SHA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
        SSLProtocol all -SSLv2
        SSLStrictSNIVHostCheck on
        SSLOptions StrictRequire
        SSLCertificateFile     cert.pem
        SSLCertificateKeyFile  cert.pem
        #GnuTLSEnable on 
        #GnuTLSPriorities SECURE:!ANON-DH:!MD5
        #GnuTLSCertificateFile cert.pem
        #GnuTLSKeyFile cert.pem
        #GnuTLSCertificateChainFile cert.pem
        #GnuTLSCACertificatePath /

        <Directory /var/www/roundcube>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        <Directory /var/www/roundcube/config>
                Options -FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/roundcube/temp>
                Options -FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/roundcube/logs>
                Options -FollowSymLinks
                AllowOverride None
                Order allow,deny
                Deny from all
        </Directory>

        <Directory /var/www/roundcube/plugins/enigma/home>
                Options -FollowSymLinks
                AllowOverride None
                Order allow,deny
                Deny from all
        </Directory>

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        ErrorLog ${APACHE_LOG_DIR}/05.x.beufa.net_error.log
        CustomLog ${APACHE_LOG_DIR}/05.x.beufa.net_access.log combined

</VirtualHost>
  • Supprimer les headers de mail PHP verbeux dans /etc/php5/apache2/php.ini
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = Off
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
; Example for Roundcube : X-PHP-Originating-Script: 33:main.inc in each mail sent 
mail.add_x_header = Off
  • Avoir des logs Apache / PHP dans un fichier sp√©cifique
; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log = /var/log/mail.apache-php.log

Bient√īt d’autres tips sur le couple Postfix / Dovecot / Roundcube !

Comments closed

Auto héberger son Google Reader, part4

Ca y est, Google Reader est mort !!! J’ai bien fait d’anticiper cette s√©rie d’articles sur comment auto h√©berger son Google Reader.

Dernier petit tip sur la gestion du d√©marrage du script d’update :

Créer le fichier /etc/init.d/ttrss :

#!/bin/sh -e
# ligne de commande du programme
DAEMON="/var/www/rss/update_daemon2.php"
# argument à utiliser par le programme
DAEMON_OPT=""  #argument à utiliser par le programme
DAEMONUSER="www-data" #utilisateur du programme
DAEMON_NAME="ttrss" #Nom du programme (doit être identique à l'exécutable)

PATH="/sbin:/bin:/usr/sbin:/usr/bin" #Ne pas toucher

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

d_start () {
        log_daemon_msg "Starting system $DAEMON_NAME Daemon"
        start-stop-daemon --background --name $DAEMON_NAME -c www-data -Sbx $DAEMON -- $DAEMON_OPT
        log_end_msg $?
}

d_stop () {
        log_daemon_msg "Stopping system $DAEMON_NAME Daemon"
        start-stop-daemon --name $DAEMON_NAME --stop --retry 5 --quiet --name $DAEMON_NAME
        log_end_msg $?
}

case "$1" in

        start|stop)
                d_${1}
                ;;

        restart|reload|force-reload)
                        d_stop
                        d_start
                ;;

        force-stop)
               d_stop
                killall -q $DAEMON_NAME || true
                sleep 2
                killall -q -9 $DAEMON_NAME || true
                ;;

        status)
                status_of_proc "$DAEMON_NAME" "$DAEMON" "system-wide $DAEMON_NAME" && exit 0 || exit $?
                ;;
        *)
                echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
                exit 1
                ;;
esac
exit 0

Ensuite, il faut suffit de taper les commandes suivantes :

[root@server:~]$ sudo chmod +x /etc/init.d/ttrss
[root@server:~]$ sudo chmod 0755 /etc/init.d/ttrss
[root@server:~]$ sudo update-rc.d ttrss defaults
update-rc.d: warning: /etc/init.d/ttrss missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/ttrss ...
   /etc/rc0.d/K20ttrss -> ../init.d/ttrss
   /etc/rc1.d/K20ttrss -> ../init.d/ttrss
   /etc/rc6.d/K20ttrss -> ../init.d/ttrss
   /etc/rc2.d/S20ttrss -> ../init.d/ttrss
   /etc/rc3.d/S20ttrss -> ../init.d/ttrss
   /etc/rc4.d/S20ttrss -> ../init.d/ttrss
   /etc/rc5.d/S20ttrss -> ../init.d/ttrss
[root@server:~]$ sudo chkconfig --list | grep ttrss
ttrss                     0:off  1:off  2:on   3:on   4:on   5:on   6:off

Si le service n’est pas activ√©, il suffit de faire un :

[root@server:~]$ sudo chkconfig ttrss on

Amusez vous bien !

Next time : un article pour clean up la base des articles vieux de x mois, car apr√®s plusieurs mois d’utilisation, la base peut vite atteindre les 70 / 100 MB…

Comments closed

Fail2Ban : bloquer les requêtes w00tw00t et phpMyAdmin

Parce que j’en avais marre de tous ces scanners DFind et autres sur mes serveurs home et OVH, j’ai ajout√© deux regexp que je vous partage ici pour bloquer apr√®s la premi√®re requ√™te les acc√®s aux URI :

/w00tw00t.at.ISC.SANS.DFind

/phpMyAdmin

Pour cela, il faut créer deux nouveaux fichiers dans la configuration fail2ban :

[user@srv:~]$ cat /etc/fail2ban/filter.d/apache-w00tw00t.conf 
[Definition]

failregex = ^<HOST> -.*"GET /w00tw00t.at.ISC.SANS.DFind:).*".*

ignoreregex =

[user@srv:~]$ cat /etc/fail2ban/filter.d/apache-pma.conf 
[Definition]

failregex = ^<HOST>.*GET.*(?i)phpmyadmin.*
            ^<HOST>.*GET.*(?i)pma.*
            ^<HOST>.*GET.*(?i)mysql.*
            ^<HOST>.*GET.*(?i)setup.*

ignoreregex =

Une fois ces 2 fichiers créés, il faut éditer le fichier /etc/fail2ban/jail.conf et y ajouter, à votre convenance, les références aux filtres nouvellement créés :

[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]
         sendmail-whois[name=Apache-w00tw00t, dest=user@mail.com, sender=srv@mail.com]
logpath = /var/log/apache2/*_access.log
maxretry = 1

[apache-pma]
enabled = true
filter = apache-pma
action = iptables[name=Apache-pma,port=80,protocol=tcp]
         sendmail-whois[name=Apache-pma, dest=user@mail.com, sender=srv@mail.com]
logpath = /var/log/apache2/*_access.log
maxretry = 1

D√®s qu’une requ√™te contenant dans l’URI les regexp renseign√©es dans les filtres plus haut, l’IP sera bannie et un mail sera envoy√© √† user@mail.com.

Vous pouvez monitorer les hosts blacklistés par munin ou par la commande iptables :

[user@srv:~]$ sudo iptables -L fail2ban-Apache-pma --line-num 
Chain fail2ban-Apache-pma (1 references)
num  target     prot opt source               destination         
1    RETURN     all  --  anywhere             anywhere

Bye bye les scripts kiddies ūüėČ

Comments closed

Auto héberger son RSS Reader, part 3

Maintenant que notre lecteur de flux tourne, deux solutions pour d√©marrer le d√©mon d’update :

Démarrage :

[user@home:~]$ sudo start-stop-daemon -c www-data -Sbx /var/www/[YOUR_PATH]/rss/update_daemon2.php

Arrêt :

[user@home:~]$ killall php

Si vous avez un probl√®me de d√©marrage (messages sur le GUI du type “update daemon is not running”), tapez en connaissance de cause :

[user@home:~]$ sudo chmod 777 -R /var/www/[YOUR_PATH]/rss/{cache,feed-icons,lock,lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer}
[user@home:~]$ sudo chown www-data:www-data -R /var/www/[YOUR_PATH]/rss/{cache,feed-icons,lock,lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer}

Sinon vous pourrez toujours démarrer avec la crontab, mais vous aurez un message comme quoi le démon ne tourne pas ! Par exemple pour lancer un update toutes les 30 minutes :

[user@home:~]$ sudo crontab -l -u www-data
SHELL=/bin/bash
PATH=/bin:/usr/bin
MAILTO=user
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*/30 *  *  *  * cd /var/www/[YOUR_PATH]/rss && /usr/bin/php update.php -feeds >/dev/null 2>&1

Bon amusement, maintenant vous avez un Google Reader @ Home.

Apr√®s quelques semaines d’utilisation, je suis √† 20MB de DB MySQL occup√©e pour l’instant (sur 2To de Disque !!!) !

Comments closed
fr_FRFR