La tentative de paramètre requise est manquante. Solution : Tentative de connexion. L'avalanche de demandes échouées a disparu. Problème résolu

J'obtiens cette erreur. Le paramètre requis 'tag' est manquant dans le grille-pain Android, aidez-moi s'il vous plaît, je ne trouve pas mon erreur ci-dessous. J'ai le code utilisateur Android et le code serveur php ci-dessus. J'utilise la bibliothèque volley pour les requêtes http.

StringRequest strReq = new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener () ( @Override public void onResponse(String response) ( Log.d(TAG, "Register Response: " + response.toString()); hideDialog(); try ( JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); if (!error) ( // L'utilisateur a été stocké avec succès dans MySQL // Stocke maintenant l'utilisateur dans sqlite String uid = jObj.getString("uid"); JSONObject user = jObj.getJSONObject(" user"); String name = user.getString("name"); String email = user.getString("email"); String created_at = user .getString("created_at"); // Insertion d'une ligne dans la table des utilisateurs db.addUser (nom, email, uid, created_at); // Lancer l'activité de connexion Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); startActivity(intent); finish(); ) else ( // Une erreur s'est produite lors de l'inscription. Get l'erreur // message String errorMsg = jObj.getString("error_msg"); Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show(); ) ) catch (JSONException e) ( e.printStackTrace(); ) ) ), new Response.ErrorListener() ( @Override public void onErrorResponse(VolleyError error) ( Log.e(TAG, "Erreur d'enregistrement : " + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); cacherDialogue(); ) )) ( @Remplacer la carte protégée getParams() ( // Affichage des paramètres pour enregistrer l'url Map params = nouveau HashMap (); params.put("tag", "register"); params.put("nom", nom); params.put("email", email); params.put("mot de passe", mot de passe); paramètres de retour ; ) @Remplacer la carte publique getHeaders() renvoie AuthFailureError( HashMap en-têtes = nouveau HashMap (); headers.put("Content-Type", "application/json; charset=utf-8"); en-têtes de retour ; ) ); // Ajout de la requête à la file d'attente des requêtes AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

AppcontrollerClassez ici

La classe publique AppController étend Application ( public static final String TAG = AppController.class.getSimpleName(); private RequestQueue mRequestQueue; private static AppController mInstance; @Override public void onCreate() ( super.onCreate(); mInstance = this; ) public static synchronisé AppController getInstance() ( return mInstance; ) public RequestQueue getRequestQueue() ( if (mRequestQueue == null) ( mRequestQueue = Volley.newRequestQueue(getApplicationContext()); ) return mRequestQueue; ) public req, balise String) ( req.setTag(TextUtils.isEmpty(tag) ? TAG : balise); getRequestQueue().add(req);) public void addToRequestQueue(Demande req) ( req.setTag(TAG); getRequestQueue().add(req); ) public void cancelPendingRequests(Object tag) ( if (mRequestQueue != null) ( mRequestQueue.cancelAll(tag); ) ) )

c'est le magazine Android

08-07 14:35:36.552 19120-20088/com.example.panos.chatsmartapp D/Volley﹕ BasicNetwork.logSlowRequests : réponse HTTP pour request=< http://192.168.1.3/android_login_api/ 0x355f917 NORMAL 1>, , , 08-07 14:35:36.662 19120-19120/com.example.panos.chatsmartapp D/RegisterActivity﹕ Réponse du registre : ("error":true,"error_msg":"Le paramètre requis "tag" est manquant !" ) 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Toast﹕ checkMirrorLinkEnabled renvoie : faux 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Toast ﹕ montrant autorisé 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Volley﹕ Request.finish : 4253 ms : http://192.168.1.3/android_login_api/ 0x355f917 NORMAL 1 08-07 14 :35:36.712 19120-19120/com.example.panos.chatsmartapp E/ViewRootImpl﹕ sendUserActionEvent() mView == null

c'est du code php

$tag, "erreur" => FAUX); // vérifie le type de balise if ($tag == "login") ( // Le type de requête est check Login $email = $_POST["email"]; $password = $_POST["password"]; // vérifie user $user = $db->getUserByEmailAndPassword($email, $password); if ($user != false) ( // utilisateur trouvé $response["error"] = FALSE; $response["uid"] = $user ["unique_id"] ; $response["user"]["name"] = $user["name"] ; $response["user"]["email"] = $user["email"] ; $response ["user"]["created_at"] = $user["created_at"] ; $response["user"]["updated_at"] = $user["updated_at"] ; echo json_encode($response); ) else ( // utilisateur introuvable // echo json avec erreur = 1 $response["error"] = TRUE; $response["error_msg"] = "E-mail ou mot de passe incorrect!"; echo json_encode($response); ) ) else if ($tag == "register") ( // Le type de requête est Register new user $name = $_POST["name"]; $email = $_POST["email"]; $password = $_POST["password"] ; // vérifie si l'utilisateur existe déjà if ($db->isUserExisted($email)) ( // l'utilisateur existe déjà - réponse d'erreur $response["error"] = TRUE; $response["error_msg"] = "L'utilisateur existait déjà" ; echo json_encode($response); ) else ( // stocker l'utilisateur $user = $db->storeUser($name, $email, $password); if ($user) ( // l'utilisateur a enregistré avec succès $response["error"] = FALSE; $response[ "uid"] = $user["unique_id"] ; $response["user"]["name"] = $user["name"] ; $response["user"]["email"] = $user[ "email"] ; $response["user"]["created_at"] = $user["created_at"] ; $response["user"]["updated_at"] = $user["updated_at"] ; echo json_encode( $response); ) else ( // l'utilisateur n'a pas réussi à stocker $response["error"] = TRUE; $response["error_msg"] = "Une erreur s'est produite lors de l'enregistrement"; echo json_encode($response); ) ) ) else ( // l'utilisateur n'a pas réussi à stocker $response["error"] = TRUE ; $response["error_msg"] = "Valeur de "tag" inconnue. Il doit s'agir de "login" ou de "register"" ; echo json_encode($response) ; ) ) else ( $response["error"] = TRUE; $response["error_msg"] = "Le paramètre requis "tag" est manquant!"; echo json_encode($response); ) ?>

Myabe J'ai un problème avec la chaîne utf8 en utilisant json_encode/json_decode. Je ne sais pas...


Une fois que j'ai regardé dans le journal /var/log/messages sur un serveur exécutant FreeBSD. Le journal s'est avéré être presque complètement encombré avec les entrées suivantes : noyau : tentative de connexion à UDP 127.0.0.1:10441 à partir du noyau 127.0.0.1:53 : tentative de connexion à UDP 127.0.0.1:10441 à partir du noyau 127.0.0.1:53 : Tentative de connexion à UDP 127.0 127.0.0.1:10445 à partir du noyau 127.0.0.1:53 : Tentative de connexion à UDP 192.0.32.10:6881 à partir du noyau 188.85.194.61:24333 : Tentative de connexion à UDP 127.0.0.1:10468 à partir de 127.0.0.1:5 3 noyau : tentative de connexion à UDP 127.0.0.1:10468 depuis 127.0.0.1:53 noyau : tentative de connexion à UDP UDP 127.0.0.1:10469 depuis 127.0.0.1:53 noyau : tentative de connexion à UDP 127.0.0.1:10470 depuis 127.0.0.1 :53

Qu'est-ce que cela signifierait ?

Yandex a souligné le sujet "Comportement incompréhensible de la liaison"
Ma question y a déjà été répondue :
Tentative de connexion à UDP 127.0.0.1:10445 depuis 127.0.0.1:53 . La connexion a échoué. Voyons qui est suspendu au port 53 ? port privilégié (<1024) значит там должно быть что-то распространённое. # grep -w 53 /etc/services domain 53/tcp #Domain Name Server domain 53/udp #Domain Name Server А, это же порт DNS сервера. Кто на нём висит на самом деле? # sockstat -l | grep -w 53 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS bind named 19021 514 udp4 127.0.0.1:53 *:*

Il s'agit du serveur DNS BIND.

Pourquoi veut-il se brancher sur une prise inexistante ? Dans la même rubrique, la bonne réponse est donnée : Un programme envoie une demande à BIND pour résoudre un nom de domaine. BIND met tellement de temps à répondre que le programme demandeur arrête d'attendre une réponse. bind envoie enfin une réponse, mais personne ne l'attend. Le noyau enregistre une connexion échouée.

Quel programme fait autant de longues requêtes DNS ?

Pourquoi n'attend-elle pas de réponse ?

Le programme a été trouvé rapidement # sockstat | grep -w 53 personne spamilter 9801 11 udp4 127.0.0.1:60037 127.0.0.1:53 personne spamilter 9801 12 udp4 127.0.0.1:60038 127.0.0.1:53

Avec DNS, le serveur de messagerie Sendmail avec filtres anti-spam / anti-virus fonctionne sur une seule machine. spamilter n'est qu'un filtre anti-spam.

Le courrier électronique (en particulier avec les cloches et les sifflets modernes comme DKIM) dépend fortement du DNS.

Par conséquent, je n'ai pas été surpris, une telle activité.

Un exemple de requête DNS longue a été rapidement trouvé dans les journaux de sendmail - une tentative de résolution d'une adresse rcom-ne.com

# creuser + tracer rcom-ne.com ;<<>>DiG<<>> +trace rcom-ne.com ;; options globales : printcmd . 172099 IN NS j.root-servers.net. . 172099 IN NS k.root-servers.net. . 172099 IN NS l.root-servers.net. . 172099 IN NS m.root-servers.net. . 172099 IN NS a.root-servers.net. . 172099 IN NS b.root-servers.net. . 172099 IN NS c.root-servers.net. . 172099 IN NS d.root-servers.net. . 172099 IN NS e.root-servers.net. . 172099 IN NS f.root-servers.net. . 172099 IN NS g.root-servers.net. . 172099 IN NS h.root-servers.net. . 172099 IN NS i.root-servers.net. ;; Reçu 244 octets de 127.0.0.1#53(127.0.0.1) en 0 ms com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 EN NÉ j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 EN NÉ g.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 EN NÉ h.gtld-servers.net. ;; Reçu 501 octets de 192.58.128.30#53(j.root-servers.net) en 52 ms rcom-ne.com. 172800 IN NS ns1.rcom-ne.com. rcom-ne.com. 172800 IN NS ns2.rcom-ne.com. ;; Reçu 97 octets de 192.52.178.30#53(k.gtld-servers.net) en 55 ms ;; la connexion a expiré; aucun serveur n'a pu être atteint La demande échoue après un délai d'attente.

Maudits spammeurs, ils écriront des adresses, et vous les vérifierez.

Donc. Rien de mal ne se passe. Mais vous devez effacer le journal de ces messages, sinon ils obstrueront des informations vraiment importantes.

Nous traitons les symptômes

Un moyen radical consiste à désactiver complètement la perforation des connexions défaillantes. À travers sysctl :# sysctl -d net.inet.tcp.log_in_vain net.inet.udp.log_in_vain net.inet.tcp.log_in_vain : consigne toutes les connexions TCP entrantes net.inet.udp.log_in_vain : consigne tous les paquets UDP entrants # sysctl net.inet. udp.log_in_vain=0 net.inet.udp.log_in_vain : 1 -> 0

Mais ici on jette le bébé avec l'eau. Je veux savoir qui s'introduit dans mes ports fermés.

Essayer d'attacher un filtre à syslog est difficile, cela augmente la probabilité d'une défaillance du système de journalisation, et c'est tout simplement moche. Peut-être que vous pouvez désactiver la journalisation pour l'interface de bouclage, est-ce particulièrement intéressant ?

Je ne l'ai pas trouvé dans Google, regardons dans le code source.

# fgrep -rIn "Tentative de connexion à UDP" /usr/src/ /usr/src/sys/netinet/udp_usrreq.c:406: "Tentative de connexion à UDP %s :%d depuis %s :%d\n", /usr/src/sys/netinet6/udp6_usrreq.c:341 : "Tentative de connexion à UDP [%s] : %d depuis [%s] : %d\n", # moins +718 /usr/src/sys/ netinet/tcp_input.c switch(log_in_vain)( cas 1 : si ((thflags & TH_SYN) == 0) pause ; /* FALLTHROUGH */ case 2 : log(LOG_INFO, "Tentative de connexion à TCP %s :%d " "de %s :%d flags :0x%02x\n", dbuf, ntohs(th->th_dport), sbuf , ntohs(th->th_sport), thflags); casser; par défaut : pause ; )

Il semble qu'il n'y ait qu'un seul commutateur et sur toutes les interfaces à la fois - log_in_vain.

Les symptômes ne peuvent pas être éliminés, traitons la maladie.

Explorer le résolveur

Le message apparaît lorsque le programme n'attend pas de réponse du DNS. Il est nécessaire que le DNS réponde plus rapidement ou que le programme attende plus longtemps.

Comment faire attendre le programme plus longtemps ?

Pour les requêtes au DNS, les fonctions libc sont utilisées - res_query, res_search, res_mkquery, res_send...

D'autres fonctions comme gethostbyname sont de niveau supérieur et utilisent finalement ces "primitives".

Le comportement des fonctions res_query est défini dans le fichier /etc/resolv.conf (le nom et le chemin de ce fichier sont codés en dur dans les sources).

Nous avons deux paramètres temps libre Et tentatives.

temps libre- temps d'attente d'une réponse du serveur DNS.

tentatives- le nombre de requêtes répétées au serveur DNS si la première requête est restée sans réponse.

Immédiatement après la fin de l'attente de la première requête, la deuxième requête est envoyée, et ainsi de suite.

Exemple résolution.conf

Nameserver 8.8.8.8 nameserver 8.8.4.4 options timeout:7 tentatives:1 Les valeurs par défaut et les limites peuvent être trouvées dans /usr/include/resolv.h/* * Définitions globales et variables pour le stub de résolveur. */ ...... #define RES_TIMEOUT 5 /* min. secondes entre les tentatives */ #define RES_MAXRETRANS 30 /* uniquement pour resolv.conf/RES_OPTIONS */ #define RES_MAXRETRY 5 /* uniquement pour resolv.conf/RES_OPTIONS */ #define RES_DFLRETRY 2 /* Par défaut #/essais. */ #define RES_MAXTIME 65535 /* Infini, en millisecondes. */ .....

Par défaut, nous avons 5 secondes d'attente et 2 tentatives. C'est pour chaque serveur auquel nous essayons d'accéder.

Pour l'exemple ci-dessus, le temps de réponse maximum (si les deux serveurs DNS échouent) est de 2 (serveurs) x 7 (timeout) x (1+1 (tentatives)) = 28 secondes.

Ma config était plus simple

# cat /etc/resolv.conf domain myserver nameserver 127.0.0.1 Il s'est avéré que 1x3x5 = 15. Vérifions.

L'utilitaire le plus simple - l'hôte utilise ses paramètres intégrés, alors prenons la fouille avancée.

# heure creuser rcom-ne.com ;<<>>DiG<<>> rcom-ne.com ;; options globales : print cmd ;; la connexion a expiré; aucun serveur n'a pu être atteint réel 0m15.009s utilisateur 0m0.000s sys 0m0.006s Testons notre hypothèse sur la cause du message dans le journal.

Dans une console, exécutez

# (date;heure dig rcom-ne.com;date) & ven. 11 février 2011 16:46:49 (MSK) ;<<>>DiG<<>> rcom-ne.com ;; options globales : print cmd ;; la connexion a expiré; aucun serveur n'a pu être atteint réel 0m15.009s utilisateur 0m0.000s sys 0m0.006s ven. 11 février 2011 16:47:04 (MSK) creuser#sockstat | grep dig root dig 71322 20 udp4 *:52170 *:* # grep 52170 /var/log/messages 4 mars 16:47:20 noyau myserver : tentative de connexion à UDP 127.0.0.1:52170 à partir de 127.0.0.1:53

dig attend 15 secondes pour une réponse, et la réponse vient après (16:47:20 - 16:46:49 = 31 ~ 30) 30 secondes.

Maintenant, augmentons le temps de réponse à 30 secondes ou même plus.

Le temps de fouille est le délai d'attente de resolv.conf

# date; time dig +time=12 rcom-ne.com;date Vendredi 4 mars 2011 17:07:46 (MSK) ;<<>>DiG<<>> +time=12 rcom-ne.com ;; options globales : print cmd ;; j'ai eu la réponse : ;; ->> EN-TÊTE<<- opcode: QUERY, status: SERVFAIL, id: 61974 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;rcom-ne.com. IN A ;; Query time: 5998 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Feb 11 17:08:16 2011 ;; MSG SIZE rcvd: 29 real 0m30.006s user 0m0.005s sys 0m0.000s пятница, 11 февраля 2011 г. 17:08:16 (MSK)

creuser a reçu une réponse pour 30 secondes, bien qu'il puisse attendre jusqu'à 1x3x12=36.

Apparemment, 30 secondes est le délai d'attente de BIND lui-même. Rappelons-nous ceci.

statut : SERVFAIL signifie que le serveur DNS n'a pas pu traiter la demande en raison de problèmes avec le serveur DNS (RFC 1035 , RFC 2929).

"Eh bien, je ne l'ai pas fait, je ne l'ai pas fait", nous dit le serveur, bien que nous sachions qu'il n'a tout simplement pas attendu de réponse des serveurs DNS du domaine rcom-ne.com.

Approche personnelle

Les options de resolv.conf affectent tous les programmes.

Je ne veux pas augmenter le temps de requête maximum de 15 à 30 secondes (2 fois) pour tous les programmes sur le serveur.

Peut-être pouvez-vous modifier les délais d'attente du résolveur pour les programmes individuels ?

voir confTO_RESOLVER_RETRANS et confTO_RESOLVER_RETRY.

Mais nous devons d'abord configurer le filtre anti-spam. Et il n'a pas de tels paramètres. L'édition de resolv.conf semblait n'avoir aucun effet sur lui non plus.

J'ai essayé de modifier le code source - mais je n'ai pas pu obtenir le résultat.

Remarque : Après avoir résolu le problème, expérimenté avec resolv.conf et tcpdump, j'ai découvert que resolv.conf affectait certainement le spamilter. Seulement, il a périodiquement envoyé 2 demandes en même temps, au lieu de les envoyer après des secondes de temporisation. Apparemment, il s'agit d'un problème dans l'architecture multithread du spamilter, bien que le résolveur lui-même soit décrit dans man comme thread-safe.

Chéri 30 secondes

J'ai dû réfléchir à la façon de corriger le temps de réponse de BIND. J'ai trouvé une question similaire sur Internet, mais sans réponse.

Frustré, j'ai cherché dans le code source le précieux numéro 30 et j'ai eu de la chance.

L'historique des modifications m'a dit : /usr/src/contrib/bind9/CHANGES ..................... --- 9.2.3rc1 publié --- ... .................. 1122. Délai de résolution réduit de 90 à 30 secondes. ................... --- 9.2.2 publié --- ................... ..

La description ressemble à ce que je cherchais.

J'ai téléchargé les deux versions mentionnées de BIND, j'ai fait un diff et j'ai regardé dedans pendant longtemps jusqu'à ce que je le trouve.

-/* $Id : resolver.c,v 1.218.2.12.4.4 2003/02/18 03:32:01 marka Exp $ */ +/* $Id : resolver.c,v 1.218.2.18 2003/07/18 04:35:51 marka Exp $ */ @@ -2234.7 +2229.7 @@ /* * Calcule une heure d'expiration pour l'extraction entière. */ - isc_interval_set(&interval, 90, 0); /* Constante XXXRTH */ + isc_interval_set(&interval, 30, 0); /* Constante XXXRTH */ iresult = isc_time_nowplusinterval(&fctx->expire, &interval); if (iresult != ISC_R_SUCCESS) ( UNEXPECTED_ERROR(__FILE__, __LINE__,

J'ai essayé de réduire le paramètre de fonction isc_interval_set à et acclamations - les réponses de BIND ont commencé à arriver après un maximum de 20 secondes.

# ee /usr/src/contrib/bind9/lib/dns/resolver.c # cd /usr/src/lib/bind # make obj && make depend && make && make install # cd /usr/src/usr.sbin/ named # make obj && make depend && make && make install # /etc/rc.d/named restart

Mais en production, je n'ai rien édité, qui sait quels problèmes cela peut causer. Pas étonnant que les développeurs aient défini ce paramètre si difficilement.

Encore une fois

Donc, après avoir passé beaucoup de temps, je n'ai pas pu résoudre le problème.

Enfin, j'ai décidé de regarder avec quelles requêtes spécifiques le spamilter bombarde le DNS, avec quelles adresses BIND prend-il beaucoup de temps à résoudre ?

Tcpdump -i lo0 -s 0 -w dns.pcap "port udp 53"

Ouvrons dns.pcap dans Wireshark et voir les demandes ayant échoué.

Il s'est avéré que dans mes hypothèses, j'étais très loin de la vérité.

90 % des demandes sans réponse concernaient des domaines list.dsbl.org multihop.dsbl.org non confirmé.dsbl.org

Requête standard A 146.152.225.99.list.dsbl.org

Grâce aux requêtes DNS, le spamilter a percé les adresses des serveurs de messagerie dans les bases de données des spammeurs. Il s'agit de la technologie DNSBL.

Je suis allé sur dsbl.org et j'ai trouvé que c'était parti depuis longtemps.

Après avoir parcouru les configurations, j'ai trouvé ces adresses dans le fichier /var/db/spamilter/db.rdnsbl et je les ai commentées.

#relays.ordb.org |http://www.ordb.org |Rejeter |Rcpt #list.dsbl.org |http://www.dsbl.org |Rejeter |Rcpt #multihop.dsbl.org |http:/ /www.dsbl.org |Rejeter |Rcpt #unconfirmed.dsbl.org |http://www.dsbl.org |Rejeter |Rcpt

L'avalanche de demandes échouées a disparu. Problème résolu.

apprendre de ses erreurs

D'une part, j'étais très foutu quand, au lieu d'enquêter attentivement sur le problème, d'examiner divers journaux, d'analyser le trafic, j'ai immédiatement fait des hypothèses et commencé à chercher des solutions basées sur celles-ci. En conséquence, j'ai passé beaucoup de temps et fait beaucoup de recherches inutiles. D'un autre côté, j'ai appris beaucoup de choses intéressantes sur le travail du résolveur. Et le DNS est le premier endroit pour vérifier quand il y a divers retards dans le fonctionnement des programmes. Donc, il y a toujours un avantage.

Après la disparition de l'avalanche de connexions DNS imparfaites, le journal est resté encombré de connexions au port 6881.

Noyau : Tentative de connexion à UDP 192.0.32.10:6881 depuis 188.85.194.61:24333

La base de connaissances mondiale a suggéré que UDP 6881 est très probablement un client torrent essayant d'établir une connexion DHT. Une version très probable, un torrent a longtemps travaillé sur le serveur, un client, et bien qu'il ait été supprimé depuis longtemps, le souvenir de celui-ci ne peut pas mourir dans le cœur des autres camarades.

Il est nécessaire de capturer les paquets arrivant sur le port 6881. J'utilise Packet Filter pf(4) comme pare-feu/NAT. Immédiatement après la règle de blocage par défaut, ajoutez une règle pour bloquer et consigner les connexions upd entrantes au port 6881. Paramètre rapide provoque l'arrêt du traitement des autres règles si le paquet correspond à celui en cours.

# ee /etc/pf.conf bloc dans le journal rapide sur em0 proto udp de n'importe quel port 192.0.32.10 6881 # pfctl -oonvf /etc/pf.conf # pfctl -oovf /etc/pf.conf

En quelques minutes, nous écrirons les résultats dans un fichier pour Wireshark.

# tcpdump -i pflog0 -s 0 -w 6881.pcap

Ouvrons le fichier dans Wireshark et regardons. Malheureusement, DHT n'est pas encore pris en charge par le programme. Par conséquent, tout ce qui peut être fait est de regarder le paquet pour une signature.

d1:ad2:id20:+_, je<\^2e1:q4:ping1:t4:H1:v4:UTb1:y1:qe

La recherche des premiers octets du paquet conduit à une discussion sur l'extension DHT pour Bittorrent. C'est donc vraiment l'écho du long travail du client torrent sur le serveur.

Tout va bien. Il vous suffit d'effacer le journal de ces entrées.

Pour ce faire, dites à pf de supprimer silencieusement les paquets arrivant sur le port 6881 en ajoutant le paramètre goutte et suppression enregistrer.

Ce court article concerne le plugin Limit Login Attempts, qui vous permet de protéger le panneau d'administration des blogs sur WordPress. Un plugin qui vous permet de limiter le nombre de tentatives de pirates de blogs - des pirates essayant d'entrer dans le panneau d'administration et de prendre le contrôle du blog. Il existe de nombreux moyens et plugins pour se protéger contre le piratage, et certains d'entre eux sont très sérieux. Mais un jeune blog, avec peu de trafic et d'autorité, en règle générale, n'est pas en danger. Pour le moment, pour le moment. Mais vous pouvez définir des tentatives de connexion limitées même pas encore pour un blog très "cool", ce que, pour le moment, j'attribue à ma modeste ressource Web.

Vous serez surpris, mais après avoir installé ce plugin pour moi-même, j'ai été surpris de constater qu'un pirate informatique sous le nom d'administrateur a tenté de pénétrer mon blog, qui, après des tentatives infructueuses, a été bloqué pendant 24 heures à l'aide du plugin. Cela ne fait que quelques heures qu'il a été installé !

Ci-dessous, une capture d'écran d'une partie de la lettre que j'ai reçue dans mon e-mail hier :

Je me suis involontairement rappelé comment j'ai découvert et éliminé le "trou" dans le sujet du blog. Et si je laissais tout visible ou choisissais le login admin et que le cracker récupérait le mot de passe ?

J'espère vous avoir convaincu, chers webmasters, qu'un plugin aussi simple mais léger n'interférera pas avec votre blog.

En bref sur l'installation et la configuration du plugin Limit Login Attempts

Tout est absolument simple : il vous suffit de trouver le plugin en recherchant dans le panneau d'administration le nom correspondant, de l'installer et de l'activer.

Puis depuis les Options, en sélectionnant le plugin, allez dans les paramètres. En principe, rien ne doit être changé ici, mais je recommande de cocher la case qui permet à l'une des fonctions Limiter les tentatives de connexion d'envoyer des messages sur les tentatives de pénétration de pirates à votre adresse e-mail. Cette fonction du plug-in vous permettra de recevoir un récapitulatif opérationnel des tentatives de piratage.

Fonctionnement du plug-in Limiter les tentatives de connexion

est basé sur la restriction de l'accès au panneau d'administration du site lors de la saisie d'un identifiant et d'un mot de passe. En d'autres termes, il limite le nombre de tentatives d'autorisation, y compris le support des cookies, par l'adresse IP de l'internaute. Faire en sorte que l'administrateur du site se déconnecte du panneau à chaque fois, et même effacer constamment les cookies, est une fonction extrêmement ingrate. Dans ce cas, le plugin Limit Login Atempts est tout simplement irremplaçable.

Le plugin, entre autres, fournit l'adresse IP du pirate et il est possible de calculer et de punir le pirate par tous les moyens disponibles.

Moyens de piratage supplémentaires

Cet article - comme je l'ai indiqué plus haut, n'est pas le seul concernant la sécurité des sites sur WordPress. Dans mon manuel précédent, mais plus détaillé, sur la sécurité du site - " " - j'ai également abordé le sujet des plugins conçus pour une fonction similaire. En particulier, environ deux autres plugins qui peuvent fonctionner conjointement. Ce sont les plugins d'attaque Login LockDown + Anti-XSS (probablement le bundle Limit Login Attempts + Anti-XSS attack fonctionnera de la même manière), dont Aleksey Kozymaev parle dans son tutoriel vidéo. J'ai décidé de poster la vidéo sur cette page.

Comme remède supplémentaire aux attaques sur le site, je recommande un plugin en cours de route, que je n'ai jamais mentionné dans mes messages. C'est appelé Bloquer les mauvaises requêtes (BBQ); ce plugin protège automatiquement le site des demandes d'URL malveillantes. Installation - via une recherche dans le panneau d'administration, aucun paramètre n'est requis.

(Visité 43 fois, 1 visites aujourd'hui)

Le plugin Limit login Attempts WP est l'un des plugins les plus essentiels car il protège votre site Web contre les attaques par force brute.

L'essence de cette technique est que l'attaquant essaie d'accéder au panneau d'administration en sélectionnant une paire identifiant-mot de passe.

Tout le monde a probablement déjà rencontré l'avertissement : « Il vous reste trois tentatives », qui se produit lors de la connexion avec un mot de passe. C'est exactement ce que fait ce plugin.

Après l'avoir installé et activé, dans la console, dans la section des paramètres, une ligne avec le nom de ce module apparaîtra.

Après l'avoir parcouru, nous nous retrouverons sur la page des paramètres.

Les paramètres ici sont simples et en russe. L'image montre les paramètres par défaut. Voyons ce qui peut être changé ici.

Le premier champ contient le nombre de tentatives supplémentaires. J'en ai gardé 3.

Dans le second, la durée du premier isolement est fixée. Je pense que 20-30 minutes suffisent.

Le champ suivant définit le nombre d'isolements, après quoi le temps d'isolement sera augmenté à 24 heures ou plus, à votre discrétion.

J'en ai laissé 1, car qui, outre l'attaquant, se sera trompé trois fois, puis, au bout d'une demi-heure, encore trois fois. Vous devez être un sclérosé complet pour faire cela sans intention.

Nous laisserons la connexion au site comme "Connexion directe".

Gérer les cookies de connexion. "Oui" dans cette ligne est sélectionné si vous effectuez tout le travail sur le site dans un seul navigateur. Par exemple, j'utilise quatre navigateurs et j'ai donc choisi "Non".

Signaler l'isolement - il est préférable de cocher les deux cases, bien que le courrier semble inutile pour le moment, mais cela ne fera pas de mal non plus. À l'avenir, si vous continuez à vous intéresser à la programmation, ces adresses pourront être analysées.

Sur les paramètres de ce plugin Limiter les tentatives de connexion fini. Maintenant, si dans un jour ou deux vous revenez à la même page, vous pouvez voir l'image suivante dans la section des statistiques.

Cela signifie que quelqu'un a essayé d'accéder à votre zone d'administration à l'aide d'un script spécial, mais qu'il n'a pas réussi. Vous pouvez "Effacer le journal".

Plugins de sécurité dans ce fichier .


Tourner


Parfois, ATTEMPT_.HLP et d'autres erreurs système HLP peuvent être liées à des problèmes dans le registre de Windows. Plusieurs programmes peuvent utiliser le fichier ATTEMPT_.HLP, mais lorsque ces programmes sont supprimés ou modifiés, des entrées de registre HLP orphelines (non valides) sont parfois laissées de côté.

Fondamentalement, cela signifie que bien que le chemin d'accès réel au fichier ait été modifié, son ancien emplacement incorrect est toujours enregistré dans le registre Windows. Lorsque Windows essaie de rechercher ces références de fichiers non valides (emplacements de fichiers sur votre PC), une erreur ATTEMPT_.HLP peut se produire. De plus, l'infection par un logiciel malveillant peut avoir corrompu les entrées de registre associées à FreeBSD 2.2.1. Ainsi, ces entrées de registre HLP invalides doivent être réparées pour corriger la racine du problème.

Éditer manuellement le registre de Windows pour supprimer les clés ATTEMPT_.HLP invalides n'est pas recommandé, à moins que vous ne soyez un professionnel de services informatiques. Les erreurs commises lors de la modification du registre peuvent rendre votre PC inutilisable et causer des dommages irréparables à votre système d'exploitation. En fait, même une simple virgule au mauvais endroit peut empêcher votre ordinateur de démarrer !

En raison de ce risque, nous vous recommandons vivement d'utiliser un programme de nettoyage de registre fiable, tel que WinThruster (développé par Microsoft Gold Certified Partner) pour analyser et réparer tout problème de registre lié à ATTEMPT_.HLP. L'utilisation d'un nettoyeur de registre automatise le processus de recherche des entrées de registre non valides, des références de fichiers manquantes (comme celle qui cause votre erreur ATTEMPT_.HLP) et des liens rompus dans le registre. Une copie de sauvegarde est automatiquement créée avant chaque analyse, vous permettant d'annuler toute modification en un seul clic et vous protégeant d'éventuels dommages à votre ordinateur. La meilleure partie est que la correction des erreurs de registre peut considérablement améliorer la vitesse et les performances du système.


Avertissement:À moins que vous ne soyez un utilisateur avancé de PC, nous vous déconseillons de modifier manuellement le registre Windows. Une utilisation incorrecte de l'Éditeur du Registre peut entraîner de graves problèmes et vous obliger à réinstaller Windows. Nous ne garantissons pas que les problèmes résultant d'une mauvaise utilisation de l'Éditeur du Registre puissent être résolus. Vous utilisez l'Éditeur du Registre à vos risques et périls.

Pour réparer manuellement votre registre Windows, vous devez d'abord créer une sauvegarde en exportant une partie du registre associée à ATTEMPT_.HLP (p ex. FreeBSD 2.2.1) :

  1. Cliquez sur le bouton Commencer.
  2. Entrer " commande"V barre de recherche... N'APPUYEZ PAS ENCORE ENTRER!
  3. Tenir les clés CTRL-Maj sur le clavier, appuyez sur ENTRER.
  4. Une boîte de dialogue d'accès s'affiche.
  5. Cliquez sur Oui.
  6. La boîte noire s'ouvre avec un curseur clignotant.
  7. Entrer " regedit" et appuyez sur ENTRER.
  8. Dans l'Éditeur du registre, sélectionnez la clé associée à ATTEMPT_.HLP que vous voulez sauvegarder (p ex. FreeBSD 2.2.1).
  9. au menu Déposer sélectionner Exporter.
  10. Listé Enregistrer dans sélectionnez le dossier dans lequel vous souhaitez enregistrer la sauvegarde de la clé FreeBSD 2.2.1.
  11. Dans le champ Nom de fichier entrez un nom pour le fichier de sauvegarde, tel que "Sauvegarde FreeBSD 2.2.1".
  12. Assurez-vous que le champ Gamme d'exportation valeur sélectionnée Branche sélectionnée.
  13. Cliquez sur Sauvegarder.
  14. Le fichier sera enregistré avec extension .reg.
  15. Vous avez maintenant une copie de votre entrée de registre associée à ATTEMPT_.HLP.

Les prochaines étapes de modification manuelle du registre ne seront pas couvertes dans cet article, car elles risquent d'endommager votre système. Si vous souhaitez plus d'informations sur la modification manuelle du registre, veuillez consulter les liens ci-dessous.



Avoir des questions?

Signaler une faute de frappe

Texte à envoyer à nos rédacteurs :