„Ubuntu szerver általános biztonsági beállításai (Fossa)” változatai közötti eltérés
a (→A sudo és az umask beállításai) |
a (→A sudo és az umask beállításai) |
||
79. sor: | 79. sor: | ||
<pre>sudo rm *-test</pre> | <pre>sudo rm *-test</pre> | ||
Ügyeljünk arra, hogy ha valamiért a későbbiekben a ''su''-t használnánk, azt mindig ''su -'' formában tegyük! | Ügyeljünk arra, hogy ha valamiért a későbbiekben a ''su''-t használnánk, azt mindig ''su -'' formában tegyük! | ||
+ | ==File jogosultságok szigorítása== | ||
+ | Az alábbi script lefuttatásával megszüntetjük a ''worldwide'' olvasható ''home'' könyvtárakat, másolatot készítünk a ''master boot record''-ról, és megszigorítjuk néhány fontos könyvtár és file elérhetőségét. Célszerű ezt a scriptet futtatási jog nélkül (pl. chmod 600) a ''/root/install/security.sh'' állományba tenni, és indirekt lefuttatni: | ||
+ | <pre>mkdir /root/install/ | ||
+ | touch /root/install/security.sh | ||
+ | chmod 600 /root/install/security.sh | ||
+ | mcedit /root/install/security.sh | ||
+ | [...] | ||
+ | /bin/bash /root/install/security.sh</pre> | ||
+ | <pre>#!/bin/sh | ||
+ | # Checklist to set up some security settings. | ||
+ | # From Linux Security Quick Reference Guide - http://www.LinuxSecurity.com | ||
+ | # https://github.com/shadowbq/Cheat-Sheets/blob/master/posix/Linux%20Security%20Quick%20Reference%20Guide.pdf | ||
+ | |||
+ | BOOTDEV=/dev/sda # Modify, if you boot from another device | ||
+ | |||
+ | chmod -R o-rwx /root # Hide root's home dir | ||
+ | chmod -R o-rwx /home/* # Hide user's home dirs | ||
+ | |||
+ | # Save MBR to file - keep a backup on floppy disk or CD! | ||
+ | dd if=$BOOTDEV of=/root/mbr.`hostname`.`date +%Y%m%d` bs=512 count=1 | ||
+ | |||
+ | # Permissions for critical system files | ||
+ | chmod 751 /var/log # Logfile directory | ||
+ | chmod 750 /etc/syslog-ng # Syslog (ng) daemon config files | ||
+ | chmod 600 /etc/crontab # System-wide crontab | ||
+ | chmod 640 /etc/logrotate.conf # Controls rotating of system log files | ||
+ | chmod 750 /etc/logrotate.d # Controls rotating of system log files | ||
+ | chmod 660 /var/log/wtmp # Who is logged in now. Use who to view | ||
+ | chmod 660 /var/log/lastlog # Who has logged in before. Use last to view | ||
+ | chmod 600 /etc/ftpusers # List of users that cannot(!) FTP | ||
+ | chmod 600 /etc/securetty # TTY interfaces that allow root logins | ||
+ | chmod 700 /etc/security # System access security policy files | ||
+ | chmod 750 /etc/init.d # Program start-up files | ||
+ | chmod 600 /etc/inetd.conf # Internet Superserver config file | ||
+ | chmod 400 /etc/cron.allow # List of users permitted to use cron | ||
+ | chmod 400 /etc/cron.deny # List of users denied access to cron | ||
+ | chmod 750 /etc/ssh # Secure shell config files | ||
+ | chmod 600 /etc/sysctl.conf # Contains kernel tunable options | ||
+ | chmod 700 /etc/sysctl.d # Contains kernel tunable options (includes) | ||
+ | </pre> | ||
+ | <small>Megjegyzés: Nem biztos, hogy minden, a scriptben hivatkozott file létezik, ez indokolja az esetleges hibaüzeneteket.</small> | ||
+ | |||
+ | <small>Megjegyzés: Erre a scriptre ráférne egy frissítés! - '''TODO!'''</small> |
A lap 2020. május 18., 20:08-kori változata
Ez a fejezet egy Ubuntu Fossa szervergép nyilvános elérésűvé tételéhez minimálisan szükséges beállításokkal foglalkozik. Feltételezzük, hogy a szerver saját csomagszűrő tűzfallal már rendelkezik.
TODO: SELinux, PaX, grsecurity
Tartalomjegyzék
Általános szigorítások, beállítások
Az alábbi beállítások jó része a Securing Debian Manual illetve a közismert Zákány-dolgozat alapján készült.
Kernel paraméterek
Célszerű lehet a syn flood elleni védelem beállítása, esetleges kernel pánik esetén az automatikus reboot kérése, illetve hasznos lehet az alapértelmezésben 5 napos established connection tracking time lecsökkentése 0,5 napra (paranoid beállítás esetén 10 percre).
Mindezeket egy, az alapértelmezett kernel paramétereket felülbíráló állományban lehet előírni:
-rw-r--r-- root root /etc/sysctl.d/local.conf # Uncomment the next line to enable TCP/IP SYN cookies # See http://lwn.net/Articles/277146/ # Note: This may impact IPv6 TCP sessions too net.ipv4.tcp_syncookies=1 ################################################################### # Extra settings # Reboot after 1 minute on kernel panic kernel.panic=60 # reduce TCP conntrack time net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=43200 # paranoid restriction # net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600
A beállított paraméterek az alábbi paranccsal (vagy a számítógép újraindításával) érvényesíthetőek:
deb-systemd-invoke restart procps.service
A sudo és az umask beállításai
Az Ubuntu alapértelmezett umask-ja 002 (vagyis az újonnan létrehozott file-ok 664-es [rwxrw-r--] jogokkal jönnek létre), ami nézetem szerint nagyon engedékeny (640-et [rw-r--r--] szeretnénk). A root számára szeretnénk meghagyni a 644-es [rw-r--r--] alapértelmezett jogokat (akár sudo-val, akár su-val tettünk szert a root jogosultságra).
Az umask system-wide beállításához
- egyrészt a /etc/login.defs-ben módosítsuk az UMASK értékét:
-rw-r--r-- root root /etc/login.defs [...] UMASK 027 [...]
- másrészt a PAM beállítások között módosítsuk a pam_umask meghívását a /etc/pam.d/common-session állomány vége felé:
-rw-r--r-- root root /etc/pam.d/common-session [...] #session optional pam_umask.so session optional pam_umask.so debug umask=027
- Ez a beállítás valamennyi (ezután bejelentkező, shell, system, stb.) felhasználóra érvényes lesz (a root-ra is - korábban kivétel volt), ezért speciálisan a root login shelljénél hagyjuk meg a megszokott 022-t:
-rw-r----- root root /root/.profile [...] umask 022 [...]
Így ha a virtuális root konzolt a su - paranccsal indítjuk vagy valódi konzolon root-ként jelentkezünk be (de csak ekkor!) az umask értéke 022 lesz.
- A sudo módosításához a visudo paranccsal szerkesszük meg a /etc/sudoers állományt, adjuk hozzá ezt a két paramétert:
[...] Defaults umask_override Defaults umask=0022 [...]
A beállítások a következő újraindításkor lépnek életbe.
Figyelem: ezt ne toljuk el! - root-ként a 027-es umask pl. azt eredményezheti, hogy szerencsétlen esetben egy apt install után a /var-ra nem lesz semmilyen other's jog. Ezért most, egy reboot után, sysadmin felhasználóként végezzük el az alábbi tesztet:
touch user-test sudo touch sudo-test sudo -i touch /home/$SUDO_USER/root-test exit ls -l *-test
Az elvárt eredmény:
-rw-r--r-- 1 root root [...] root-test -rw-r--r-- 1 root root [...] sudo-test -rw-r----- 1 sysadmin sysadmin [...] user-test
Sikeres teszt esetén takarítsuk el a teszt állományokat:
sudo rm *-test
Ügyeljünk arra, hogy ha valamiért a későbbiekben a su-t használnánk, azt mindig su - formában tegyük!
File jogosultságok szigorítása
Az alábbi script lefuttatásával megszüntetjük a worldwide olvasható home könyvtárakat, másolatot készítünk a master boot record-ról, és megszigorítjuk néhány fontos könyvtár és file elérhetőségét. Célszerű ezt a scriptet futtatási jog nélkül (pl. chmod 600) a /root/install/security.sh állományba tenni, és indirekt lefuttatni:
mkdir /root/install/ touch /root/install/security.sh chmod 600 /root/install/security.sh mcedit /root/install/security.sh [...] /bin/bash /root/install/security.sh
#!/bin/sh # Checklist to set up some security settings. # From Linux Security Quick Reference Guide - http://www.LinuxSecurity.com # https://github.com/shadowbq/Cheat-Sheets/blob/master/posix/Linux%20Security%20Quick%20Reference%20Guide.pdf BOOTDEV=/dev/sda # Modify, if you boot from another device chmod -R o-rwx /root # Hide root's home dir chmod -R o-rwx /home/* # Hide user's home dirs # Save MBR to file - keep a backup on floppy disk or CD! dd if=$BOOTDEV of=/root/mbr.`hostname`.`date +%Y%m%d` bs=512 count=1 # Permissions for critical system files chmod 751 /var/log # Logfile directory chmod 750 /etc/syslog-ng # Syslog (ng) daemon config files chmod 600 /etc/crontab # System-wide crontab chmod 640 /etc/logrotate.conf # Controls rotating of system log files chmod 750 /etc/logrotate.d # Controls rotating of system log files chmod 660 /var/log/wtmp # Who is logged in now. Use who to view chmod 660 /var/log/lastlog # Who has logged in before. Use last to view chmod 600 /etc/ftpusers # List of users that cannot(!) FTP chmod 600 /etc/securetty # TTY interfaces that allow root logins chmod 700 /etc/security # System access security policy files chmod 750 /etc/init.d # Program start-up files chmod 600 /etc/inetd.conf # Internet Superserver config file chmod 400 /etc/cron.allow # List of users permitted to use cron chmod 400 /etc/cron.deny # List of users denied access to cron chmod 750 /etc/ssh # Secure shell config files chmod 600 /etc/sysctl.conf # Contains kernel tunable options chmod 700 /etc/sysctl.d # Contains kernel tunable options (includes)
Megjegyzés: Nem biztos, hogy minden, a scriptben hivatkozott file létezik, ez indokolja az esetleges hibaüzeneteket.
Megjegyzés: Erre a scriptre ráférne egy frissítés! - TODO!