„Ubuntu szerver általános biztonsági beállításai (Fossa)” változatai közötti eltérés

Innen: AdminWiki
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

Á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!