6/18/2016

Knockd for the impatient

If you don't know what Knockd is, take a look at Google :).

On your server (ubuntu/debian)

apt-get update
# We want to make ensure to allow all established connections and on-going sessions through the firewall, otherwise, the firewall would block the current SSH session
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Then use the following rule to block incoming port 22 (SSH)
iptables -A INPUT -p tcp --destination-port 22 -j DROP


# Once you have established your iptables rules, you can automate the restore process at reboot with iptables-persistent.
apt-get install iptables-persistent

# save current configuration
iptables-save

# install knockd
apt-get install knockd

# edit knockd configuration
nano /etc/knockd.conf

# change the knock sequence with your favorite (and available) ports

# change:
# /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# to:
# /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
# so the rules will be inserted on top, before the blocking rule.

# edit default to activate knockd
nano /etc/default/knockd

# pass "START_KNOCKD" to 1
# don't forget to change KNOCKD_OPTS if your interface differs 
# save it

service knockd start

From your laptop (macOS/zsh)

# install
brew install knock

# edit
nano ~/.zshrc
knockIn() {
  knock -v -d 200 $1 1000 2000 3000
}

knockOut() {
  knock -v -d 200 $1 3000 2000 1000
}

sshWithKnock() {
  knockIn $1
  ssh $1
  knockOut $1
}

yourServer() {
  sshWithKnock yourServer.com
}

# save

# reload
source ~/.zshrc

# enjoy!
myServer

Sources

view raw Knockd.md hosted with ❤ by GitHub
6/12/2016

[Fr] Single Point of Failure : votre site web indisponible à cause des scripts externes ?

Suite au partage de Single Point of Failure : votre site web indisponible à cause des scripts externes ? par un collègue @iAdvize, je souhaitais partager ici mon retour d'expérience sur cette problématique.

L'article soulève effectivement les différents problèmes posés par la dépendance sur des services tiers — que cela soit des indisponibilités ou la conséquence des blocages de scripts via ad-blockers — mais ne donne pas réellement de solutions pratiques.

Voici donc les solutions que j'ai pu mettre en place en production sur Redsmin et feu Bringr pour gérer le cas où une librairie tierce (par exemple Mixpanel ou Google Analytics) est indisponible ou bloquée. La solution se résume en deux mots: découplage et isolation.

Découplage: il est vital pour la disponibilité de l'application de communiquer avec les composants externes de manière découplée. L'application elle-même ne doit pas avoir une connaissance forte des composants externes et de ce qu'ils offrent car ils peuvent ne pas exister. Par exemple, l'objet global Mixpanel offre une méthode track pouvant être bloquée. De même, Google Analytics expose une fonction globale "ga" qui peut être indéfinie à cause d'un ad-blocker.

La solution pour assurer un découplage fort consiste par exemple à utiliser un message ou event-bus (e.g. un dispatcher ou event emitter) pour notifier depuis l'application les évènements intéressants à suivre. Pour rappel, l'intérêt de passer par un event-bus est que l'émetteur n'a aucune connaissance du ou des destinataires. Ainsi si le chargement de Mixpanel ou de Google Analytics n'a pu être effectué (à cause d'une indisponibilité ou d'un blocage d'un adblock-like) l'application émettra toujours ses évènements, il n'y aura aucun listener, l'indisponibilité des composants externes sera donc transparente pour l'application.

Isolation: nous encapsulons chaque composant externe dans un module indépendant qui est connecté avec le reste de l'application par le message ou event-bus (e.g. un event emitter). Certains ad-block peuvent laisser exister l'objet global (e.g. Mixpanel) mais supprime toutes ses méthodes (e.g. track), il est donc important d'encapsuler l'appel au composant tier (e.g. Mixpanel.track) dans un try/catch ce qui permet de ne pas bloquer l'exécution des listeners suivants à cause d'une exception.

Cette approche nous permet d'avoir Google Analytics, Mixpanel, UserVoice etc... en production sans nous soucier de la configuration du navigateur, des extensions de blocage ou des indisponibilités des composants externes.

« »
 
 
Made with on a hot august night from an airplane the 19th of March 2017.