GNU/Linux >> Znalost Linux >  >> Cent OS

15 Linux Hardening Steps for CentOS 7 Server

Zpevnění serveru je proces zvýšení zabezpečení serveru pomocí různých metod. Máme spoustu kroků k zabezpečení serveru. Chraňte sebe a svou společnost před hackery, crackery a útočníky! Pomocí následujících kroků můžete ze zranitelného boxu udělat odolný server. Pomůže vám předcházet útokům zvenčí. Zde popisuji posílení serveru CentOS.

Co byste měli vědět

Tato příručka vás provede kroky potřebnými k posílení zabezpečení CentOS 7. Posílením systému bude více omezující a můžete narazit na problémy. Doporučuji vytvořit duplicitní virtuální počítač, který můžete použít k odstraňování problémů. Níže naleznete seznam základních kroků, které můžete a měli byste podniknout k posílení svých serverů ihned po zřízení.

1. Zabezpečený vzdálený přístup

Někdy přistupujeme k našemu serveru vzdálenými metodami a pokud to není bezpečnější, můžeme náš server odhalit. Možnosti OpenSSH se ovládají pomocí /etc/ssh/sshd_config soubor.

a. Zakázat metodu ověřování pomocí hesla SSH a povolit metodu ověřování pomocí veřejného klíče

Je důležité deaktivovat metodu vzdáleného přihlášení pomocí hesla a povolit autentizační veřejný klíč

Změňte ChallengeResponseAuthentication a Ověření heslem na ne pro deaktivaci metody hesla

Ověření pomocí hesla noChallengeResponseAuthentication no

Autorizovat ověřování pomocí veřejného klíče

RSAAuthentication yesPubkeyAuthentication yes

nyní můžete vygenerovat nový pár klíčů

# ssh-keygen -t rsa

b. Zakázat přímé přihlášení root

Je to rizikové zabezpečení, které umožňuje rootovi přihlásit se přímo k serveru. Místo toho byste se měli přihlásit do systému jako svůj účet a poté provést su - pro přihlášení jako root. Musíte tedy změnit PermitRootLogin ano na Číslo přihlášení PermitRoot

PermitRootLogin no

c. Změňte výchozí port pro naslouchání SSH (např. :8500)

Někdy se nedoporučuje používat výchozí port, protože jej zná celý svět a představuje bezpečnostní riziko. Je dobré personalizovat port, který se má používat

port 8500

2. Zabezpečení spouštěcího zavaděče heslem grub

Zabezpečením bootloaderu můžeme zabránit přístupu do režimu jednoho uživatele, který se automaticky přihlašuje jako root. To se provádí pomocí GRUB nastavením hesla, které je standardně uloženo v prostém textu.

Pro systém Debian

# grub-mkpasswd-pbkdf2

Pro Centos

# grub2-mkpasswd-pbkdf2

3. Poslouchání síťových portů

Po konfiguraci síťových služeb je důležité věnovat pozornost tomu, které porty skutečně naslouchají na síťových rozhraních systému. Jakékoli otevřené porty mohou být důkazem narušení.

# nmap -sT -O localhostSpuštění Nmap 6.40 ( http://nmap.org ) v 2017-06-07 23:13 Zpráva o skenování UTCNmap pro localhost (127.0.0.1)Hostitel běží (latence 0,000061 s).Jiné adresy pro localhost (nenaskenované):127.0.0.1rDNS záznam pro 127.0.0.1:centos-01Nezobrazeno:995 uzavřených portů STAV PORTU SERVICE22/tcp otevřený ssh25/tcp otevřený smtp80/tcp otevřený http111/tcp2049 rpcbin před> 

Chcete-li zobrazit seznam všech otevřených portů a souvisejících programů, použijte níže uvedený příkaz

# netstat -tulpnAktivní připojení k internetu (pouze servery)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Stát PID/Název programu tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0 .0.0:20048 0.0.0.0:* POSLECHNOUT 

4. Zúžit oprávnění

Zúžte oprávnění pro systémové soubory a složky, abyste omezili rizika.

# chmod 700 /root
# chmod 700 /var/log/audit
# chmod 740 /etc/rc.d/init.d/iptables
# chmod 740 /sbin/iptables
# chmod -R 700 /etc/skel
# chmod 600 /etc/rsyslog.conf
# chmod 640 /etc/security/access.conf
# chmod 600 /etc/sysctl.conf

5. Kontrola účtů na prázdná hesla

Jakýkoli účet s prázdným heslem znamená, že je otevřen pro neoprávněný přístup komukoli na webu a je součástí zabezpečení na serveru Linux. Chcete-li zkontrolovat účty s prázdným heslem, použijte příkaz níže

# cat /etc/shadow | awk -F:'($2==""){print $1}'paul

Pro bezpečnost je dobré zamknout všechny prázdné účty hesel:

# passwd -l paulZamykací heslo pro uživatele paul.passwd:Úspěch

6. Vylaďte parametry jádra

Sysctl je rozhraní pro zkoumání a dynamicky se měnící parametry v operačním systému Linux. Upravte /etc/sysctl.conf pro optimalizaci parametrů jádra

Sysctl je příkaz používaný k úpravě parametrů jádra za běhu.

# sysctl -a 
# sysctl -A 
# sysctl net.ipv4.conf.all.rp_filter 
To load settings, enter:   
# sysctl -p 

Zkopírujte a vložte následující obsah do /etc/sysctl.conf

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Disable ICMP routing redirects
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv6.conf.all.send_redirects=0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1 

7. Zakázat nežádoucí služby

Ze spouštění systému musíte odstranit všechny nežádoucí služby a démony (služby běžící na pozadí), které se spouštějí při spouštění v úrovni běhu 3 .

# chkconfig --list | grep '3:on' 

Chcete-li službu zakázat, zadejte:

# service serviceName stop
# chkconfig serviceName off 

8. Vyžadovat ověření pro režim jednoho uživatele

Při vstupu do režimu jednoho uživatele se doporučuje vyžadovat heslo root. Otevřete /etc/sysconfig/init soubor a přidejte řádek:

SINGLE=/sbin/sulogin 

9. Security Enhanced Linux (SELinux)

SELinux je sada bezpečnostních pravidel, která určují, který proces může přistupovat ke kterému souboru, adresářům, portům atd. Každý soubor, proces, adresář a port má speciální bezpečnostní štítek nazývaný kontexty SELinux. Kontext je jednoduše název, který používá zásada SELinux k určení, zda má proces přístup k souboru, adresáři nebo portu. Ve výchozím nastavení zásady nepovolují žádnou interakci, takže explicitní pravidla udělují přístup. Pokud neexistuje žádné pravidlo povolení, není povolen žádný přístup.

getenforce příkaz nám říká, v jakém režimu je SELinux.

Režim SELinux můžeme změnit na vynucování změnou SELINUX=enforcing v /etc/sysconfig/selinux

V tomto souboru jsou tři směrnice, jak je vysvětleno níže.

  • Vynucování: Bezpečnostní politika SELinux je vynucována.
  • Přípustné: SELinux místo vynucování vypisuje varování.
  • Zakázáno: SELinux je plně zakázán.

Stav SELinuxu můžete zkontrolovat pomocí příkazu

# sestatus
SELinux status: disabled 

Vidíte, že je zakázáno. Chcete-li to povolit, můžete použít

# setenforce enforcing 

10. Nastavte firewall pomocí iptables

iptables je aplikační program pro uživatelský prostor, který umožňuje správci systému konfigurovat tabulky poskytované Linux Kernel Firewall a řetězce a pravidla, která ukládá.

a. Zavřete všechny nechtěné porty

iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP 

b. Blokovat špatné IP

iptables -A INPUT -s IP_ADDRESS -j DROP 

c. Blokovat připojení k síťovému rozhraní

Chcete-li zablokovat připojení z konkrétní IP adresy na konkrétní síťové rozhraní, použijte příkaz

# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP 

d. Vypsat pravidla iptables

Všechna pravidla iptables můžete zobrazit příkazem

iptables -L -n -v 

11. Ověření systému souborů

Všechny soubory s povolenými bity SUID/SGID lze použít pro škodlivé aktivity, pokud má spustitelný soubor SUID/SGID bezpečnostní problém. Takový soubor může používat každý místní nebo vzdálený uživatel.

a. Identifikujte nežádoucí binární soubory SUID a SGID

find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls 

b. Identifikujte světové zapisovatelné soubory

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print 

c. Identifikujte osiřelé soubory a složky

find /dir -xdev \( -nouser -o -nogroup \) -print 

12. Ponechat /boot pouze pro čtení

Linuxové jádro a jeho související soubory jsou v adresáři /boot, který je ve výchozím nastavení pro čtení a zápis. Změna na pouze pro čtení snižuje riziko neoprávněné úpravy důležitých spouštěcích souborů. Musíme upravit /etc/fstab soubor a vložte řádek níže<

LABEL=/boot     /boot     ext2     defaults,ro     1 2 

13. Odepřít všechny obaly TCP

TCP wrappery mohou poskytnout rychlou a snadnou metodu pro řízení přístupu k aplikacím, které jsou k nim připojeny. Proto se doporučuje zablokovat všechny nepoužívané aplikace a poté autorizovat pouze aplikace, které budou používány.

Například zablokujeme všechny aplikace kromě autorizovaného ssh pouze

echo "ALL:ALL" >> /etc/hosts.deny 
echo "sshd:ALL" >> /etc/hosts.allow 

14. Uzamkněte cronjob pro neoprávněné uživatele

Cron se používá pro automatizaci úloh v určitém čase. Je možné určit, kdo smí a nemusí spouštět úlohy. To je řízeno pomocí souborů s názvem /etc/cron.allow a /etc/cron.deny . Chcete-li zamknout uživatele pomocí cron, jednoduše přidejte uživatelská jména do cron.deny a povolte uživateli spouštět cron add v souboru cron.allow.

# echo ALL >>/etc/cron.deny 

15. Zabezpečte server proti přetečení vyrovnávací paměti

Přetečení vyrovnávací paměti nastane, když se program nebo proces pokusí zapsat více dat do bloku paměti s pevnou délkou nebo vyrovnávací paměti, než je vyrovnávací paměť přidělena k podržení. Je důležité znovu chránit váš server před tímto útokem

a. Povolit ExecShield

Pomáhá předcházet rozbíjení zásobníku. Zneužití přetečení vyrovnávací paměti obvykle přepíše návratovou adresu, takže se funkce vrátí na adresu zvolenou útočníkem. Musíte povolit na aktuálním jádře

sysctl -w kernel.exec-shield=1 

Můžete také přidat řádek níže do /etc/sysctl.conf

kernel.exec-shield = 1 

b. Zaškrtněte / povolte ASLR

Randomizace rozvržení adresního prostoru je obranná funkce, která ztěžuje přetečení vyrovnávací paměti. ASLR útočníkovi ztěžuje nalezení adresy, na kterou by mohl skočit. Je třeba povolit náhodné umístění oblasti virtuální paměti nastavením runtime pro kernel.randomize_va_space

sysctl -q -n -w kernel.randomize_va_space=2 

Přidejte řádek níže do /etc/sysctl.conf pokud již neexistuje

kernel.randomize_va_space = 2 

Závěr

Toto jsou některé ze základních úvah pro nové uživatele, kteří se snaží provozovat své vlastní servery. Mějte na paměti, že sušenky jsou vždy o krok napřed; neustále hledají nějaké díry, kterými by se nabourali do vašeho serveru. Je důležité si uvědomit, že i když je lepší pozdě než nikdy, účinnost bezpečnostních opatření klesá, čím déle s jejich implementací čekáte


Cent OS
  1. Jak nainstalovat nebo upgradovat na PHP 7 na CentOS 7 Linux Server

  2. První kroky po získání CentOS VPS

  3. Pokročilé bezpečnostní kroky pro Linux

  1. 7 kroků k zabezpečení serveru Linux

  2. Jak nainstalovat DNS server na RHEL 8 / CentOS 8 Linux

  3. 7 nejlepších tipů na posílení zabezpečení pro server CentOS 8 / RHEL 8

  1. Vytvořte domácí laboratoř CentOS za hodinu

  2. Nainstalujte PHP Server Monitor na CentOS 7 Linux VPS

  3. Příkaz Linuxu, který čeká na spuštění serveru SSH