Modul 7 · 7.3
Login: adgangskoder, totrinsbekræftelse og brute force
Modul 7: Sikkerhed · Læsetid: 9 minutter
Læringsmål: Efter denne lektion kan du afskærme login til dit websted med stærke adgangskoder, totrinsbekræftelse og begrænsning af loginforsøg, og du ved hvad xmlrpc.php er.
Nøglebegreber: adgangskodeadministrator, adgangskodesætning, unik adgangskode, totrinsbekræftelse (2FA, TOTP), passkey, brute force, begrænsning af loginforsøg, wp-login.php på IP-adresse, xmlrpc.php, brugernavne der lækkes (REST, ?author=), applikationsadgangskoder
Adgangskoden: lang og unik
En god adgangskode har to egenskaber:
- Lang: længde betyder mere end specialtegn. En adgangskodesætning på fire eller fem tilfældige ord (
sigte-pingvin-oktober-lygte) er stærkere og lettere at huske endW8w00rd!. Anbefalingen fra sikkerhedsmyndigheder er en unik adgangskode på mindst 12 tegn, gerne en adgangskodesætning. - Unik: brugt ingen andre steder. Credential stuffing (lektion 7.1) virker kun hvis du genbruger en adgangskode.
Ingen kan huske snesevis af lange unikke adgangskoder. Brug derfor en adgangskodeadministrator: et program der laver, gemmer og udfylder dem for dig. Så skal du kun huske én adgangskode: den til administratoren selv, og den beskytter du også med totrinsbekræftelse.
Om en adgangskode er med i et kendt datalæk, kan du tjekke på haveibeenpwned.com. Står din e-mailadresse i et læk, så skift adgangskoden hos alle tjenester hvor du brugte den samme adgangskode.
Totrinsbekræftelse
Med totrinsbekræftelse (2FA) skal du ved login udover din adgangskode bruge endnu en ting: typisk en kode på seks cifre fra en app på din telefon (en authenticator, efter standarden TOTP). En indbrudstyv med din adgangskode kommer så stadig ikke ind.
WordPress har ikke indbygget totrinsbekræftelse. Du tilføjer det med en plugin. Der findes mange; en simpel er Two Factor, lavet af bidragydere til WordPress selv. Også sikkerhedsplugins har det ofte med. Vær ved valget opmærksom på:
- TOTP-apps og backup-koder (hvis du mister din telefon); koder via e-mail er svagere, fordi din mailboks også kan blive hacket;
- muligheden for at gøre det obligatorisk for administratorer og redaktører;
- passkeys: login med fingeraftryk, ansigt eller en sikkerhedsnøgle, uden adgangskode. Der findes også plugins til det. Passkeys er modstandsdygtige over for phishing, fordi de kun virker på det rigtige websted.
Slå også totrinsbekræftelse til på alt det der sidder omkring dit websted: dit kontrolpanel, din e-mail, din registrator og din adgangskodeadministrator. En indbrudstyv der overtager dit kontrolpanel, har ikke brug for din WordPress-adgangskode.
Brute force og begrænsning af loginforsøg
Et åbent WordPress-websted får hele dagen loginforsøg på wp-login.php, ofte med admin og lister med ofte brugte adgangskoder. Med en lang adgangskode og 2FA kommer de ikke ind, men hvert forsøg koster din server regnekraft (en fuld WordPress-opstart). Ved en stor bølge bliver dit websted langsomt.
WordPress selv begrænser ikke antallet af forsøg. Det der hjælper, i rækkefølge efter "stop det tidligst muligt":
- På serveren: mange hostingudbydere blokerer en IP-adresse der laver mange mislykkede forsøg på kort tid, allerede inden WordPress starter (med en firewall eller en webserverfunktion). Spørg din hostingudbyder hvad der sker.
- wp-login.php kun for din IP-adresse: med nogle få linjer i
.htaccess(ved LiteSpeed og Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Det virker godt hvis du har en fast IP-adresse. Har du ikke det (hjemme, på din telefon), lukker du dig selv ude når din adresse ændrer sig. Et alternativ er en ekstra adgangskode på loginsiden (en "beskyttet mappe", basic authentication) med en anden adgangskode end din WordPress-adgangskode.
- En plugin der begrænser forsøg: efter fem mislykkede forsøg bliver IP-adressen blokeret i en periode. Virker, men først når WordPress allerede kører, så regnearbejdet forbliver der.
At skjule eller omdøbe loginsiden (for eksempel /mit-login i stedet for /wp-login.php) reducerer støjen i din logfil. Det er ikke rigtig sikkerhed, og nogle plugins og temaer forventer standardadressen. Fint som ekstra tiltag, aldrig i stedet for en god adgangskode og 2FA.
xmlrpc.php
xmlrpc.php er en gammel grænseflade fra tiden før REST API'et, som apps og andre websteder bruger til at tale med WordPress. Den bruges stadig af nogle apps, af Jetpack og af et par integrationer. For de fleste websteder er den overflødig.
Indbrudstyve kan lide xmlrpc.php, fordi du i én forespørgsel kan afprøve hundredvis af adgangskoder på én gang (med funktionen system.multicall), og fordi den kan misbruges til angreb på andre websteder (pingbacks). Det du gør:
- Bruger du den ikke: blokér den. Nogle hostingudbydere, herunder WebOké, blokerer xmlrpc.php som standard på serveren. Ellers med en linje i
.htaccesseller med en sikkerhedsplugin. - Bruger du den (for eksempel til en app der har brug for det): lad den stå åben, men sørg for stærke adgangskoder, 2FA og en begrænsning af forsøg. Moderne apps bruger som regel REST API'et med en applikationsadgangskode (lektion 3.3).
Brugernavne der lækkes
I lektion 3.3 så du at WordPress viser en afledning af brugernavne:
https://example.com/?author=1sender videre til/author/<navn>/;https://example.com/wp-json/wp/v2/usersviser en liste med slugs for alle der har publiceret noget.
Er det slemt? Et brugernavn er ikke en adgangskode. Med en lang unik adgangskode og 2FA gør det ikke den store forskel. Men det giver en indbrudstyv halvdelen af login-oplysningerne og gør målrettet phishing nemmere. Rimelige tiltag:
- giv administratorer et brugernavn der ikke er deres offentlige navn, og publicér ikke med en administratorkonto (lektion 3.3);
- begræns brugerlisten i REST API'et med en sikkerhedsplugin eller nogle få linjer kode, hvis du ikke har brug for den. Luk ikke REST API'et helt: blokeditoren og mange plugins har brug for den.
Applikationsadgangskoder
Applikationsadgangskoder (lektion 3.3) er en sikker måde at give en app eller et system adgang på, men de omgår din totrinsbekræftelse: en app med en applikationsadgangskode har ikke brug for en kode. Opret dem kun når det er nødvendigt, til en konto med en lav rolle, og tilbagekald dem når du ikke bruger integrationen længere.
Opsummering
- Brug lange, unikke adgangskoder (adgangskodesætninger) i en adgangskodeadministrator.
- Slå totrinsbekræftelse til, med en plugin i WordPress og også på dit kontrolpanel, mail og registrator.
- Stop loginforsøg så tidligt som muligt: på serveren, med en IP-regel eller ekstra adgangskode, eller med en plugin.
- Blokér xmlrpc.php hvis du ikke bruger den.
- Lækkede brugernavne er ikke en katastrofe, men et vink: publicér ikke som administrator og begræns REST-brugerlisten hvis du ikke har brug for den.
Quiz
Opgave
Opgave A7.3: Hvad afslører dit websted ved login? Indtast adressen på dit websted og bevis at det er dit eget websted (med kontrolkoden fra opgaven, som TXT-record eller som fil). Programmet kontrollerer tre ting: om xmlrpc.php returnerer en liste med funktioner (åben) eller er blokeret, om /wp-json/wp/v2/users viser brugernavne (slugs), og hvor /?author=1 sender videre til. Angiv om du har brug for xmlrpc.php; hvis ikke, er en åben xmlrpc.php rød. Lækkede slugs er orange med forklaring.
Opgave D7.3: Slå totrinsbekræftelse til. Slå totrinsbekræftelse til for alle administratorer på dit WordPress-websted, og også på dit kontrolpanel og din e-mail. Gem backup-koderne i din adgangskodeadministrator. Afkryds for hver del at den er slået til, og noter hvilken metode du bruger (app, passkey, e-mail) og hvor backup-koderne opbevares. Noter også hvordan du beskytter wp-login.php yderligere, og hvorfor du vælger den metode.
Opgave D7.3: Slå totrinsbekræftelse til
Denne opgave laver du selv; ingen tjekker den. Afkryds hvad du har gjort, og markér opgaven som udført.
Brug hellere en app eller passkey end kun e-mail til administratorer. En fast IP-adresse kan du give adgang til wp-login.php, men med skiftende adresser passer en begrænsning af loginforsøg bedre.
Dine afkrydsninger og noter forbliver kun i denne browser; vi sender dem ingen steder hen. Er du logget ind, gemmer vi kun i Mine kurser, at du har udført opgaven.
Læs mere
Disse artikler beskriver trinene i kontrolpanelerne hos WebOké; i andre kontrolpaneler fungerer det på lignende måde.
- DirectAdmin vejledning 3.7: Sikre adgangskoder, og hvad du gør ved en lækket adgangskode
- To-faktor-godkendelse i Mit WebOké og opsætning af en authenticator-app
- WordPress: adgang til xmlrpc.php virker ikke
- Beskyt wp-login.php i WordPress
- DirectAdmin vejledning 15.9: Adgangskodebeskyttede mapper
- Sikkert login (vejledning om digital sikkerhed): https://veiliginternetten.nl/veilig-inloggen/
- Brute force-angreb (developer.wordpress.org, engelsk): https://developer.wordpress.org/advanced-administration/security/brute-force/
