Mikä on ATTEMPT_.HLP ja kuinka se korjataan? Vaadittu "tag"-parametri puuttuu. PHP Muita hakkeroinnin estotyökaluja

Saan tämän virheilmoituksen. Vaadittu parametri "tag" puuttuu Android-leivänpaahtimesta, auttakaa, en löydä virhettä alta. Minulla on yllä oleva Android-käyttäjäkoodi ja php-palvelinkoodi. Käytän volley-kirjastoa http-pyyntöihin.

StringRequest strReq = new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener () ( @Override public void onResponse(String response) ( Log.d(TAG, "Rekisteröi vastaus: " + vastaus.toString()); hideDialog(); try ( JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); if (!error) ( // Käyttäjä tallennettu onnistuneesti MySQL:ään // Tallenna nyt käyttäjä sqlite-muotoon String uid = jObj.getString("uid"); JSONObject user = jObj.getJSONObject(" user"); Merkkijonon nimi = user.getString("nimi"); Merkkijono email = user.getString("email"); Merkkijono Created_at = user .getString("created_at"); // Lisätään riviä käyttäjätaulukkoon db.addUser (nimi, sähköpostiosoite, uid, luotu_at); // Käynnistä kirjautumistoiminto Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); startActivity(intent); finish(); ) else ( // Rekisteröinnissa tapahtui virhe. Hanki virhe // viesti Merkkijono errorMsg = jObj.getString("error_msg"); Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show(); ) ) catch (JSONPoikkeus e) ( e.printStackTrace(); ) ) ), new Response.ErrorListener() ( @Override public void onErrorResponse(VolleyError error) ( Log.e(TAG, "Rekisteröintivirhe:" + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); hideDialog(); ) )) ( @Ohita suojattu kartta getParams() ( // Paramien lähettäminen url-kartan rekisteröimiseksi params = uusi HashMap (); params.put("tunniste", "rekisteröi"); params.put("nimi", nimi); params.put("sähköposti", sähköposti); params.put("salasana", salasana); palautusparametrit; ) @Ohita julkinen kartta getHeaders() heittää AuthFailureError ( HashMap otsikot = uusi HashMap (); headers.put("Sisältötyyppi", "sovellus/json; charset=utf-8"); palauttaa otsikot; ) ); // Pyynnön lisääminen pyyntöjonoon AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

AppcontrollerClass täällä

Julkinen luokka AppController laajentaa sovellusta ( julkinen staattinen lopullinen merkkijono TAG = AppController.class.getSimpleName(); yksityinen RequestQueue mRequestQueue; yksityinen staattinen AppController mInstance; @Override public void onCreate() ( super.onCreate(); mInstance = this; ) public static synkronoitu AppController getInstance() ( return mInstance; ) public RequestQueue getRequestQueue() ( if (mRequestQueue == null) ( mRequestQueue = Volley.newRequestQueue(getApplicationContext()); ) return mRequestQ)u req, merkkijonotunniste) ( req.setTag(TextUtils.isEmpty(tag) ? TAG: tag); getRequestQueue().add(req); ) public void addToRequestQueue(Pyyntö req) ( req.setTag(TAG); getRequestQueue().add(req); ) public void cancelPendingRequests(Object tag) ( if (mRequestQueue != null) ( mRequestQueue.cancelAll(tag); ) ) )

tämä on Android-lehti

08-07 14:35:36.552 19120-20088/com.example.panos.chatsmartapp D/Volley﹕ BasicNetwork.logSlowRequests: HTTP-vastaus for 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﹕ Rekisteröidy Response: ("error":true,"error_msg":"Pakollinen parametri "tag" puuttuu!" ) 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Toast﹕ checkMirrorLinkEnabled palauttaa: false 08-07 14:35:36.702 19120-19120. ﹕ näyttäminen sallittu 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Volley﹕ Request.finish: 4253 ms: http://192.168.1.3/android_01 NOR1715AL5/01-4-7M5M :35:36.712 19120-19120/com.example.panos.chatsmartapp E/ViewRootImpl﹕ sendUserActionEvent() mView == null

tämä on php koodi

$tag, "error" => EPÄTOSI); // tarkista tunnisteen tyyppi if ($tag == "login") ( // Pyynnön tyyppi on check Login $sähköposti = $_POST["sähköposti"]; $salasana = $_POST["salasana"]; // tarkista käyttäjä $user = $db->getUserByEmailAndPassword($sähköposti, $salasana); if ($user != false) ( // käyttäjä löysi $response["error"] = EPÄTOSI; $response["uid"] = $käyttäjä ["ainutlaatuinen_tunnus"]; $response["käyttäjä"]["nimi"] = $käyttäjä["nimi"]; $response["käyttäjä"]["sähköposti"] = $käyttäjä["sähköposti"]; $response ["user"]["created_at"] = $user["created_at"]; $response["user"]["updated_at"] = $user["updated_at"]; echo json_encode($response); ) else ( // käyttäjää ei löydy // echo json virheellä = 1 $response["error"] = TOSI; $response["error_msg"] = "Väärä sähköpostiosoite tai salasana!"; echo json_encode($response); ) ) muuten jos ($tag == "rekisteröidy") ( // Pyynnön tyyppi on Rekisteröi uusi käyttäjä $name = $_POST["nimi"]; $sähköposti = $_POST["sähköposti"]; $salasana = $_POST["salasana"] ; // tarkista onko käyttäjä jo olemassa, jos ($db->isUserExisted($email)) ( // käyttäjä on jo olemassa - virhevastaus $response["error"] = TOSI; $response["error_msg"] = "Käyttäjä oli jo olemassa"; echo json_encode($response); ) else ( // myymälän käyttäjä $user = $db->storeUser($nimi, $sähköposti, $salasana); if ($user) ( // käyttäjä tallennettu onnistuneesti $response["virhe"] = EPÄTOSI; $response[ "uid"] = $käyttäjä["yksilöllinen_tunnus"]; $vastaus["käyttäjä"]["nimi"] = $käyttäjä["nimi"]; $response["käyttäjä"]["sähköposti"] = $käyttäjä[ "email"]; $response["käyttäjä"]["created_at"] = $user["created_at"]; $response["käyttäjä"]["päivitetty_at"] = $käyttäjä["päivitetty_at"]; echo json_encode( $response); ) else ( // käyttäjä ei pystynyt tallentamaan $response["error"] = TOSI; $response["error_msg"] = "Rekisteröinnissa tapahtui virhe"; echo json_encode($response); ) ) ) else ( // käyttäjä ei onnistunut tallentamaan $response["error"] = TOSI; $response["error_msg"] = "Ei tunne "tunnisteen" arvoa. Sen pitäisi olla joko "login" tai "register""; echo json_encode($response) ; ) ) else ( $response["error"] = TOSI; $response["error_msg"] = "Pakollinen parametri "tag" puuttuu!"; echo json_encode($response); ) ?>

Myabe Minulla on ongelma utf8-merkkijonon kanssa, joka käyttää koodia json_encode/json_decode. Minä en tiedä...


Eräänä päivänä katsoin lokiin /var/log/messages palvelimella, jossa on FreeBSD. Loki osoittautui lähes kokonaan tukossa seuraavilla merkinnöillä: ydin: Yhteysyritys UDP 127.0.0.1:10441 ytimestä 127.0.0.1:53: Yhteysyritys UDP 127.0.0.1:10441 ytimestä 127.0.0.1:53. Yhteysyritys UDP 127.0 .0.1:10445 ytimestä 127.0.0.1:53: Yhteysyritys UDP 127.0.1:10445 ytimestä 127.0.0.1:53: Yhteysyritys UDP 192.0.32.8 alkaen 192.0.32.1.3:4:8 .3:4:8 nel : Yhteysyritys UDP 127.0.0.1:10468 ytimestä 127.0.0.1:53: Yhteysyritys UDP 127.0.1:10468 ytimestä 127.0.0.1:53: Yhteysyritys UDP 127.0.0.1:10468 alkaen .3:10468 alkaen .3:10468. ydin: Yhteysyritys UDP 127.0.0.1:10469 osoitteesta 127.0.0.1:53 ydin: Yhteysyritys UDP 127.0.0.1:10470 osoitteesta 127.0.0.1:53

Mitä se tarkoittaisi?

Yandex viittasi aiheeseen "Sidoituksen käsittämätön käyttäytyminen"
Kysymykseeni on jo vastattu siellä:
Yhteysyritys UDP 127.0.0.1:10445 osoitteesta 127.0.0.1:53 Tämä rivi tarkoittaa: Socketista 127.0.0.1:53 he yrittivät lähettää pyynnön UPD:n kautta liitäntään 127.0.0.1:10445, mutta kukaan ei kuuntele porttia 10445 osoitteesta 127.0.0.1 . Yhteys epäonnistui. Katsotaan kuka roikkuu portissa 53? Etuoikeutettu portti (<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 *:*

Tämä on BIND DNS -palvelin.

Miksi hän haluaa muodostaa yhteyden olemattomaan pistorasiaan? Oikea vastaus on annettu samassa aiheessa: Tietty ohjelma lähettää BIND:lle pyynnön ratkaista verkkotunnus. BIND vastaa niin kauan, että pyytävä ohjelma lakkaa odottamasta vastausta. bind lähettää lopulta vastauksen, mutta kukaan ei odota sitä. Ydin kirjaa epäonnistuneen yhteyden lokiin.

Millainen ohjelma tekee niin paljon pitkiä DNS-kyselyjä?

Miksei hän odota vastausta?

Ohjelma löytyi nopeasti # sockstat | grep -w 53 ei kukaan roskapostin lähettäjä 9801 11 udp4 127.0.0.1:60037 127.0.0.1:53 ei kukaan roskapostin lähettäjä 9801 12 udp4 127.0.0.1:60038 127.0.0.1:538

Sendmail-sähköpostipalvelin roskaposti-/virustorjuntasuodattimilla toimii yhdessä koneessa, jossa on DNS. spamilter on vain roskapostin suodatin.

Sähköposti (etenkin nykyaikaisten kellojen ja pillien, kuten DKIM:n) kanssa on tiiviisti sidottu DNS:ään.

Siksi en ollut yllättynyt sellaisesta toiminnasta.

Sendmail-lokeista löytyi nopeasti esimerkki pitkästä DNS-pyynnöstä - yritys ratkaista osoite rcom-ne.com

# dig +trace rcom-ne.com ;<<>>DiG<<>> +trace rcom-ne.com ;; yleiset asetukset: 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. ;; Vastaanotettu 244 tavua kohteesta 127.0.0.1#53(127.0.0.1) 0 ms comissa. 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 IN NS j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS 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 IN NS h.gtld-servers.net. ;; Vastaanotettu 501 tavua osoitteesta 192.58.128.30#53(j.root-servers.net) 52 ms:ssa rcom-ne.com. 172800 IN NS ns1.rcom-ne.com. rcom-ne.com. 172800 IN NS ns2.rcom-ne.com. ;; Vastaanotettu 97 tavua osoitteesta 192.52.178.30#53(k.gtld-servers.net) 55 ms:ssa ;; yhteyden aikakatkaisu; palvelimiin ei saada yhteyttä Pyyntö epäonnistuu aikakatkaisun vuoksi.

Helvetin roskapostittajat, he kirjoittavat osoitteita, ja sinä tarkistat ne.

Niin. Mitään pahaa ei tapahdu. Mutta sinun on tyhjennettävä näiden viestien loki, muuten ne tukkivat todella tärkeitä tietoja.

Oireiden hoito

Radikaalinen tapa on poistaa epäonnistuneiden yhteyksien lävistys kokonaan käytöstä. Kautta sysctl:# sysctl -d net.inet.tcp.log_in_vain net.inet.udp.log_in_vain net.inet.tcp.log_in_vain: Kirjaa kaikki saapuvat TCP-yhteydet net.inet.udp.log_in_vain: Kirjaa kaikki saapuvat UDP-paketit # sysctl net.inet. udp.log_in_vain=0 net.inet.udp.log_in_vain: 1 -> 0

Mutta tässä heitetään vauva ulos kylpyveden mukana. Haluan tietää, kuka murtautuu suljettuihin satamiini.

Suodattimen liittäminen syslogiin on vaikeaa, se lisää lokijärjestelmän epäonnistumisen todennäköisyyttä ja se on yksinkertaisesti rumaa. Ehkä voit poistaa lokikirjauksen käytöstä silmukkarajapinnassa, onko se erityisen kiinnostavaa?

En löytänyt tätä Googlesta, katsotaanpa lähteitä.

# fgrep -rIn "Yhteysyritys UDP:hen" /usr/src/ /usr/src/sys/netinet/udp_usrreq.c:406: "Yhteysyritys UDP:hen %s:%d kohteesta %s:%d\n", /usr/src/sys/netinet6/udp6_usrreq.c:341: "Yhdistysyritys UDP:hen [%s]:%d kohteesta [%s]:%d\n", # vähemmän +718 /usr/src/sys/ netinet/tcp_input.c kytkin (log_in_vain) ( tapaus 1: if ((thflags & TH_SYN) == 0) tauko; /* FALLTHROUGH */ tapaus 2: log(LOG_INFO, "Yhteysyritys TCP:hen %s:%d " "%s:%d liput:0x%02x\n", dbuf, ntohs(th->th_dport), sbuf , ntohs(th->th_sport), thflags); tauko; oletus: break; )

Näyttää siltä, ​​​​että on vain yksi kytkin ja kaikille liitäntöille kerralla - log_in_vain.

Oireita ei voi poistaa, hoidetaan sairautta.

Oppiva ratkaisija

Sanoma ilmestyy, kun ohjelma ei odota vastausta DNS:ltä. On välttämätöntä, että joko DNS vastaa nopeammin tai ohjelma odottaa pidempään.

Miten saan ohjelman odottamaan pidempään?

dns-kyselyissä käytetään libc-funktioita - res_query, res_search, res_mkquery, res_send...

Muut toiminnot, kuten gethostbyname, ovat korkeammalla tasolla ja käyttävät viime kädessä näitä "primitiiviä".

Res_query-funktioiden toiminnan määrittää /etc/resolv.conf-tiedosto (tämän tiedoston nimi ja polku on koodattu lähdekoodiin).

Meillä on kaksi parametria Aikalisä Ja yrityksiä.

Aikalisä- DNS-palvelimen vastauksen odotusaika.

yrityksiä- DNS-palvelimelle lähetettyjen toistuvien pyyntöjen määrä, jos ensimmäiseen pyyntöön ei vastattu.

Välittömästi ensimmäisen pyynnön odottamisen jälkeen lähetetään toinen pyyntö ja niin edelleen.

Esimerkki resolv.conf

Nimipalvelin 8.8.8.8 nimipalvelin 8.8.4.4 vaihtoehdot aikakatkaisu: 7 yritystä:1 Oletusarvot ja raja-arvot löytyvät /usr/include/resolv.h/* * Ratkaisijan tynkän yleiset määritelmät ja muuttujat. */ ...... #define RES_TIMEOUT 5 /* min. sekuntia uudelleenyritysten välillä */ #define RES_MAXRETRANS 30 /* vain for resolv.conf/RES_OPTIONS */ #define RES_MAXRETRY 5 /* vain for resolv.conf/RES_OPTIONS */ #define RES_DFLRETRY 2 /* Oletus #/tries. */ #define RES_MAXTIME 65535 /* Ääretön millisekunteina. */......

Oletuksena meillä on 5 sekunnin odotus ja 2 uudelleenyritystä. Tämä koskee jokaista palvelinta, jota yritämme tavoittaa.

Yllä olevassa esimerkissä vastausta odottava enimmäisaika (jos molemmat DNS-palvelimet epäonnistuvat) on 2 (palvelimet) x 7 (aikakatkaisu) x (1+1 (yritykset)) = 28 sekuntia.

Konfigni oli yksinkertaisempi

# cat /etc/resolv.conf domain myserver nameserver 127.0.0.1 Osoittautui 1x3x5 = 15. Tarkistetaan.

Yksinkertaisin apuohjelma - isäntä käyttää sisäänrakennettuja asetuksiaan, joten katsotaanpa edistyneitä kaivauksia.

# aika kaivaa rcom-ne.com ;<<>>DiG<<>> rcom-ne.com ;; yleiset valinnat: printcmd ;; yhteyden aikakatkaisu; mitään palvelimia ei tavoitettu oikea 0m15.009s käyttäjä 0m0.000s sys 0m0.006s Tarkistetaan hypoteesimme viestin syystä lokissa.

Ajetaan yhdessä konsolissa

# (päivämäärä;aika dig rcom-ne.com;date) & perjantai, 11. helmikuuta 2011 16:46:49 (MSK) ;<<>>DiG<<>> rcom-ne.com ;; yleiset valinnat: printcmd ;; yhteyden aikakatkaisu; mitään palvelimia ei saatu todellista 0m15.009s käyttäjää 0m0.000s sys 0m0.006s perjantai 11. helmikuuta 2011 16:47:04 (MSK) Ja toisessa rinnakkain katsotaan mitä porttia käytetään kaivaa#sockstat | grep dig root dig 71322 20 udp4 *:52170 *:* # grep 52170 /var/log/messages 4. maaliskuuta 16:47:20 myserver-ydin: Yhdistysyritys UDP 127.0.0.1:52170 osoitteesta 127.53.0.

dig odottaa vastausta 15 sekuntia ja vastaus tulee (16:47:20 - 16:46:49 = 31 ~ 30) 30 sekunnin kuluttua.

Pidennetään nyt vasteaikaa 30 sekuntiin tai jopa enemmän.

Kaivausaika on aikakatkaisu tiedostosta resolv.conf

#Päivämäärä; time dig +time=12 rcom-ne.com;date perjantai, 4. maaliskuuta 2011 17:07:46 (MSK) ;<<>>DiG<<>> +aika=12 rcom-ne.com ;; yleiset valinnat: printcmd ;; Sain vastauksen: ;; ->> OTSIKKO<<- 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)

dig sai vastauksen 30 sekuntia, vaikka hän olisi voinut odottaa niin kauan kuin 1x3x12=36.

Ilmeisesti 30 sekuntia on aikakatkaisu itse BIND:lle. Muistetaan tämä.

tila: SERVFAIL tarkoittaa, että DNS-palvelin ei voinut käsitellä pyyntöä DNS-palvelimen ongelmien vuoksi (RFC 1035, RFC 2929).

"No, en tehnyt sitä, en tehnyt sitä", palvelin kertoo meille, vaikka tiedämme, että hän ei yksinkertaisesti odottanut vastausta rcom-ne.com-verkkotunnuksen dns-palvelimilta.

Henkilökohtainen lähestymistapa

Resolv.conf:n asetukset koskevat kaikkia ohjelmia.

En halua pidentää pyyntöjen enimmäisaikaa 15 sekunnista 30 sekuntiin (2 kertaa) kaikille palvelimella oleville ohjelmille.

Ehkä voit säätää ratkaisun aikakatkaisuja yksittäisille ohjelmille?

katso confTO_RESOLVER_RETRANS ja confTO_RESOLVER_RETRY.

Mutta meidän on ensin määritettävä spamilter. Mutta hänellä ei ole sellaisia ​​​​asetuksia. Resolv.conf:n muokkaamisella ei myöskään näyttänyt olevan vaikutusta siihen.

Yritin muokata lähdekoodia, mutta en saanut aikaan tuloksia.

Huomautus: Ongelman ratkaisemisen jälkeen, kokeilemalla resolv.conf- ja tcpdump-tiedostoja, huomasin, että resolv.conf vaikutti varmasti spamilteriin. Vain se lähetti ajoittain 2 pyyntöä samanaikaisesti sen sijaan, että se olisi lähettänyt ne aikakatkaisusekuntien jälkeen. Ilmeisesti tämä on häiriö roskapostin monisäikeisessä arkkitehtuurissa, vaikka itse ratkaiseja kuvataan ihmisessä säikeen turvalliseksi.

Arvostettu 30 sekuntia

Minun piti miettiä, kuinka korjata BIND-vasteaika. Löysin samanlaisen kysymyksen Internetistä, mutta ilman vastausta.

Turhautuneena etsin arvokasta numeroa 30 lähdekoodista ja olin onnekas.

Muutoshistoria kertoi minulle: /usr/src/contrib/bind9/CHANGES .................... --- 9.2.3rc1 julkaistiin --- .... ................. 1122. Resoluution aikakatkaisu pienennetty 90:stä 30 sekuntiin. ................... --- 9.2.2 julkaistu --- ................... . .

Kuvaus näyttää siltä, ​​mitä etsin.

Latasin molemmat mainitut BIND-versiot, tein eron ja katselin sitä pitkään kunnes löysin sen.

-/* $Id: solver.c,v 1.218.2.12.4.4 2003/02/18 03:32:01 marka Exp $ */ +/* $Id: solver.c,v 1.218.2.18 2003/07/18 04:35:51 marka Exp $ */ @@ -2234.7 +2229.7 @@ /* * Laske vanhenemisaika koko haulle. */ - isc_interval_set(&interval, 90, 0); /* XXXRTH vakio */ + isc_interval_set(&interval, 30, 0); /* XXXRTH vakio */ iresult = isc_time_nowplusinterval(&fctx->expiers, &interval); if (iresult != ISC_R_SUCCESS) ( ODOTTAMATON_VIRHE(__FILE__, __LINE__,

Yritin pienentää isc_interval_set-funktion parametria arvoon ja hurraa - vastaukset BIND:ltä alkoivat saapua korkeintaan 20 sekunnissa.

# ee /usr/src/contrib/bind9/lib/dns/resolver.c # cd /usr/src/lib/bind # tee obj && tee riippuvaiseksi && tee && tee asennus # cd /usr/src/usr.sbin/ named # tee obj && tee riippuvaiseksi && tee && tee asennus # /etc/rc.d/named restart

Mutta tuotannossa en editoinut mitään, kuka tietää mitä ongelmia tämä voisi aiheuttaa. Ei ole turhaa, että kehittäjät ovat asettaneet tämän parametrin niin tiukasti.

Uudestaan

Joten käytyäni paljon aikaa en vieläkään pystynyt ratkaisemaan ongelmaa.

Lopuksi päätin tarkastella, millä erityisillä pyynnöillä roskapostin lähettäjä pommittaa DNS:ää ja minkä tyyppisten osoitteiden ratkaiseminen BINDilla kestää kauan?

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

Avataan dns.pcap Wiresharkissa ja katso epäonnistuneita pyyntöjä.

Kävi ilmi, että olin olettamuksissani hyvin kaukana totuudesta.

90 % vastaamattomista pyynnöistä kohdistui verkkotunnuksiin list.dsbl.org multihop.dsbl.org unconfirmed.dsbl.org

Vakiokysely A 146.152.225.99.list.dsbl.org

DNS-kyselyiden avulla roskapostin lähettäjä etsi sähköpostipalvelimien osoitteita roskapostittajien tietokannoista. Tämä on DNSBL-tekniikkaa.

Menin osoitteeseen dsbl.org ja huomasin, että se oli ollut pois käytöstä pitkään.

Selaillut asetuksia, löysin nämä osoitteet tiedostosta /var/db/spamilter/db.rdnsbl ja kommentoin niitä.

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

Epäonnistuneiden pyyntöjen lumivyöry on kadonnut. Ongelma ratkaistu.

Oppia virheistä

Yhtäältä olin vakavasti sekaisin, kun sen sijaan, että olisin tutkinut ongelmaa perusteellisesti, katsonut erilaisia ​​lokeja, analysoinut liikennettä, tein heti oletuksia ja niiden perusteella ryhdyin etsimään ratkaisuja. Tämän seurauksena vietin paljon aikaa ja tein paljon turhaa tutkimusta. Toisaalta opin paljon mielenkiintoista Resolverin työstä.Ja DNS on ensimmäinen paikka, joka pitää tarkistaa, kun ohjelmien toiminnassa ilmenee erilaisia ​​viiveitä.Etu on siis silti.

Epätäydellisten DNS-yhteyksien lumivyöryn katoamisen jälkeen loki pysyi tukossa yhteyksistä porttiin 6881.

Ydin: Yhteysyritys UDP:hen 192.0.32.10:6881 osoitteesta 188.85.194.61:24333

Maailmanlaajuinen tietokanta ehdotti, että UDP 6881 on todennäköisesti torrent-asiakas, joka yrittää muodostaa DHT-yhteyden. Hyvin todennäköinen versio on, että palvelimella oli pitkään käynnissä torrent-asiakas, ja vaikka se on jo pitkään poistettu, sen muisto ei ehkä koskaan kuole muiden tovereiden sydämiin.

Meidän täytyy siepata porttiin 6881 saapuvat paketit. Käytän Packet Filter pf(4) palomuurina/NAT:na. Välittömästi oletusestosäännön jälkeen lisäämme säännön portin 6881 saapuvien päivitysyhteyksien estämiseksi ja kirjaamiseksi. Parametri nopea aiheuttaa muiden sääntöjen käsittelyn pysähtymisen, jos paketti vastaa nykyistä.

# ee /etc/pf.conf esto lokissa nopeasti em0 proto udp:ssä mistä tahansa portista 192.0.32.10 porttiin 6881 # pfctl -oonvf /etc/pf.conf # pfctl -oovf /etc/pf.conf

Muutaman minuutin kuluessa kirjoitamme tulokset Wiresharkin tiedostoon.

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

Avataan tiedosto Wiresharkissa ja katsotaan. Valitettavasti ohjelma ei vielä tue DHT:ta. Siksi kaikki mitä voit tehdä, on katsoa paketista allekirjoitusta.

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

Paketin ensimmäisten tavujen etsiminen johtaa keskusteluun Bittorrentin DHT-laajennuksesta. Tämä tarkoittaa, että nämä ovat todellakin kaikuja torrent-asiakkaan pitkäaikaisesta toiminnasta palvelimella.

Kaikki on hyvin. Sinun tarvitsee vain tyhjentää tällaisten merkintöjen loki.

Voit tehdä tämän käskemällä pf:tä pudottamaan hiljaa porttiin 6881 saapuvat paketit lisäämällä parametrin pudota ja poistamalla Hirsi.

Tämä lyhyt viesti käsittelee Limit Login Attempts -laajennusta, jonka avulla voit suojata WordPress-blogien hallintapaneeleja. Laajennus, jonka avulla voit rajoittaa blogihakkereiden yritysten määrää. Hakkerit yrittävät päästä hallintapaneeliin ja ottaa blogin haltuunsa. Hakkerointia vastaan ​​on olemassa monia menetelmiä ja laajennuksia, ja jotkut niistä ovat erittäin vakavia. Mutta nuori blogi, jolla on vähän liikennettä ja auktoriteettia, ei yleensä ole vaarassa. Toistaiseksi. Mutta Limit Login Attempts -asetuksen asettaminen ei ole edes mahdollista kovin "hienolle" blogille, jota pidän tällä hetkellä vaatimattomana verkkoresursseeni.

Yllätyt, mutta kun asensin tämän laajennuksen, olin yllättynyt huomatessani, että admin-niminen hyökkääjä yritti tunkeutua blogiini, ja epäonnistuneiden yritysten jälkeen hänet estettiin laajennuksen käyttö 24 tunniksi. Ja sen asennuksesta on kulunut vain muutama tunti!

Alla on kuvakaappaus osasta kirjettä, jonka sain eilen sähköpostiini:

En voinut olla muistamatta, kuinka löysin ja korjasin "reiän" blogiaiheeseen. Mitä jos jätän kaiken näkyväksi tai valitsisin järjestelmänvalvojan kirjautumistunnuksen ja hyökkääjä arvasi salasanan?

Toivon, että olen vakuuttanut teidät, hyvät verkkovastaavat, että tällainen hyvin yksinkertainen, mutta kevyt laajennus ei häiritse blogianne.

Lyhyesti Limit Login Attempts -laajennuksen asentamisesta ja määrittämisestä

Kaikki on ehdottoman yksinkertaista: etsi laajennus etsimällä hallintapaneelista vastaava nimi, asenna ja aktivoi.

Valitse sitten Asetukset-kohdasta laajennus ja siirry asetuksiin. Periaatteessa sinun ei tarvitse muuttaa täällä mitään, mutta suosittelen valitsemaan valintaruudun, joka sallii jonkin Limit Login Attempts -toiminnon lähettää sähköpostiisi viestejä hakkereiden tunkeutumisyrityksistä. Tämän laajennusominaisuuden avulla voit saada nopean yhteenvedon hakkerointiyrityksistä.

Kuinka Limit Login Attempts -laajennus toimii

perustuu pääsyn rajoittamiseen sivuston hallintapaneeliin kirjautumistunnusta ja salasanaa syötettäessä. Toisin sanoen se luo rajan valtuutusyritysten lukumäärälle, mukaan lukien evästetuki, Internetin käyttäjän IP-osoitteen perusteella. Sivuston ylläpitäjän kirjautuminen ulos paneelista joka kerta ja evästeiden jatkuva poistaminen on erittäin kiittämätöntä. Tässä tapauksessa Limit Login Attempts -laajennus on yksinkertaisesti korvaamaton.

Plugin tarjoaa muun muassa hakkerin IP-osoitteen ja sitä voidaan käyttää hakkerin tunnistamiseen ja rankaisemiseen kaikin käytettävissä olevin keinoin.

Muita hakkeroinnin estäviä toimenpiteitä

Kuten edellä totesin, tämä artikkeli ei ole enää ainoa WordPress-sivustojen turvallisuudesta. Aiemmassa, mutta yksityiskohtaisemmassa verkkosivuston turvallisuutta käsittelevässä käsikirjassani - "", - kosketin myös aihetta vastaavaan toimintoon suunniteltujen laajennusten aiheeseen. Erityisesti noin kaksi muuta laajennusta, jotka voivat toimia yhdessä. Nämä ovat Login LockDown + Anti-XSS-hyökkäyslaajennukset (todennäköisesti Limit Login Attempts + Anti-XSS-hyökkäysyhdistelmä toimii samalla tavalla), joiden toiminnasta Aleksei Kozymaev puhuu video-opetusohjelmassaan. Päätin julkaista videon tälle sivulle.

Lisäkeinona sivustoon kohdistuvia hyökkäyksiä vastaan ​​suosittelen myös lisäosaa, jota en ole koskaan maininnut viesteissäni. Sitä kutsutaan Estä huonot kyselyt (BBQ); Tämä laajennus suojaa sivustoasi automaattisesti haitallisilta URL-pyynnöiltä. Asennus tapahtuu haun kautta hallintapaneelista, asetuksia ei vaadita.

(Vierailtu 43 kertaa, 1 käyntiä tänään)

WP-laajennus Limit login Attempts on yksi tarpeellisimmista laajennuksista, koska se suojaa sivustoa hakkeritekniikoilta, kuten brute-force-hyökkäyksiltä.

Tämän tekniikan ydin on, että hyökkääjä yrittää tunkeutua järjestelmänvalvojan alueelle arvaamalla kirjautumissalasana-parin.

Jokainen on luultavasti jo törmännyt varoitukseen: "Sinulla on kolme yritystä jäljellä", joka tulee näkyviin, kun kirjaudut sisään salasanalla. Juuri tätä tämä laajennus tekee.

Kun olet asentanut ja aktivoinut sen, konsolin parametriosiossa tulee näkyviin rivi tämän moduulin nimellä.

Sen seuraamisen jälkeen löydämme itsemme asetussivulta.

Asetukset ovat yksinkertaisia ​​ja venäjänkielisiä. Kuvassa näkyvät oletusasetukset. Katsotaan mitä tässä voidaan muuttaa.

Ensimmäinen kenttä määrittää lisäyritysten määrän. Säilytin 3.

Toisessa asetetaan ensimmäisen eristyksen kesto. Mielestäni 20-30 minuuttia on hyvä.

Seuraavassa kentässä määritetään eristysten lukumäärä, jonka jälkeen eristysaikaa nostetaan 24 tuntiin tai pidemmälle oman harkintasi mukaan.

Jätin yhden, koska kuka muu kuin hyökkääjä tekisi virheen kolme kertaa ja sitten puolen tunnin kuluttua vielä kolme kertaa. Sinun on oltava täydellinen sklerootti tehdäksesi jotain tällaista ilman tarkoitusta.

Jätetään yhteys sivustoon "suoraksi yhteydeksi".

Käsittele kirjautumisevästeet. "Kyllä" tällä rivillä on valittuna, jos teet kaikki työt sivustolla yhdellä selaimella. Käytän esimerkiksi neljää selainta, ja siksi valitsin "Ei".

Eristämisestä ilmoittaminen - on parempi valita molemmat ruudut, vaikka postista ei näytä olevan mitään hyötyä toistaiseksi, mutta se ei haittaa. Jatkossa, jos olet edelleen kiinnostunut ohjelmoinnista, nämä osoitteet voidaan analysoida.

Siinä se pluginin asetuksille Rajoita kirjautumisyrityksiä valmis. Jos nyt palaat samalle sivulle päivän tai kahden kuluttua, näet seuraavan kuvan tilastoosiossa.

Tämä tarkoittaa, että joku yritti kovasti päästä järjestelmänvalvoja-alueelle käyttämällä erityistä komentosarjaa, mutta epäonnistui. Voit "Tyhjennä loki".

Lisäosat turvallisuuden takaamiseksi tässä .


Vuoro


Joskus ATTEMPT_.HLP ja muut HLP -järjestelmävirheet voivat johtua Windowsin rekisteriongelmista. Useat ohjelmat voivat käyttää ATTEMPT_.HLP -tiedostoa, mutta kun kyseiset ohjelmat poistetaan tai niitä muutetaan, joskus "orpoja" (virheellisiä) HLP-rekisterimerkintöjä jää jälkeen.

Pohjimmiltaan tämä tarkoittaa, että vaikka tiedoston todellinen polku on saattanut muuttua, sen väärä aiempi sijainti tallennetaan edelleen Windowsin rekisteriin. Kun Windows yrittää etsiä näitä vääriä tiedostoviittauksia (tiedoston sijainti PC:llä), ATTEMPT_.HLP -virheitä saattaa tapahtua. Lisäksi haittaohjelmistot voivat vioittaa rekisteriä joka liittyy FreeBSD 2.2.1 -ohjelmistoon. Siksi nämä vioittuneet HLP-rekisterimerkinnät on korjattava, jotta ongelma voidaan korjata juurissa.

Windows-rekisterin muokkaaminen käsin virheellisten ATTEMPT_.HLP -osioiden poistamiseksi ei ole suositeltua, ellet ole tietokoneammattilainen. Rekisterin muokkaamisen yhteydessä tehdyt virheet voivat tehdä tietokoneestasi käyttökelvottoman ja aiheuttaa korjaamatonta vahinkoa käyttöjärjestelmällesi. Itse asiassa jopa yksi väärään paikkaan asetettu pilkku voi estää tietokonettasi käynnistymästä!

Tämä riskin takia suosittelemme luotettavan rekisterin puhdistusohjelmiston käyttöä, kuten WinThruster (Microsoft Gold Partnerin kehittämä), rekisterin skannaukseen ja ATTEMPT_.HLP-ongelmien korjaamiseen. Rekisterinpuhdistajan avulla voit automatisoida viallisten rekisteriarvojen, puuttuvien tiedostoviitteiden (kuten mikä aiheuttaa ATTEMPT_.HLP -virheen), ja rikkinäisten linkkien löytämisen rekisterissä. Ennen jokaista skannausta luodaan automaattisesti varmuuskopio, jonka avulla voit kumota muutokset yhdellä napsautuksella ja suojata tietokonettasi mahdollisilta vaurioilta. Parasta on, että rekisterivirheiden poistaminen voi parantaa järjestelmän nopeutta ja suorituskykyä merkittävästi.


Varoitus: Ellet ole kokenut tietokoneen käyttäjä, emme suosittele Windowsin rekisterin manuaalista muokkaamista. Rekisterieditorin virheellinen käyttö voi aiheuttaa vakavia ongelmia, jotka saattavat edellyttää Windowsin uudelleenasentamista. Emme takaa, että rekisterieditorin virheellisestä käytöstä aiheutuvat ongelmat voidaan korjata. Käytät Rekisterieditoria omalla vastuullasi.

Ennen kuin palautat Windowsin rekisterin manuaalisesti, sinun on luotava varmuuskopio viemällä ATTEMPT_.HLP:hen liittyvä rekisterin osa (esimerkiksi FreeBSD 2.2.1):

  1. Napsauta painiketta Alkaa.
  2. Tulla sisään " komento"V hakupalkki... ÄLÄ NAPSAUTA VIELÄ TULLA SISÄÄN!
  3. Kun pidät näppäimiä painettuna CTRL-Shift paina näppäimistöltäsi TULLA SISÄÄN.
  4. Näyttöön tulee valintaikkuna pääsyä varten.
  5. Klikkaus Joo.
  6. Musta laatikko avautuu vilkkuvalla kohdistimella.
  7. Tulla sisään " regedit" ja paina TULLA SISÄÄN.
  8. Valitse Rekisterieditorissa ATTEMPT_.HLP liittyvä avain (esimerkiksi FreeBSD 2.2.1), jonka haluat varmuuskopioida.
  9. valikossa Tiedosto valitse Viedä.
  10. Listalla Tallenna kohteeseen valitse kansio, johon haluat tallentaa FreeBSD 2.2.1 -avaimen varmuuskopion.
  11. Kentällä Tiedoston nimi Anna varmuuskopiotiedostolle nimi, esimerkiksi "FreeBSD 2.2.1 varmuuskopio".
  12. Varmista kenttä Vientialue arvo valittu Valittu haara.
  13. Klikkaus Tallentaa.
  14. Tiedosto tallennetaan .reg.
  15. Sinulla on nyt varmuuskopio ATTEMPT_.HLP liittyvästä rekisterikohdasta.

Seuraavia rekisterin manuaalisen muokkaamisen vaiheita ei kuvata tässä artikkelissa, koska ne voivat vahingoittaa järjestelmääsi. Jos haluat lisätietoja rekisterin manuaalisesta muokkaamisesta, tutustu alla oleviin linkkeihin.