Çfarë është ATTEMPT_.HLP dhe si ta rregullojmë atë? Parametri i kërkuar "etiketë" mungon. PHP Mjete shtesë kundër hakimit

Po e marr këtë gabim. "Etiketa" e parametrit të kërkuar mungon në tosterin android, ju lutem më ndihmoni, nuk mund ta gjej gabimin tim më poshtë. Unë kam kodin e përdoruesit të Android dhe kodin e serverit php më lart. Unë jam duke përdorur bibliotekën volley për httpkërkesat.

StringRequest strReq = StringRequest i ri (Request.Method.POST, AppConfig.URL_REGISTER, response.Listener () ( @Override public void onResponse(String Response) ( Log.d(TAG, "Register Response: " + answer.toString()); hideDialog(); provo ( JSONObject jObj = new JSONObject(response); gabim boolean = jObj.getBoolean("gabim") nëse (!gabim) ( // Përdoruesi u ruajt me sukses në MySQL // Tani ruajeni përdoruesin në sqlite String uid = jObj.getString("uid"); JSONObject user = jObj.getJSONObject(" përdorues"); Emri i vargut = user.getString ("emri"); Email i vargut = user.getString ("email"); String krijuar_at = përdoruesi .getString ("created_at"); // Futja e rreshtit në tabelën e përdoruesve db.addUser (emri, emaili, uid, krijuar_at) // Nisja e aktivitetit të identifikimit Intent = new Intent(RegisterActivity.this, LoginActivity.class) ( // Ndodhi gabimi në regjistrim. Merr gabimin e vargut); = jObj.getString("error_msg" Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show() ) catch (JSONException e) ( e.printStackTrace(); ) ), response. ErrorListener() ( @Override public void onErrorResponse(VolleyError error) ( Log.e(TAG, "Gabim Regjistrimi: " + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).shfaq(); hideDialog(); ) )) ( @Override protected Map getParams() ( // Postimi i parametrave për të regjistruar url Map params = HashMap i ri (); params.put("etiketë", "regjistrim"); params.put("emri", emri); params.put("email", email); params.put("fjalëkalim", fjalëkalim); parametrat e kthimit; ) @Override Public Map getHeaders() hedh AuthFailureError ( HashMap headers = HashMap i ri (); headers.put("Content-Type", "application/json; charset=utf-8"); kokat e kthimit; ) ); // Shtimi i kërkesës për të kërkuar radhën AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

AppcontrollerClass këtu

Klasa publike AppController zgjeron aplikacionin (String përfundimtar statik publik TAG = AppController.class.getSimpleName(); Private RequestQueue mRequestQueue; mInstance private statike e AppController; @Override public void onCreate() ( super.onCreate(); mInstance public = this; i sinkronizuar i AppController-it getInstance() ( kthe mInstance; ) publik RequestQueue getRequestQueue() ( if (mRequestQueue == null) ( mRequestQueue = Volley.newRequestQueue(getApplicationContext()); ) kthe mRequestQueue; req, etiketa e vargut) ( req.setTag(TextUtils.isEmpty(etiketë) ? TAG: etiketë); getRequestQueue().add(req); ) publike void addToRequestQueue(Kërkesë req) ( req.setTag(TAG); getRequestQueue().add(req); ) publik i zbrazët cancelPendingRequests(etiketa e objektit) (nëse (mRequestQueue != null) ( mRequestQueue.cancelAll(etiketë); ) )

kjo është një revistë android

08-07 14:35:36.552 19120-20088/com.example.panos.chatsmartapp D/Volley﹕ BasicNetwork.logSlowRequests: Përgjigja HTTP për kërkesë=< 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﹕ Përgjigja e regjistrimit: ("error":true,"error_msg":"Parametri i kërkuar "etiketa" mungon!" ) 08-07 14:35:36.702 19120-19120/com.example.panos.chatsmartapp D/Toast﹕ checkMirrorLinkEnabled kthen: false 08-07 14:35:36.702 19120/comartapposs. ﹕ Shfaqja e lejuar 08-07 14: 35: 36.702 19120-19120/com.example.panos.chatsmartapp D/Volley ﹕ Kërkesë. :35:36.712 19120-19120/com.example.panos.chatsmartapp E/ViewRootImpl﹕ sendUserActionEvent() mView == null

ky është kodi php

$tag, "gabim" => FALSE); // kontrolloni për llojin e etiketës nëse ($tag == "login") ( // Lloji i kërkesës është kontrolloni Hyrja $email = $_POST["email"]; $password = $_POST["fjalëkalim"]; // kontrolloni për përdoruesi $db->getUserByEmailAndPassword($email, $password if ($user != false) ( // përdoruesi gjeti $response["gabim"] = E GAME; $response["uid"] = $user); ["unike_id"]; user"]["created_at"] = $user["created_at"]; $response["user"]["updated_at"] = $user["updated_at"]; echo json_encode($response) other (); // përdoruesi nuk u gjet // echo json me gabim = 1 $response["gabim"] = E VERTETË["error_msg"] = "E-mail ose fjalëkalimi i gabuar!" == "regjistrohu") ( // Lloji i kërkesës është Regjistro përdoruesin e ri $name = $_POST["emri"]; $email = $_POST["email"]; $password = $_POST["password"] ; // kontrolloni nëse përdoruesi ekziston tashmë nëse ($db->isUserExisted($email)) ( // përdoruesi ekziston tashmë - përgjigja e gabimit $response["gabim"] = E VËRTETË; $response["error_msg"] = "Përdoruesi ekziston tashmë"; echo json_encode ($përgjigje); ) else ( // ruani përdoruesin $user = $db->storeUser($name, $email, $password); nëse ($user) ( // përdoruesi u ruajt me sukses $response["error"] = E rreme; $response[ "uid"] = $user["unique_id"] $response["user"]["name"] = $user["emri"]; "email"]; ) else ( // përdoruesi dështoi të ruante $response["gabim"] = E VËRTETË; $response["error_msg"] = "Ndodhi gabim në Regjistrim"; echo json_encode($response); ) ) else ( // përdoruesi) dështoi në ruajtjen e $response["error"] = TRUE $response["error_msg"] = "Të mos dihet vlera e "etiketës". Duhet të jetë ose "login" ose "regjistruar"" ; else ( $response["error"] = E VËRTETË; $response["error_msg"] = "Mungon parametri i kërkuar "etiketë"!"; echo json_encode($response); ) ?>

Myabe Kam një problem me vargun utf8 duke përdorur json_encode/json_decode. Une nuk e di...


Një ditë pashë në regjistër /var/log/mesazhe në një server që funksionon FreeBSD. Regjistri doli të ishte pothuajse plotësisht i bllokuar me hyrjet e mëposhtme: kernel: Përpjekje për lidhje me UDP 127.0.0.1:10441 nga kerneli 127.0.0.1:53: Përpjekje për lidhje me UDP 127.0.0.1:10441 nga 127.0.0.1:10441 nga kerneli. Përpjekja e lidhjes për UDP 127.0 10445 nga 127.0.1: 53 Kernel: Connection Përpjekja për UDP 127.0.1: 10445 nga 127.0.1: 53 Kernel: Përpjekja e lidhjes për UDP 192.0.32.10:6881 nga Kernel: Conniption Përpjekja në UDP 127.0.0.1 :10468 nga kerneli 127.0.0.1:53: Përpjekje për lidhje me UDP 127.0.0.1:10468 nga 127.0.0.1:53 kerneli: Përpjekje për lidhje me UDP 127.0.0.1:10469 nga 127.0.0.0.0 Përpjekje për lidhje me UDP 127:5.0.0.0. 0.1:10469 nga kerneli 127.0.0.1:53: Përpjekje për lidhje me UDP 127.0.0.1:10470 nga 127.0.0.1:53

Çfarë do të thotë kjo?

Yandex vuri në dukje temën "Sjellja e pakuptueshme e lidhjes"
Pyetja ime tashmë ka marrë përgjigje atje:
Përpjekje për lidhje me UDP 127.0.0.1:10445 nga 127.0.0.1:53 Kjo linjë përkthehet si: Nga foleja 127.0.0.1:53 ata u përpoqën të dërgonin një kërkesë nëpërmjet UPD në prizën 127.0.0.1:10445, por askush nuk po dëgjon 10445 i adresës 127.0.0.1. Lidhja dështoi. Le të shohim se kush është i varur në portin 53? Port i privilegjuar (<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 *:*

Ky është serveri BIND DNS.

Pse dëshiron të lidhet me një prizë që nuk ekziston? Përgjigja e saktë jepet në të njëjtën temë: Një program i caktuar dërgon BIND një kërkesë për të zgjidhur një emër domain. BIND kërkon kaq shumë kohë për t'u përgjigjur sa që programi kërkues ndalon së prituri për një përgjigje. bind më në fund dërgon një përgjigje, por askush nuk e pret atë. Kerneli regjistron një lidhje të dështuar.

Çfarë lloj programi bën kaq shumë pyetje të gjata DNS?

Pse ajo nuk pret një përgjigje?

Programi u gjet shpejt # sockstat | grep -w 53 askush spamilter 9801 11 udp4 127.0.0.1:60037 127.0.0.1:53 askush spamilter 9801 12 udp4 127.0.0.1:60038 127.0.0.0.

Serveri i postës Sendmail me filtra anti-spam/anti-virus po funksionon në një makinë me DNS. spamilter është vetëm një filtër antispam.

Email-i (veçanërisht me këmbanat dhe bilbilat moderne si DKIM) është i lidhur ngushtë me DNS.

Prandaj, nuk u befasova nga një aktivitet i tillë.

Një shembull i një kërkese të gjatë DNS u gjet shpejt në regjistrat e postës elektronike - një përpjekje për të zgjidhur një adresë rcom-ne.com

# dig +trace rcom-ne.com ;<<>>DiG<<>> +gjurmë rcom-ne.com ;; opsionet globale: printcmd . 172099 NË NS j.root-servers.net. . 172099 NE NS k.root-servers.net. . 172099 NË NS l.root-servers.net. . 172099 NË NS m.root-servers.net. . 172099 IN NS a.root-servers.net. . 172099 NE NS b.root-servers.net. . 172099 NË NS c.root-servers.net. . 172099 NË NS d.root-servers.net. . 172099 NE NS e.root-servers.net. . 172099 NE NS f.root-servers.net. . 172099 NË NS g.root-servers.net. . 172099 NË NS h.root-servers.net. . 172099 NË NS i.root-servers.net. ;; Marrë 244 byte nga 127.0.0.1#53(127.0.0.1) në 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 NË NS j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 NE NS g.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 NË NS i.gtld-servers.net. com. 172800 NË NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 NË NS h.gtld-servers.net. ;; Marrë 501 bajt nga 192.58.128.30#53 (j.root-servers.net) në 52 ms rcom-ne.com. 172800 NË NS ns1.rcom-ne.com. rcom-ne.com. 172800 NË NS ns2.rcom-ne.com. ;; Marrë 97 byte nga 192.52.178.30#53(k.gtld-servers.net) në 55 ms ;; koha e lidhjes ka mbaruar; nuk mund të arrihet asnjë server Kërkesa dështon për shkak të një afati kohor.

Mallkuar spammers, ata do të shkruajnë adresa, dhe ju kontrolloni ato.

Kështu që. Asgjë e keqe nuk ndodh. Por ju duhet të pastroni regjistrin e këtyre mesazheve, përndryshe ato bllokojnë informacione vërtet të rëndësishme.

Trajtimi i simptomave

Një mënyrë radikale është të çaktivizoni plotësisht shpimin e lidhjeve të pasuksesshme. Nëpërmjet sysctl:# sysctl -d net.inet.tcp.log_in_vain net.inet.udp.log_in_vain net.inet.tcp.log_in_vain: Regjistro të gjitha lidhjet hyrëse TCP net.inet.udp.log_in_vain: Regjistro të gjitha paketat hyrëse UDP net.inetl. udp.log_in_vain=0 net.inet.udp.log_in_vain: 1 -> 0

Por këtu po e hedhim fëmijën me ujin e banjës. Dua të di se kush po hyn në portet e mia të mbyllura.

Përpjekja për të bashkangjitur një filtër në syslog është e vështirë, rrit gjasat e dështimit të sistemit të regjistrimit dhe është thjesht e shëmtuar. Ndoshta mund të çaktivizoni regjistrimin për ndërfaqen loopback, a është me interes të veçantë?

Nuk e gjeta këtë në Google, le të shohim burimet.

# fgrep -rIn "Përpjekje për lidhje me UDP" /usr/src/ /usr/src/sys/netinet/udp_usrreq.c:406: "Përpjekje për lidhje me UDP %s:%d nga %s:%d\n", /usr/src/sys/netinet6/udp6_usrreq.c:341: "Përpjekje për lidhje me UDP [%s]:%d nga [%s]:%d\n", # më pak +718 /usr/src/sys/ netinet/tcp_input.c kaloni (log_in_vain) ( rasti 1: nëse ((thflamujt & TH_SYN) == 0) thyejnë; /* FALLTHROUGH */ case 2: log(LOG_INFO, "Përpjekje për lidhje me TCP %s:%d " "nga %s:%d flags:0x%02x\n", dbuf, ntohs(th->th_dport), sbuf , ntohs(th->th_sport), thflags); pushim; default: break; )

Duket sikur ka vetëm një ndërprerës dhe për të gjitha ndërfaqet menjëherë - log_in_kot.

Simptomat nuk mund të eliminohen, le ta trajtojmë sëmundjen.

Zgjidhës mësimor

Mesazhi shfaqet kur programi nuk pret një përgjigje nga DNS. Është e nevojshme që ose DNS të përgjigjet më shpejt, ose programi të presë më gjatë.

Si mund ta bëj një program të presë më gjatë?

Për pyetjet në dns, përdoren funksionet libc - res_query, res_search, res_mkquery, res_send...

Funksione të tjera si gethostbyname janë të nivelit më të lartë dhe në fund i përdorin këto "primitivë".

Sjellja e funksioneve res_query përcaktohet nga skedari /etc/resolv.conf (emri dhe rruga e këtij skedari janë të koduara në kodin burimor).

Kemi dy parametra timeout Dhe përpjekjet.

timeout- koha e pritjes për një përgjigje nga serveri DNS.

përpjekjet- numri i kërkesave të përsëritura në serverin DNS nëse kërkesa e parë nuk është përgjigjur.

Menjëherë pas pritjes së kërkesës së parë, dërgohet kërkesa e dytë, e kështu me radhë.

Shembull zgjidh.konf

Nameserver 8.8.8.8 nameserver 8.8.4.4 Opsionet skadojnë: 7 përpjekje: 1 Vlerat e paracaktuara dhe vlerat kufi mund të gjenden në /usr/include/resolv.h/* * Global përcakton dhe variabla për cung zgjidhës. */ ...... #define RES_TIMEOUT 5 /* min. sekonda midis riprovave */ #define RES_MAXRETRANS 30 /* vetëm për resolv.conf/RES_OPTIONS */ #define RES_MAXRETRY 5 /* vetëm për resolv.conf/RES_OPTIONS */ #define RES_DFLRETRY 2 /* Default #/tries. */ #define RES_MAXTIME 65535 /* Pafundësi, në milisekonda. */ .....

Si parazgjedhje kemi një pritje 5 sekonda dhe 2 riprova. Kjo është për çdo server që ne përpiqemi të arrijmë.

Për shembullin e mësipërm, koha maksimale për të pritur një përgjigje (nëse të dy serverët DNS dështojnë) është 2 (serverët) x 7 (përfundimi i kohës) x (1+1 (përpjekje)) = 28 sekonda.

Konfigurimi im ishte më i thjeshtë

# cat /etc/resolv.conf domain myserver server name 127.0.0.1 Doli 1x3x5 = 15. Le të kontrollojmë.

Shërbimi më i thjeshtë - hosti përdor cilësimet e tij të integruara, kështu që le të marrim gërmimin e avancuar.

# time dig rcom-ne.com ;<<>>DiG<<>> rcom-ne.com ;; opsionet globale: printcmd ;; koha e lidhjes ka mbaruar; asnjë server nuk mund të arrihet.

Le të kandidojmë në një tastierë

# (data;ora dig rcom-ne.com;data) & e premte, 11 shkurt 2011 16:46:49 (MSK) ;<<>>DiG<<>> rcom-ne.com ;; opsionet globale: printcmd ;; koha e lidhjes ka mbaruar; asnjë server nuk mund të arrihej real 0m15.009s përdorues 0m0.000s sys 0m0.006s E premte, 11 shkurt 2011 16:47:04 (MSK) Dhe në një tjetër, paralelisht, le të shohim se cila port përdoret gërmoj#sockstat | grep dig root dig 71322 20 udp4 *:52170 *:* # grep 52170 /var/log/messages Mar 4 16:47:20 Kernel myserver: Përpjekje për lidhje me UDP 127.0.0.1:52170 nga 120.3:0.

dig pret 15 sekonda për një përgjigje, dhe përgjigja vjen pas (16:47:20 - 16:46:49 = 31 ~ 30) 30 sekonda.

Tani le të rrisim kohën e përgjigjes në 30 sekonda ose edhe më shumë.

Koha për gërmim është skadim nga resolv.conf

#data; time dig +time=12 rcom-ne.com;datë e premte, 4 mars 2011 17:07:46 (MSK) ;<<>>DiG<<>> +time=12 rcom-ne.com ;; opsionet globale: printcmd ;; Mora përgjigjen: ;; ->>KOKË<<- 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 mori përgjigjen për 30 sekonda, edhe pse mund të priste deri në 1x3x12=36.

Me sa duket, 30 sekonda është një kohëzgjatje për vetë BIND. Le ta kujtojmë këtë.

statusi: SERVFAIL do të thotë që serveri DNS nuk ishte në gjendje të përpunonte kërkesën për shkak të problemeve me serverin DNS (RFC 1035, RFC 2929).

"Epo, nuk e bëra, nuk e bëra," na thotë serveri, megjithëse e dimë që ai thjesht nuk priti një përgjigje nga serverët dns të domenit rcom-ne.com.

Qasje personale

Cilësimet në resolv.conf zbatohen për të gjitha programet.

Nuk dua të rris kohën maksimale të kërkesës nga 15 në 30 sekonda (2 herë) për të gjitha programet në server.

Ndoshta mund të rregulloni afatet e zgjidhësve për programe individuale?

shih confTO_RESOLVER_RETRANS dhe confTO_RESOLVER_RETRY.

Por së pari duhet të konfigurojmë spamilterin. Por ai nuk ka cilësime të tilla. Redaktimi i resolv.conf gjithashtu dukej se nuk kishte asnjë efekt mbi të.

U përpoqa të modifikoja kodin burimor, por nuk arrita asnjë rezultat.

Shënim: Pas zgjidhjes së problemit, duke eksperimentuar me resolv.conf dhe tcpdump, kuptova se resolv.conf sigurisht ndikoi në spamilter. Vetëm ajo dërgoi në mënyrë periodike 2 kërkesa në të njëjtën kohë, në vend që t'i dërgonte pas sekondave të skadimit. Me sa duket kjo është një defekt në arkitekturën me shumë fije të spamilterit, megjithëse vetë zgjidhësi përshkruhet te njeriu si i sigurt për fije.

I dashur 30 sekonda

Më duhej të mendoja se si të rregulloja kohën e përgjigjes BIND. Kam gjetur një pyetje të ngjashme në internet, por pa përgjigje.

I frustruar, kërkova numrin e çmuar 30 në kodin burimor dhe isha me fat.

Historia e ndryshimeve më tha: /usr/src/contrib/bind9/CHANGES .................... --- 9.2.3rc1 lëshuar --- .... ................. 1122. Kohëzgjatja e rezolucionit u reduktua nga 90 në 30 sekonda. ................. --- 9.2.2 lëshuar --- ................... . .

Përshkrimi duket si ajo që kërkoja.

Unë shkarkova të dy versionet e përmendura të BIND, bëra një ndryshim dhe e shikova për një kohë të gjatë derisa e gjeta.

-/* $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 @@ /* * Llogaritni një kohë skadimi për të gjithë marrjen. */ - isc_interval_set(&interval, 90, 0); /* XXXRTH konstante */ + isc_interval_set(&interval, 30, 0); /* XXXRTH konstante */ iresult = isc_time_nowplusinterval(&fctx->skadon, &interval); nëse (rezultati != ISC_R_SUCCESS) (GABIM_ I PAPRITUR(__FILE__, __LINE__,

Unë u përpoqa të zvogëloj parametrin e funksionit isc_interval_set në dhe hurray - përgjigjet nga BIND filluan të mbërrijnë në një maksimum prej 20 sekondash.

# ee /usr/src/contrib/bind9/lib/dns/resolver.c # cd /usr/src/lib/bind # bëj obj && varet && bëj && bëj instalimin # cd /usr/src/usr.sbin/ i quajtur # make obj && make vared && make && install # /etc/rc.d/named restart

Por në prodhim nuk kam redaktuar asgjë, kush e di se çfarë problemesh mund të shkaktojë kjo. Nuk është më kot që zhvilluesit e vendosin këtë parametër kaq rreptësisht.

Gjithçka përsëri

Kështu, pasi kalova shumë kohë, ende nuk isha në gjendje ta zgjidhja problemin.

Më në fund, vendosa të shikoj se me çfarë kërkesash specifike bombardon DNS-ja nga spamilteri dhe çfarë lloj adresash kërkon shumë kohë për të zgjidhur BIND?

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

Le të hapim dns.pcap në Wireshark dhe shikoni kërkesat e pasuksesshme.

Doli që në supozimet e mia isha shumë larg së vërtetës.

90% e kërkesave pa përgjigje ishin për domenet list.dsbl.org multihop.dsbl.org i pakonfirmuar.dsbl.org

Pyetja standarde A 146.152.225.99.list.dsbl.org

Duke përdorur pyetje DNS, spamilter depërtoi në adresat e serverëve të postës përmes bazave të të dhënave të spammerëve. Kjo është teknologjia DNSBL.

Shkova te dsbl.org dhe zbulova se kishte kohë që nuk funksiononte.

Pasi kërkova nëpër konfigurime, gjeta këto adresa në skedarin /var/db/spamilter/db.rdnsbl dhe i komentova ato.

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

Orteku i kërkesave të dështuara është zhdukur. Problemi u zgjidh.

Mësoni nga gabimet

Nga njëra anë, u dëshpërova seriozisht kur, në vend që të hetoja plotësisht problemin, të shikoja regjistrat e ndryshëm, të analizoja trafikun, menjëherë bëra supozime dhe, bazuar në to, fillova të kërkoja zgjidhje. Si rezultat, kalova shumë kohë dhe bëra shumë kërkime të panevojshme. Nga ana tjetër, mësova shumë gjëra interesante për punën e zgjidhësit dhe DNS është vendi i parë që duhet të kontrollohet kur ndodhin vonesa të ndryshme në funksionimin e programeve.

Pas zhdukjes së ortekëve të lidhjeve jo të plota DNS, regjistri mbeti i bllokuar me lidhje me portin 6881.

Kernel: Përpjekje për lidhje me UDP 192.0.32.10:6881 nga 188.85.194.61:24333

Baza globale e njohurive sugjeroi që UDP 6881 është me shumë mundësi klientë torrent që përpiqen të krijojnë një lidhje DHT. Një version shumë i mundshëm është që një klient torrent ka funksionuar në server për një kohë të gjatë, dhe megjithëse është fshirë prej kohësh, kujtimi i tij mund të mos vdesë kurrë në zemrat e shokëve të tjerë.

Ne duhet të kapim paketat që vijnë në portin 6881. Unë përdor Filterin e Paketave pf(4) si mur zjarri/NAT. Menjëherë pas rregullit të parazgjedhur të bllokimit, ne do të shtojmë një rregull për bllokimin dhe regjistrimin e lidhjeve të përditësimeve hyrëse në portin 6881. Parametri i shpejtë bën që përpunimi i rregullave të tjera të ndalet nëse paketa përputhet me atë aktuale.

# ee /etc/pf.conf blloko hyrjen shpejt në em0 proto udp nga cilido në portin 192.0.32.10 6881 # pfctl -oonvf /etc/pf.conf # pfctl -oovf /etc/pf.conf

Brenda pak minutash do t'i shkruajmë rezultatet në një skedar për Wireshark.

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

Le të hapim skedarin në Wireshark dhe të hedhim një vështrim. Fatkeqësisht, DHT nuk mbështetet ende nga programi. Prandaj, gjithçka që mund të bëni është të shikoni paketën për një nënshkrim.

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

Kërkimi për bajtët e parë të paketës çon në një diskutim të shtrirjes DHT për Bittorrent. Kjo do të thotë se këto janë me të vërtetë jehona e funksionimit afatgjatë të klientit torrent në server.

Cdo gje eshte ne rregull. Thjesht duhet të pastroni regjistrin e shënimeve të tilla.

Për ta bërë këtë, thuaj pf që të lëshojë në heshtje paketat që mbërrijnë në portin 6881 duke shtuar parametrin rënie dhe duke hequr log.

Ky postim i shkurtër ka të bëjë me shtojcën Limit Login Ttempts, e cila ju lejon të mbroni panelet e administrimit të blogjeve të WordPress. Një shtesë që ju lejon të kufizoni numrin e përpjekjeve nga hakerat e blogut - hakerët që përpiqen të hyjnë në panelin e administratorit dhe të marrin përsipër blogun. Ka mjaft metoda dhe shtojca për t'u mbrojtur nga hakerimi, dhe disa prej tyre janë shumë serioze. Por një blog i ri, me trafik dhe autoritet të ulët, si rregull, nuk është në rrezik. Për momentin. Por vendosja e Përpjekjeve të Limit Login nuk është as e mundur për një blog shumë "cool", të cilin unë aktualisht e konsideroj burimin tim modest të internetit.

Do të habiteni, por pasi instalova këtë shtojcë, u befasova kur zbulova se një sulmues me emrin admin u përpoq të depërtonte në blogun tim dhe pas përpjekjeve të pasuksesshme, ai u bllokua duke përdorur shtojcën për 24 orë. Dhe kanë kaluar vetëm disa orë nga instalimi i tij!

Më poshtë është një pamje e një pjese të letrës që mora dje në emailin tim:

Nuk mund të mos kujtoja se si zbulova dhe rregullova një "vrimë" në temën e blogut. Po sikur të lija gjithçka të dukshme ose të zgjidhja hyrjen e administratorit dhe një sulmues të merrte me mend fjalëkalimin?

Shpresoj se ju kam bindur, të dashur webmaster, se një shtojcë kaq e thjeshtë, por e lehtë nuk do të ndërhyjë në blogun tuaj.

Shkurtimisht rreth instalimit dhe konfigurimit të shtojcës Limit Login Attempts

Gjithçka është absolutisht e thjeshtë: thjesht gjeni shtojcën duke kërkuar në panelin e administratorit emrin përkatës, instaloni dhe aktivizoni.

Më pas nga Opsionet, duke zgjedhur shtojcën, shkoni te cilësimet. Në parim, nuk keni nevojë të ndryshoni asgjë këtu, por unë rekomandoj të kontrolloni kutinë që lejon një nga funksionet Limit Login Teptpts të dërgojë mesazhe në lidhje me përpjekjet për ndërhyrje të hakerëve në emailin tuaj. Kjo veçori e shtojcës do t'ju lejojë të merrni një përmbledhje të shpejtë të përpjekjeve për hakerim.

Si funksionon shtojca Limit Login Attempts

bazohet në kufizimin e aksesit në panelin e administratorit të faqes kur futni një hyrje dhe fjalëkalim. Me fjalë të tjera, ai krijon një kufi në numrin e përpjekjeve për autorizim, duke përfshirë mbështetjen e cookie-ve, bazuar në adresën IP të përdoruesit të internetit. Të kesh administratorin e faqes që të dalë nga paneli çdo herë dhe të pastrojë vazhdimisht cookies, është një detyrë jashtëzakonisht e pafalshme. Në këtë rast, shtojca Limit Login Attempts është thjesht e pazëvendësueshme.

Shtojca, ndër të tjera, siguron adresën IP të hakerit dhe mund të përdoret për të identifikuar dhe ndëshkuar hakerin me të gjitha mjetet e disponueshme.

Masa shtesë kundër hakimit

Ky artikull, siç tregova më lart, nuk është më i vetmi në lidhje me sigurinë e faqeve të WordPress. Në manualin tim të mëparshëm, por më të detajuar në lidhje me sigurinë e faqes në internet - ““, - kam prekur gjithashtu temën e shtojcave të krijuara për një funksion të ngjashëm. Në veçanti, rreth dy shtojca të tjera që mund të funksionojnë së bashku. Këto janë shtojcat e sulmit Login LockDown + Anti-XSS (ndoshta kombinimi Limit Login Attempts + Anti-XSS sulmi do të funksionojë në mënyrë të ngjashme), puna për të cilën flet Alexey Kozymaev në tutorialin e tij video. Vendosa ta postoj videon në këtë faqe.

Si një ilaç shtesë kundër sulmeve në faqe, unë rekomandoj gjithashtu një shtojcë, të cilën nuk e kam përmendur kurrë në postimet e mia. Quhet Blloko pyetjet e këqija (BBQ); Kjo shtojcë mbron automatikisht faqen tuaj nga kërkesat e dëmshme për URL. Instalimi bëhet përmes kërkimit në panelin e administratorit, nuk kërkohen cilësime.

(Vizituar 43 herë, 1 vizitë sot)

Shtojca WP Limit login Attempts është një nga shtojcat më të nevojshme, pasi mbron faqen nga teknika të tilla hakerash si sulmet me forcë brutale.

Thelbi i kësaj teknike është se sulmuesi përpiqet të depërtojë në zonën e administratorit duke hamendësuar një çift hyrje-fjalëkalim.

Të gjithë ndoshta kanë hasur tashmë paralajmërimin: "Ke mbetur edhe tre përpjekje" që shfaqet kur identifikohesh me një fjalëkalim. Kjo është pikërisht puna që bën kjo shtojcë.

Pas instalimit dhe aktivizimit të tij, në tastierë, në seksionin e parametrave, do të shfaqet një rresht me emrin e këtij moduli.

Pasi ta ndjekim do ta gjejmë veten në faqen e cilësimeve.

Cilësimet këtu janë të thjeshta dhe në Rusisht. Fotografia tregon cilësimet e paracaktuara. Le të shohim se çfarë mund të ndryshohet këtu.

Fusha e parë përcakton numrin e përpjekjeve shtesë. Kam mbajtur 3.

Në të dytën, caktohet kohëzgjatja e izolimit të parë. Mendoj se 20-30 minuta janë në rregull.

Fusha tjetër përcakton numrin e izolimeve, pas së cilës koha e izolimit do të rritet në 24 orë ose më shumë, sipas gjykimit tuaj.

E lashë 1 sepse kush tjetër veç një sulmuesi do të gabon tri herë, dhe më pas, pas gjysmë ore, edhe tre herë. Duhet të jesh një sklerotik i plotë për të bërë diçka të tillë pa qëllim.

Le ta lëmë lidhjen me sitin si "Lidhje direkte".

Përpunoni skedarët e identifikimit. "Po" në këtë rresht zgjidhet nëse kryeni të gjithë punën në sit në një shfletues. Për shembull, unë përdor katër shfletues, dhe kjo është arsyeja pse zgjodha "Jo".

Për të raportuar izolimin - është më mirë të kontrolloni të dyja kutitë, megjithëse posta nuk duket të jetë e dobishme për momentin, por nuk do të dëmtojë. Në të ardhmen, nëse vazhdoni të jeni të interesuar në programim, këto adresa mund të analizohen.

Kaq për cilësimet e shtojcave Kufizoni përpjekjet për hyrje përfunduar. Tani, nëse ktheheni në të njëjtën faqe pas një ose dy ditësh, do të shihni foton e mëposhtme në seksionin e statistikave.

Kjo do të thotë që dikush u përpoq shumë të hynte në zonën tuaj të administratorit duke përdorur një skript të veçantë, por ata dështuan. Mund të "Pastro regjistrin".

Plugins për sigurinë në këtë.


Kthehuni


Ndonjëherë ATTEMPT_.HLP dhe gabime të tjera të sistemit HLP mund të lidhen me probleme në regjistrin e Windows. Disa programe mund të përdorin skedarin ATTEMPT_.HLP, por kur ato programe çinstalohen ose modifikohen, ndonjëherë lihen pas regjistrimeve "jetimë" (të pasakta) të regjistrit HLP.

Në thelb, kjo do të thotë që ndërsa shtegu aktual i skedarit mund të ketë ndryshuar, vendndodhja e tij e mëparshme e gabuar është ende e regjistruar në Regjistrin e Windows. Kur Windows përpiqet të kërkojë këto referenca të pasakta të skedarëve (vendndodhjet e skedarëve në kompjuterin tuaj), mund të ndodhin gabime ATTEMPT_.HLP. Për më tepër, infeksioni me malware mund të ketë dëmtuar shënimet e regjistrit të lidhur me FreeBSD 2.2.1. Kështu, këto shënime të korruptuara të regjistrit HLP duhet të rregullohen për të rregulluar problemin në rrënjë.

Redaktimi manual i regjistrit të Windows për të hequr çelësat e pavlefshëm ATTEMPT_.HLP nuk rekomandohet nëse nuk jeni profesionist i shërbimit të PC. Gabimet e bëra gjatë redaktimit të regjistrit mund ta bëjnë kompjuterin tuaj të pafuqishëm dhe të shkaktojnë dëme të pariparueshme në sistemin tuaj operativ. Në fakt, edhe një presje e vendosur në vendin e gabuar mund të parandalojë nisjen e kompjuterit tuaj!

Për shkak të këtij rreziku, ne rekomandojmë shumë përdorimin e një pastruesi të besuar të regjistrit, si p.sh. WinThruster (zhvilluar nga Microsoft Gold Certified Partner) për të skanuar dhe riparuar çdo problem regjistri të lidhur me ATTEMPT_.HLP. Duke përdorur një pastrues regjistri, mund të automatizoni procesin e gjetjes së shënimeve të dëmtuara të regjistrit, referencave të skedarëve që mungojnë (si ai që shkakton gabimin ATTEMPT_.HLP) dhe lidhjeve të prishura brenda regjistrit. Para çdo skanimi, krijohet automatikisht një kopje rezervë, e cila ju lejon të zhbëni çdo ndryshim me një klikim dhe duke ju mbrojtur nga dëmtimet e mundshme të kompjuterit tuaj. Pjesa më e mirë është se eliminimi i gabimeve të regjistrit mund të përmirësojë në mënyrë dramatike shpejtësinë dhe performancën e sistemit.


Paralajmërim: Nëse nuk jeni përdorues i kompjuterit me përvojë, ne NUK ju rekomandojmë modifikimin manual të Regjistrit të Windows. Përdorimi i gabuar i redaktorit të regjistrit mund të shkaktojë probleme serioze që mund t'ju kërkojnë të riinstaloni Windows. Ne nuk garantojmë që problemet që rezultojnë nga përdorimi i gabuar i Redaktuesit të Regjistrit mund të korrigjohen. Ju përdorni redaktorin e regjistrit në rrezikun tuaj.

Përpara se të rivendosni manualisht regjistrin e Windows, duhet të krijoni një kopje rezervë duke eksportuar pjesën e regjistrit të lidhur me ATTEMPT_.HLP (për shembull, FreeBSD 2.2.1):

  1. Klikoni në butonin Filloni.
  2. fut " komandë"V shiriti i kërkimit... MOS KLIKO ENDE HYN!
  3. Ndërsa mbani të shtypur çelësat CTRL-Shift në tastierën tuaj, shtypni HYN.
  4. Do të shfaqet një kuti dialogu për qasje.
  5. Klikoni po.
  6. Kutia e zezë hapet me një kursor që pulson.
  7. fut " regedit" dhe shtypni HYN.
  8. Në Redaktorin e Regjistrit, zgjidhni çelësin e lidhur me ATTEMPT_.HLP (për shembull, FreeBSD 2.2.1) që dëshironi të rezervoni.
  9. Në meny Skedari zgjidhni Eksporto.
  10. Në listë Ruaje në zgjidhni dosjen ku dëshironi të ruani kopjen rezervë të çelësit FreeBSD 2.2.1.
  11. Në fushë Emri i skedarit Futni një emër për skedarin rezervë, për shembull "FreeBSD 2.2.1 rezervë".
  12. Sigurohuni në fushë Gama e eksportit vlera e zgjedhur Dega e zgjedhur.
  13. Klikoni Ruaj.
  14. Skedari do të ruhet me shtrirje .reg.
  15. Ju tani keni një kopje rezervë të hyrjes tuaj të regjistrit të lidhur me ATTEMPT_.HLP.

Hapat e mëposhtëm për modifikimin manual të regjistrit nuk do të përshkruhen në këtë artikull, pasi ato mund të dëmtojnë sistemin tuaj. Nëse dëshironi më shumë informacion rreth redaktimit manual të regjistrit, ju lutemi shikoni lidhjet më poshtë.