Avanserte SSH sikkerhet tips og tricks

SSH server konfigurasjonsfilen ligger i /etc /ssh /sshd_conf. Du må starte SSH-tjenesten etter hver endring du gjør til at filen for at endringene skal tre i kraft.

Endre SSH lytteporten

Som standard lytter SSH for tilkoblinger på port 22. Angripere bruker port scanner programvare for å se om vertene kjører en SSH-tjenesten. Det er lurt å endre SSH port til et tall som er høyere enn 1024 fordi de fleste portskannere (inkludert nmap) som standard ikke skanne høye porter.

Åpne /etc /ssh /sshd_config fil og ser for linjen som sier:

Port 22

Endre portnummeret og start SSH-tjenesten:

/etc/init.d/ssh restart

Tillat bare SSH protokoll 2

Det er to versjoner av SSH-protokollen. Ved hjelp av SSH protokollen to bare er mye sikrere; SSH protokoll 1 er underlagt sikkerhetsproblemer inkludert man-in-the-middle og innsetting angrep. Redigere /etc /ssh /sshd_config og se etter linjen som sier:

Protocol 2,1

Endre linjen slik det står bare protokollen 2.

Tillat bare spesifikke brukere å logge inn via SSH

Du bør ikke tillate root pålogginger via SSH, fordi dette er en stor og unødvendig sikkerhetsrisiko. Hvis en angriper får root login for systemet ditt, kan han gjøre mer skade enn om han får normal bruker logikk. Konfigurere SSH-server, slik at root brukeren ikke har lov til å logge på Finn linjen som sier:.

PermitRootLogin ja

Endre ja til nei og starte tjenesten. Deretter kan du logge inn med en hvilken som helst annen definert bruker og bytte til root hvis du ønsker å bli en superbruker.

Det er lurt å lage en dummy lokal bruker med absolutt ingen rettigheter på systemet og bruke den brukeren til Logg inn SSH. På den måten ingen skade kan gjøres hvis brukerkontoen er kompromittert. Når du lager denne brukeren, sørg for at det er i hjulet gruppen, slik at du kan bytte til superbruker.

Hvis du vil ha en liste over brukere som er de eneste som kunne logge inn via SSH, kan du angi dem i sshd_config filen. For eksempel, la oss si at jeg ønsker å tillate brukere Anze, dasa, og Kimy å logge inn via SSH. På slutten av sshd_config fil vil jeg legge til en linje som dette:

AllowUsers Anze dasa Kimy

Opprett en tilpasset SSH banner

Hvis du ønsker alle brukere som kobler seg til SSH-tjenesten for å se en bestemt melding, kan du lage en tilpasset SSH banner. Bare lage en tekstfil (i mitt eksempel i /etc/ssh-banner.txt) og sette noen form for tekstmelding i det; for eksempel:

***************************************** ************************* Dette er en privat SSH-tjenesten. Du er ikke ment å være her. ** Vennligst la umiddelbart. ************************************************** ****************

Når du er ferdig å redigere, lagre filen. I sshd_conf filen, finne en linje som sier:

#Banner /etc/issue.net

Uncomment linjen og endre banen til den tilpassede SSH banner tekstfil
<. p> Ved hjelp av DSA offentlig nøkkel-autentisering

I stedet for å bruke innloggingsnavn og passord for SSH-godkjenning, kan du bruke DSA offentlige nøkler for autentisering. Merk at du kan ha begge innloggingsnavn og DSA offentlig nøkkel godkjenning aktivert samtidig. Å ha en DSA offentlige nøkler godkjenning aktivert gjør systemet skuddsikker mot ordbok angrep, fordi du ikke trenger et brukernavn og passord for å logge inn SSH-tjenesten. I stedet må du et par av DSA nøkler - en offentlig og en privat. Du holder den private nøkkelen på maskinen din og kopiere den offentlige nøkkelen til serveren. Når du ønsker å logge inn på en SSH sesjon, sjekker serveren nøklene, og hvis de stemmer, er du droppet inn i skallet. Hvis tastene ikke stemmer overens, er du koblet fra.

I dette eksempelet privat maskin (som jeg vil koble til serveren) er station1 og servermaskinen er server1. På begge maskinene har jeg samme hjem mappe; Dette vil ikke fungere hvis hjemmemappene er forskjellige på klient og servermaskinen. Først må du lage et par nøkler på din egen maskin med kommandoen ~ $ ssh-keygen -t dsa. Du vil bli bedt om en passfrase for din private nøkkel, men du kan la det stå tomt fordi dette ikke er en anbefalt metode. En nøkkelpar genereres: den private nøkkelen ligger i ~ /.ssh /id_dsa og den offentlige nøkkelen ligger i .ssh /id_dsa.pub.

Deretter kopiere innholdet i ~ /.ssh /id_dsa.pub å SERVER1 inn i ~ /.ssh /authorized_keys filen. Innholdet i ~ /.ssh /id_dsa.pub filen skal se omtrent slik ut:

~ $ cat .ssh /id_dsa.pubssh-DSS AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwMWcJYDusNGAIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604ZTdrLZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7nM7aKxIBPDrQwKNyPQAAAIEAq+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5puFe7eplmr6t7Ljl7JdkfEA5De0k3WDs9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0AMRC7ngIe6btaNIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rbWOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP34fST1amc0YNeBp28EQi0xPEFUD0IXzZtXtHVLziA1/NuzY= Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se

Hvis filen ~ /.ssh /authorized_keys allerede eksisterer, føyer innholdet i filen ~ /.ssh /id_dsa.pub til filen ~ /.ssh /authorized_keys på server1 . Det eneste som gjenstår å gjøre er å sette de riktige tillatelsene til ~ /.ssh /authorized_keys fil på server1:

~ $ chmod 600 ~ /.ssh /authorized_keys

Nå, konfigurere sshd_conf fil å bruke DSA nøkler godkjenning. Kontroller at du har følgende tre linjer uncommented:

RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile% h /.ssh /authorized_keys

Start tjenesten. Hvis du har konfigurert alt riktig, skal du nå kunne SSH til serveren din og faller direkte inn i ditt hjem mappe uten interaksjon.

Hvis du ønsker å bruke DSA autentisering bare, sørg for at du uncomment og endre PasswordAuthentication linje i sshd_config fra ja til nei:

PasswordAuthentication ingen

Hvis noen prøver å koble til SSH-tjenesten, og ikke har en offentlig nøkkel på serveren, han vil bli avvist uten selv se logikk spørsmål med denne feilen:

Permission denied (publickey).

Ved hjelp av TCP wrappers slik at bare bestemte verter å koble

Denne tilnærmingen er nyttig hvis du vil at bare bestemte verter på et nettverk for å kunne koble til SSH-tjenesten, men du ønsker ikke å bruke eller rote opp iptables konfigurasjon. I stedet kan du bruke TCP wrappers; i dette tilfellet sshd TCP omslaget. Jeg vil gjøre en regel for å tillate bare vertene på min lokale subnett 192.168.1.0/24 og ekstern vert 193.180.177.13 å koble til min SSH-tjenesten.

Som standard TCP wrappers først se i /etc /hosts. nekte fil for å se hva vertene blir nektet for hva tjenesten. Deretter ser TCP wrapper i /etc/hosts.allow filen for å se om det er noen regler som ville tillate vertene å koble til en bestemt tjeneste. Jeg skal lage en regel som dette i /etc/hosts.deny:

sshd: ALL

Dette betyr at som standard alle verter er forbudt å få tilgang til SSH-tjenesten. Dette må være her, ellers alle verter ville ha tilgang til SSH-tjenesten, siden TCP wrappers første ser inn hosts.deny fil, og hvis det er ingen regel om blokkering SSH-tjenesten, kan noen vert koble.

Deretter oppretter du en regel i /etc/hosts.allow slik at bare bestemte verter (som definert tidligere) å bruke SSH-tjenesten:

sshd: 192.168.1 193.180.177.13

Nå bare vert fra 192.168.1.0/24 nettverket og 193.180.177.13 vert kan få tilgang til SSH-tjenesten. Alle andre verter er frakoblet før de selv kommer til login prompt, og får en feilmelding som dette:

ssh_exchange_identification: Connection stengt av eksterne verts

Ved hjelp av iptables slik at bare bestemte verter å koble

Et alternativ til TCP wrappers (selv om du kan bruke begge samtidig) er å begrense SSH tilgang med iptables. Her er et enkelt eksempel på hvordan du kan tillate bare en bestemt vert å koble til SSH-tjenesten:

~ # iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 - dport 22 -j ACCEPT

Og sørg for at ingen andre har tilgang til SSH-tjenesten:

~ # iptables -A INPUT -p tcp --dport 22 -j DROP

Lagre nye reglene, og du er ferdig.

SSH tid-lock triks

Du kan også bruke ulike iptables parametere for å begrense tilkoblinger til SSH-tjenesten for bestemte tidsperioder. Du kan bruke /sekund, /minutt, /time, eller /dag bryter i noen av de følgende eksempler.

I det første eksemplet, hvis en bruker skriver inn feil passord, tilgang til SSH-tjenesten er blokkert i ett minutt, og brukeren får bare én innlogging prøve per minutt fra det øyeblikket på:

~ # iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m grense --limit 1 /minutt --limit-burst en -J GODTA ~ # iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP

I en andre eksempelet er iptables satt til å tillate bare vert 193.180.177.13 å koble til SSH-tjenesten. Etter tre mislykkede påloggings forsøk, iptables lar verten bare én innlogging prøve per minutt:

~ # iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m grense --limit 1 /minutt --limit-burst en -J GODTA ~ # iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

Konklusjon

Disse funksjonene er ikke vanskelig å konfigurere, men de er svært kraftige teknikker for sikring SSH-tjenesten. Det er en liten pris å betale for en god natts søvn. Anmeldelser



Previous:
Next Page: