Comment se protéger contre distribuées de déni de service attaques Node.js avec la Prise.io?
J'ai été en apprentissage node.js et de la prise.io dernièrement. Ma question est comment puis-je protéger le serveur contre les attaques côté client?
C'est mon code serveur
io.sockets.on('connection', function (socket) {
//users.push(socket);
socket.on('message', function (data) {
socket.on('disconnect', function () { });
socket.on('bcast', function (data) {
socket.emit('news', { 'data': data });
socket.broadcast.emit('news', { 'data': data });
});
socket.on('login', function(data){
socket.emit('login', {'data': [ socket.id, data ] });
});
});
});
Par exemple, si un client utilise des outils de développement chrome pour faire le courant du code
for(var i = 0; i<99999999999; i++)
{
socket.emit('bcast', {data: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
}
sa va tuer le serveur.
- Si vraiment tue votre serveur, vous devriez probablement implent une sorte de limitation fondée sur les clients.
- Nœud 0.10.20 a connu des problèmes de DoS, si vous l'utilisez (ou ci-dessous, je pense).
- Pourquoi ne pas vous exposer le nœud de douilles d'extrémité à l'aide d'un DoS de sauvegarde/limitation de service? Je suis sûr que cloudflare ou similaire fournisseur aura une très bonne protection contre les attaques DoS plutôt qu'essayez-vous de faire vos propres.
- Très bonne question, pas de bonnes réponses!
- Peut-être que vous prenez le problème à l'extrême. Exposer ou de mésusage jetés comme ça, c'est mauvais. Si vous utilisez de diffusion trop de votre serveur va cesser de fonctionner avant même que les utilisateurs feront DDOS. Pourquoi ne pas vous testez votre scénario par le traitement de la diffusion différemment que d'émettre. Essayez de chambres par exemple. Utiliser la diffusion de seulement lorsque cela est nécessaire.
Vous devez vous connecter pour publier un commentaire.
Regarder en JS limitation des événements et de l'anti-rebond!
Ces techniques vous aideront à prévenir et à détecter les attaques à un certain point (qui est, à mon avis, suffisant pour une petite multijoueur prise de jeu)...
EDIT:
Dans ce jsfiddle: http://jsfiddle.net/y4tq9/9/
vous pouvez voir que chaque demande envoyée plus rapidement que 5ms retournera false, sinon le gestionnaire d'obtenir de l'exécuter.
Vous simple de débrancher les prises qui envoyer la demande plus rapide que 5ms (ou 2ms, ou 3ms en fonction de votre réseau et de votre application, de poids...).
Vous pourriez aussi bien utiliser js limitation des événements sur le site du client afin de s'assurer que toutes vos demandes de ne pas envoyer plus vite que la limite de vitesse!
Cette technique ne fournira pas une protection absolue contre l'exploitation, mais il empêchera votre serveur à partir de la plante lorsque les attaquants essaient de Dos...
taux-limiteur-flexible nodejs bibliothèque peut être utilisée contre les attaques DDoS
Tout cas d'être bloquée, si elle se produit plus de 5 fois par seconde.
Il y a aussi l'option pour les applications distribuées à l'aide de Redis.
Et certains paramètres flexibles comme l'assurance et le bloc de stratégie qui fait de l'
rate-limiter-flexible
haute disponible et rapide.Il n'est pas toujours une bonne idée de le faire dans votre serveur http. Cochez cette réponse: Comment prévenir les attaques DOS sur mon serveur http qui écrit dans node.js?
Donné que le nœud n'est pas le "meilleur" à la manipulation de ces DDoS Conditions dans le cadre lui-même, je donnerais troisième partie DDoS Mitigation des tactiques telles que cloudflare ou blacklotus. Ils sont coûteux offres si vous avez une énorme ampleur de l'utilisation, mais ils vont protéger Nœud ou vraiment tout cadre d'attaques par déni de service.
https://www.cloudflare.com
http://www.blacklotus.net/
Une autre option est d'utiliser le logiciel de pare-feu basé sur des solutions comme aiProtect qui sont un peu plus rentable lors de la mise à l'échelle passé le niveau gratuit de cloudflare et blacklotus.
http://aiscaler.com/home/protect
Il ya beaucoup plus là-bas, mais celui-ci arrive à avoir une AWS partenariat de sorte que vous pouvez facilement faire tourner aiProtect VMs.