23 CentOS-serverhærdningssikkerhedstip - Del 2


Fortsættelse af den foregående tutorial om Sådan sikres og hærdes CentOS-server i denne artikel vil vi diskutere andre sikkerhedstip, der vil blive præsenteret på nedenstående tjekliste.

  1. 20 CentOS-serverhærdningssikkerhedstip - Del 1

21. Deaktiver ubrugelige SUID- og SGID-kommandoer

Hvis setuid- og setgid-bitene er indstillet på binære programmer, kan disse kommandoer køre opgaver med andre bruger- eller grupperettigheder, såsom root-rettigheder, der kan afsløre alvorlige sikkerhedsproblemer.

Ofte kan bufferoverskridelsesangreb udnytte sådanne eksekverbare binære filer til at køre uautoriseret kode med rettighederne til en root-strømbruger.

# find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

For at fjerne indstillingen af setuid-bit skal du udføre nedenstående kommando:

# chmod u-s /path/to/binary_file

For at deaktivere setgid bit kør nedenstående kommando:

# chmod g-s /path/to/binary_file

22. Kontroller for ikke-ejede filer og kataloger

Filer eller mapper, der ikke ejes af en gyldig konto, skal slettes eller tildeles med tilladelser fra en bruger og gruppe.

Udsted nedenstående findkommando for at liste filer eller mapper uden bruger og gruppe.

# find / -nouser -o -nogroup -exec ls -l {} \;

23. Liste over verdensskrivelige filer

At opbevare en verdensskrivelig fil på systemet kan være farligt, fordi enhver kan ændre dem. Udfør nedenstående kommando for at få vist ordskrivbare filer undtagen Symlinks, som altid er verdensskrivelige.

# find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Opret stærke adgangskoder

Opret en adgangskode på mindst otte tegn. Adgangskoden skal indeholde cifre, specialtegn og store bogstaver. Brug pwmake til at generere et kodeord på 128 bits fra/dev/urandom-fil.

# pwmake 128

25. Anvend politik med stærk adgangskode

Tving systemet til at bruge stærke adgangskoder ved at tilføje nedenstående linje i /etc/pam.d/passwd-filen.

password required pam_pwquality.so retry=3

Tilføjelse af ovenstående linje kan den indtastede adgangskode ikke indeholde mere end 3 tegn i en monoton sekvens, såsom abcd, og mere end 3 identiske på hinanden følgende tegn, såsom 1111.

For at tvinge brugere til at bruge en adgangskode med en længde på mindst 8 tegn, inklusive alle klasser af tegn, skal du kontrollere styrken for tegnsekvenser og på hinanden følgende tegn tilføje følgende linjer til /etc/security/pwquality.conf-filen.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Brug adgangskodealdring

Chage-kommandoen kan bruges til ældning af brugeradgangskoder. For at indstille en brugers adgangskode til at udløbe om 45 dage skal du bruge følgende kommando:

# chage -M 45 username

Brug kommandoen for at deaktivere udløbstid for adgangskode:

# chage -M -1 username

Tving øjeblikkelig udløb af adgangskode (brugeren skal ændre adgangskoden ved næste login) ved at køre følgende kommando:

# chage -d 0 username

27. Lås konti

Brugerkonti kan låses ved at udføre kommandoen passwd eller usermod:

# passwd -l username
# usermod -L username

For at låse op for konti skal du bruge indstillingen -u til kommandoen passwd og indstillingen -U til usermod.

28. Forhindre adgang til kontoshell

For at forhindre en systemkonto (almindelig konto eller servicekonto) for at få adgang til en bash-skal skal du ændre rodskal til/usr/sbin/nologin eller/bin/false i filen/etc/passwd ved at udstede kommandoen nedenfor:

# usermod -s /bin/false username

For at ændre shell, når du opretter en ny bruger, skal du udføre følgende kommando:

# useradd -s /usr/sbin/nologin username

29. Lås virtuel brugerkonsol med vlock

vlock er et program, der bruges til at låse en multipel session på Linux-konsol. Installer programmet, og start med at låse din terminalsession ved at køre nedenstående kommandoer:

# yum install vlock
# vlock

30. Brug et centraliseret system til at styre konti og godkendelse

Brug af et centraliseret godkendelsessystem kan i høj grad forenkle kontoadministration og kontrol. Tjenester, der kan tilbyde denne type kontostyring, er IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS eller Winbind.

Nogle af disse tjenester er som standard stærkt sikret med kryptografiske protokoller og kryptografi med symmetrisk nøgle, såsom Kerberos.

31. Tving til skrivebeskyttet montering af USB-medier

Ved hjælp af blockdev-værktøjet kan du tvinge alle flytbare medier til at blive monteret som skrivebeskyttet. For eksempel skal du oprette en ny udev-konfigurationsfil med navnet 80-readonly-usb.rules i /etc/udev/rules.d/ biblioteket med følgende indhold:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Anvend derefter reglen med nedenstående kommando:

# udevadm control -reload

32. Deaktivering af rodadgang via TTY

For at forhindre rodkontoen i at udføre systemlogin via alle konsollenheder (TTY) skal du slette indholdet af sikker fil ved at skrive følgende kommandoterminalprompt som root.

# cp /etc/securetty /etc/securetty.bak
# cat /dev/null > /etc/securetty

Husk, at denne regel ikke gælder for SSH-login-sessioner
For at forhindre rodlogin via SSH skal du redigere filen/etc/ssh/sshd_config og tilføje nedenstående linje:

PermitRootLogin no

33. Brug POSIX ACL'er til at udvide systemtilladelser

Adgangskontrollister kan definere adgangsrettigheder for mere end blot en enkelt bruger eller gruppe og kan specificere rettigheder til programmer, processer, filer og kataloger. Hvis du indstiller ACL i en mappe, arver dens efterkommere automatisk de samme rettigheder.

For eksempel,

# setfacl -m u:user:rw file
# getfacl file

34. Opsæt SELinux i Enforce-tilstand

SELinux-forbedringen af Linux-kernen implementerer MAC-politik (Mandatory Access Control), der giver brugerne mulighed for at definere en sikkerhedspolitik, der giver detaljerede tilladelser til alle brugere, programmer, processer, filer og enheder.

Kernens beslutninger om adgangskontrol er baseret på al den sikkerhedsrelevante kontekst og ikke på den godkendte brugeridentitet.

For at få Selinux-status og håndhæve politik skal du køre nedenstående kommandoer:

# getenforce
# setenforce 1
# sestatus

35. Installer SELinux ekstra hjælpeprogrammer

Installer policycoreutils-python-pakke, der giver yderligere Python-værktøjer til drift af SELinux: audit2allow, audit2why, chcat og semanage.

Brug følgende kommando for at få vist alle boolske værdier sammen med en kort beskrivelse:

# semanage boolean -l

For eksempel, for at få vist og indstille værdien af httpd_enable_ftp_server, skal du køre nedenstående kommando:

# getsebool httpd_enable_ftp_server

For at få værdien af en boolsk vedvarende på tværs af genstart, skal du angive indstillingen -P til setsebool, som vist i følgende eksempel:

# setsebool -P httpd_enable_ftp_server on

36. Brug centraliseret logserver

Konfigurer rsyslog-dæmonen til at sende følsomme værktøjs-logbeskeder til en central log-server. Overvåg også logfiler ved hjælp af logwatch-værktøjet.

Afsendelse af logbeskeder til en fjernserver sikrer, at når systemet er kompromitteret, kan de ondsindede brugere ikke skjule deres aktivitet fuldstændigt og altid efterlade spor på eksterne logfiler.

37. Aktivér procesregnskab

Aktivér procesregnskab ved at installere psacct-hjælpeprogrammet, og brug kommandoen lastcomm til at vise oplysninger om tidligere udførte kommandoer som registreret i systemregnskabsfilen og sa for at opsummere oplysninger om tidligere udførte kommandoer som registreret i systemregnskabsfilen.

38. Hærdning /etc/sysctl.conf

Brug følgende regler for kerneparametre til at beskytte systemet:

net.ipv4.conf.all.accept_source_route=0
ipv4.conf.all.forwarding=0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Deaktiver accept og afsendelse af ICMP-omdirigerede pakker, medmindre det specifikt kræves.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.rp_filter=2

Ignorer alle ICMP-ekkoanmodninger (indstillet til 1 for at aktivere)

net.ipv4.icmp_echo_ignore_all = 0

39. Brug VPN-tjenester til at få adgang til dine lokaler over ubeskyttede offentlige netværk

Brug altid VPN-tjenester til operatører for at få fjernadgang til LAN-lokaler via Internettet. Sådanne typer tjenester kan konfigureres ved hjælp af en gratis open source-løsning, såsom Epel Repositories).

40. Udfør ekstern systemscanning

Evaluer din systemsikkerhed for sårbarheder ved at scanne systemet fra eksterne punkter over dit LAN ved hjælp af specifikke værktøjer såsom:

  1. Nmap - netværksscanner 29 Eksempler på Nmap-kommando
  2. Nessus - sikkerhedsscanner
  3. OpenVAS - bruges til at scanne efter sårbarheder og til omfattende sårbarhedsstyring.
  4. Nikto - en glimrende script-scanner til fælles Common Gateway Interface (CGI) Scan websårbarhed i Linux

41. Beskyt systemet internt

Brug intern systembeskyttelse mod vira, rootkits, malware og installer som en god praksis indbrudsdetekteringssystemer, der kan registrere uautoriseret aktivitet (DDOS-angreb, portscanning), såsom:

  1. AIDE - Advanced Intrusion Detection Environment - http://aide.sourceforge.net/
  2. ClamAV - Antivirusscanner https://www.clamav.net
  3. Rkhunter - Rootkit-scanner
  4. Lynis - Sikkerhedsrevision og scanningsværktøj til Linux
  5. Tripwire - Sikkerhed og dataintegritet http://www.tripwire.com/
  6. Fail2Ban - Forebyggelse af indtrængenetværk
  7. OSSEC - (HIDS) Host-baseret indtrængningsdetekteringssystem http://ossec.github.io/
  8. Mod_Security - Beskyt brutal kraft eller DDoS-angreb

42. Rediger variabler for brugermiljø

Tilføj dato- og tidsformat for at gemme kommandokørsel ved at udstede kommandoen nedenfor:

# echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Tving til øjeblikkeligt at optage HISTFILE hver gang en kommando er skrevet (i stedet for logout):

# echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Begræns timeout-login-sessionen. Riv automatisk skallen ned, når der ikke udføres nogen aktivitet i en inaktiv periode. Meget nyttigt at automatisk afbryde SSH-sessioner.

# echo ‘TMOUT=120’ >> .bashrc

Anvend alle reglerne ved at udføre:

# source .bashrc

43. Backup af data

Brug LVM-snapshots osv. Til at gemme en kopi af dit system, helst uden for stedet, i tilfælde af systemfejl.

Hvis systemet bliver kompromitteret, kan du udføre gendannelse af data fra tidligere sikkerhedskopier.

Endelig skal du ikke glemme, at uanset hvor mange sikkerhedsforanstaltninger og kontraforanstaltninger du træffer for at holde dit system sikkert, vil du aldrig være 100% helt sikker, så længe din maskine er tilsluttet og tændt.