Comment supprimer une règle précise de iptables.

Il peut parfois être nécessaire de supprimer une règle de la liste de iptables. La commande pour ce faire est assez simple. Au moins deux options s’offrent à nous.

  1. Supprimer la règle en utilisant tous ses paramètres.
sudo iptables -D <chaine> [-s <adresse IP>] [-d <adresse IP>] [-p <protocole>] [--dport <port>] -j <action>

Par exemple :

sudo iptables -D INPUT -s 1.1.1.1 -p tcp --dport 123 -j ACCEPT
  1. Supprimer la règle en utilisant son numéro de ligne.
sudo iptables -D <chaine> <numéro de ligne>

Par exemple :

sudo iptables -D INPUT 3

D’accord, c’est bien beau tout ça, mais si nous avons des centaines de règles dans notre pare-feu, comment en récupérer facilement le numéro de ligne? Dans mon cas, j’utilise fail2ban pour protéger mon serveur contre les attaques de type bruteforce sur le service SSH. Il en résulte donc que mon pare-feu contient un nombre impressionnant de règles. En fait récupéré le numéro de ligne peut-être bien plus simple qu’il n’y parait.

Par exemple, disons que je cherche à supprimer une adresse IP en particulier (ici, l’adresse 123.123.123.123) de mon pare-feu dans la chaîne fail2ban-ssh.

sudo iptables -L fail2ban-ssh -n --line-number | grep 123.123.123.123

Le résultat de cette commande (si l’adresse 123.123.123.123 est bel et bien bannie) serait similaire à ceci :

323  REJECT     all  --  123.123.123.123         0.0.0.0/0            reject-with icmp-port-unreachable

Où le contenu de la première colonne serait le numéro de ligne, dans cet exemple 323.

Il ne nous resterait qu’à supprimer la ligne 323 avec la commande suivante.

sudo iptables -D fail2ban-ssh 323

Voilà!

Comment exporter une liste des licences des utilisateurs d’Office 365.

Pour télécharger le référentiel GitHub, veuillez suivre ce lien.

Ce script PowerShell créera un fichier LogonTime.csv dans le répertoire actif.

#===============================================================
# author:	Julien Bonnier 
# file:		getMsolLicenses.ps1
# project:	office365licenses
# version:	1.0.2.20170425.1448
# url:		https://github.com/jbonnier/office365licenses
#===============================================================

$LiveCred = Get-Credential
$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Connect-MsolService -Credential $LiveCred
Import-PSSession $ExchangeSession
$mailboxes = Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -Ne "DiscoveryMailbox"} 
$arr = @()
foreach ($mailbox in $mailboxes) {
	$obj = New-Object -TypeName PSObject
	$stats = Get-MailboxStatistics -Identity $mailbox.Identity
	$msolUser = Get-MsolUser -UserPrincipalName $mailbox.UserPrincipalName
	$licenses = ""
	foreach ($license in $msolUser.Licenses) {
		if ($license.AccountSkuId -Like "*:VISIOCLIENT") { $licenses += "Visio, " }
		elseif ($license.AccountSkuId -Like "*:EXCHANGE*") { $licenses += "Exchange, " }
		elseif ($license.AccountSkuId -Like "*:POWER_BI_*") { $licenses += "Power-Bi, " }
		elseif ($license.AccountSkuId -Like "*:OFFICESUBSCRIPTION") { $licenses += "Office, " }
		else { $licenses += "$license.AccountSkuId, "}
	}
	if ($licenses.Length -Ne 0) { $licenses = $licenses.Substring(0, $licenses.Length-2) }
	Add-Member -InputObject $obj -MemberType NoteProperty -Name Identity -Value $mailbox.Identity
	Add-Member -InputObject $obj -MemberType NoteProperty -Name DisplayName -Value $mailbox.DisplayName
	Add-Member -InputObject $obj -MemberType NoteProperty -Name Address -Value $mailbox.PrimarySmtpAddress
	Add-Member -InputObject $obj -MemberType NoteProperty -Name Licensed -Value $msolUser.islicensed
	Add-Member -InputObject $obj -MemberType NoteProperty -Name "License(s)" -Value $licenses
	Add-Member -InputObject $obj -MemberType NoteProperty -Name LastLogonTime -Value $stats.LastLogonTime
	$arr += $obj
} $arr | Export-Csv LogonTime.csv
Remove-PSSession $ExchangeSession

Configuration de mon serveur web de développement PHP7 sous Debian 8

Voici la configuration de mon serveur web de développement PHP7, Apache2, MySQL, phpMyAdmin sous Debian 8 Jessie. Vu la difficulté à installer PHP7 et phpMyAdmin, j’ai cru bon de créer un tutoriel sur la configuration de mon environnement étape par étape.

Ceci se base sur le fait que ma machine était une machine Debian de base avec comme seul paquet supplémentaire sudo. Mon utilisateur étant membre du groupe sudo.

Étape 1 : Mettre à jour les sources du gestionnaire de paquets apt.

Nous ajoutons d’abord le référentiel Dotdeb qui fournit des paquets à jour pour PHP7 (entre autres), puisque celui-ci n’est pas offert (à ce jour) dans les référentiels officiels de Debian.

Note : Ce référentiel est également valide pour Debian 7 Wheezy, il faudrait toutefois changer le nom de la version dans les commandes suivantes.

sudo bash -c "echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list"
sudo bash -c "echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list"

Étape 2 : Installer la clef GnuPG pour le référentiel de Dotdeb.

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg
rm dotdeb.gpg

Étape 3 : Mettre le gestionnaire de paquets apt à jour.

sudo apt-get update

Étape 4 : Installer les paquets nécessaires.

sudo apt-get install apache2 php7.0 php7.0-fpm php7.0-gd php7.0-mysql php7.0-mbstring mysql-server

Pendant l’installation de mysql-server, vous devriez avoir à entrer un mot de passe pour l’utilisateur d’administration; ce mot de passe sera nécessaire pour tester phpMyAdmin à l’étape 9.

Étape 5 : Configurer Apache pour l’utilisation de PHP7.

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm

Puis, nous redémarrons le service web.

sudo service apache2 reload

Étape 6 : Tester l’installation d’Apache et de PHP7.

Nous créons d’abord un fichier test.php pour y afficher les informations relatives à php dans le DocumentRoot de notre serveur web. Par défaut, sous Debian 8 avec Apache2, le DocumentRoot devrait être /var/www/html/.

sudo bash -c "cat >> /var/www/html/test.php" << EOL
<?php
phpinfo();
?>
EOL

Nous devrions être capables de naviguer vers le serveur de développement sur la page test.php et obtenir quelque chose de similaire à ceci.


Étape 7 : Tester l’installation de MySQL server.

Pour tester l’installation de mysql-server, il suffit d’entrer une commande comme celle-ci :

mysql -u root -p -e "show databases"

Cette commande devrait afficher le nom des bases de données présentes sur votre serveur.

Étape 8 : Installer phpMyAdmin.

Dans ce tutoriel, j’installerai phpMyAdmin dans le répertoire /var/www/phpmyadmin et je créerai un VirtualHost pour ce répertoire.

L’archive de phpMyAdmin que nous utiliserons est au format zip, tapper la commande suivante pour installer l’utilitaire unzip si vous ne l’avez pas par défaut.

sudo apt-get install unzip

D’abord, téléchargeons l’archive de phpMyAdmin et installons-la dans le répertoire voulu.

sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.5.3.1/phpMyAdmin-4.5.3.1-all-languages.zip -P /var/www/
sudo unzip /var/www/phpMyAdmin-4.5.3.1-all-languages.zip
sudo mv /var/www/phpMyAdmin-4.5.3.1-all-languages/ /var/www/phpmyadmin
sudo rm /var/www/phpMyAdmin-4.5.3.1-all-languages.zip

Puis, nous allons créer un fichier de configuration de phpMyAdmin en nous basant sur l’exemple fourni.

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

Et nous y modifions une ligne pour ajouter une clef Blowfish secrète à la configuration de phpMyAdmin.

k=$(openssl rand -base64 32 | sed 's,\/,\\/,g')
o="\$cfg\['blowfish_secret'\] = '';"
n="\$cfg\['blowfish_secret'\] = '$k';"
sudo perl -p -i -e "s/$o/$n/g" /var/www/phpmyadmin/config.inc.php

Maintenant, vérifions que la clef a bel et bien été ajoutée.

cat /var/www/phpmyadmin/config.inc.php | grep blowfish

La sortie devrait être similaire à ceci (avec une clef différente).

$cfg['blowfish_secret'] = 'GdU9dq0/miodjA1DtIqqqZGvHEO/k2brFzpnOec5m2o='; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Finalement, nous créons un VirtualHost pour phpMyAdmin.

D’abord, nous créons un fichier de configuration pour le site phpMyAdmin.

sudo bash -c "cat >> /etc/apache2/sites-available/phpmyadmin.conf" << EOL
Alias /phpmyadmin /var/www/phpmyadmin

<Directory /var/www/phpmyadmin>
 Options FollowSymLinks
 DirectoryIndex index.php
</Directory>
EOL

Puis nous activons le site et nous redémarrons Apache2.

sudo a2ensite phpmyadmin.conf
sudo service apache2 restart

Étape 9 : Tester l’installation de phpMyAdmin.

Nous devrions être capables de naviguer vers le site phpMyAdmin de notre serveur de développement.

Il ne nous reste qu’à nous connecter à phpMyAdmin avec l’utilisateur root et le mot de passe choisi à l’étape 4.

Voilà!

Notre serveur web de développement est fonctionnel avec PHP7 et phpMyAdmin.

Comment régler les problèmes de connexions refusées sur ps.outlook.com.

Lorsque vous tentez de vous connecter à la console Exchange d’Office 365 en utilisant PowerShell et que vous recevez le message suivant :

New-PSSession : [ps.outlook.com] La connexion au serveur distant ps.outlook.com a échoué avec le message d’erreur suivant: […] Access Denied […].

Office 365 PowerShell Access Denied -2144108477

Assurez-vous d’abord que les informations de connexion sont valides. Si le problème persiste, il est possible que votre utilisateur n’ait pas l’autorisation pour gérer l’organisation; voici comment y remédier.

  1. Ouvrez le portail web d’administration d’Office 365.
    1. https://portal.office.com/
  2. Accédez à l’administration d’Exchange.
  3. Ouvrez l’onglet des autorisations.
  4. Modifier les autorisations pour Organisation Management.
  5. Ajouter l’adresse courriel utilisée pour vous connecter à Office 365 avec PowerShell dans la section Membres.
  6. Enregistrer les changements.

Voilà! Vous devriez pouvoir vous connecter à Office 365 en utilisant PowerShell.

Comment trouver les membres d’une liste de distribution Office 365.

Pour vous savoir comment vous connecter à la console Exchange d’Office 365, veuillez vous référer à cet article.
 
Pour lister les groupes de distribution :

Get-DistributionGroup

Pour lister les membres des groupes de distribution :

Get-DistributionGroup | ForEach-Object { Get-DistributionGroupMember -Identity $_.name }

Pour lister le nom des contacts faisant parti de groupes de distribution avec le nom de ce dernier :

Get-DistributionGroup | ForEach-Object { $name = $_.name; Get-DistributionGroupMember -Identity $_.name } | Where { $_.RecipientType -Eq "MailContact" } | ForEach-Object { Write-Host "$name`t$_.name" }

Comment se connecter à Office 365 Exchange avec PowerShell.

Voici comment vous pouvez vous connecter à Exchange Online en utilisant PowerShell.
Les étapes 2, 3 et 7 sont optionnelles.
 

  1. Ouvrir PowerShell, sur un ordinateur utilisant Windows.
    • En utilisant le menu démarrer.
      • Ouvrir le menu démarrer,
      • Accéder à Tous les programmes,
      • Ouvrir le dossier Accessoires,
      • Cliquer sur Windows PowerShell.
    • En utilisant l’utilitaire Exécuter
      • Appuyer sur Windows+R,
      • Tapper : PowerShell
  2. Dans la fenêtre PowerShell, vérifier que vous pouvez exécuter les scripts RemoteSigned.
    Get-ExecutionPolicy

    Si la valeur retournée est différente de « RemoteSigned », vous devez changer la valeur telle que décrite à l’étape 3, sinon, vous pouvez passer directement à l’étape 4.

  3. Pour activer les scripts RemoteSigned dans PowerShell, taper la commande suivante :
    Set-ExecutionPolicy RemoteSigned
  4. Connecter PowerShell au service infonuagique, taper les commandes suivantes.
    $LiveCred = Get-Credential
    
    # Note : En saisissant cette commande, une boîte de dialogue de connexion s’ouvrira. Vous devez entrer les informations de connexion d’un compte administrateur de votre <em>Office 365</em>.
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
  5. Effectuer les travaux que vous avez à faire sur la console d’Exchange Office 365.
  6. Fermer la connexion au service infonuagique.
    Remove-PSSession $Session
  7. Vous pouvez ensuite rétablir la valeur de Get-ExecutionPolicy modifiée à l’étape 3 par la valeur obtenue à l’étape 2 (optionnel).
    Set-ExecutionPolicy "Valeur obtenue à l’étape 2"

    Vous devrez remplacer « Valeur obtenue à l’étape 2 » par la valeur que vous avez obtenue précédemment. Les guillemets ne doivent pas être entrés dans cette commande, ils ne servent, ici, qu’à simplifier la lecture.

Voilà!

Comment récupérer l’espace disparu d’une clef USB (flash drive)

Il arrive parfois qu’après le formatage d’une clef USB, celle-ci n’affiche pas tout l’espace disponible. Par exemple, si vous avez fait un disque d’installation de Linux sur la clef, Windows n’arrivera pas facilement à récupérer l’espace, du moins, via l’interface graphique.

Gestion des disques - espace non alloué

Voici comment récupérer tout l’espace d’une clef USB.

ATTENTION : Ceci effacera tout le contenu de la clef USB, si vous avez plusieurs partitions, assurez-vous d’avoir une sauvegarde de tous fichiers importants.

Ouvrez une fenêtre de commandes :

  1. Appuyez sur les touches Win+R
  2. Tapez « cmd » dans la fenêtre
  3. Appuyez sur la touche Entrée

Dans la fenêtre de commande, veuillez procéder comme ceci :

:: Lancez diskpart.
diskpart

:: Une fois l'utilitaire de partitions lancé, tapez « list disk » pour avoir une liste des disques présents sur l'ordinateur.
DISKPART> list disk

:: Identifiez le disque à formater, dans cet exemple nous utiliserons le disque 1.
DISKPART> select disk 1

:: Vous pouvez maintenant effacer le disque, toutes données présentes sur le disque seront perdues après cette commande.
DISKPART> clean

:: Maintenant, créez une partition principale utilisant tout le disque.
DISKPART> create partition primary

:: Vous pouvez maintenant quitter l'utilitaire « diskpart ».
DISKPART> exit

Vous pouvez maintenant formater ou partitionner le disque comme bon vous semble depuis l’utilitaire de gestion des disques.

 

 

Comment masquer une liste de distribution de la liste d’adresses globale sur Exchange Online.

Voici une procédure étape par étape pour masqué une liste de distribution de la liste d’adresses globale sur Exchange Online en utilisant PowerShell.

 

  1. Ouvrir PowerShell, sur un ordinateur utilisant Windows.
    • En utilisant le menu démarrer.
      • Ouvrir le menu démarrer,
      • Accéder à Tous les programmes,
      • Ouvrir le dossier Accessoires,
      • Cliquer sur Windows PowerShell.
    • En utilisant l’utilitaire Exécuter
      • Appuyer sur Windows+R,
      • Tapper : PowerShell
  2. Dans la fenêtre PowerShell, vérifier que vous pouvez exécuter les scripts RemoteSigned.
    Get-ExecutionPolicy

    Si la valeur retournée est différente de « RemoteSigned », vous devez changer la valeur telle que décrite à l’étape 3, sinon, vous pouvez passer directement à l’étape 4.

  3. Pour activer les scripts RemoteSigned dans PowerShell, taper la commande suivante :
    Set-ExecutionPolicy RemoteSigned
  4. Connecter PowerShell au service infonuagique, taper les commandes suivantes.
    $LiveCred = Get-Credential
    
    # Note : En saisissant cette commande, une boîte de dialogue de connexion s’ouvrira. Vous devez entrer les informations de connexion d’un compte administrateur de votre <em>Office 365</em>.
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
  5. Entrer la commande suivante en remplaçant <nom-du-groupe> par l’identifiant de la liste à masquer.
    Set-DistributionGroup -Identity <nom-du-groupe> -HiddenFromAddressListsEnabled $true
  6. Fermer la connexion au service infonuagique.
    Remove-PSSession $Session
  7. Vous pouvez ensuite rétablir la valeur de Get-ExecutionPolicy modifiée à l’étape 3 par la valeur obtenue à l’étape 2 (optionnel).
    Set-ExecutionPolicy "Valeur obtenue à l’étape 2"

    Vous devrez remplacer « Valeur obtenue à l’étape 2 » par la valeur que vous avez obtenue précédemment. Les guillemets ne doivent pas être entrés dans cette commande, ils ne servent, ici, qu’à simplifier la lecture.

Voilà, la liste choisie ne devrait devrait plus apparaître dans la liste d’adresses globale.

Comment se connecter à RDP via RWW sur iOS.

Le portail d’Accès Web à distance (Remote Web Workplace, RWW) de Windows Server permet de se connecter à des ordinateurs du réseau via le protocole Remote Desktop Protocol (RDP). Pour que la connexion fonctionne de façon totalement transparente, il est nécessaire d’utiliser Microsoft Internet Explorer. Il est aisé d’utiliser n’importe quel autre fureteur internet sur un PC. Le plus grand défi est de faire fonctionner cette connexion sur les périphériques mobiles, en l’occurrence ceux utilisant iOS. Évidemment, le serveur Windows doit être configuré pour permettre ce type de connexion via le RWW.

Voici comment j’ai réussi à le faire fonctionner sur iOS 8.1.2.

  1. Télécharger RD Client de Microsoft en suivant ce lien.
  2. Ouvrir Safari et se connecter au site RWW.
  3. Si vous arrivez sur la version mobile du site, cliquer sur le lien « Afficher la version Poste de travail », sinon passer à l’étape 4.
    Comment se connecter à RDP via RWW sur iOS.Comment se connecter à RDP via RWW sur iOS.
  4. Entrer votre nom d’utilisateur et votre mot de passe et connecter vous.
  5. Dans l’espace « Ordinateurs », cliquer sur connexion pour l’ordinateur voulu.
    Comment se connecter à RDP via RWW sur iOS.
    Un nouvel onglet s’ouvrira affichant un fichier .rdp et deviendra tout gris (malheureusement).
  6. Dans la barre d’outils au bas de l’écran, cliquer sur l’icône envoyer vers (affichant un carré et une flèche qui pointe vers le haut).
    Comment se connecter à RDP via RWW sur iOS.
  7. Dans le menu qui s’ouvre, cliquer sur Ajouter à l’écran d’accueil.
    Comment se connecter à RDP via RWW sur iOS.
  8. Choisir un nom pour le lien (dans mon cas Rdp), puis appuyer sur ajouter.
    Comment se connecter à RDP via RWW sur iOS.
  9. Retourner dans Safari et fermer les deux onglets de RWW.
    Comment se connecter à RDP via RWW sur iOS.
  10. Ouvrir le lien Rdp sur votre écran d’accueil, la page devrait afficher une icône affichant le nom de l’ordinateur distant suivi de l’extension .rdp ainsi qu’un lien, en haut de l’écran, nommé Ouvrir dans « RD Client ».
  11. Cliquer le lien Ouvrir dans « RD Client ».
    Comment se connecter à RDP via RWW sur iOS.
  12. L’application RD Client s’ouvrira, vous pouvez entrer votre nom d’utilisateur et votre mot de passe puis cliquer sur Done.
    Comment se connecter à RDP via RWW sur iOS.
  13. Si l’on vous demande d’accepter le certificat de cryptages, cliquer sur Accept.
    Comment se connecter à RDP via RWW sur iOS.

Eurêka!

Vous devriez maintenant être connecté sur le poste distant.

Comment effacer le contenu d’une boîte courriel Exchange Online.

En passant à la version Online d’Exchange, l’utilisation de PowerShell devient nécessaire pour effectuer plusieurs tâches. Voici donc une procédure étape par étape pour effacer le contenu d’une boîte Exchange Online (Courriels, contacts, calendriers, tâches) en utilisant PowerShell.

 

  1. Ouvrir PowerShell, sur un ordinateur utilisant Windows.
    • En utilisant le menu démarrer.
      • Ouvrir le menu démarrer,
      • Accéder à Tous les programmes,
      • Ouvrir le dossier Accessoires,
      • Cliquer sur Windows PowerShell.
    • En utilisant l’utilitaire Exécuter
      • Appuyer sur Windows+R,
      • Tapper : PowerShell
  2. Dans la fenêtre PowerShell, vérifier que vous pouvez exécuter les scripts RemoteSigned.
    Get-ExecutionPolicy

    Si la valeur retournée est différente de « RemoteSigned », vous devez changer la valeur telle que décrite à l’étape 3, sinon, vous pouvez passer directement à l’étape 4.

  3. Pour activer les scripts RemoteSigned dans PowerShell, taper la commande suivante :
    Set-ExecutionPolicy RemoteSigned
  4. Connecter PowerShell au service infonuagique, taper les commandes suivantes.
    $LiveCred = Get-Credential
    
    # Note : En saisissant cette commande, une boîte de dialogue de connexion s’ouvrira. Vous devez entrer les informations de connexion d’un compte administrateur de votre <em>Office 365</em>.
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
  5. Entrer la commande suivante en remplaçant MailboxID par l’identifiant de la boîte à réinitialiser.
    Search-Mailbox -Identity MailboxID -DeleteContent -Force

    Note : Si vous obtenez le message d’erreur suivant, veuillez vous référer à cet article.

    Le terme « Search-Mailbox » n’est pas reconnu comme nom d’applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l’orthographe du nom, ou si un chemin d’accès existe, vérifiez que le chemin d’accès est correct et réessayez.

  6. Fermer la connexion au service infonuagique.
    Remove-PSSession $Session
  7. Vous pouvez ensuite rétablir la valeur de Get-ExecutionPolicy modifiée à l’étape 3 par la valeur obtenue à l’étape 2 (optionnel).
    Set-ExecutionPolicy "Valeur obtenue à l’étape 2"

    Vous devrez remplacer « Valeur obtenue à l’étape 2 » par la valeur que vous avez obtenue précédemment. Les guillemets ne doivent pas être entrés dans cette commande, ils ne servent, ici, qu’à simplifier la lecture.

Voilà, la boîte choisie devrait avoir été réinitialisée. Il est toutefois conseillé de se connecter à la boîte Exchange afin de s’assurer quelle est bel et bien vide.