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.
- 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:
- Nmap - netværksscanner 29 Eksempler på Nmap-kommando
- Nessus - sikkerhedsscanner
- OpenVAS - bruges til at scanne efter sårbarheder og til omfattende sårbarhedsstyring.
- 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:
- AIDE - Advanced Intrusion Detection Environment - http://aide.sourceforge.net/
- ClamAV - Antivirusscanner https://www.clamav.net
- Rkhunter - Rootkit-scanner
- Lynis - Sikkerhedsrevision og scanningsværktøj til Linux
- Tripwire - Sikkerhed og dataintegritet http://www.tripwire.com/
- Fail2Ban - Forebyggelse af indtrængenetværk
- OSSEC - (HIDS) Host-baseret indtrængningsdetekteringssystem http://ossec.github.io/
- 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.