Site perso : Emmanuel Branlard
%%% SSH from guest to host install openssh-server on host Add a host-only network in VirtualBox General preferences In the virtual machine option, add on top of the nat interface, another interface, host-only In the guest machine configure the second interface eth1 the same way than eth0 in /etc/network/interfaces: auto eth1 iface eth1 inet dhcp By defaults the host ip will be 192.168.56.1 and the guest ip 192.168.56.101 You can add shortctus to these IP in /etc/hosts %%% File sharing Devices -> Install guests additions aptitude install dkms linux-headers build-essentials aptitude install xserver-xorg xserver-xorg-core mount /dev/sr0 /media/cdrom ./VBoxLinux
USER@shellmix.com -p 22 USER@elitter.net -> allows command to be runed even after logout and closing of the shell!
LAMP : Linux Apache Mysql Php mail (SMTP avec Postfix et POP/IMAP avec Cyrus) temp (NTP) dns (bind9) le DHCP (dhcpd) partage de fichiers (NFS ou Samba) impression (CUPS) %%% SSH de base - open sshh server (et non client) aptitude install openssh-server %%% Pour plus de securité et utilisation plus commode utiliser des clefs(DSA) # On cree le couple de clef publique/privee sur la machine cliente $ ssh-keygen -t dsa cree le fichier /home/clientuser/.ssh/id_dsa.pub # il faut ensuite donner la clef publique au serveur pour quelle figure dans la liste des clef authorisee de l'utilisateur serveur - soit en utilisant ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@IP - soit en activant temporairement la connection par mot de passe (PAM et Password), et en faisant un scp ou un echo >> dans le fichier /home/serveruser/.ssh/authorized_keys de l'utilisateur server. Une fois le transfert effectué, on desactive la connection par mot de passe - soit en la donnant par clef USB a l'administrateur du serveur! # On redemarre le serveur ssh pour prendre en compte la clef publique du client, et possible modification du fichier sshd_config %%% Exemple d'options pour le fichier sshd_config and public key ## Low security #Port 12120 #PermitRootLogin no #RSAAuthentication yes #PubkeyAuthentication no #AuthorizedKeysFile %h/.ssh/authorized_keys #UsePAM yes ## Higher security Port 12120 PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys PasswordAuthentication no UsePAM no AllowUsers manu DenyUsers test guest admin root snort apache nobody MaxStartups 1 %%% Pour encore plus de securité avec des program qui banissent aptitude install tiger fail2ban %%% Notes - il est preferable que le fichier authorized_keys ait les droits 600 - il faut que dans sshd_config, le home soit referré comme ~h/.ssh/authorized_keys - utiliser ssh -v donne les details de debug # sous windows, client de base : putty SSH c'est du TCP port 22 # les bons tutos http://technique.arscenic.org/connexion-distante-au-serveur-ssh/article/securisation-ssh-poussee http://doc.ubuntu-fr.org/ssh http://wiki.debian-facile.org/config:ssh http://www.coagul.org/spip.php?article168 # scan des ports ouverts http://www.frameip.com/scan/scan.php %%% Connexion à un serveur SSH via un autre serveur SSH Si vous avez deux serveurs SSH mais quiil est nécessaire de se connecter au premier pour pouvoir accéder au deuxième, cette commande permet de réaliser les deux connexions : ssh root@serveur1 -t ssh root@serveur2 %%% Tunnel crypté en SSH Il se peut que vous vouliez établir une connexion distante pour transiter des données de manière 100% transparente et sécurisée, nous allons donc établir un tunnel ssh. # ssh -L 5901:localhost:5900 user@80.80.80.80 Cette technique est très utile pour relier en local un bon nombre d'utilisation, comme sur kde distant, un serveur smtp personnel, une boite mail ( pop ou imap ) personnelle, un bon nombre d'utilisations ont recours à cette technique. Détail sur la ligne de commande SSH ssh : invoque le protocole -L invoque de la création d'un tunnel crypté 5901 : port coté local localhost : indique que l'accès se fera en local de manière transparente 5900 : port du service distant user@80.80.80.80 : indique avec quelle user et sur quelle ip on va établir la connection
http://www.csquad.org/cocoon/tags/public/zoneminder/zoneminder.php#N1004A http://forum.debian-fr.org/viewtopic.php?f=1&t=17162&view=next
Debugging commands: ping localhost -> if doesn't work, add loopback lo in network interfaces, ifup lo, ifconfig lo or restart netstat -nl |grep 631 iptables -nvL netstat -tunva netstat -tapln | grep cups vim /var/log/cups/error_log cat /etc/network/interfaces cat /etc/hosts cat /etc/hosts.allow
Pour faire du telnet a priori il faut lancer le daemon openbsd-inetd (je l'ai desactive au demarrage) Http avec telnet telnet www.google.fr 80
installer mysql-server lancer MySQL avant de faire ces manipulations : sudo /etc/init.d/mysql start pour acceder a mysql : tapper mysql -u root -p #creer un base de donnes pour amarok http://mikesubuntu.blogspot.com/2007/09/how-to-set-up-mysql-database-in-amarok.php $mysql -p -u root >CREATE DATABASE amarok; >USE mysql; >GRANT ALL ON amarok.* TO amarok@localhost IDENTIFIED BY 'amarok'; >FLUSH PRIVILEGES; >quit In Amarok use the following settings: Hostname: 127.0.0.1 Database: amarok Port: 3306 Username: amarok Password: Your Password
http://giminik.developpez.com/articles/apache/debian/ # Les paquest necessaires sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 #Le mot de passe administrateur mySQL vous est demandé: Entrez-en un. ### Apache sudo /etc/init.d/apache2 reload #Un ajustement de la politique des droits permet de mieux utiliser ce répertoire sudo groupadd www-data sudo addgroup manu www-data sudo chown -R www-data:www-data /var/www sudo chmod -R u=rwX,g=rwXs,o=--- /var/www # permettra à apache de lire le répertoire pour produire les pages # permettra à tous les utilisateurs membres du groupe www-data de travailler sur les fichiers (en général, il faut créer ce groupe "www-data" et se mettre comme membre) # permettra à tous les fichiers et répertoires créés dans ce répertoire d'avoir les mêmes propriétés au travers du groupe (GIG activé par g=s) # faire un lien vers son dossier site: ln -s /home/manu/Sites /var/www/sites Have a look at the file /etc/apache2/envvars export APACHE_RUN_USER=manu export APACHE_RUN_GROUP=www-data ### Test/Install PhP # Creation d'un fichier test echo "<? phpinfo(); ?>" > /var/www/test.php Une fois l'installation terminé, ouvrez http://localhost dans votre navigateur La racine de votre site web est située dans /var/www et ouvrez http://localhost/test.php dans votre navigateur. lynx http://localhost/test.php # Si ca ne marche pas editer /etc/apache2/apache2.conf : AddType application/x-httpd-php .php LoadModule php5_module /usr/lib/apache2/modules/libphp5.so ################################################## ### SQL ################################################## Si vous avez une erreur comme celle-là : ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) il suffit de lancer MySQL avant de faire ces manipulations : sudo /etc/init.d/mysql start pour acceder a mysql : tapper mysql -u root -p Pour changer le password root : update mysql.user set Password=PASSWORD("test") where User="root"; #To create a new mysql user 'guest' with 'all privileges' on the database 'demo': mysql > create database demo mysql >GRANT ALL PRIVILEGES ON demo.* TO 'guest'@'localhost' IDENTIFIED BY 'guest' WITH GRANT OPTION; mysql> UPDATE user SET Password=PASSWORD('guest') WHERE user='guest'; That's it! MySQL is ready! Don't forget to remember the root password as we might be using it with phpmyadmin. #################################################### ### Php My Admin #################################################### The phpmyadmin configuration file is located at: /etc/phpmyadmin folder. Usually it is automatically setup with a sim-link in /etc/apache2/conf.d/phpmyadmin.conf Check it, if not present, either link it to /etc/phpmyadmin/apache.conf or add the following line in /etc/apache2/apache2.conf: Include /etc/phpmyadmin/apache.conf restart apache Goto http://localhost/phpmyadmin If you have "You don't have permission to access /phpmyadmin/ on this server." then edit the file /etc/phpmyadmin/apache.conf and allow access to the folder: <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php Order deny,allow Allow from 127.0.0.1 # To be able to import sql files in phpmyadmin edit php.ini: ; http://php.net/post-max-size post_max_size = 20M ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 200M # Other info http://mikesubuntu.blogspot.com/2007/09/how-to-set-up-mysql-database-in-amarok.php http://www.cyberciti.biz/faq/mysql-command-to-show-list-of-databases-on-server/ http://www.howtoforge.com/quick-n-easy-lamp-server-centos-rhel # Commands sql show databases;
The module RewriteEngine is really nice, but not allowed on all servers. One can use a workaround with the module Multiviews, and something like a file tag.php containing: <?php $url = $_SERVER['PATH_INFO']; $get = explode("/", $url); ?> so that /tag.php/a/b/c/d or /tag/a/b/c/d will be dealt the same by the script in tag.php. Options Indexes Multiviews IndexOptions FancyIndexing FoldersFirst IndexOptions SuppressHTMLPreamble IndexOptions SuppressDescription IndexOptions IconsAreLinks IndexOptions SuppressLastModified #HTMLTABLE #XHTML SuppressRules SuppressLastModified SuppressSize IndexOptions NameWidth=70 HeaderName /_includes/indexheader.php ReadmeName /_includes/indexfooter.php IndexIgnore .htaccess _includes _CONTENT.php AddIcon /images/mimetypes/folder.png ^^DIRECTORY^^ AddIconByType (SND,/images/mimetypes/audio-x-generic.png) audio/* AddIconByType (IMG,/images/mimetypes/image-png.png) image/* AddIconByType (TXT,/images/mimetypes/text-x-generic.png) text/* AddIconByType (VID,/images/mimetypes/video-x-generic.png) video/* AddIconByType (XOF,/images/mimetypes/x-office-document.png) x-office/* AddIcon (ZIP,/images/mimetypes/package-x-generic-packed.png) .tar .gz .7z .zip .bz2 AddIcon (DOC,/images/mimetypes/x-office-document.png) .rtf .doc .docx .zip .bz2 AddIcon (PPT,/images/mimetypes/x-office-presentation.png) .ppt .odp AddIcon (XLS,/images/mimetypes/x-office-spreadsheet.png) .xls .xlsx .ods AddIcon (HML,/images/mimetypes/text-html.png) .php .php .css .htm AddIcon (PDF,/images/mimetypes/application-pdf.png) .pdf .ps .dvi AddIcon (TEX,/images/mimetypes/text-x-tex.png) .tex .bib DefaultIcon /images/mimetypes/text-x-generic-template.png AddIcon /images/mimetypes/go-up.png .. #Options +FollowSymlinks #RewriteEngine on #RewriteRule ^articles/([^/]+)/([^/]+).zip hi.php?section=$1&file=$2 [NC]
ce site-enabled marche avec un lien symbolic de /var/www/sites/ dans /home/manu/Sites es drois du repertoire sont ecriture pour utilisateur et groupe et ,manu:www-data Faire bien attention a l'ordre Deny,Allow qui est par default, et donc pas de droit d'acces <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www # Disable access to the entire file system except for the directories that # are explicitly allowed later. <Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory> <Directory /var/www > Order allow,deny allow from all AllowOverride All Options Indexes FollowSymLinks </Directory> </VirtualHost> ~
Bien regarder le contenu de tous les fichiers /etc/apache2 : Le locahost par default est dans sites-availables\ Les sites-enabled sont des liens vers les sites-available ports.conf : les port sur lesquels le serveur ecoute conf.d/ : config de php, securites httpd.conf : le fichier de conf pour l'utilisateur. A mon avis : c'est pas plus mal d'en mettre un dans son home, et d'inclure ce fichier a la fin de apache2.conf Attention a l'option : "AllowOverride None", les .htaccess n'ont aucun effet a cause de cela Ce site a le merite d'etre simple (sauve dans config): http://blaireaulinux.free.fr/apache.php http://www.nemako.net/dc2/?post/2006/01/13/77-personnaliser-apache-avec-htaccess
Hierarchie : /var/www/sites/site1/ #le site en question /var/www/sites/site1/.htaccess #definit les changement de regles pour l' option Indexes - autoindex /var/www/sites/site1/_includes/.htaccess #!!! tres important : autorise le php /var/www/sites/site1/_includes/header.php # le nouveau header /var/www/_includes/ -> sites/sites1/_includes/header.php #un lien symbolique a partir de la racine du site Mon httpd.conf : #pour activer le .htaccess dans ce dossier, et ainsi changer l'option indexes <Directory "/var/www/sites/site1/"> AllowOverride All Order allow,deny allow from all </Directory> #pour autoriser un header/footer en php, en le considerant comme du texte <Directory "/var/www/_includes/"> AllowOverride All Order allow,deny allow from all </Directory> #.htaccess a la racine de site1 : on change la methode d'indexation Options Indexes IndexOptions FancyIndexing FoldersFirst IndexOptions SuppressHTMLPreamble IndexOptions SuppressDescription IndexOptions NameWidth=50 HeaderName /_includes/header.php ReadmeName /_includes/footer.php IndexIgnore .htaccess #.htaccess dans le dossier /_includes/ : considere le php comme du texte, uniquement dans ce dossier! # on supprime le listage dans ce dossier par securite AddType text/html .php AddHandler application/x-httpd-php .php Options -Indexes
protéger des pages et répertoires Dans ce chapitre, nous allons voir les différentes étapes pour protéger les pages contenues dans /var/www/test/ et ses sous-répertoires. 1. créer un fichier mot de passes (vide pour l'instant), par exemple /var/www/.htpasswd 2. éditer le fichier de la forme : fred:gWK3udIcGH832 bob:BgG6vsQflVS66 Ce fichier doit contenir les mots de passe sous forme cryptée uniquement. Pour le créer, il faut d'abord mettre n'importe quoi à la place du mot de passe. Exemple : fred:blabla bob:bob Puis, pour les crypter, on va taper "htpasswd -b /var/www/.htpasswd bob mot-de-passe en clair". Maintenant, le mot de passe de bob sera crypté. Il faut faire pareil avec tous les comptes. Si on ne veut pas que le mot de passe apparaisse en clair sur la ligne de commande, il faut taper "htpasswd /var/www/.htpasswd bob" et il va demander de taper le mot de passe. 3. éditer le fichier /var/www/test/.htaccess et copier dedans : AuthUserFile /var/www/.htpasswd # fichier mot de passe AuthGroupFile /dev/null # idem pour le groupe AuthName "Accés réservé" # texte qui apparait dans la boite de dialogue AuthType Basic # pour lui dire d'utiliser AuthUserFile <Limit GET POST> Require valid-user # autorise tous les utilisateurs qui sont dans .htpasswd. On pourait mettre "Require user fred" pour n'autoriser que fred </Limit>
http://wiki.debian.org/iptables #listing iptables --list #clearing them iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT
aptitude install ftpd (openbsd-inetd) ou aptitude install proftpd # /etc/init.d/proftpd start # Liste des exclus /etc/ftpusers # Security - installer fail2ban(!!!!) et le configurer dans /etc/fail2ban/jail.local (!!! read below) - installer Lynis tiger chkroot qui aident a detecter les failles de securites - installer ufw #fail2ban problem avec iptables iptables ne peut pas recevoir trop de commandes a la suite modifier /etc/fail2ban/actions.d/ iptables.conf et iptables-multiport mettre sleep 3.0 apres la premiere ligne de actionstart et actionstop sur internet un mec propose quelquechose d'aleatoire: actionstart = sleep ${RANDOM:0:1}.${RANDOM:0:1} iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name> %%%Livebox : Les passives ports c'est tres important!!! http://forum.ubuntu-fr.org/viewtopic.php?id=110641 plages de port ftp: active: 20-21 20-21 passive: 6000-6100 6000-6100 #<IfModule mod_dynmasq.c> # DynMasqRefresh 28800 #</IfModule> #MasqueradeAddress %%%%%%.dyndns.org #DisplayXXX il faut avoir les droits d'acces aux fichiers welcome, connect, quit, goaway... # /etc/init.d/fail2ban start /etc/init.d/ufw start /etc/init.d/proftpd start # Run the Ufw firewall wizard. Install a rate limiting rule to guard against DOS and brute forcers: # General new connection rate limiting for DOS and Brute Force protection iptables -I INPUT -p TCP -m state --state NEW -m limit \ --limit 30/minute --limit -burst 5 -j ACCEPT
- Creer un compte gratuit sur dyndns - creer un host (avec IP address) - Configurer la Livebox http://192.168.1.1 Configuration / Avancee/ DNS Dynamique Nom du compte (login de DynDNS) Password login DynDNS HostNane: celui choisit sur DynDns (monserveurftp.dyndns.org) - Configurer la livebox2 : redirection des ports Serveurs LAN, Ajouter. Nom du serveur : "Serveur web".(HTTP ou FTP) Protocole : TCP qui est le protocole généralement utilisé pour les serveurs web. Du port 80 Au port 80. Adresse IP locale : c'est l'adresse IP de la machine où est installé le serveur. Elle est de la forme 192.168.1.XXX
#pyNeighborhood est un tres bon logiciel pour voisinage reseau aptitude install pyNeighborhood #Changer les commandes de montage/demontage en mettant sudo devant #Au lieu de umount.cifs, mettre umount !
# pour le serveur installer samba aptitude install samba #et definir un nom de reseau, comme WORKGROUP # pour le client installer smbclient #samba $nmblookup VJK querying VJK on 82.211.206.255 82.211.206.142 VJK<00> 82.211.206.92 VJK<00> # <00> est le cas courant <20> est pour un serveur #chercher pour le reseau BRANET OU pour les resaux SAMBA nmblookup BRANET __SAMBA__ #chercher pour le reseau BRANET ET pour les resaux SAMBA nmblookup -B BRANET __SAMBA__ # This time we are testing the ability of programs (such as nmbd ) to use broadcast. It's essentially a connectivity test, done via a broadcast to the default broadcast address. A number of NetBIOS/TCP-IP hosts on the network should respond with "got a positive name query response" messages. Samba may not catch all of the responses in the short time it listens, so you won't always see all the SMB clients on the network. However, you should see most of them: manu@server$ nmblookup -d 2 '*' # le -N c'est pour etre anonyme, je pense que ca doit revenir au meme que -U% pour les serveur SAMBA mais pas pour windows $smbclient -N -L 82.211.206.142 Domain=[KINGS-WIN] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] Sharename Type Comment --------- ---- ------- SharedDocs Disk $smbclient \\\\kings-win\\SharedDocs -U user passwd $smbclient '\\kings-win\SharedDocs' -U user passwd $smbclient '\\kings-win\SharedDocs' -N smb: \> quit $smbclient '\\olympe\Public' -N #fusesmb cp /usr/share/doc/fusesmb/examples/fusesmb.conf.ex ~/.smb/fusesmb.conf chmod 600 ~/.smb/fusesmb.conf
#Installation de Samba,polices Microsoft et cabextract sudo apt-get install samba msttcorefonts cabextract #jout de l'utilisateur au groupe sambashare doivent etre automatique sudo adduser $USER sambashare
#Installation de fusesmb : sudo apt-get install fusesmb #Vérifier la présence du module fuse dans /etc/modules : sudo vim /etc/modules #modprobe fusemb #Redémarrer le serveur X : Ctrl + Alt + bacs Space #menu XFCE / Système / Users : cocher pour les utilisateurs devant utiliser
sudo modprobe fuse #Il faut ensuite penser à rajouter le groupe fuse à votre utilisateur. sudo gpasswd -a $USER fuse # cd ~ mkdir -p Network fusesmb Network A partir de maintenant, vous pouvez voir le voisinage réseau de la forme « DOMAINES/MACHINES/PARTAGES ». Pour démonter le point de montage : fusermount -u Network