23 Tipy na zabezpečení serveru CentOS – část 2
V návaznosti na předchozí návod Jak zabezpečit a Harden CentOS server v tomto článku probereme další bezpečnostní tipy, které budou uvedeny v níže uvedeném kontrolním seznamu.
Požadavky
- 20 Bezpečnostních tipů CentOS Server Hardening – Část 1
21. Zakažte nepotřebné příkazy SUID a SGID
Pokud jsou bity setuid a setgid nastaveny na binárních programech, mohou tyto příkazy spouštět úlohy s jinými právy uživatele nebo skupiny, jako jsou oprávnění root, která může odhalit vážné bezpečnostní problémy.
Útoky s přetečením vyrovnávací paměti mohou často zneužít takové spustitelné binární soubory ke spuštění neoprávněného kódu s právy uživatele root.
find / -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
Chcete-li zrušit nastavení bitu setuid, proveďte následující příkaz:
chmod u-s /path/to/binary_file
Chcete-li zrušit nastavení bitu setgid, spusťte níže uvedený příkaz:
chmod g-s /path/to/binary_file
22. Zkontrolujte, zda nemáte Nevlastněné soubory a adresáře
Soubory nebo adresáře, které nevlastní platný účet, musí být odstraněny nebo jim musí být přiřazena oprávnění od uživatele a skupiny.
Vydáním níže uvedeného příkazu find zobrazíte soubory nebo adresáře bez uživatele a skupiny.
find / -nouser -o -nogroup -exec ls -l {} \;
23. Vypište soubory World-Writeable
Ponechat v systému soubor, do kterého lze zapisovat, může být nebezpečné, protože je může kdokoli upravovat. Chcete-li zobrazit soubory zapisovatelné slovem, spusťte níže uvedený příkaz, kromě symlinků, do kterých lze vždy zapisovat do celého světa.
find / -path /proc -prune -o -perm -2 ! -type l –ls
24. Vytvořte silná hesla
Vytvořte heslo o minimální délce osmi znaků. Heslo musí obsahovat číslice, speciální znaky a velká písmena. Pomocí pwmake vygenerujte 128bitové heslo ze souboru /dev/urandom.
pwmake 128
25. Použijte zásady silného hesla
Přinutíte systém používat silná hesla přidáním níže uvedeného řádku do souboru /etc/pam.d/passwd.
password required pam_pwquality.so retry=3
Přidáním výše uvedeného řádku nesmí zadané heslo obsahovat více než 3 znaky v monotónní sekvenci, například abcd, a více než 3 stejné po sobě jdoucí znaky, například 1111.
Chcete-li přinutit uživatele, aby používali heslo s minimální délkou 8 znaků, včetně všech tříd znaků, zkontrolujte sílu sekvencí znaků a po sobě jdoucích znaků, přidejte následující řádky do /etc/security /pwquality.conf.
minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3
26. Použijte stárnutí hesel
Příkaz chage lze použít pro stárnutí hesla uživatele. Chcete-li nastavit, aby platnost hesla uživatele vypršela za 45 dní, použijte následující příkaz:
chage -M 45 username
Chcete-li zakázat dobu platnosti hesla, použijte příkaz:
chage -M -1 username
Vynutit okamžité vypršení platnosti hesla (uživatel si musí heslo změnit při příštím přihlášení) spuštěním následujícího příkazu:
chage -d 0 username
27. Uzamčení účtů
Uživatelské účty lze uzamknout spuštěním příkazu passwd nebo usermod:
passwd -l username
usermod -L username
K odemknutí účtů použijte volbu -u
pro příkaz passwd a volbu -U
pro usermod.
28. Zabraňte přístupu do prostředí účtů
Chcete-li zabránit systémovému účtu (běžnému účtu nebo servisnímu účtu) získat přístup k shellu bash, změňte kořenový shell na /usr/sbin/nologin nebo /bin/false v soubor /etc/passwd zadáním příkazu níže:
usermod -s /bin/false username
Chcete-li změnit shell při vytváření nového uživatele, zadejte následující příkaz:
useradd -s /usr/sbin/nologin username
29. Uzamkněte virtuální uživatelskou konzoli pomocí vlock
vlock je program používaný k uzamčení jedné vícenásobné relace na konzole Linux. Nainstalujte program a začněte zamykat relaci terminálu spuštěním následujících příkazů:
yum install vlock
vlock
30. Ke správě účtů a ověřování používejte centralizovaný systém
Použití centralizovaného autentizačního systému může výrazně zjednodušit správu a kontrolu účtů. Služby, které mohou nabídnout tento typ správy účtů, jsou IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS nebo Winbind.
Některé z těchto služeb jsou ve výchozím nastavení vysoce zabezpečené pomocí kryptografických protokolů a kryptografie se symetrickým klíčem, jako je Kerberos.
31. Vynutit připojení USB média pouze pro čtení
Pomocí nástroje blockdev můžete vynutit připojení všech vyměnitelných médií jako pouze pro čtení. Vytvořte například nový konfigurační soubor udev s názvem 80-readonly-usb.rules v adresáři /etc/udev/rules.d/ s následujícím obsahem:
SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"
Poté aplikujte pravidlo pomocí níže uvedeného příkazu:
udevadm control -reload
32. Zakázání přístupu root přes TTY
Chcete-li zabránit účtu root v přihlášení do systému prostřednictvím všech konzolových zařízení (TTY), vymažte obsah souboru securetty zadáním následujícího příkazového terminálu jako root.
cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty
Pamatujte, že toto pravidlo se nevztahuje na přihlašovací relace SSH
Chcete-li zabránit přihlášení root přes SSH, upravte soubor /etc/ssh/sshd_config a přidejte následující řádek:
PermitRootLogin no
33. Použijte POSIX ACL k rozšíření systémových oprávnění
Přístupové seznamy mohou definovat přístupová práva pro více než jen jednoho uživatele nebo skupinu a mohou specifikovat práva pro programy, procesy, soubory a adresáře. Pokud nastavíte ACL na adresář, jeho potomci automaticky zdědí stejná práva.
Například,
setfacl -m u:user:rw file
getfacl file
34. Nastavte SELinux v režimu Enforce
Vylepšení SELinux linuxového jádra implementuje politiku povinného řízení přístupu (MAC), která uživatelům umožňuje definovat bezpečnostní politiku, která poskytuje podrobná oprávnění pro všechny uživatele, programy, procesy, soubory a zařízení.
Rozhodnutí jádra o řízení přístupu jsou založena na veškerém kontextu relevantním pro zabezpečení, nikoli na identitě ověřeného uživatele.
Chcete-li získat stav Selinux a vynutit zásady, spusťte níže uvedené příkazy:
getenforce
setenforce 1
sestatus
35. Nainstalujte další nástroje SELinux
Nainstalujte balíček policycoreutils-python, který poskytuje další nástroje Pythonu pro provoz SELinux: audit2allow, audit2why, chcat a správa.
Chcete-li zobrazit všechny booleovské hodnoty spolu s krátkým popisem, použijte následující příkaz:
semanage boolean -l
Chcete-li například zobrazit a nastavit hodnotu httpd_enable_ftp_server, spusťte níže uvedený příkaz:
getsebool httpd_enable_ftp_server
Chcete-li, aby hodnota boolean přetrvala i po restartu, zadejte volbu -P
na setsebool, jak je znázorněno na následujícím příkladu:
setsebool -P httpd_enable_ftp_server on
36. Použijte centralizovaný server protokolů
Nakonfigurujte démona rsyslog tak, aby odesílal citlivé protokolové zprávy obslužných programů na centralizovaný protokolový server. Také sledujte soubory protokolu pomocí nástroje logwatch.
Odesílání zpráv protokolu na vzdálený server zajišťuje, že jakmile byl systém napaden, uživatelé se zlými úmysly nemohou zcela skrýt svou činnost a vždy zanechají stopy ve vzdálených souborech protokolu.
37. Povolte účtování procesů
Povolte účtování procesů instalací nástroje psacct a použijte příkaz lastcomm k zobrazení informací o dříve provedených příkazech, jak jsou zaznamenány v systémovém účetním souboru, a sa ke shrnutí informací o dříve provedených příkazech, jak jsou zaznamenány. v systémovém účetním souboru.
38. Kalení /etc/sysctl.conf
K ochraně systému použijte následující pravidla parametrů jádra:
Zakázání směrování zdroje
net.ipv4.conf.all.accept_source_route=0
Zakázat předávání IPv4
ipv4.conf.all.forwarding=0
Zakázat IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Zakažte přijímání a odesílání paketů přesměrovaných ICMP, pokud to není výslovně vyžadováno.
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
Zakázat přesměrování zpětné cesty
net.ipv4.conf.all.rp_filter=2
Ignorovat všechny požadavky ICMP echo (nastavením na 1 povolit)
net.ipv4.icmp_echo_ignore_all = 0
39. Použijte služby VPN pro přístup k vašemu areálu přes nechráněné veřejné sítě
Vždy používejte služby VPN pro operátory ke vzdálenému přístupu do prostor LAN přes internet. Takové typy služeb lze konfigurovat pomocí bezplatného řešení s otevřeným zdrojovým kódem, jako je OpenVPN, nebo pomocí proprietárního řešení, jako je Cisco VPN (nainstalujte si nástroj příkazového řádku vpnc poskytovaný společností Epel Repositories).
40. Proveďte kontrolu externího systému
Vyhodnoťte zabezpečení vašeho systému z hlediska zranitelnosti skenováním systému ze vzdálených bodů přes vaši LAN pomocí specifických nástrojů, jako jsou:
- Nmap – síťový skener 29 Příklady příkazu Nmap
- Nessus – bezpečnostní skener
- OpenVAS – používá se pro vyhledávání zranitelností a pro komplexní správu zranitelností.
- Nikto – vynikající skener skriptů rozhraní CGI (Common Gateway Interface) Skenování zranitelnosti webu v Linuxu
41. Chraňte systém interně
Používejte interní ochranu systému proti virům, rootkitům, malwaru a osvědčeným postupem instalujte systémy detekce narušení, které dokážou detekovat neoprávněnou aktivitu (útoky DDOS, skenování portů), jako jsou:
- AIDE – Advanced Intrusion Detection Environment – http://aide.sourceforge.net/
- ClamAV – Antivirový skener https://www.clamav.net
- Rkhunter – Rootkit Scanner
- Lynis – Nástroj pro audit a kontrolu zabezpečení pro Linux
- Tripwire – Zabezpečení a integrita dat http://www.tripwire.com/
- Fail2Ban – Prevence narušení sítě
- OSSEC – (HIDS) Host-based Intrusion Detection System http://ossec.github.io/
- Mod_Security – Chraňte hrubou silou nebo útoky DDoS
42. Upravte proměnné uživatelského prostředí
Připojte formát datum a čas pro uložení provádění příkazů zadáním níže uvedeného příkazu:
echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> .bashrc'
Vynutit okamžitý záznam HISTFILE při každém zadání příkazu (místo odhlášení):
echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc
Omezte časový limit přihlášení. Automaticky strhnout skořepinu, když není během doby nečinnosti prováděna žádná aktivita. Velmi užitečné pro automatické odpojení relací SSH.
echo ‘TMOUT=120’ >> .bashrc
Aplikujte všechna pravidla provedením:
source .bashrc
43. Zálohování dat
Použijte zálohovací nástroje, jako jsou tar, cat, rsync, scp, snímky LVM atd., abyste si uložili kopii svého systému, nejlépe mimo pracoviště, pro případ selhání systému.
Pokud dojde ke kompromitaci systému, můžete provést obnovu dat z předchozích záloh.
A konečně, nezapomeňte, že bez ohledu na to, kolik bezpečnostních opatření a protiopatření podniknete, abyste udrželi svůj systém v bezpečí, nikdy nebudete 100% zcela v bezpečí, pokud bude váš stroj zapojen do zásuvky a zapnut.