Kas yra ATTEMPT_.HLP ir kaip ją ištaisyti? Trūksta būtino „tag“ parametro. PHP Papildomi kovos su įsilaužimu įrankiai

Gaunu šią klaidą. „Android“ skrudintuve trūksta būtino parametro „tag“, prašau padėti, toliau nerandu savo klaidos. Turiu aukščiau pateiktą Android vartotojo kodą ir php serverio kodą. Naudoju volley biblioteką http užklausoms.

StringRequest strReq = new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener () ( @Override public void onResponse(String response) ( Log.d(TAG, "Registruoti atsakymą: " + response.toString()); hideDialog(); try ( JSONObject jObj = new JSONObject(response); loginė klaida = jObj.getBoolean("klaida"); if (!error) ( // Vartotojas sėkmingai išsaugotas MySQL // Dabar išsaugokite vartotoją sqlite String uid = jObj.getString("uid"); JSONObject user = jObj.getJSONObject(" user"); Eilutės pavadinimas = user.getString("vardas"); String email = user.getString("email"); String create_at = user .getString("created_at"); // Įterpiama eilutė į vartotojų lentelę db.addUser (vardas, el. pašto adresas, sukurtas_at) // Paleisti prisijungimo veiklą Intent = new Intent(RegisterActivity.this, LoginActivity.class else ( // Registruojant įvyko klaida. Gauti klaidą // pranešimas String errorMsg); = jObj.getString("error_msg"); skrudinta programa ErrorListener() ( @Override public void onErrorResponse(VolleyError error) ( Log.e(TAG, "Registracijos klaida: " + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); hideDialog(); ) )) ( @Nepaisyti apsaugoto žemėlapio getParams() ( // Skelbiami parametrai, norint užregistruoti URL žemėlapį params = naujas HashMap (); params.put("žyma", "registras"); params.put("vardas", vardas); params.put("el. paštas", el. paštas); params.put("slaptažodis", slaptažodis); grąžinimo parametrai; ) @Nepaisyti viešo žemėlapio getHeaders() išmeta AuthFailureError (HashMap antraštės = naujas HashMap (); headers.put("Turinio tipas", "application/json; charset=utf-8"); grąžinti antraštes; ) ); // Užklausos įtraukimas į užklausų eilę AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

AppcontrollerClass čia

Viešoji klasė „AppController“ išplečia programą (vieša statinė galutinė eilutė TAG = AppController.class.getSimpleName(); privati ​​užklausų eilė mRequestQueue; privati ​​statinė AppController mInstance; @Override public void onCreate() ( super.onCreate(); mInstance = tai; ) public static sinchronizuotas AppController getInstance() ( return mInstance; ) public RequestQueue getRequestQueue() ( if (mRequestQueue == null) ( mRequestQueue = Volley.newRequestQueue(getApplicationContext()); ) return mRequestQue public req, eilutės žyma) ( req.setTag(TextUtils.isEmpty(tag) ? TAG: tag); getRequestQueue().add(req); ) viešas void addToRequestQueue(Request req) ( req.setTag(TAG); getRequestQueue().add(req); ) public void cancelPendingRequests(Object tag) ( if (mRequestQueue != null) ( mRequestQueue.cancelAll(tag); ) ) )

tai android žurnalas

08-07 14:35:36.552 19120-20088/com.example.panos.chatsmartapp D/Volley﹕ BasicNetwork.logSlowRequests: HTTP atsakymas užklausai=< 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﹕ Registruokis Atsakymas: ("error":true,"error_msg":"Trūksta būtino parametro "žyma"!" ) 08-07 14: 35: 36.702 19120-19120/com.example.panos.chatsmartapp D/TOAS ﹕ Leidžiama 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/ 0x35f917 normal 1 08-07 14 14 :35:36.712 19120-19120/com.example.panos.chatsmartapp E/ViewRootImpl﹕ sendUserActionEvent() mView == null

tai yra php kodas

$tag, "klaida" => FALSE); // patikrinkite žymos tipą if ($tag == "login") ( // Užklausos tipas yra check Prisijungimas $email = $_POST["el. paštas"]; $slaptažodis = $_POST["slaptažodis"]; // patikrinkite, ar nėra vartotojas $user = $db->getUserByEmailAndPassword($el.paštas, $slaptažodis) if ($user != false) ( // vartotojas rado $response["klaida"] = FALSE; $response["uid"] = $vartotojas); ["unikalus_id"]; $ats. user"]["created_at"] = $user["created_at"]; $response["user"]["updated_at"] = $user["updated_at"]; echo json_encode($response) else (); // vartotojas nerastas // echo json su klaida = 1 $response["error"] = TRUE ["error_msg"] = "Neteisingas el. paštas arba slaptažodis!" == "registruotis") ( // Užklausos tipas yra Užregistruoti naują vartotoją $name = $_POST["vardas"]; $el. paštas = $_POST["el. paštas"]; $slaptažodis = $_POST["slaptažodis"] ; // patikrinkite, ar vartotojas jau egzistuoja if ($db->isUserExisted($email)) ( // vartotojas jau egzistuoja - atsakymas į klaidą $response["error"] = TRUE; $response["error_msg"] = "Vartotojas jau egzistavo"; echo json_encode($atsakymas); ) else ( // parduotuvės vartotojas $user = $db->storeUser($vardas, $el.paštas, $slaptažodis); if ($user) ( // vartotojas sėkmingai išsaugotas $response["klaida"] = FALSE; $response[ "uid"] = $naudotojas["unikalus_id"]; $atsakymas["naudotojas"]["vardas"] = $vartotojas["vardas"] "el. paštas"]; $ats. ; ) else ( // vartotojui nepavyko išsaugoti $response["error"] = TRUE; $response["error_msg"] = "Registruojant įvyko klaida"; echo json_encode($response); ) ) ) else ( // user nepavyko išsaugoti $response["error"] = TRUE else ( $response["error"] = TRUE; $response["error_msg"] = "Trūksta būtino parametro "tag"!"; echo json_encode($response); ) ?>

Myabe Turiu problemų dėl utf8 eilutės naudojant json_encode/json_decode. Nežinau...


Vieną dieną pažvelgiau į žurnalą /var/log/messages serveryje, kuriame veikia FreeBSD. Žurnalas buvo beveik visiškai užkimštas šiais įrašais: branduolys: bandymas prisijungti prie UDP 127.0.0.1:10441 iš 127.0.0.1:53 branduolio: Bandymas prisijungti prie UDP 127.0.0.1:10441 iš 127.0.0.1:53 branduolio Bandymas prisijungti prie UDP 127.0 10445 nuo 127.0.0.1:53 Branduolys: Bandymas prisijungti prie UDP 127.0.1:10445 NUO 127.0.1:53 Branduolys: Bandymas prisijungti prie UDP 192.0.32.10 iki Kernel:0.32.10. 1 :10468 iš 127.0.0.1:53 branduolio: Bandymas prisijungti prie UDP 127.0.0.1:10468 nuo 127.0.0.1:53 branduolio: Bandymas prisijungti prie UDP 127.0.0.1:10469 nuo 127.0.0.1:253 branduolio UDP.0.1:5 0.1:10469 iš 127.0.0.1:53 branduolio: bandymas prisijungti prie UDP 127.0.0.1:10470 nuo 127.0.0.1:53

Ką tai reikštų?

„Yandex“ atkreipė dėmesį į temą „Nesuprantamas įrišimo elgesys“
Ten jau buvo atsakyta į mano klausimą:
Bandymas prisijungti prie UDP 127.0.0.1:10445 nuo 127.0.0.1:53 Ši eilutė verčiama taip: Iš lizdo 127.0.0.1:53 jie bandė nusiųsti užklausą per UPD į lizdą 127.0.0.1:10445, bet niekas neklauso prievado 127.0.0.1 adreso 10445 . Ryšys nepavyko. Pažiūrėkime, kas kabo 53 uoste? Privilegijuotas uostas (<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 *:*

Tai BIND DNS serveris.

Kodėl jis nori prisijungti prie neegzistuojančio lizdo? Teisingas atsakymas pateikiamas toje pačioje temoje: Tam tikra programa siunčia BIND užklausą išspręsti domeno pavadinimą. BIND atsakymas užtrunka tiek ilgai, kad užklausanti programa nustoja laukti atsakymo. bind pagaliau atsiunčia atsakymą, bet niekas jo nelaukia. Branduolys registruoja nepavykusį ryšį.

Kokia programa pateikia tiek daug ilgų DNS užklausų?

Kodėl ji nelaukia atsakymo?

Programa buvo greitai rasta # sockstat | grep -w 53 niekas šlamšto siuntėjas 9801 11 udp4 127.0.0.1:60037 127.0.0.1:53 niekas šlamšto siuntėjas 9801 12 udp4 127.0.0.1:60038 127.0.0.1:533

Sendmail pašto serveris su anti-spam / antivirus filtrais veikia viename kompiuteryje su DNS. Spamilter yra tik antispam filtras.

El. paštas (ypač naudojant šiuolaikinius skambučius ir švilpukus, pvz., DKIM) yra glaudžiai susijęs su DNS.

Todėl manęs tokia veikla nenustebino.

Sendmail žurnaluose buvo greitai rastas ilgos DNS užklausos pavyzdys – bandymas išspręsti adresą rcom-ne.com

# dig +trace rcom-ne.com ;<<>> DiG<<>> +trace rcom-ne.com ;; pasaulinės parinktys: 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. ;; Gauta 244 baitai iš 127.0.0.1#53(127.0.0.1) per 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 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. ;; Gautas 501 baitas iš 192.58.128.30#53(j.root-servers.net) per 52 ms rcom-ne.com. 172800 IN NS ns1.rcom-ne.com. rcom-ne.com. 172800 IN NS ns2.rcom-ne.com. ;; Gauta 97 baitai iš 192.52.178.30#53(k.gtld-servers.net) per 55 ms ;; ryšio laikas baigėsi; nepavyko pasiekti jokių serverių Užklausa nepavyksta dėl skirtojo laiko.

Prakeikti spameriai, jie parašys adresus, o jūs juos patikrinsite.

Taigi. Nieko blogo nenutinka. Bet jūs turite išvalyti šių pranešimų žurnalą, kitaip jie užkemša tikrai svarbią informaciją.

Simptomų gydymas

Radikalus būdas yra visiškai išjungti nesėkmingų jungčių pradūrimą. Per sysctl:# sysctl -d net.inet.tcp.log_in_vain net.inet.udp.log_in_vain net.inet.tcp.log_in_vain: Registruokite visus gaunamus TCP ryšius net.inet.udp.log_in_vain: Užregistruokite visus gaunamus UDP paketus # sysctl net.inet. udp.log_in_vain=0 net.inet.udp.log_in_vain: 1 -> 0

Bet čia mes išmetame kūdikį su vonios vandeniu. Noriu sužinoti, kas veržiasi į mano uždarus uostus.

Bandymas prijungti filtrą prie sistemos žurnalo yra sudėtingas, padidina registravimo sistemos gedimo tikimybę ir tai tiesiog negražu. Galbūt galite išjungti atgalinio ryšio sąsajos registravimą, ar tai ypač įdomu?

Google neradau, pažiūrėkime į šaltinius.

# fgrep -rIn "Bandymas prisijungti prie UDP" /usr/src/ /usr/src/sys/netinet/udp_usrreq.c:406: "Bandymas prisijungti prie UDP %s:%d iš %s:%d\n", /usr/src/sys/netinet6/udp6_usrreq.c:341: "Bandymas prisijungti prie UDP [%s]:%d nuo [%s]:%d\n", # less +718 /usr/src/sys/ netinet/tcp_input.c jungiklis (log_in_vain) ( 1 atvejis: if ((thflags & TH_SYN) == 0) pertrauka; /* FALLTHROUGH */ 2 atvejis: log(LOG_INFO, "Bandymas prisijungti prie TCP %s:%d " "iš %s:%d flags:0x%02x\n", dbuf, ntohs(th->th_dport), sbuf , ntohs(th->th_sport), thflags); pertrauka; numatytasis: pertrauka; )

Atrodo, kad yra tik vienas jungiklis ir visoms sąsajoms vienu metu - log_in_vain.

Simptomai negali būti pašalinti, gydykime ligą.

Mokymosi sprendėjas

Pranešimas pasirodo, kai programa nelaukia atsakymo iš DNS. Būtina, kad arba DNS reaguotų greičiau, arba programa lauktų ilgiau.

Kaip padaryti, kad programa lauktų ilgiau?

Užklausoms į dns naudojamos libc funkcijos - res_query, res_search, res_mkquery, res_send...

Kitos funkcijos, tokios kaip gethostbyname, yra aukštesnio lygio ir galiausiai naudoja šiuos „primityvus“.

Res_query funkcijų veikimą lemia /etc/resolv.conf failas (šio failo pavadinimas ir kelias yra užkoduoti šaltinio kode).

Turime du parametrus laikas baigėsi Ir bandymus.

laikas baigėsi- laikas laukti atsakymo iš DNS serverio.

bandymus- pakartotinių užklausų DNS serveriui skaičius, jei į pirmą užklausą nebuvo atsakyta.

Iš karto po pirmojo prašymo išsiunčiama antra užklausa ir pan.

Pavyzdys resolv.conf

Vardų serverio 8.8.8.8 vardų serverio 8.8.4.4 parinkčių skirtasis laikas: 7 bandymai: 1 Numatytąsias reikšmes ir ribines vertes galite rasti /usr/include/resolv.h/* * Visuotiniai apibrėžimai ir kintamieji, skirti sprendiklio stubui. */ ...... #define RES_TIMEOUT 5 /* min. sekundės tarp bandymų */ #define RES_MAXRETRANS 30 /* tik resolv.conf/RES_OPTIONS */ #define RES_MAXRETRY 5 /* tik resolv.conf/RES_OPTIONS */ #define RES_DFLRETRY 2 /* Numatytasis #/tries. */ #define RES_MAXTIME 65535 /* Begalybė, milisekundėmis. */......

Pagal numatytuosius nustatymus turime laukti 5 sekundes ir 2 kartus bandyti. Tai kiekvienam serveriui, kurį bandome pasiekti.

Aukščiau pateiktame pavyzdyje maksimalus laikas laukti atsakymo (jei abu DNS serveriai sugenda) yra 2 (serveriai) x 7 (skirtasis laikas) x (1+1 (bandymai)) = 28 sekundės.

Mano konfigūracija buvo paprastesnė

# cat /etc/resolv.conf domenas myserver vardų serveris 127.0.0.1 Paaiškėjo, kad 1x3x5 = 15. Patikrinkime.

Paprasčiausias įrankis – priegloba naudoja savo įtaisytuosius nustatymus, todėl imkimės pažangių tyrimų.

# laikas dig rcom-ne.com ;<<>> DiG<<>> rcom-ne.com ;; pasaulinės parinktys: printcmd ;; ryšio laikas baigėsi; nepavyko pasiekti jokių serverių realus 0m15.009s vartotojas 0m0.000s sys 0m0.006s Patikrinkime hipotezę apie pranešimo priežastį žurnale.

Paleiskite jį vienoje konsolėje

# (data;time dig rcom-ne.com;data) & Penktadienis, 2011 m. vasario 11 d., 16:46:49 (MSK) ;<<>> DiG<<>> rcom-ne.com ;; pasaulinės parinktys: printcmd ;; ryšio laikas baigėsi; nepavyko pasiekti jokių serverių realus 0m15.009s vartotojas 0m0.000s sys 0m0.006s Penktadienis, 2011 m. vasario 11 d., 16:47:04 (MSK) O kitame, lygiagrečiai, pažiūrėkime, kuris prievadas naudojamas kasti#sockstat | grep dig root dig 71322 20 udp4 *:52170 *:* # grep 52170 /var/log/messages Kov 4 16:47:20 myserver branduolys: Bandymas prisijungti prie UDP 127.0.0.1:52170 nuo 127.53.0.

dig laukia atsakymo 15 sekundžių, o atsakymas ateina po (16:47:20 - 16:46:49 = 31 ~ 30) 30 sekundžių.

Dabar padidinkime reakcijos laiką iki 30 sekundžių ar net daugiau.

Kasimo laikas baigėsi resolv.conf

#data; time dig +time=12 rcom-ne.com;data Penktadienis, 2011 m. kovo 4 d., 17:07:46 (MSK) ;<<>> DiG<<>> +time=12 rcom-ne.com ;; pasaulinės parinktys: printcmd ;; Gavau atsakymą: ;; ->>ANTRAŠTĖ<<- 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 gavo atsakymą 30 sekundžių, nors galėjo laukti net 1x3x12=36.

Matyt, 30 sekundžių yra pats BIND skirtasis laikas. Prisiminkime tai.

būsena: SERVFAIL reiškia, kad DNS serveris negalėjo apdoroti užklausos dėl DNS serverio problemų (RFC 1035, RFC 2929).

„Na, aš to nepadariau, aš to nepadariau“, - sako serveris, nors žinome, kad jis tiesiog nelaukė atsakymo iš rcom-ne.com domeno dns serverių.

Asmeninis požiūris

Resolv.conf nustatymai taikomi visoms programoms.

Nenoriu ilginti maksimalaus užklausos laiko nuo 15 iki 30 sekundžių (2 kartus) visoms programoms serveryje.

Gal galite pakoreguoti atskirų programų skyriklio skirtąjį laiką?

žr. confTO_RESOLVER_RETRANS ir confTO_RESOLVER_RETRY.

Bet pirmiausia turime sukonfigūruoti spamilterį. Bet jis neturi tokių nustatymų. Resolv.conf redagavimas taip pat neturėjo jokios įtakos.

Bandžiau redaguoti šaltinio kodą, bet nepavyko pasiekti jokių rezultatų.

Pastaba: išsprendęs problemą, eksperimentuodamas su resolv.conf ir tcpdump, sužinojau, kad resolv.conf tikrai paveikė spamilterį. Tik ji periodiškai siųsdavo 2 užklausas tuo pačiu metu, o ne po skirtojo laiko. Matyt, tai yra spamilterio kelių gijų architektūros gedimas, nors pats sprendiklis apibūdinamas kaip saugus nuo gijų.

Brangino 30 sekundžių

Turėjau galvoti, kaip pataisyti BIND reakcijos laiką. Internete radau panašų klausimą, bet be atsakymo.

Nusivylęs šaltinio kode ieškojau brangaus skaičiaus 30 ir man pasisekė.

Pakeitimų istorija man pasakė: /usr/src/contrib/bind9/CHANGES .................... --- Išleistas 9.2.3rc1 --- .... ................. 1122. Rezoliucijos laikas sumažintas nuo 90 iki 30 sekundžių. ................... --- 9.2.2 išleistas --- ................... . .

Aprašymas panašus į tai, ko ieškojau.

Parsisiunčiau abi minėtas BIND versijas, pasidariau skirtumą ir ilgai žiūrėjau, kol radau.

-/* $Id: Decision 04:35:51 marka Exp $ */ @@ -2234.7 +2229.7 @@ /* * Apskaičiuokite viso gavimo galiojimo laiką. */ - isc_interval_set(&interval, 90, 0); /* XXXRTH konstanta */ + isc_interval_set(&intervalas, 30, 0); /* XXXRTH konstanta */ iresult = isc_time_nowplusinterval(&fctx->galioja, &intervalas); if (irresult != ISC_R_SUCCESS) ( UNEXPECTED_ERROR(__FILE__, __LINE__,

Pabandžiau sumažinti funkcijos isc_interval_set parametrą iki ir hurray – atsakymai iš BIND pradėjo ateiti daugiausiai per 20 sekundžių.

# 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/ pavadintas # padaryti obj && padaryti priklausomą && padaryti && make install # /etc/rc.d/named paleisti iš naujo

Bet gamyboje aš nieko neredagavau, kas žino, kokių problemų tai gali sukelti. Ne veltui kūrėjai taip griežtai nustato šį parametrą.

Viskas iš naujo

Taigi, praleidęs daug laiko, vis tiek negalėjau išspręsti problemos.

Galiausiai nusprendžiau pažiūrėti, kokiais konkrečiais prašymais spamilteris bombarduoja DNS ir kokius adresus BIND užtrunka ilgai išspręsti?

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

Atidarykime dns.pcap Wireshark ir peržiūrėkite nesėkmingus prašymus.

Paaiškėjo, kad savo prielaidomis buvau labai toli nuo tiesos.

90 % neatsakytų užklausų buvo į domenus list.dsbl.org multihop.dsbl.org unconfirmed.dsbl.org

Standartinė užklausa A 146.152.225.99.list.dsbl.org

Naudodamas DNS užklausas, spamilter įsiskverbė į pašto serverių adresus per šiukšlių siuntėjų duomenų bazes. Tai DNSBL technologija.

Nuėjau į dsbl.org ir sužinojau, kad jis ilgą laiką neveikia.

Paieškojęs konfigūracijas radau šiuos adresus faile /var/db/spamilter/db.rdnsbl ir pakomentavau.

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

Nepavykusių užklausų lavina išnyko. Problema išspręsta.

Mokykis iš klaidų

Viena vertus, buvau rimtai suklydęs, kai užuot nuodugniai ištyręs problemą, žiūrėjęs į įvairius žurnalus, analizavęs srautą, iškart padariau prielaidas ir jomis remdamasis ėmiau ieškoti sprendimų. Dėl to praleidau daug laiko ir atlikau daug nereikalingų tyrimų. Kita vertus, sužinojau daug įdomių dalykų apie solver darbą.

Išnykus nebaigtų DNS ryšių lavinai, žurnalas liko užkimštas jungtimis prie 6881 prievado.

Branduolys: bandymas prisijungti prie UDP 192.0.32.10:6881 nuo 188.85.194.61:24333

Pasaulinė žinių bazė rodo, kad UDP 6881 greičiausiai yra torrent klientai, bandantys užmegzti DHT ryšį. Labai tikėtina versija, kad serveryje ilgą laiką veikė torrent klientas ir nors jis jau seniai buvo ištrintas, jo atmintis gali niekada neužmiršti kitų bendražygių širdyse.

Turime užfiksuoti paketus, gaunamus per 6881 prievadą. Naudoju Packet Filter pf(4) kaip ugniasienę/NAT. Iškart po numatytosios blokavimo taisyklės pridėsime taisyklę, skirtą blokuoti ir registruoti gaunamus atnaujinimo ryšius 6881 prievade. Parametras greitai sustabdo kitų taisyklių apdorojimą, jei paketas atitinka esamą.

# ee /etc/pf.conf blokas žurnale greitai em0 proto udp iš bet kurio į 192.0.32.10 prievadą 6881 # pfctl -oonvf /etc/pf.conf # pfctl -oovf /etc/pf.conf

Per kelias minutes rezultatus įrašysime į Wireshark failą.

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

Atidarykime failą Wireshark ir pažiūrėkime. Deja, programa dar nepalaiko DHT. Todėl viskas, ką galite padaryti, tai pažiūrėti į paketą parašo.

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

Ieškant pirmųjų paketo baitų, pradedama diskusija apie DHT plėtinį Bittorrent. Tai reiškia, kad tai iš tiesų yra ilgalaikio torrent kliento veikimo serveryje atgarsiai.

Viskas gerai. Jums tereikia išvalyti tokių įrašų žurnalą.

Norėdami tai padaryti, nurodykite pf tyliai mesti paketus, gaunamus į 6881 prievadą, pridėdami parametrą lašas ir pašalinimas žurnalas.

Šis trumpas įrašas yra apie „Limit Login Attempts“ papildinį, leidžiantį apsaugoti „WordPress“ tinklaraščių administravimo skydelius. Papildinys, leidžiantis apriboti tinklaraščių įsilaužėlių – įsilaužėlių, bandančių patekti į administratoriaus skydelį ir perimti tinklaraštį – bandymų skaičių. Apsaugos nuo įsilaužimo metodų ir įskiepių yra gana daug, o kai kurie iš jų yra labai rimti. Tačiau jaunam tinklaraščiui, kurio srautas mažas ir autoritetas, kaip taisyklė, pavojus negresia. Kol kas. Tačiau „Limit Login Attempts“ nustatymas net neįmanomas labai „šauniame“ tinklaraštyje, kurį šiuo metu laikau savo kukliu žiniatinklio šaltiniu.

Nustebsite, bet kai įdiegiau šį papildinį, nustebau pastebėjęs, kad į mano tinklaraštį bandė įsiskverbti užpuolikas, vardu admin, o po nesėkmingų bandymų jis buvo užblokuotas naudotis papildiniu 24 valandoms. Ir nuo jo įdiegimo praėjo tik kelios valandos!

Žemiau yra dalies laiško, kurį gavau vakar savo el. paštu, ekrano kopija:

Negalėjau neprisiminti, kaip atradau ir ištaisiau "skylę" tinklaraščio temoje. Ką daryti, jei palikau viską matomą arba pasirinkau administratoriaus prisijungimą ir užpuolikas atspėjo slaptažodį?

Tikiuosi, kad įtikinau jus, mieli žiniatinklio valdytojai, kad toks labai paprastas, bet lengvas įskiepis netrukdys jūsų tinklaraščiui.

Trumpai apie Limit Login Attempts papildinio įdiegimą ir nustatymą

Viskas labai paprasta: tiesiog suraskite papildinį administratoriaus skydelyje ieškodami atitinkamo pavadinimo, įdiekite ir suaktyvinkite.

Tada iš Parinkčių, pasirinkę papildinį, eikite į nustatymus. Iš esmės čia nieko keisti nereikia, bet rekomenduoju pažymėti langelį, leidžiantį vienai iš Limit Login Attempts funkcijų siųsti pranešimus apie įsilaužėlių bandymus į jūsų el. Ši papildinio funkcija leis jums gauti greitą bandymų įsilaužti suvestinę.

Kaip veikia papildinys „Limit Login Attempts“.

yra pagrįsta prieigos prie svetainės administratoriaus skydelio ribojimu įvedant prisijungimo vardą ir slaptažodį. Kitaip tariant, jis apriboja bandymų autorizuoti skaičių, įskaitant slapukų palaikymą, remiantis interneto vartotojo IP adresu. Kiekvieną kartą priversti svetainės administratorių atsijungti nuo skydelio ir nuolat išvalyti slapukus yra labai nedėkingas uždavinys. Šiuo atveju Limit Login Attempts įskiepis yra tiesiog nepakeičiamas.

Papildinys, be kita ko, suteikia įsilaužėlio IP adresą ir gali būti naudojamas visomis prieinamomis priemonėmis identifikuoti ir nubausti įsilaužėlį.

Papildomos apsaugos nuo įsilaužimo priemonės

Šis straipsnis, kaip jau minėjau aukščiau, nebėra vienintelis apie „WordPress“ svetainių saugumą. Ankstesniame, bet išsamesniame vadove apie svetainės saugumą – „“, – paliečiau ir panašiai funkcijai skirtų įskiepių temą. Visų pirma, apie dar du papildinius, kurie gali veikti kartu. Tai Login LockDown + Anti-XSS atakos įskiepiai (tikriausiai panašiai veiks kombinacija Limit Login Attempts + Anti-XSS ataka), apie kurių darbą savo vaizdo pamokoje pasakoja Aleksejus Kozymajevas. Nusprendžiau šiame puslapyje paskelbti vaizdo įrašą.

Kaip papildomą priemonę nuo atakų svetainėje taip pat rekomenduoju papildinį, kurio niekada nepaminėjau savo įrašuose. Tai vadinama Blokuoti blogas užklausas (BBQ);Šis papildinys automatiškai apsaugo jūsų svetainę nuo kenkėjiškų URL užklausų. Diegimas atliekamas per paiešką administratoriaus skydelyje, nereikia jokių nustatymų.

(Aplankyta 43 kartus, 1 apsilankymai šiandien)

WP įskiepis Limit login Attempts yra vienas reikalingiausių įskiepių, nes jis apsaugo svetainę nuo įsilaužėlių metodų, tokių kaip brute-force atakos.

Šios technikos esmė yra ta, kad užpuolikas bando įsiskverbti į administratoriaus sritį atspėdamas prisijungimo ir slaptažodžio porą.

Tikriausiai visi jau susidūrė su įspėjimu: „Liko trys bandymai“, kuris pasirodo prisijungus su slaptažodžiu. Būtent tai daro šis papildinys.

Jį įdiegus ir suaktyvinus, konsolėje, parametrų skiltyje atsiras eilutė su šio modulio pavadinimu.

Ją sekę atsidursime nustatymų puslapyje.

Nustatymai čia yra paprasti ir rusų kalba. Nuotraukoje rodomi numatytieji nustatymai. Pažiūrėkime, ką čia galima pakeisti.

Pirmame lauke nustatomas papildomų bandymų skaičius. pasilikau 3.

Antrajame nustatoma pirmosios izoliacijos trukmė. Manau, kad 20-30 minučių yra gerai.

Kitame lauke nustatomas izoliacijų skaičius, po kurio izoliacijos laikas bus padidintas iki 24 valandų arba daugiau, jūsų nuožiūra.

Palikau 1, nes kas kitas, jei ne puolėjas suklystų tris kartus, o paskui, po pusvalandžio, dar tris kartus. Turite būti visiškas sklerotikas, kad darytumėte ką nors panašaus be ketinimo.

Palikime ryšį su svetaine „Tiesioginis ryšys“.

Apdoroti prisijungimo slapukus. „Taip“ šioje eilutėje pasirenkama, jei visus darbus svetainėje atliekate vienoje naršyklėje. Pavyzdžiui, aš naudoju keturias naršykles, todėl pasirinkau „Ne“.

Pranešti apie izoliaciją – geriau pažymėti abu langelius, nors paštas kol kas neatrodo naudingas, bet nepakenks. Ateityje, jei ir toliau domitės programavimu, šiuos adresus bus galima analizuoti.

Tai viskas dėl papildinio nustatymų Apriboti prisijungimo bandymus baigtas. Dabar, jei po dienos ar dviejų grįšite į tą patį puslapį, statistikos skiltyje pamatysite tokį paveikslėlį.

Tai reikš, kad kažkas labai bandė patekti į jūsų administratoriaus sritį naudodamas specialų scenarijų, bet jam nepavyko. Galite „Išvalyti žurnalą“.

Papildiniai saugumui šiame .


Pasukite


Kartais ATTEMPT_.HLP ir kitos HLP sistemos klaidos gali būti susijusios su Windows registro problemomis. Kelios programos gali naudoti ATTEMPT_.HLP failą, tačiau kai tos programos pašalinamos arba modifikuojamos, kartais paliekami „našlaičiai“ (neteisingi) HLP registro įrašai.

Iš esmės tai reiškia, kad nors tikrasis failo kelias galėjo pasikeisti, jo buvusi neteisinga vieta vis dar įrašoma „Windows“ registre. Kai Windows bando ieškoti šių neteisingų failų nuorodų (failų vietos kompiuteryje), gali įvykti ATTEMPT_.HLP klaidų. Be to, kenkėjiškų programų infekcija gali sugadinti registro įrašus, susijusius su FreeBSD 2.2.1. Taigi šiuos sugadintus HLP registro įrašus reikia pataisyti, kad problema būtų išspręsta pačioje pradžioje.

Rankiniu būdu redaguoti Windows registrą, kad būtų pašalinti netinkami ATTEMPT_.HLP raktai, nerekomenduojama, nebent esate kompiuterio paslaugų profesionalas. Klaidos, padarytos redaguojant registrą, gali padaryti jūsų kompiuterį neveikiantį ir padaryti nepataisomą žalą operacinei sistemai. Tiesą sakant, net vienas kablelis, padėtas netinkamoje vietoje, gali neleisti kompiuteriui paleisti!

Dėl šios rizikos labai rekomenduojame naudoti patikimas registro valymo priemones, pvz., WinThruster (sukurtą Microsoft Gold Certified Partner), kad nuskaitytumėte ir ištaisytumėte su ATTEMPT_.HLP susijusias registro problemas. Naudodami registro valiklį galite automatizuoti sugadintų registro įrašų, trūkstamų failų nuorodų (pvz., sukeliančių ATTEMPT_.HLP klaidą) ir neveikiančių nuorodų registre paiešką. Prieš kiekvieną nuskaitymą automatiškai sukuriama atsarginė kopija, leidžianti vienu spustelėjimu atšaukti bet kokius pakeitimus ir apsaugoti jus nuo galimos žalos kompiuteriui. Geriausia tai, kad registro klaidų pašalinimas gali žymiai pagerinti sistemos greitį ir našumą.


Įspėjimas: Nerekomenduojame rankiniu būdu redaguoti „Windows“ registro, nebent esate patyręs kompiuterio vartotojas. Neteisingai naudojant registro rengyklę gali kilti rimtų problemų, dėl kurių gali tekti iš naujo įdiegti „Windows“. Negarantuojame, kad dėl netinkamo registro rengyklės naudojimo kilusios problemos gali būti ištaisytos. Registro rengyklę naudojate savo pačių rizika.

Prieš rankiniu būdu atkurdami „Windows“ registrą, turite sukurti atsarginę kopiją, eksportuodami registro dalį, susietą su ATTEMPT_.HLP (pavyzdžiui, FreeBSD 2.2.1):

  1. Spustelėkite mygtuką Pradėkite.
  2. įveskite " komandą"V paieškos juosta... DAR NESPUSTELKITE ENTER!
  3. Laikydami nuspaudę klavišus CTRL-Shift klaviatūroje paspauskite ENTER.
  4. Bus rodomas prieigos dialogo langas.
  5. Spustelėkite Taip.
  6. Juodasis langelis atsidaro mirksinčiu žymekliu.
  7. įveskite " regedit“ ir paspauskite ENTER.
  8. Registro rengyklėje pasirinkite su ATTEMPT_.HLP susijusį raktą (pvz., FreeBSD 2.2.1), kurio atsarginę kopiją norite sukurti.
  9. Meniu Failas pasirinkite Eksportuoti.
  10. Sąraše Išsaugoti pasirinkite aplanką, kuriame norite išsaugoti FreeBSD 2.2.1 rakto atsarginę kopiją.
  11. Lauke Failo pavadinimasĮveskite atsarginės kopijos failo pavadinimą, pavyzdžiui, „FreeBSD 2.2.1 atsarginė kopija“.
  12. Įsitikinkite, kad laukas Eksporto diapazonas pasirinkta vertė Pasirinkta šaka.
  13. Spustelėkite Sutaupyti.
  14. Failas bus išsaugotas su plėtiniu .reg.
  15. Dabar turite su ATTEMPT_.HLP susijusio registro įrašo atsarginę kopiją.

Toliau nurodyti rankinio registro redagavimo veiksmai šiame straipsnyje nebus aprašyti, nes jie gali sugadinti jūsų sistemą. Jei norite gauti daugiau informacijos apie rankinį registro redagavimą, peržiūrėkite toliau pateiktas nuorodas.