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:* POSLECHNOUT4. 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.conf5. 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}'paulPro bezpečnost je dobré zamknout všechny prázdné účty hesel:
# passwd -l paulZamykací heslo pro uživatele paul.passwd:Úspěch6. 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ádraSysctl 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