CentOS 7:Minimal-Installation
Vorwort
Das Ziel dieser Installations-Anleitung ist ein möglichst schlankes Linux CentOS 7 zu installieren und auf Sicherheit zu achten. Dabei wurden zusätzliche Informationen/Konfiguration der folgenden Seite benutzt:
https://highon.coffee/blog/security-harden-centos-7/
Es wurden nicht alle Implementierungen dieser Seite benutzt dh. es gilt zusätzlich zu diesen Konfiguration ebenfalls die "Benutzerfreundlichkeit" zu waren. Dies bedeutet das diese Installation/Konfiguration Grundlage bietet für etliche Installationen. Die Installation/Konfiguration wurde "top-down" durchgeführt was wiederum bedeutet: Wenn Modifikationen innerhalb der Dokumentation einzeln ausgeführt werden kann es zu Problemen kommen da vers. Konfigurationen auf vorhergehenden Konfigurationen basieren. In dieser Dokumentation werden "iptable" sowie "firewalld" (soll "iptable" ersetzen komplett deaktiviert. Das gleiche gilt für "selinux". Dies wird durchgeführt da davon ausgegangen wird das der Server bereits über eine Firewall im DMZ geschützt wird.
Test- und Installationsmaschinen waren:
VMware ESXi 5.5 (64bit)
2.4 GHz (1 Core), 4 GB RAM, 20GB HD
Datenschutz
*********************************************************************
* *
* THIS FILE MAY CONTAIN CONFIDENTIAL, PRIVILEGED OR OTHER LEGALLY *
* PROTECTED INFORMATION. YOU ARE PROHIBITED FROM COPYING, *
* DISTRIBUTING OR OTHERWISE USING IT WITHOUT PERMISSION FROM *
* ALSO SCHWEIZ AG SWITZERLAND. *
* *
*********************************************************************
"Die in diesen Artikeln enthaltenen Informationen sind vertraulich und dürfen ohne
schriftliche Zustimmung von der ALSO Schweiz AG gegenüber Dritt-Unternehmen nicht
bekannt gemacht werden"
Installation CentOS 7 CD/ISO
Bei der Installation dieses CentOS 7 benutzen wird das "minimal" ISO Image dh. dieses bietet von Grundauf die Möglichkeit möglichst eine "minimal" Installation auszuführen und eine CentOS 7 Server gerecht zu werden. Das benutzte ISO kann unter folgenden Link runtergeladen werden:
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso
Beim booten des ISO Images wird das ISO Image selber überprüft dh. es ist keine Eingabe nötig. Nach ca. 1 - 2 Minuten erscheint auf der Console die erste Konfigurations Oberfläche. In dieser Konfigurations Oberfläche wird folgendes Konfiguriert:
Localization:
Date&Time: Europe/Zürich (setze den Timeserver zB ch.pool.ntp.org)
Language Support: English (United States)
Keyboard: Swiss German
Software:
Software Selection: Minimal Install
NOTE Wenn man die "Software Selection" genauer anschaut stehen dort verschiedenen Positionen/Software zur
verfügung diese sind jedoch per Standard alle "deaktiviert"!
System:
Kdump: Disabled
NOTE Für einen produktiven Server sollte "Kdump" deaktiviert werden. Bei "Kdump" handelt es sich um eine Funktion
die es ergmölicht einen "dump" des Kernels/Memory für ein Troubleshooting durchzuführen. Der Nachteil wenn
"Kdump" dennoch aktiviert wird ist das diese Funktion "permanent" Memory belegt das anderen Applikationen nicht
zur Verfügung steht. Aus diesem Grund wird "Kdump" für einen produkten Server deaktiviert!
Installation Destination:
2048 /
4096 swap
1048 /var
500 /boot
12.5 /export
NOTE Unter diesem Punkt kann das Layout der Disk durchgeführt werden. Dabei steht ein Link zur Verfügung der ein Standard
Layout durchführt (basierend auf xfs und LVM) das nachträglich erweitert/modifiziert werden kann. Die Grösse von "/"
hängt davon ab welche Applikation installiert wird. Ein Centos 7 minimal Installation belegt ca. 850 MB. Per Standard
wird /, swap, sowie /boot erstellt. Für /boot werden 500 MB alloziert und für swap 2 GB. Der Rest des zur Verfügung
stehenden Festplattzen Kapazität wird / zugewiesen. Folgend einer klassichen Aufteilen wird / 2 GB zugewiesen. für
swap mind. die Grösse des zur Verfügung stehenden Memory (in unserem Fall 4 GB). Für /var das im normal Fall Log's
sowie temporäre Daten verarbeitet werden (spool) 1024. Der Rest der Festplatten Kapazität weisen wir /export zu dh.
diese Partition enthält Speicher Daten die nicht temporärer Natur sind zB Mailbox, File Storage etc. Die Zuteilung
der Festplattzen Kapazität steht im direkten Zusammenhang mit der eingesetzten Applikation. Diesem Umstand ist Rechnung
zu tragen. Als Filesystem sollte xfs benutzt werden sowie LVM!
Network & Hostname:
Aktiviere die entsprechende Netzwerkkarte und konfiguriere diese sowie im Ausgangspunkt (unten) konfiguriere den Hostnamen:
General: All users may connect to this network (disabled)
Connection Name: ens32
IPv4 Settings: 198.18.0.19 255.255.255.224 198.18.0.1
DNS: 198.18.0.1
Domains: comcept.ch
NOTE Das Interface muss explizit aktiviert werden (oben Rechts). Danach konfigurieren wir das Interface anhand einer
statischen Konfiguration (Fix IP). Wird dieser Dokumentation gefolgt werden DHCP Komponenten später komplett
entfernt. Unter CentOS 7 wird neu der NetworkManager benutzt. Dieser ist ebenfalls zuständig, dass ein Interface
Name "ens32" benutzt wird. Diesem Umstand wird später Rechnung getragen dh. wird umbenannt in den allgemein üblichen
Standard "eth0" resp. den benutzen Namen der aus dem "Bios" stammt.
Nach der Eingabe der nötigen Informationen beginnt die Instalation im Hintergrund und es kann ein "root" Passwort vergeben werden. Wird das "root" Passwort zu kurz gewählt kann dies zwar durchgeführt werden jedoch muss 2 X bestätigt werden damit dieses gesetzt wird. Sobald die Installation abgeschlossen ist ca. 2 - 3 Minuten muss bestätigt werden damit ein Neustart ausgeführt wird. Dabei ist zu berücksichtigen in welcher Reihenfolge zB im Bios die "Boot Reihenfolge" gesetzt ist damit nicht erneut von dem ISO Image resp. Media die Installation ausgeführt wird.
OS Modifikationen/Manipulationen
Konfiguration: Update des Systems sowie Installation Packages
Nach dem ersten Neustart erscheint das Login. Logge dich über die Console ein:
login: root
Nun als erstes sollte ein komplettes Update durchgeführt werden des CentOS. Dies ist nur dann möglich wenn die statische Konfiguration anhand des Default Gateways sowie DNS Server korrekt durchgeführt wurde sowie dem Server erlaubt ist auf das Internet zu zugreifen. Führe ein Update des CentOS mit folgenden Befehl aus:
# yum update
Nach einem erfolgreichen Update kontrolliere/stellt sich die Kapazität der Festplatte folgermassen dar:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 2.0G 886M 1.2G 44% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.5M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-export 13G 33M 13G 1% /export
/dev/mapper/centos-var 1014M 110M 905M 11% /var
/dev/sda1 497M 142M 355M 29% /boot
Die "minimal" Installation von CentOS 7 verfügt nicht über "nslookup". Dieses ist jedoch nützlich deshalb werden wir es installieren:
# yum install bind-utils
Wie schon erwähnt benutzt CentOS 7 den "NetworkManager" (ip addr). Dieser soll der Nachfolger von "ifconfig" Befehl darstellen. Der "NetworkManager" bietet ein Vielzahl von vers. Tools die jedoch für einen produkten Server übertrieben sind und da wir in den nachfolgenden Schritten die Konfigurationen manuell ausführen wird später der "NetworkManager" komplett entfernt. Aus diesem Grund installieren wir "ifconfig" resp. "net-tools" da dieses Package genau das bietet was gebraucht wird:
# yum install net-tools
In den nachfolgenden Schritten in dieser Dokumentation benötigen wir immer wieder Downloads. Diese werden am einfachsten über "wget" runtergeladen. Da CentOS 7 "minimal" ebenfalls nicht über dieses Tool verfügt installieren wir dieses:
# yum install wget
Konfiguration: Entfernen von Packages "postfix, firewalld"
CentOS 7 minimal kommt mit einer Postfix Installation. Je nach dem was auf dem Server eingesetzt wird kann dies Sinn machen diese Package nicht zu deinstallieren. In unserem Fall wird dieses Package deinstalliert:
# rpm -e postfix
# groupdel postdrop
# userdel postfix
# groupdel postfix
# rm -rf /var/lib/postfix
# rm -rf /var/spool/postfix
Wie schon gesagt "firewalld" ist der Nachfolger von "iptable". Da wir jedoch keine Firewall benötigen auf unserem Server wird dieses Package deinstalliert:
# systemctl mask firewalld
ln -s '/dev/null' '/etc/systemd/system/firewalld.service'
# systemctl stop firewalld
# rpm -e firewalld
# rm -rf /var/log/firewalld
# rm -rf /etc/systemd/system/firewalld.service
# rm -rf /etc/selinux/targeted/modules/active/modules/firewalld.pp
# rm -rf /etc/firewalld
Konfiguration: Deaktivierung von SELinux
Ebenfalls wir kein "selinux" benötigt. Mit "selinux" kann gesteuert werden "wer" auf "welche" Prozesse Zugriff hat und "wer" nicht etc. Das Package wird nicht deinstalliert sondern mit der Konfiguration im "config" File "SELINUX=disabled" komplett deaktiviert:
# vi /etc/selinux/config
--------------- /etc/selinux/config ---------------
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
--------------- /etc/selinux/config ---------------
NOTE Damit die Aenderung aktiviert wird wird später ein Neustart des Servers ausgeführt!
Konfiguration: Hinzufügen von Paramenter in GRUB für "eth0"
Wie schon bei der Installation erwähnt wird als Interface "ens32" benutzt und nicht der Bios Name wie per Standard zB "eth0". Damit wir wieder mit "eth0" arbeiten können muss in der Grub Konfig beim Start des Server eine entsprechende Anweisung hinterlegt werden dh. füge am Ende für die Anweisung "GRUB_CMDLINE_LINUX" die Option "net.ifnames=0 biosdevname=0" hinzu:
# vi /etc/default/grub
--------------- /etc/default/grub ---------------
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ipv6.disable=1 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
--------------- /etc/default/grub ---------------
Damit die entsprechende Erweiterung in das entsprechende Image geschrieben wird muss folgendes ausgeführt werden:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-c3b16f0a6f9e45578d59905dd36ee9f6
Found initrd image: /boot/initramfs-0-rescue-c3b16f0a6f9e45578d59905dd36ee9f6.img
done
Damit nur User "root" dieses Konfig File sehen sowie modifizieren kann vergeben wir für das File neue Rechte die diesem Umstand Rechnung tragen:
# chmod 600 /boot/grub2/grub.cfg
Konfiguration: Entfernen von Packages "NetworkManager, dhclient"
Damit nach einem Neustart der Konfiguration in "grub.cfg" Rechnung getragen wird muss nun das Interface -in unserem Fall- "ens32" auf "eth0" umkonfiguriert werden. Führe folgendes durch:
# mv /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-eth0
Stoppe den "NetworkManager" sowie entferne diesen:
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# rpm -e NetworkManager NetworkManager-tui
# rpm -e NetworkManager-libnm
Entferne ebenfalls das "DHCP Client Package". Das "dhclient" Package steht im direkten Zusammenhang mit den Package "dracut-network" sowie "kexec-tools" die ebenfalls entfernt werden können:
# rpm -e --nodeps dhclient
# rpm -e dracut-network kexec-tools
Nun könne auch die entsprechenden Verzeichnisse des "NetworkManager" entfernt werden nachdem die vorhergehenden Packages entfernt wurden:
# rm -rf /var/lib/NetworkManager
# rm -rf /etc/NetworkManager
# rm -rf /usr/share/doc/NetworkManager
Konfiguration: Modifikation des Netzwerks für "eth0"
Bevor ein Neustart ausgeführt wird sollte die Konfiguration des Netzwerks basierend auf den Namen "eth0" kontrolliert werden. Dabei werden wir IPv6 komplett deaktivieren in der Netzwerk Konfiguration da wir IPv6 nicht benötigen:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------- /etc/sysconfig/network-scripts/ifcfg-eth0 ---------------
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="no"
IPV6_DEFROUTE="no"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
#UUID="c2e6177b-6e8b-468d-91ce-5eaf07792602"
DEVICE="eth0"
ONBOOT="yes"
DNS1="198.18.0.1"
DOMAIN="comcept.ch"
IPADDR="198.18.0.19"
PREFIX="27"
GATEWAY="198.18.0.1"
IPV6_PEERDNS="no"
IPV6_PEERROUTES="no"
IPV6_PRIVACY="no"
#USERS="root"
USERCTL="no"
--------------- /etc/sysconfig/network-scripts/ifcfg-eth0 ---------------
Ueberprüfe die Rechte des Files "/etc/sysconfig/network-scripts/ifcfg-eth0":
# ls -al /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 409 Jun 2 20:03 /etc/sysconfig/network-scripts/ifcfg-eth0
Ueberprüfe die "Host" Einträge und füge den Server Namen inkl. FQDN sowie die entsprechende IP hinzu:
# vi /etc/hosts
--------------- /etc/hosts ---------------
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
198.18.0.19 kolab.comcept.ch kolab
--------------- /etc/hosts ---------------
Ueberprüfe die Rechte des Files "/etc/hosts":
# ls -la /etc/hosts
-rw-r--r--. 1 root root 193 Jun 2 20:06 /etc/hosts
Die DNS Konfiguration des Servers wird im nachfolgenden File konfiguriert:
# vi /etc/resolv.conf
--------------- /etc/resolv.conf ---------------
domain comcept.ch
search dns1.comcept.ch 198.18.0.1
nameserver 198.18.0.1
nameserver 127.0.0.1
--------------- /etc/resolv.conf ---------------
Ueberprüfe die Rechte des Files "/etc/resolv.conf":
# ls -la /etc/resolv.conf
-rw-r--r--. 1 root root 79 Jun 2 20:07 /etc/resolv.conf
Konfiguriere das File "host.conf" dh. Die Anweisung "order" gibt an wie eine DNS Auflösung durchgeführt wird. Da "hosts,bind" konfiguriert wird, wird bei einem DNS Lookup zuerst das File "/etc/hosts" konsultiert. Wird in diesem File kein entsprechender Eintrag gefunden wird der konfigurierte DNS Server konsultiert. Bei der Konfiguration "multi" die per Standard auf "on" steht, wird konfiguriert das wenn auf einem Interface "mehrere" IP's resp. Hostnamen existieren nur der erste Eintrag in "/etc/hosts" zurück gegeben wird. Dies bedeutet es gilt mit "off" im File "/etc/hosts" der Vorgang "top down first match wins":
# vi /etc/host.conf
--------------- /etc/host.conf ---------------
# Lookup names via /etc/hosts first then fall back to DNS resolver
order hosts,bind
# We have machines with multiple addresses
multi off
--------------- /etc/host.conf ---------------
Ueberprüfe die Rechte des Files "/etc/host.conf":
# ls -la /etc/host.conf
-rw-r--r--. 1 root root 138 Jun 2 20:11 /etc/host.conf
Im File /etc/sysconfig/network" wird der Default Gateway (inkl. Device Name eth0) Konfiguriert sowie Hostname:
# vi /etc/sysconfig/network
--------------- /etc/sysconfig/network ---------------
NETWORKING=yes
HOSTNAME=kolab
GATEWAY=198.18.0.1
GATEWAYDEV=eth0
NETWORKING_IPV6=no
IPV6INIT=no
--------------- /etc/sysconfig/network ---------------
Ueberprüfe die Rechte des Files "/etc/sysconfig/network":
# ls -la /etc/sysconfig/network
-rw-r--r--. 1 root root 63 Jun 2 20:13 /etc/sysconfig/network
Modifiziere das nachfolgende File und entferne die OS Informationen sowie Version sofern gewünscht. Diese File wird beim Neustart des Server ausgelesen sowie einige Applikationen benützen das File um das OS resp. die Version auszulesen:
# echo kolab 7.1.1503 > /etc/redhat-release
# more /etc/redhat-release
kolab 7.1.1503
Damit alle Modifikationen aktiviert werden führen wir nun einen Neustart aus:
# reboot
Nachdem Neustart kontrolliere die Netzwerk Konfiguration auf "eth0" anhand des Packages "net-tools" resp. ifconfig Befehls:
# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 198.18.0.19 netmask 255.255.255.224 broadcast 198.18.0.31
inet6 fe80::20c:29ff:fe3d:e4bb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3d:e4:bb txqueuelen 1000 (Ethernet)
RX packets 363 bytes 48539 (47.4 KiB)
RX errors 0 dropped 307 overruns 0 frame 0
TX packets 62 bytes 8182 (7.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0
Wenn nachträglich durch einen Fehler Modifikationen an der Netzwerk Konfiguration durchgeführt werden müssen so kann nachträglich folgendes ausgeführt werden:
# service network restart
Restarting network (via systemctl): [ OK ]
Konfiguration: Passwort für "Single User Mode"
Um zu verhindern das im "Single User Mode" kein Passwort von User "root" abgefragt wird modifiziere folgendes File:
# vi /etc/sysconfig/init
--------------- /etc/sysconfig/init ---------------
# color => new RH6.0 bootup
# verbose => old-style bootup
# anything else => new style bootup without ANSI colors or positioning
BOOTUP=color
# column to start "[ OK ]" label in
RES_COL=60
# terminal sequence to move to that column. You could change this
# to something like "tput hpa ${RES_COL}" if your terminal supports it
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
# terminal sequence to set color to a 'success' color (currently: green)
SETCOLOR_SUCCESS="echo -en \\033[0;32m"
# terminal sequence to set color to a 'failure' color (currently: red)
SETCOLOR_FAILURE="echo -en \\033[0;31m"
# terminal sequence to set color to a 'warning' color (currently: yellow)
SETCOLOR_WARNING="echo -en \\033[0;33m"
# terminal sequence to reset to the default color.
SETCOLOR_NORMAL="echo -en \\033[0;39m"
SINGLE=/sbin/sulogin
--------------- /etc/sysconfig/init ---------------
Die Anweisung "SINGLE=/sbin/sulogin" erzwingt im "Single User Mode" das Abfragen des "root" Passwortes. Diese Mode "von der Kommandozeile" ist unter CentOS 7 nicht zuständig um ein User "root" vergessenes Passwort neu zu setzen. Dieser Vorgang ist nur möglich über den Neustart des Servers in den "Single User Mode" oder auch "Rescue" genannte. Bei dieser Modifikation geht es nur darum wenn auf Kommandozeile der "Single User Mode" ausgeführt wird:
# init s
Welcome to rescue mode! Type "systemctl default" or ^D to enter the default mode.
Type "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.
Give root password for maintenance
(or type Control-D to continue): xxxxxxx
#
Durch die Modifikation wird das User "root" Passwort abgefragt. Um aus dem "Single User Mode" wiederum auszusteigen benütze folgendes und es wird ein Neustart ausgeführt:
# systemctl reboot
Konfiguration: Verhindern von "core" Files System/User
Damit verhindert wird das bei einem Crash oder auch gewollt für sämtliche User resp. Prozesse ein "core" File erstellt wird führe folgende Konfiguration durch:
# vi /etc/security/limits.conf
--------------- /etc/security/limits.conf ---------------
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* hard core 0
# End of file
--------------- /etc/security/limits.conf ---------------
Konfiguration: Korrektes setzen der Zeitzone nach Systemstart
Um zu verhindern das nach dem Start eine falsche "Zeitzone" gesetzt wird sowie daraus resultierend die falsche Zeit kann nachfolgende Konfiguration durchgeführt werden um dies zu verhindern:
# rm -rf /etc/localtime
# ln -snf /usr/share/zoneinfo/Europe/Zurich /etc/localtime
# vi /etc/sysconfig/clock
--------------- /etc/sysconfig/clock ---------------
ZONE="Europe/Zurich"
UTC=true
ARC=false
--------------- /etc/sysconfig/clock ---------------
Führe eine Synch durch dh. durch folgenden Befehl wir die Hardware Clock der momentanen System Clock angepasst:
# hwclock -wu
Beim nächsten Neustart wird die Konfiguration die wir durchgeführt haben aktiv.
Konfiguration: Ueberschreiben von Kernel, TCP Paramenter (syctl.conf)
Wenn ein CentOS resp. ein Linux im allgemeinen gestartet wird, werden verschiedenen "Kernel" Parameter sowie "TCP IPv4" Einstellungen/Konfigurationen geladen. Anhand des Files "/etc/sysctl.conf" das KEINE solchen Parameter per Standard enthält können diese Parameter resp. Konfiguration beim Start mitgegeben werden resp. Standards überschrieben werden:
# cp -p /etc/sysctl.conf /etc/sysctl.conf.orig
NOTE Falls es zu Problemen kommt was unter normalen Umständen nicht zu erwarten ist kann das orginal File zurück kopiert werden
und mit dem modifizierten File überschrieben werden sowie ein Neustart ausgeführt werden!
# vi /etc/sysctl.conf
--------------- /etc/sysctl.conf ---------------
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# Kernel sysctl configuration file for Linux
#
# Version 1.9 - 2011-03-23
# Michiel Klaver - IT Professional
# http://klaver.it/linux/ for the latest version - http://klaver.it/bsd/ for a BSD variant
#
# This file should be saved as /etc/sysctl.conf and can be activated using the command:
# sysctl -e -p /etc/sysctl.conf
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and sysctl.conf(5) for more details.
#
# Tested with: Debian 4 etchnhalf kernel version 2.6.24 default stock out-of-the-box
# Debian 5 kernel version 2.6.26 default stock out-of-the-box
# CentOS 5.4 kernel 2.6.18 default stock out-of-the-box
#
# Intended use for dedicated server systems at high-speed networks with loads of RAM and bandwidth available
# Optimised and tuned for high-performance web/ftp/mail/dns servers with high connection-rates
# DO NOT USE at busy networks or xDSL/Cable connections where packetloss can be expected
# ----------
# Credits:
# http://www.enigma.id.au/linux_tuning.txt
# http://www.securityfocus.com/infocus/1729
# http://fasterdata.es.net/TCP-tuning/linux.html
# http://fedorahosted.org/ktune/browser/sysctl.ktune
# http://www.cymru.com/Documents/ip-stack-tuning.html
# http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
# http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/index.html
# http://knol.google.com/k/linux-performance-tuning-and-measurement
# http://www.cyberciti.biz/faq/linux-kernel-tuning-virtual-memory-subsystem/
# http://www.redbooks.ibm.com/abstracts/REDP4285.html
# http://www.speedguide.net/read_articles.php?id=121
# http://lartc.org/howto/lartc.kernel.obscure.html
# http://en.wikipedia.org/wiki/Sysctl
###
### GENERAL SYSTEM SECURITY OPTIONS ###
###
# Disable core dumps for SUID programs
fs.suid_dumpable = 0
# Auto-reboot linux 30 seconds after a kernel panic
kernel.panic = 30
kernel.panic_on_oops = 30
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
#Allow for more PIDs
kernel.pid_max = 65536
# The contents of /proc/<pid>/maps and smaps files are only visible to
# readers that are allowed to ptrace() the process
kernel.maps_protect = 1
#Enable ExecShield protection
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
###
### IMPROVE SYSTEM MEMORY MANAGEMENT ###
###
# Increase size of file handles and inode cache
fs.file-max = 209708
# Do less swapping
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
# specifies the minimum virtual address that a process is allowed to mmap
vm.mmap_min_addr = 4096
# No overcommitment of available memory
vm.overcommit_ratio = 0
vm.overcommit_memory = 0
# Set maximum amount of memory allocated to shm to 256MB
kernel.shmmax = 268435456
kernel.shmall = 268435456
# Keep at least 64MB of free RAM space available
vm.min_free_kbytes = 65536
###
### GENERAL NETWORK SECURITY OPTIONS ###
###
#Prevent SYN attack, enable SYNcookies (they will kick-in when the max_syn_backlog reached)
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 4096
# Disables packet forwarding
net.ipv4.ip_forward = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.default.forwarding = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.default.forwarding = 0
# Disables IP source routing
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Disable Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 15
# Decrease the time default value for connections to keep alive
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
# Don't relay bootp
net.ipv4.conf.all.bootp_relay = 0
# Don't proxy arp for anyone
net.ipv4.conf.all.proxy_arp = 0
# Turn on SACK
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
# Turn on the tcp_timestamps
net.ipv4.tcp_timestamps = 1
# Don't ignore directed pings
net.ipv4.icmp_echo_ignore_all = 0
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Allowed local port range
#net.ipv4.ip_local_port_range = 16384 65536
# Enable a fix for RFC1337 - time-wait assassination hazards in TCP
net.ipv4.tcp_rfc1337 = 1
###
### TUNING NETWORK PERFORMANCE ###
###
# Do a 'modprobe tcp_cubic' first
net.ipv4.tcp_congestion_control = cubic
# Turn on the tcp_window_scaling
net.ipv4.tcp_window_scaling = 1
# Increase the maximum total buffer-space allocatable
# This is measured in units of pages (4096 bytes)
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
# Increase the read-buffer space allocatable
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.udp_rmem_min = 16384
net.core.rmem_default = 131072
net.core.rmem_max = 16777216
# Increase the write-buffer-space allocatable
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384
net.core.wmem_default = 131072
net.core.wmem_max = 16777216
# Increase number of incoming connections
net.core.somaxconn = 32768
# Increase number of incoming connections backlog
net.core.netdev_max_backlog = 4096
net.core.dev_weight = 64
# Increase the maximum amount of option memory buffers
net.core.optmem_max = 65536
# Increase the maximum number of skb-heads to be cached
#net.core.hot_list_length = 1024
# Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
# Limit number of orphans, each orphan can eat up to 16M (max wmem) of unswappable memory
net.ipv4.tcp_max_orphans = 16384
net.ipv4.tcp_orphan_retries = 0
# Increase the maximum memory used to reassemble IP fragments
net.ipv4.ipfrag_high_thresh = 512000
net.ipv4.ipfrag_low_thresh = 446464
# don't cache ssthresh from previous connection
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
# Increase RPC slots
sunrpc.tcp_slot_table_entries = 32
sunrpc.udp_slot_table_entries = 32
# Increase size of RPC datagram queue length
net.unix.max_dgram_qlen = 50
# Don't allow the arp table to become bigger than this
net.ipv4.neigh.default.gc_thresh3 = 2048
# Tell the gc when to become aggressive with arp table cleaning.
# Adjust this based on size of the LAN. 1024 is suitable for most /24 networks
net.ipv4.neigh.default.gc_thresh2 = 1024
# Adjust where the gc will leave arp table alone - set to 32.
net.ipv4.neigh.default.gc_thresh1 = 32
# Adjust to arp table gc to clean-up more often
net.ipv4.neigh.default.gc_interval = 30
# Increase TCP queue length
net.ipv4.neigh.default.proxy_qlen = 96
net.ipv4.neigh.default.unres_qlen = 6
# Enable Explicit Congestion Notification (RFC 3168), disable it if it doesn't work for you
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_reordering = 3
# How many times to retry killing an alive TCP connection
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_retries1 = 3
# This will enusre that immediatly subsequent connections use the new values
net.ipv4.route.flush = 1
net.ipv6.route.flush = 1
--------------- /etc/sysctl.conf ---------------
# cp -p /etc/sysctl.conf /etc/sysctl.conf.modified
Ueberprüfe die Rechte des Files "/etc/sysctl.conf":
# ls -al /etc/sysctl.conf
-rw-r--r--. 1 root root 8271 Jun 2 20:17 /etc/sysctl.conf
Konfiguration: Hinzufügen des "epel" Repositorie
Die Repositories resp. die Standard Repositories eines CentOS 7 befindet sich im folgenden Verzeichnis:
/etc/yum.repos.d/
Wenn nachträglich zusätzliche Software installiert werden soll können zusätzliche Repositories installiert werden. Ein nützliches Repository stellt "epel" dar. Dieses wird folgendermassen installiert:
# cd /root
# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# rpm -ivh epel-release-7-5.noarch.rpm
# rm -rf epel-release-7-5.noarch.rpm
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.switch.ch
* epel: epel.check-update.co.uk
* extras: mirror.switch.ch
* updates: mirror.switch.ch
repo id repo name status
base/7/x86_64 CentOS-7 - Base 8,652
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 7,990
extras/7/x86_64 CentOS-7 - Extras 128
updates/7/x86_64
Konfiguration: Aufliste der installierten Packages
Dies Liste der installierten Packages nach unserer Installation sieht basierend auf CentOS 7 minimal Installation folgendermassen aus:
# rpm -q --all
kernel-3.10.0-229.el7.x86_64
centos-release-7-1.1503.el7.centos.2.8.x86_64
filesystem-3.2-18.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
biosdevname-0.6.1-2.el7.x86_64
linux-firmware-20140911-0.1.git365e80c.el7.noarch
microcode_ctl-2.1-10.el7.x86_64
glibc-common-2.17-78.el7.x86_64
parted-3.1-20.el7.x86_64
glibc-2.17-78.el7.x86_64
authconfig-6.2.8-9.el7.x86_64
libstdc++-4.8.3-9.el7.x86_64
passwd-0.79-4.el7.x86_64
bash-4.2.46-12.el7.x86_64
xfsprogs-3.2.1-6.el7.x86_64
pcre-8.32-14.el7.x86_64
btrfs-progs-3.16.2-1.el7.x86_64
zlib-1.2.7-13.el7.x86_64
tar-1.26-29.el7.x86_64
audit-libs-2.4.1-5.el7.x86_64
iwl6000g2b-firmware-17.168.5.2-36.el7.noarch
sed-4.2.2-5.el7.x86_64
iwl6000-firmware-9.221.4.1-36.el7.noarch
popt-1.13-16.el7.x86_64
iwl7260-firmware-22.0.7.0-36.el7.noarch
libcom_err-1.42.9-7.el7.x86_64
iwl1000-firmware-39.31.5.1-36.el7.noarch
libdb-5.3.21-17.el7_0.1.x86_64
iwl105-firmware-18.168.6.1-36.el7.noarch
bzip2-libs-1.0.6-12.el7.x86_64
ivtv-firmware-20080701-26.el7.noarch
grep-2.20-1.el7.x86_64
iwl4965-firmware-228.61.2.24-36.el7.noarch
libffi-3.0.13-11.el7.x86_64
iwl100-firmware-39.31.5.1-36.el7.noarch
libgpg-error-1.12-3.el7.x86_64
iwl135-firmware-18.168.6.1-36.el7.noarch
libacl-2.2.51-12.el7.x86_64
gpg-pubkey-f4a80eb5-53a7ff4b
cpio-2.11-22.el7.x86_64
nss-util-3.18.0-1.el7_1.x86_64
libnl3-3.2.21-8.el7.x86_64
libblkid-2.23.2-22.el7_1.x86_64
libgcrypt-1.5.3-12.el7_1.1.x86_64
sqlite-3.7.17-4.el7.x86_64
systemd-208-20.el7_1.3.x86_64
libcap-ng-0.7.3-5.el7.x86_64
dracut-033-241.el7_1.1.x86_64
libidn-1.28-3.el7.x86_64
systemd-sysv-208-20.el7_1.3.x86_64
gmp-6.0.0-11.el7.x86_64
nss-sysinit-3.18.0-2.2.el7_1.x86_64
file-5.11-21.el7.x86_64
selinux-policy-3.13.1-23.el7_1.7.noarch
libnl3-cli-3.2.21-8.el7.x86_64
kernel-tools-libs-3.10.0-229.4.2.el7.x86_64
cyrus-sasl-lib-2.1.26-17.el7.x86_64
openssl-libs-1.0.1e-42.el7.4.x86_64
groff-base-1.22.2-8.el7.x86_64
openssh-server-6.6.1p1-12.el7_1.x86_64
libunistring-0.9.3-9.el7.x86_64
openssl-1.0.1e-42.el7.4.x86_64
diffutils-3.3-4.el7.x86_64
kernel-tools-3.10.0-229.4.2.el7.x86_64
xz-5.1.2-9alpha.el7.x86_64
nss-tools-3.18.0-2.2.el7_1.x86_64
libnfnetlink-1.0.1-4.el7.x86_64
kexec-tools-2.0.7-19.el7_1.2.x86_64
newt-0.52.15-4.el7.x86_64
dracut-config-rescue-033-241.el7_1.1.x86_64
libdaemon-0.14-7.el7.x86_64
libgudev1-208-20.el7_1.3.x86_64
gdbm-1.10-8.el7.x86_64
binutils-2.23.52.0.1-30.el7_1.2.x86_64
pciutils-libs-3.2.1-4.el7.x86_64
tzdata-2015d-1.el7.noarch
libtasn1-3.8-2.el7.x86_64
bind-libs-9.9.4-18.el7_1.1.x86_64
net-tools-2.0-0.17.20131004git.el7.x86_64
libteam-1.15-1.el7.x86_64
epel-release-7-5.noarch
glib2-2.40.0-4.el7.x86_64
shared-mime-info-1.1-7.el7.x86_64
dbus-glib-0.100-7.el7.x86_64
gobject-introspection-1.36.0-4.el7.x86_64
vim-minimal-7.4.160-1.el7.x86_64
elfutils-libs-0.160-1.el7.x86_64
avahi-libs-0.6.31-14.el7.x86_64
pinentry-0.8.1-14.el7.x86_64
make-3.82-21.el7.x86_64
ncurses-5.9-13.20130511.el7.x86_64
libproxy-0.4.11-6.el7.x86_64
libmnl-1.0.3-7.el7.x86_64
iptables-1.4.21-13.el7.x86_64
ustr-1.0.4-16.el7.x86_64
libverto-0.2.5-4.el7.x86_64
krb5-libs-1.12.2-14.el7.x86_64
libcurl-7.29.0-19.el7.x86_64
gzip-1.5-7.el7.x86_64
cracklib-dicts-2.9.0-11.el7.x86_64
libpwquality-1.2.3-4.el7.x86_64
pam-1.1.8-12.el7.x86_64
openldap-2.4.39-6.el7.x86_64
libutempter-1.1.6-4.el7.x86_64
python-2.7.5-16.el7.x86_64
dbus-python-1.1.1-9.el7.x86_64
gettext-0.18.2.1-4.el7.x86_64
dhcp-libs-4.2.5-36.el7.centos.x86_64
procps-ng-3.3.10-3.el7.x86_64
python-slip-0.4.0-2.el7.noarch
yum-metadata-parser-1.1.4-10.el7.x86_64
python-configobj-4.7.2-7.el7.noarch
newt-python-0.52.15-4.el7.x86_64
python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
python-pyudev-0.15-6.el7.noarch
python-pycurl-7.19.0-17.el7.x86_64
grubby-8.28-11.el7.x86_64
logrotate-3.8.6-4.el7.x86_64
kmod-14-10.el7.x86_64
alsa-lib-1.0.28-2.el7.x86_64
mariadb-libs-5.5.41-2.el7_0.x86_64
fipscheck-1.4.1-5.el7.x86_64
dmidecode-2.12-5.el7.x86_64
qrencode-libs-3.4.1-3.el7.x86_64
device-mapper-libs-1.02.93-3.el7.x86_64
iputils-20121221-6.el7.x86_64
device-mapper-event-libs-1.02.93-3.el7.x86_64
polkit-0.112-5.el7.x86_64
os-prober-1.58-5.el7.x86_64
cronie-1.4.11-13.el7.x86_64
grub2-tools-2.02-0.16.el7.centos.x86_64
lvm2-libs-2.02.115-3.el7.x86_64
gnutls-3.3.8-12.el7.x86_64
libsoup-2.46.0-3.el7.x86_64
libpciaccess-0.13.1-4.1.el7.x86_64
fxload-2002_04_11-16.el7.x86_64
alsa-tools-firmware-1.0.27-4.el7.x86_64
kpartx-0.4.9-77.el7.x86_64
pth-2.0.7-22.el7.x86_64
rpm-build-libs-4.11.1-25.el7.x86_64
gpgme-1.3.2-5.el7.x86_64
yum-plugin-fastestmirror-1.1.31-29.el7.noarch
libaio-0.3.109-12.el7.x86_64
hardlink-1.0-19.el7.x86_64
plymouth-scripts-0.8.9-0.13.20140113.el7.centos.x86_64
libpipeline-1.2.3-3.el7.x86_64
jansson-2.4-6.el7.x86_64
kbd-legacy-1.15.5-11.el7.noarch
kbd-1.15.5-11.el7.x86_64
teamd-1.15-1.el7.x86_64
rsyslog-7.4.7-7.el7_0.x86_64
rdma-7.1_3.17-5.el7.noarch
grub2-2.02-0.16.el7.centos.x86_64
libgcc-4.8.3-9.el7.x86_64
lvm2-2.02.115-3.el7.x86_64
setup-2.8.71-5.el7.noarch
audit-2.4.1-5.el7.x86_64
basesystem-10.0-7.el7.centos.noarch
tuned-2.4.1-1.el7.noarch
kbd-misc-1.15.5-11.el7.noarch
aic94xx-firmware-30-6.el7.noarch
nss-softokn-freebl-3.16.2.3-9.el7.x86_64
xz-libs-5.1.2-9alpha.el7.x86_64
ncurses-libs-5.9-13.20130511.el7.x86_64
sudo-1.8.6p7-13.el7.x86_64
libsepol-2.1.9-3.el7.x86_64
e2fsprogs-1.42.9-7.el7.x86_64
libselinux-2.2.2-6.el7.x86_64
iprutils-2.4.3-3.el7.x86_64
info-5.1-4.el7.x86_64
libsysfs-2.1.0-16.el7.x86_64
rootfiles-8.1-11.el7.noarch
iwl6000g2a-firmware-17.168.5.3-36.el7.noarch
chkconfig-1.3.61-4.el7.x86_64
iwl2030-firmware-18.168.6.1-36.el7.noarch
dbus-libs-1.6.12-11.el7.x86_64
iwl5000-firmware-8.83.5.1_1-36.el7.noarch
iwl5150-firmware-8.24.2.2-36.el7.noarch
readline-6.2-9.el7.x86_64
iwl3945-firmware-15.32.2.9-36.el7.noarch
gawk-4.0.2-4.el7.x86_64
iwl2000-firmware-18.168.6.1-36.el7.noarch
elfutils-libelf-0.160-1.el7.x86_64
iwl6050-firmware-41.28.5.1-36.el7.noarch
libattr-2.4.46-12.el7.x86_64
iwl3160-firmware-22.0.7.0-36.el7.noarch
libcap-2.22-8.el7.x86_64
nspr-4.10.8-1.el7_1.x86_64
libuuid-2.23.2-22.el7_1.x86_64
expat-2.1.0-8.el7.x86_64
libmount-2.23.2-22.el7_1.x86_64
p11-kit-0.20.7-3.el7.x86_64
systemd-libs-208-20.el7_1.3.x86_64
lua-5.1.4-14.el7.x86_64
util-linux-2.23.2-22.el7_1.x86_64
findutils-4.5.11-3.el7.x86_64
dracut-network-033-241.el7_1.1.x86_64
file-libs-5.11-21.el7.x86_64
nss-3.18.0-2.2.el7_1.x86_64
tcp_wrappers-libs-7.6-77.el7.x86_64
libxml2-2.9.1-5.el7_1.2.x86_64
nss-softokn-3.16.2.3-9.el7.x86_64
bind-license-9.9.4-18.el7_1.1.noarch
libassuan-2.1.0-3.el7.x86_64
ca-certificates-2015.2.4-70.0.el7_1.noarch
e2fsprogs-libs-1.42.9-7.el7.x86_64
openssh-6.6.1p1-12.el7_1.x86_64
which-2.20-7.el7.x86_64
openssh-clients-6.6.1p1-12.el7_1.x86_64
libgomp-4.8.3-9.el7.x86_64
bind-libs-lite-9.9.4-18.el7_1.1.x86_64
kmod-libs-14-10.el7.x86_64
selinux-policy-targeted-3.13.1-23.el7_1.7.noarch
sysvinit-tools-2.88-14.dsf.el7.x86_64
dnsmasq-2.66-13.el7_1.x86_64
slang-2.2.4-11.el7.x86_64
kernel-3.10.0-229.4.2.el7.x86_64
lzo-2.06-6.el7_0.2.x86_64
hwdata-0.252-7.8.el7_1.x86_64
ethtool-3.15-2.el7.x86_64
libpcap-1.5.3-4.el7_1.2.x86_64
hostname-3.13-3.el7.x86_64
freetype-2.4.11-10.el7_1.1.x86_64
keyutils-libs-1.5.8-3.el7.x86_64
centos-logos-70.0.6-2.el7.centos.noarch
p11-kit-trust-0.20.7-3.el7.x86_64
bind-utils-9.9.4-18.el7_1.1.x86_64
less-458-8.el7.x86_64
wget-1.14-10.el7_0.1.x86_64
nettle-2.7.1-4.el7.x86_64
pkgconfig-0.27.1-4.el7.x86_64
libcroco-0.6.8-5.el7.x86_64
gettext-libs-0.18.2.1-4.el7.x86_64
gsettings-desktop-schemas-3.8.2-3.el7.x86_64
libdb-utils-5.3.21-17.el7_0.1.x86_64
libss-1.42.9-7.el7.x86_64
mozjs17-17.0.0-10.el7.x86_64
libselinux-utils-2.2.2-6.el7.x86_64
libedit-3.0-12.20121213cvs.el7.x86_64
libmodman-2.0.1-8.el7.x86_64
snappy-1.1.0-3.el7.x86_64
libnetfilter_conntrack-1.0.4-2.el7.x86_64
iproute-3.10.0-21.el7.x86_64
libsemanage-2.1.10-16.el7.x86_64
libssh2-1.4.3-8.el7.x86_64
curl-7.29.0-19.el7.x86_64
cracklib-2.9.0-11.el7.x86_64
rpm-libs-4.11.1-25.el7.x86_64
coreutils-8.22-11.el7.x86_64
shadow-utils-4.1.5.1-18.el7.x86_64
rpm-4.11.1-25.el7.x86_64
libuser-0.60-5.el7.x86_64
python-libs-2.7.5-16.el7.x86_64
python-decorator-3.4.0-3.el7.noarch
policycoreutils-2.2.5-15.el7.x86_64
pygobject3-base-3.8.2-6.el7.x86_64
dhcp-common-4.2.5-36.el7.centos.x86_64
libselinux-python-2.2.2-6.el7.x86_64
python-slip-dbus-0.4.0-2.el7.noarch
python-iniparse-0.4-9.el7.noarch
pyliblzma-0.5.3-11.el7.x86_64
python-backports-1.0-8.el7.x86_64
python-setuptools-0.9.8-3.el7.noarch
pyxattr-0.5.1-5.el7.x86_64
python-urlgrabber-3.10-6.el7.noarch
avahi-autoipd-0.6.31-14.el7.x86_64
plymouth-core-libs-0.8.9-0.13.20140113.el7.centos.x86_64
fipscheck-lib-1.4.1-5.el7.x86_64
virt-what-1.13-5.el7.x86_64
device-mapper-1.02.93-3.el7.x86_64
cryptsetup-libs-1.6.6-3.el7.x86_64
dbus-1.6.12-11.el7.x86_64
initscripts-9.49.24-1.el7.x86_64
polkit-pkla-compat-0.1-4.el7.x86_64
cronie-anacron-1.4.11-13.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
device-mapper-event-1.02.93-3.el7.x86_64
wpa_supplicant-2.0-13.el7_0.x86_64
trousers-0.3.11.2-3.el7.x86_64
glib-networking-2.40.0-1.el7.x86_64
libdrm-2.4.56-2.el7.x86_64
alsa-firmware-1.0.28-2.el7.noarch
ebtables-2.0.10-13.el7.x86_64
libestr-0.1.9-2.el7.x86_64
gnupg2-2.0.22-3.el7.x86_64
rpm-python-4.11.1-25.el7.x86_64
pygpgme-0.3-9.el7.x86_64
yum-3.4.3-125.el7.centos.noarch
device-mapper-persistent-data-0.4.1-2.el7.x86_64
plymouth-0.8.9-0.13.20140113.el7.centos.x86_64
json-c-0.11-4.el7_0.x86_64
libndp-1.2-4.el7.x86_64
ppp-2.4.5-33.el7.x86_64
numactl-libs-2.0.9-4.el7.x86_64
dhclient-4.2.5-36.el7.centos.x86_64
irqbalance-1.0.7-1.el7.x86_64
man-db-2.6.3-9.el7.x86_64
Konfiguration: Installation des Plug-In "yum-priorities"
Unter normalen Umständen wenn ein "yum update" ausgeführt wird, werden alle Packages ohne Rücksicht auf Kompatibilität auf den neusten Stand gebracht. Wenn später RPM Packages installiert werden die Ihre Kompatibilität auf den "Core" Packages bauen kann dies bei einem Update (yum update) Probleme verursachen da keine Rückwärtskompatiblität gewährleistet ist zB auf den Libraries. Um diese zu verhindern kann das Package "yum-priorities" installiert werden. Anhand der Konfiguration innerhalb der Repo Files (priority=) werden den verschiedenen Container Prioritäten vergeben. Dabei sollte folgendes gelten:
priority=1 [base], [addons], [updates], [extras]
priority=2 [centosplus],[contrib]
priority=10 Third Party Repositories
Weitere Informationen findet man auch unter folgenden Link:
http://wiki.centos.org/PackageManagement/Yum/Priorities?highlight=%28priorities%29
Führe die Installation von "yum-priorities" aus:
# yum -y update
Lösche alle "yum update" Informationen
# yum clean all
Installiere das Package:
# yum install yum-priorities
Folgender Befehl gibt Auskunft über die Repo Liste sowie ob diese aktiviert/deaktivert ist (enabled=1/0):
# yum repolist all
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirror.switch.ch
* epel: ftp.fi.muni.cz
* extras: mirror.switch.ch
* updates: mirror.switch.ch
repo id repo name status
C7.0.1406-base/x86_64 CentOS-7.0.1406 - Base disabled
C7.0.1406-centosplus/x86_64 CentOS-7.0.1406 - CentOSPlus disabled
C7.0.1406-extras/x86_64 CentOS-7.0.1406 - Extras disabled
C7.0.1406-fasttrack/x86_64 CentOS-7.0.1406 - CentOSPlus disabled
C7.0.1406-updates/x86_64 CentOS-7.0.1406 - Updates disabled
base/7/x86_64 CentOS-7 - Base enabled: 8,652
base-debuginfo/x86_64 CentOS-7 - Debuginfo disabled
base-source/7 CentOS-7 - Base Sources disabled
centosplus/7/x86_64 CentOS-7 - Plus disabled
centosplus-source/7 CentOS-7 - Plus Sources disabled
cr/7/x86_64 CentOS-7 - cr disabled
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 enabled: 7,990
epel-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Debug disabled
epel-source/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Source disabled
epel-testing/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 disabled
epel-testing-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Debug disabled
epel-testing-source/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Source disabled
extras/7/x86_64 CentOS-7 - Extras enabled: 128
extras-source/7 CentOS-7 - Extras Sources disabled
fasttrack/7/x86_64 CentOS-7 - fasttrack disabled
updates/7/x86_64 CentOS-7 - Updates enabled: 601
updates-source/7 CentOS-7 - Updates Sources disabled
repolist: 17,371
Nun vergebe jedem existierenden Repo file in "/etc/yum.repos.d" die entsprechende "priority=" sowie achte darauf ob ein entsprechenden Container "enabled=" aktiviert oder deaktiviert ist. Es ist wichtig auch den Container die deaktiviert sind "enabled=0" eine Priorität zu vergeben für den Fall das der Container später aktiviert wird (enabled=1):
Durch den folgenden Eintrag im File "priorities.conf" wird "yum-priorities" aktiviert:
# vi /etc/yum/pluginconf.d/priorities.conf
--------------- /etc/yum/pluginconf.d/priorities.conf ---------------
[main]
enabled = 1
--------------- /etc/yum/pluginconf.d/priorities.conf ---------------
# vi /etc/yum.repos.d/CentOS-Base.repo
--------------- /etc/yum.repos.d/CentOS-Base.repo ---------------
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=2
--------------- /etc/yum.repos.d/CentOS-Base.repo ---------------
Das nachfolgende File existiert nicht im Verzeichins "/etc/yum.repos.d/" jedoch ist dieses File Wichtig denn wenn von einem Media ein Package installiert wird soll "yum-priorities" auch greifen:
# vi /etc/yum.repos.d/CentOS-Media.repo
--------------- /etc/yum.repos.d/CentOS-Media.repo ---------------
# CentOS-Media.repo
#
# This repo is used to mount the default locations for a CDROM / DVD on
# CentOS-5. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum --enablerepo=c7-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c7-media [command]
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=2
--------------- /etc/yum.repos.d/CentOS-Media.repo ---------------
Ueberprüfe die Rechte des Files "/etc/yum.repos.d/CentOS-Media.repo":
# ls -la /etc/yum.repos.d/CentOS-Media.repo
-rw-r--r-- 1 root root 620 Jun 3 09:48 /etc/yum.repos.d/CentOS-Media.repo
Achte darauf das alle Repo Files mit den entsprechenden Einträgen versehen werden wie zB "epel" Repo:
# vi /etc/yum.repos.d/epel.repo
--------------- /etc/yum.repos.d/epel.repo ---------------
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
priority=10
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
priority=10
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
priority=10
--------------- /etc/yum.repos.d/epel.repo ---------------
# vi /etc/yum.repos.d/epel-testing.repo
--------------- /etc/yum.repos.d/epel-testing.repo ---------------
[epel-testing]
name=Extra Packages for Enterprise Linux 7 - Testing - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/testing/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel7&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
priority=10
[epel-testing-debuginfo]
name=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/testing/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
priority=10
[epel-testing-source]
name=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/testing/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
priority=10
--------------- /etc/yum.repos.d/epel-testing.repo ---------------
Nun kann anhand eines "yum update" überprüft werden ob "yum-priorities" greift und korrekt konfiguriert ist:
# yum update
Loaded plugins: fastestmirror, priorities
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.skylink-datacenter.de
* epel: ftp.fi.muni.cz
* extras: mirror.skylink-datacenter.de
* updates: mirror.skylink-datacenter.de
65 packages excluded due to repository priority protections
No packages marked for update
Ueberprüfe nach der Konfiguration welche Container aktiviert wurden und welche deaktiviert sind sowie ob "yum-priorities" greift:
# yum repolist all
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: ftp.plusline.de
* epel: ftp.fi.muni.cz
* extras: mirror.switch.ch
* updates: mirror.euserv.net
65 packages excluded due to repository priority protections
repo id repo name status
C7.0.1406-base/x86_64 CentOS-7.0.1406 - Base disabled
C7.0.1406-centosplus/x86_64 CentOS-7.0.1406 - CentOSPlus disabled
C7.0.1406-extras/x86_64 CentOS-7.0.1406 - Extras disabled
C7.0.1406-fasttrack/x86_64 CentOS-7.0.1406 - CentOSPlus disabled
C7.0.1406-updates/x86_64 CentOS-7.0.1406 - Updates disabled
base/7/x86_64 CentOS-7 - Base enabled: 8,652
base-debuginfo/x86_64 CentOS-7 - Debuginfo disabled
base-source/7 CentOS-7 - Base Sources disabled
c5-media CentOS-7 - Media disabled
centosplus/7/x86_64 CentOS-7 - Plus disabled
centosplus-source/7 CentOS-7 - Plus Sources disabled
cr/7/x86_64 CentOS-7 - cr disabled
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 enabled: 7,925+65
epel-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Debug disabled
epel-source/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Source disabled
epel-testing/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 disabled
epel-testing-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Debug disabled
epel-testing-source/x86_64 Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Source disabled
extras/7/x86_64 CentOS-7 - Extras enabled: 128
extras-source/7 CentOS-7 - Extras Sources disabled
fasttrack/7/x86_64 CentOS-7 - fasttrack disabled
updates/7/x86_64 CentOS-7 - Updates enabled: 601
updates-source/7 CentOS-7 - Updates Sources disabled
repolist: 17,306
Konfiguration: Modifikation System Shell Templates
Die nachfolgenden Konfigurationen betreffen die Shell sowie die Erstellung eines neuen Users dh. in unserem Fall "sysop". Dieser User wird benutzt um sich über SSH in das System einzuloggen. Das einloggen über SSH anhand des Users "root" wird verhindert und somit muss mit "sysop" eingeloggt werden und anhand "su -" auf User "root" gewechselt werden! Der User "sysop" verfügt über keine entsprechenden Rechte. Wenn ein User auf dem System erstellt wird werden die entsprechenden Profile Templates benutzt um diese in das Homeverzeichnis des Users zu kopieren. Nachfolgend die Manipulation dieser Templates damit die nötigen Aenderungen bereits in den Templates der User enthalten sind:
# vi /etc/skel/.bashrc
--------------- /etc/skel/.bashrc ---------------
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
--------------- /etc/skel/.bashrc ---------------
# vi /etc/skel/.bash_profile
--------------- /etc/skel/.bash_profile ---------------
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
HISTSIZE=1000
TMOUT=7200
PATH=$PATH:$HOME/.local/bin:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME PATH BASH_ENV
--------------- /etc/skel/.bash_profile ---------------
# vi /etc/profile
--------------- /etc/profile ---------------
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
TMOUT=7200
--------------- /etc/profile ---------------
# vi /etc/skel/.bash_logout
--------------- /etc/skel/.bash_logout ---------------
# ~/.bash_logout
clear
--------------- /etc/skel/.bash_logout ---------------
In folgenden File werden die regulären "shell" konfiguriert dh. nur eine Shell die im folgenden File konfiguriert ist darf benutzt werden sowie gilt als reguläre Shell:
# vi /etc/shells
--------------- /etc/shells ---------------
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
--------------- /etc/shells ---------------
Ueberprüfe die Rechte des Files "/etc/shells":
# ls -al /etc/shells
-rw-r--r--. 1 root root 76 Jun 7 2013 /etc/shells
Konfiguration: Modifikation Home Verzeichnis User "root"
Die Template Files sind vorbereitet. Das Homeverzeichnis sowie die darin enthaltenen Files des User "root" befinden sich im Verzeichnis "/root". Wir passen die entsprechenden Rechte dieses Homeverzeichnis sowie dessen Files an:
# chown root:root /root
# chmod 700 /root
# chown root:root /root/.*
# chmod 600 /root/.bashrc /root/.bash_profile /root/.bash_logout /root/.cshrc /root/.tcshrc
Konfiguration: Hinzufügen eines neuen User "sysop"
Wir erstellen den User "sysop" der Mitglied ist von der Gruppe "sysop":
# groupadd -g 200 sysop
# cat /etc/group | grep sysop
# useradd -u 200 -g 200 -d /export/sysop -s /bin/bash -c SysOperator sysop
# cat /etc/passwd | grep sysop
sysop:x:200:200:SysOperator:/export/sysop:/bin/bash
# chown sysop:sysop /export/sysop
# chmod 700 /export/sysop
# chown root:sysop /export/sysop/.bash*
# chmod 640 /export/sysop/.bash*
# vi /export/sysop/.bash_profile
--------------- /export/sysop/.bash_profile ---------------
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
HISTSIZE=1000
TMOUT=7200
PATH=$PATH:$HOME/.local/bin:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="sysop"
export USERNAME PATH BASH_ENV
--------------- /export/sysop/.bash_profile ---------------
# passwd sysop
Changing password for user sysop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Konfiguration: Entfernen von System User und/oder Gruppe
Im "/etc/passwd" sowie "/etc/group" existieren einige User/Gruppen die komplett unnötig sind auf dem System. Diese werden entfernt sowie event. existierenden überflüssig gewordenen Verzeichnisse der User/Gruppe:
# userdel lp
# userdel ftp
# userdel games
# rm -rf /var/lib/games
# rm -rf /var/games
# rm -rf /usr/lib/games
# rm -rf /usr/lib64/games
# rm -rf /usr/share/games
# rm -rf /usr/games
# rm -rf /usr/local/games
# rm -rf /home
# groupdel games
# groupdel dip
# groupdel news
# groupdel dialout
# groupdel tape
# groupdel floppy
# groupdel audio
Nach der Modifikation ergiebt sich in "/etc/passwd" folgendes Bild:
# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sysop:x:200:200:SysOperator:/export/sysop:/bin/bash
Nach der Modifikation ergiebt sich in "/etc/group" folgendes Bild:
# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
video:x:39:
lock:x:54:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
avahi-autoipd:x:170:
ssh_keys:x:999:
systemd-journal:x:190:
dbus:x:81:
polkitd:x:998:
tss:x:59:
sshd:x:74:
sysop:x:200:
Konfiguration: Modifikation der System Password Policy
Nun wenn ein Passwort vergeben wird für einen User zB "sysop" und/oder dieser mit dem definiert Passwort einlogg steuert das File "/etc/pam.d/passwd" welche Restriktionen gelten. Dabei setzen wir die "minimal" Länge eines Passwortes zB 8 sowie wieviel Mal ein User sich mit einem falschen Passwort anmelden kann bevor er vorübergehend ausgesperrt wird (retry=3):
# vi /etc/pam.d/passwd
--------------- /etc/pam.d/passwd ---------------
#%PAM-1.0
auth include system-auth
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so use_authtok
password substack postlogin
password required pam_cracklib.so retry=3 minlen=8
password sufficient pam_unix.so nullok use_authtok md5 shadow
password required pam_deny.so
--------------- /etc/pam.d/passwd ---------------
In dem nachfolgend File werden die #auskommentierten Zeilen ersetzt mit neuen Einträgen:
# vi /etc/pam.d/system-auth
--------------- /etc/pam.d/system-auth ---------------
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
#account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
#password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
--------------- /etc/pam.d/system-auth ---------------
Konfiguration: Verhindern von ausführen CTRL+ALT+Del
Wenn man über Console verbunden ist mit dem System und ein User führt "CTRL+ALT+Del" aus so wird ein Neustart des Servers ausgeführt. Dies möchte man verhindern. Für tiefere Versionen von CentOS wird das im File "/etc/inittab" konfiguriert. Dieses File wird jedoch unter CentOS 7 nicht mehr benutzt. Um "CTRL+ALT+Del" zu verhindern muss das entsprechende "systemctl" neu verlinkt werden und zwar zu "/dev/null". Dies bedeutet: "CTRL+ALT+Del" kann zwar ausgeführt werden jedoch das Script wird zu "/dev/null" gesendet dh. es wird nichts ausgegührt:
# ln -s /dev/null /etc/systemd/system/ctrl-alt-del.target
Konfiguration: Modifikation Schnittstelle "securetty"
Im nachfolgenden File wird definiert welche Schnittstellen für zB "getty", "aggetty" zur Verfügung stehen:
# vi /etc/securetty
--------------- /etc/securetty ---------------
console
vc/1
#vc/2
#vc/3
#vc/4
#vc/5
#vc/6
#vc/7
#vc/8
#vc/9
#vc/10
#vc/11
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
#tty9
#tty10
#tty11
ttyS0
ttyS1
ttysclp0
sclp_line0
3270/tty1
hvc0
#hvc1
#hvc2
#hvc3
#hvc4
#hvc5
#hvc6
#hvc7
--------------- /etc/securetty ---------------
Konfiguration: Hinzufügen eines Login Banners
Wenn ein User sich einloggt dh. über SSH, Console etc. kann ein Banner konfiguriert werden der diesem User angzeigt wird. Dieser Banner wird im File "/etc/issue" definiert. Für SSH muss dieser Banner im File "/etc/sshd_config" definiert werden was später durchgeführt wird:
# vi /etc/issue
--------------- /etc/issue ---------------
#
# WARNING: You must have prior authorization to access this system.
# All connections are logged and monitored. By connecting
# to this system you fully consent to all monitoring.
# Unauthorized access or use will be prosecuted to the
# full extent of the law. You have been warned!
#
--------------- /etc/issue ---------------
Konfiguration: Modifikation SSH Server/Client
Auf dem CentOS 7 System ist OpenSSH installiert. Das Konfig File des SSH Servers (OpenSSH) definiert wie sich der SSH Server verhalten soll. Dies bedeutet: Wir konfigurieren das der SSH Server nicht mehr auf Allen IP's hört (LISTEN) sondern auf der spezifischen Server IP. Ebenso erlauben wir nur Login's für den User "sysop" sowie definieren den Banner. Wichtig ist auch nur das SSH 2 Protokoll zu erlauben. Weitere gesetzte Optionen können anhand der Optionen eruiert werden jedoch handelt es sich um Restriktionen die ausschliesslich ein Login erlaubt auf SSH Ebene dh. kein Rhosts, X11 Forwarding etc.:
NOTE Folgende Seite resp. Link gibt Auskunft wie ein SSH Server/Client mit einem "hardening" versehen wird. Dies ist insofern
dann Wichtig, wenn der SSH Server public erreichbar ist. Einige der Konfgurationen sind in dieser Dokumentation enthalten
andere aus "Kompatibilitätsgründen" nicht. Von daher ist es wichtig, wenn diese Konfiguration durchgeführt wird auf den
Server lokal zugriff zu haben um auszuschliessen das ein "Ungewollter Ausschluss" durch das "hardening" durchgeführt wird:
https://stribika.github.io/2015/01/04/secure-secure-shell.html
# vi /etc/ssh/sshd_config
--------------- /etc/ssh/sshd_config ---------------
# $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 22
#Protocol 2,1
Protocol 2
#AddressFamily any
ListenAddress 198.18.0.19
#ListenAddress ::
# Allow only certain Users to Login
AllowUsers sysop
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
#MaxAuthTries 6
RSAAuthentication no
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
# Kerberos options
KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
#UsePAM no
UsePAM yes
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding no
#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no
#ChrootDirectory none
# no default banner path
Banner /etc/issue
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
--------------- /etc/ssh/sshd_config ---------------
Auf der Installation des CentOS 7 läuft ebenfalls der "Client" von SSH (OpenSSH). Auch hier definieren wir analog des Servers die entsprechenden Punkte:
# vi /etc/ssh/ssh_config
--------------- /etc/ssh/ssh_config ---------------
# $OpenBSD: ssh_config,v 1.28 2013/09/16 11:35:43 sthen Exp $
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
# Host *
# ForwardAgent no
ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
Port 22
Protocol 2
# Cipher 3des
# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
Host *
GSSAPIAuthentication yes
# If this option is set to yes then remote X11 clients will have full access
# to the original X11 display. As virtually no X11 client supports the untrusted
# mode correctly we set this to yes.
ForwardX11Trusted yes
# Send locale-related environment variables
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv LC_IDENTIFICATION LC_ALL
--------------- /etc/ssh/ssh_config ---------------
Nach der Modifikation der Konfiguration Files des SSH Server muss dieser neu gestartet werden:
# systemctl restart sshd.service
Konfiguration: Modifikation "cron.allow/deny"
Die nachfolgenden Files definieren welcher User eine Cron-Job (crontab -e) ausführen darf und welche nicht:
# vi /etc/cron.allow
--------------- /etc/cron.allow ---------------
root
--------------- /etc/cron.allow ---------------
Ueberprüfe die Rechte des Files "/etc/cron.allow":
# ls -la /etc/cron.allow
-rw-r--r-- 1 root root 5 Jun 2 23:22 /etc/cron.allow
Passe die Rechte für "/etc/cron.allow" an damit nur User "root" das File modifizieren und sehen kann:
# chmod 600 /etc/cron.allow
Definiere welche User "keinen" Cron-Job ausführen dürfen. Im nachfolgenden File sind User aufgeführt die auf dem System nicht existieren dh. es sind provilaktische Einträge da diese User per Standard in Gebrauch sind:
# vi /etc/cron.deny
--------------- /etc/cron.deny ---------------
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
gopher
ftp
nobody
nscd
vcsa
rpc
mailnull
smmsp
pcap
dbus
avahi
sshd
rpcuser
nfsnobody
haldaemon
avahi-autoipd
ntp
sysop
apache
apache-ssl
postfix
vscan
named
postgrey
--------------- /etc/cron.deny ---------------
Ueberprüfe die Rechte des Files "/etc/cron.deny":
# ls -la /etc/cron.deny
-rw------- 1 root root 234 Jun 2 23:22 /etc/cron.deny
Konfiguration: Modifikation Log Rotation
Im File "/etc/logrotate.conf" werden Log Files des Systems für eine Rotation konfiguriert. Weitere Log Files können hinzugefügt werden. Es wird jedoch empfohlen für spätere Applikationen eine Log Rotation unter "/etc/logrotate.d" zu konfigurieren da in diesen Files spezifisches Neustarten der entsprechenden Deamons besser kontrolliert werden können. Dies spätere Konfiguration dh. der Applikations Log's sollten "daily" für "31" Tage rotiert werden damit im Fall einer Analyse die Logs täglich als "Satz" zur Verfügung stehen. Aus diesem Grund werden wir "weekly" auf "daily" konfigurieren sowie dies für "31" Tage:
# vi /etc/logrotate.conf
--------------- /etc/logrotate.conf ---------------
# see "man logrotate" for details
# rotate log files weekly
daily
# keep 4 weeks worth of backlogs
rotate 31
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
--------------- /etc/logrotate.conf ---------------
Ab CentOS 6 ist das File "/etc/crontab" leer und es kümmert sich "/etc/anacrontab" um die Ausführung der stündlichen, wöchentlichen und monatlichen Jobs. "anachron" ist jedoch kein Deamon/Service und wird über "crond" ausgeführt anhand des Packages "cronie-anacron" was nicht entfernt werden solle da dieses vielfach in Zusammenhang steht mit anderen Abhängigkeiten. "anachron" ist nicht Ideal für Server und wurde eintliche für Workstations konzepiert die nicht 24 X 7 in Betrieb sind. Um weiterhin Transparent über "crond" zu arbeiten sollte "/etc/anacrontab" deaktiviert werden dh. deaktiviere die Konfiguration in "/etc/anacrontab":
# vi /etc/anacrontab
--------------- /etc/anacrontab ---------------
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
# the maximal random delay added to the base delay of the jobs
#RANDOM_DELAY=45
# the jobs will be started during the following hours only
#START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
#1 5 cron.daily nice run-parts /etc/cron.daily
#7 25 cron.weekly nice run-parts /etc/cron.weekly
#@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
--------------- /etc/anacrontab ---------------
Wie schon erwähnt damit "hourly, daily, weekly und monthly" berücksichtigt werden muss dies nun im File "/etc/crontab" definiert werden da nun dies nicht mehr über "/etc/anacrontab" abgearbeitet wird. Wird dies nicht durchgeführt werden folgende Verzeichnisse und deren Inhalt Ignoriert sowie auch "/etc/logrotate.conf" da sich ein entsprechendes Script im Verzeichnis "cron.daily" befindet (logrotate) das "/etc/logrotate.conf" ausführt dh. dafür zuständig ist das die Files in "/etc/logrotate.d" verarbeitet werden:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
# vi /etc/crontab
--------------- /etc/crontab---------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 0 * * * root run-parts /etc/cron.daily
22 0 * * 0 root run-parts /etc/cron.weekly
42 0 1 * * root run-parts /etc/cron.monthly
--------------- /etc/crontab ---------------
Danach ist es empfehlenswert den Service "crond" neu zu starten:
# systemctl restart crond.service
Konfiguration: Hinzufügen einer Zeit Synchronisierung
Auf dem CentOS 7 Server ist das Binary "ntpdate" nicht enthalten dh. dieses benutzen wird ohne den Server zu installieren resp. zu konfigurieren um eine NTP Zeitsynchonisation ohne Deamon durchzuführen. Durch die Installation "yum install ntp" werden mehrere Package installiert wie "ntpdate" da unter diesen Abhängigkeiten bestehen. Da wir jedoch nur "ntpdate" benutzen deinstallieren wir nachtrgälich "ntp". Wenn versucht wird "ntpdate" zu installieren werden die gleichen Package installiert wie für "ntp":
# yum install ntp
# rpm -e ntp
Das Package resp. Binary "ntpdate" ist installiert. Lege nun ein Log File an für die NTP Synchronisierung:
# mkdir /var/log/ntp
# touch /var/log/ntp/ntp.log
# chown root:root /var/log/ntp/ntp.log
# chmod 644 /var/log/ntp/ntp.log
Erstelle nun einen entsprechenden Cron-Job unter "crontab -e" der das Binary "ntpdate" mit einem entsprechenden NTP Server zB "ch.pool.ntp.org" synchronisiert:
# crontab -e
--------------- crontab ---------------
# Get the time from timeserver
0 0,3,6,9,12,15,18,21 * * * /usr/sbin/ntpdate ch.pool.ntp.org >> /var/log/ntp/ntp.log
--------------- crontab ---------------
NOTE Im "crontab" bedeuten die ersten 5 Positionen (* * * * *) folgendes:
* Minuten (0-59)
* Stunden (0-23)
* TagDesMonats (1-31)
* Monat des Jahres (1-12)
* TagDerWoche (0-6 with 0=Sunday)
Um einen Test manuell auszuführen benutze folgendes Kommando:
# /usr/sbin/ntpdate ch.pool.ntp.org
2 Jun 17:30:02 ntpdate[1726]: step time server 193.239.220.29 offset -21594.314498 sec
Konfiguration: Deaktivierung/Aktivierung Systemdienste
Auf einem CentOS 7 wie auf anderen CentOS Versionen sind einige System Dienste aktiviert ohne das diese gebraucht werden. Aus Sicherheitsgründen sollten diese deaktiviert/aktiviert werden. Dies bedeutet: Nachfolgendes Bulk Kommandos aktivieren die nötigen Services und deaktiviert die unnötigen:
# systemctl disable xinetd ;\
# systemctl disable rexec ;\
# systemctl disable rsh ;\
# systemctl disable rlogin ;\
# systemctl disable ypbind ;\
# systemctl disable tftp ;\
# systemctl disable certmonger ;\
# systemctl disable cgconfig ;\
# systemctl disable cgred ;\
# systemctl disable cpuspeed ;\
# systemctl enable irqbalance ;\
# systemctl disable kdump ;\
# systemctl disable mdmonitor ;\
# systemctl disable messagebus ;\
# systemctl disable netconsole ;\
# systemctl disable ntpdate ;\
# systemctl disable oddjobd ;\
# systemctl disable portreserve ;\
# systemctl enable psacct ;\
# systemctl disable qpidd ;\
# systemctl disable quota_nld ;\
# systemctl disable rdisc ;\
# systemctl disable rhnsd ;\
# systemctl disable rhsmcertd ;\
# systemctl disable saslauthd ;\
# systemctl disable smartd ;\
# systemctl disable sysstat ;\
# systemctl enable crond ;\
# systemctl disable atd ;\
# systemctl disable nfslock ;\
# systemctl disable named ;\
# systemctl disable httpd ;\
# systemctl disable dovecot ;\
# systemctl disable squid ;\
# systemctl disable snmpd ;\
# systemctl disable avahi-daemon ;\
# systemctl disable cups ;\
# systemctl disable openldap
Die nachfolgenden Befehle deaktivieren die "RPC" Services im Zusammenhang mit Secure Protocols (RPCsec GSS). Diese werden oft im Zusammenhang mit Kerberos und NFS benutzt. Der Service "repcgssd" ist die Client Seite von "RPCsec GSS". Wenn das System keine "Secure RPC" benötigt können diese Services deaktiviert werden:
# systemctl disable rpcgssd
# systemctl disable rpcsvcgssd
Der "rpcidmapd" Service ist zuständig um User Namen und Gruppen (UID GID) auf NFS4 Mounts zu mappen. Wenn kein NFS benutzt wird auf dem lokalen System sollte dieser Service deaktiviert werden:
# systemctl disable rpcidmapd
Das Script "netfs" verwaltet beim Neustart vers. Netzwerk basierende Filesysteme und mountet diese. Dazu gehören zB Samba und NFS. Wenn diese Filesysteme auf dem lokalen System nicht benutzt werden sollten dieses Script/Service deaktiviert werden. Die deaktivierung dieses Script/Service verhindert ebenfalls Manipulationen an "/etc/fstab" indem die Mount Points konfiguriert werden/sind:
# systemctl disable netfs
Wenn NFS auf dem lokalen System nicht benutzt wird kann auch dieser Service deaktiviert werden:
# systemctl disable nfs
Nach der Deaktivierung der Service ergiebt sich folgende Situation betreffend Services:
# systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount disabled
brandbot.path disabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-1.scope static
arp-ethers.service disabled
auditd.service enabled
autovt@.service disabled
blk-availability.service disabled
brandbot.service static
console-getty.service disabled
console-shell.service disabled
cpupower.service disabled
crond.service enabled
dbus-org.freedesktop.hostname1.service static
dbus-org.freedesktop.locale1.service static
dbus-org.freedesktop.login1.service static
dbus-org.freedesktop.machine1.service static
dbus-org.freedesktop.timedate1.service static
dbus.service static
debug-shell.service disabled
dm-event.service disabled
dnsmasq.service disabled
dracut-cmdline.service static
dracut-initqueue.service static
dracut-mount.service static
dracut-pre-mount.service static
dracut-pre-pivot.service static
dracut-pre-trigger.service static
dracut-pre-udev.service static
dracut-shutdown.service static
ebtables.service disabled
emergency.service static
getty@.service enabled
halt-local.service static
initrd-cleanup.service static
initrd-parse-etc.service static
initrd-switch-root.service static
initrd-udevadm-cleanup-db.service static
iprdump.service disabled
iprinit.service disabled
iprupdate.service disabled
irqbalance.service enabled
kmod-static-nodes.service static
lvm2-lvmetad.service disabled
lvm2-monitor.service enabled
lvm2-pvscan@.service static
messagebus.service static
microcode.service enabled
ntpdate.service disabled
plymouth-halt.service disabled
plymouth-kexec.service disabled
plymouth-poweroff.service disabled
plymouth-quit-wait.service disabled
plymouth-quit.service disabled
plymouth-read-write.service disabled
plymouth-reboot.service disabled
plymouth-start.service disabled
plymouth-switch-root.service static
polkit.service static
quotaon.service static
rc-local.service static
rdisc.service disabled
rdma.service disabled
rescue.service static
rhel-autorelabel-mark.service static
rhel-autorelabel.service static
rhel-configure.service static
rhel-dmesg.service disabled
rhel-domainname.service disabled
rhel-import-state.service static
rhel-loadmodules.service static
rhel-readonly.service static
rsyslog.service enabled
serial-getty@.service disabled
sshd-keygen.service static
sshd.service enabled
sshd@.service static
systemd-ask-password-console.service static
systemd-ask-password-plymouth.service static
systemd-ask-password-wall.service static
systemd-backlight@.service static
systemd-binfmt.service static
systemd-fsck-root.service static
systemd-fsck@.service static
systemd-halt.service static
systemd-hibernate.service static
systemd-hostnamed.service static
systemd-hybrid-sleep.service static
systemd-initctl.service static
systemd-journal-flush.service static
systemd-journald.service static
systemd-kexec.service static
systemd-localed.service static
systemd-logind.service static
systemd-machined.service static
systemd-modules-load.service static
systemd-nspawn@.service disabled
systemd-poweroff.service static
systemd-quotacheck.service static
systemd-random-seed.service static
systemd-readahead-collect.service enabled
systemd-readahead-done.service static
systemd-readahead-drop.service enabled
systemd-readahead-replay.service enabled
systemd-reboot.service static
systemd-remount-fs.service static
systemd-shutdownd.service static
systemd-suspend.service static
systemd-sysctl.service static
systemd-timedated.service static
systemd-tmpfiles-clean.service static
systemd-tmpfiles-setup-dev.service static
systemd-tmpfiles-setup.service static
systemd-udev-settle.service static
systemd-udev-trigger.service static
systemd-udevd.service static
systemd-update-utmp-runlevel.service static
systemd-update-utmp.service static
systemd-user-sessions.service static
systemd-vconsole-setup.service static
tcsd.service disabled
teamd@.service static
tuned.service enabled
wpa_supplicant.service disabled
-.slice static
machine.slice static
system.slice static
user.slice static
dbus.socket static
dm-event.socket enabled
lvm2-lvmetad.socket enabled
sshd.socket disabled
syslog.socket static
systemd-initctl.socket static
systemd-journald.socket static
systemd-shutdownd.socket static
systemd-udevd-control.socket static
systemd-udevd-kernel.socket static
basic.target static
bluetooth.target static
cryptsetup.target static
ctrl-alt-del.target masked
default.target enabled
emergency.target static
final.target static
getty.target static
graphical.target disabled
halt.target disabled
hibernate.target static
hybrid-sleep.target static
initrd-fs.target static
initrd-root-fs.target static
initrd-switch-root.target static
initrd.target static
iprutils.target disabled
kexec.target disabled
local-fs-pre.target static
local-fs.target static
multi-user.target enabled
network-online.target static
network.target static
nss-lookup.target static
nss-user-lookup.target static
paths.target static
poweroff.target disabled
printer.target static
reboot.target disabled
remote-fs-pre.target static
remote-fs.target enabled
rescue.target disabled
rpcbind.target static
runlevel0.target disabled
runlevel1.target disabled
runlevel2.target disabled
runlevel3.target disabled
runlevel4.target disabled
runlevel5.target disabled
runlevel6.target disabled
shutdown.target static
sigpwr.target static
sleep.target static
slices.target static
smartcard.target static
sockets.target static
sound.target static
suspend.target static
swap.target static
sysinit.target static
system-update.target static
time-sync.target static
timers.target static
umount.target static
systemd-readahead-done.timer static
systemd-tmpfiles-clean.timer static
203 unit files listed.
Basierend auf den deaktivierten Services sieht das System betreffend Prozesse folgendermassen aus:
# top
Tasks: 97 total, 3 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4047992 total, 3899544 free, 71852 used, 76596 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 3845896 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
379 root 20 0 0 0 0 S 0.3 0.0 0:00.01 xfsaild/dm-0
1 root 20 0 54160 3796 2404 S 0.0 0.1 0:00.90 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.08 rcu_sched
11 root 20 0 0 0 0 R 0.0 0.0 0:00.03 rcuos/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
22 root 20 0 0 0 0 S 0.0 0.0 0:00.17 kworker/0:1
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
26 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
27 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark
29 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
Nach der Installation vers. Package sowie Modifikationen des System ergiebt sich betreffend Filesystem folgendes Bild:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 2.0G 851M 1.2G 42% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.4M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 497M 138M 359M 28% /boot
/dev/mapper/centos-export 13G 33M 13G 1% /export
/dev/mapper/centos-var 1014M 138M 877M 14% /var
Hinweise - Bug (RemoveOnStop)
Wenn man nach allen Modifikationen die Log Files anschaut so fällt einem folgende Fehlermeldung auf:
# cat /var/log/messages | grep RemoveOnStop
Jun 3 19:39:12 kolab systemd: [/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 'RemoveOnStop' in section 'Socket'
Jun 3 19:39:12 kolab systemd: [/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 'RemoveOnStop' in section 'Socket'
NOTE Bei diesen Meldungen handelt es sich um Script Fehler in den entsprechenden "systemctl" Scripts und sind als
Bug deklariert und zwar als nicht "System Critical/Relevant. Dieser "Bug" wird in Version 219 was wiederum
CentOS 7.2 entspricht gelöst.