CentOS7 Linux alap konfiguráció

CentOS7 Linux alap konfiguráció

Ahol sok virtuális gépet használunk, célszerű egy jól felkonfigurált template gépet telepíteni, amit másolva csak a specifikus beállításokat kell elvégezni. Ez egy jó kiindulási állapot:

Alapcsomagok

yum install epel-release
yum install mc less openssh-server nano telnet net-tools wget curl nload subversion screen

Kernel konfiguráció

/etc/sysctl.d/kerneltuning.conf

vm.swappiness = 10
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 512
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

Kernel Paraméterek Magyarázata

  • vm.swappiness = 10 A swappiness paraméter határozza meg, hogy a kernel mennyire hajlamos a swap terület használatára a fizikai memória helyett. Az alacsonyabb érték (0-100) azt jelenti, hogy a kernel inkább a fizikai memóriát használja, míg a magasabb érték a swap használatát preferálja. A 10-es érték azt jelzi, hogy a rendszer inkább a RAM-ot használja, és csak akkor vált a swap-ra, ha a memória erősen telített.
  • net.core.somaxconn = 2048 Ez a paraméter határozza meg a maximális számú várakozó kapcsolatot, amelyet a rendszer egy adott porton kezelhet. A 2048-as érték növeli a maximális kapcsolatok számát, ami hasznos lehet nagy forgalmú szerverek esetén.
  • net.ipv4.tcp_max_syn_backlog = 512 Ez a paraméter a TCP SYN backlog méretét határozza meg, amely a bejövő SYN (kapcsolatfelvételi) kérések számát jelenti, amelyeket a rendszer képes kezelni, mielőtt elutasítaná őket. A 512-es érték növeli a maximális kapcsolatok számát, ami segíthet a DDoS támadások ellen és a nagy forgalmú alkalmazások teljesítményének javításában.
  • net.ipv4.ip_forward = 1 Ez a paraméter engedélyezi az IP-csomagok továbbítását a rendszer által. Az 1-es érték azt jelenti, hogy a rendszer IP-forrást végez, ami szükséges lehet routerek és tűzfalak esetén.
  • net.ipv4.tcp_tw_reuse = 1 Ez a paraméter lehetővé teszi a TCP TIME-WAIT állapotban lévő kapcsolatok újrahasználatát. Az 1-es érték azt jelenti, hogy a rendszer engedélyezi a TIME-WAIT állapotú socketek újrahasználatát, ami csökkentheti a portok kimerülését és javíthatja a teljesítményt.
  • net.ipv4.tcp_tw_recycle = 1 Ez a paraméter a TCP TIME-WAIT állapotú kapcsolatok gyorsabb újrahasználatát célozza meg. Az 1-es érték azt jelenti, hogy a rendszer gyorsabban újrahasználja a TIME-WAIT állapotú socketeket, de ez a beállítás problémákat okozhat NAT (Network Address Translation) környezetben, ezért óvatosan kell használni.
  • net.ipv4.tcp_fin_timeout = 30 Ez a paraméter határozza meg, hogy a TCP kapcsolat FIN állapotban mennyi ideig várjon, mielőtt bezárja a kapcsolatot. A 30 másodperces érték csökkenti a FIN állapotban töltött időt, ami segíthet a portok gyorsabb felszabadításában.

Tmp mount

/etc/fstab

tmpfs /tmp tmpfs defaults,nodev,noexec,nosuid,noatime 0 0

tmpfs és Beállításai

Mi az a tmpfs?

A tmpfs egy fájlrendszer, amely a RAM-on tárolja az adatokat, így rendkívül gyors hozzáférést biztosít. A tmpfs ideiglenes fájlok tárolására szolgál, és a rendszer újraindításakor az adatok elvesznek. A tmpfs használata különösen hasznos lehet ideiglenes fájlok, cache-ek és más gyorsan elérhető adatok tárolására.

Miért jó a tmpfs?

  • Gyors Hozzáférés: Mivel a tmpfs a RAM-on tárolja az adatokat, a hozzáférési sebesség jelentősen gyorsabb, mint a hagyományos lemezes fájlrendszerek esetében.
  • Dinamikus Méret: A tmpfs mérete dinamikusan változik a tárolt adatok mennyiségétől függően, így hatékonyan használja a rendelkezésre álló memóriát.
  • Csökkentett I/O Terhelés: Mivel a fájlok a memóriában találhatók, a lemez I/O műveletek csökkennek, ami javítja a rendszer teljesítményét.
    • Ideiglenes Adatok: Ideális ideiglenes fájlok tárolására, amelyek nem igénylik a tartós tárolást, például cache-ek, ideiglenes fájlok és session adatok.

Paraméterek

  • defaults: Alapértelmezett beállítások alkalmazása, amelyek tartalmazzák a leggyakoribb opciókat.
  • nodev: Megakadályozza a speciális eszközfájlok létrehozását a fájlrendszeren, ami növeli a biztonságot.
  • noexec: Megakadályozza a fájlok végrehajtását a fájlrendszeren, ami csökkenti a potenciális biztonsági kockázatokat, például a rosszindulatú kód futtatását.
  • nosuid: Megakadályozza a SUID (Set User ID) bit használatát, ami szintén növeli a biztonságot, mivel megakadályozza, hogy a felhasználók jogosultságokat szerezzenek a fájlok végrehajtásakor.
  • noatime: Megakadályozza a fájlok utolsó hozzáférési idejének frissítését, ami csökkenti a lemez I/O-t és javítja a teljesítményt.
  • 0 0: Az utolsó két szám a dump és fsck beállításokat jelöli, amelyek itt nem relevánsak, így 0 értéket kapnak.

Helyi hálózat

systemctl disable NetworkManager

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
Ipaddr=192.168.10.251
Prefix=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="System eth1"
ZONE=dmz
Gateway=192.168.10.254

Set hostname

/etc/sysconfig/network

Set FQDN hostname

/etc/hosts

FQDN

Mail

/etc/postfix/main.cf

myhostname
relayhost = mailrelay.local

/etc/aliases

root: admin@organization
newaliases

NTP

yum install ntp ntpdate
systemctl enable ntpd
systemctl disable chronyd
systemctl restart ntpd

Selinux

/etc/sysconfig/selinux

SELINUX=permissive

Yum-cron

A yum-cron egy eszköz, amely lehetővé teszi a CentOS 7 rendszerek automatikus frissítéseit a Yum csomagkezelő segítségével. A yum-cron segítségével a security frissítések automatikus letöltése és telepítse megvalósíthat. Ez különösen hasznos a biztonsági frissítések esetében, mivel gyorsan reagálhatunk a sebezhetőségekre, és fenntarthatjuk a rendszer stabilitását és biztonságát.

yum install yum-cron

/etc/yum/yum-cron.conf

update_cmd = security # csak security update-ek települnek, így minimális a rizikója bármely funkció elromlásának
apply_updates = yes # telepítse is a frissítéseket, ne csak letöltse
systemctl enable yum-cron

Fail2ban

yum install fail2ban
systemctl enable fail2ban

/etc/fail2ban/jail.d/01-ssh.conf

[default]
bantime = 3600 # 1 óra legyen a bann ideje, ne csak 5 perc

/etc/fail2ban/jail.d/00-firewalld.conf:

banaction = iptables-multiport
[sshd]
enabled = true # SSH védelem engedélyezése
systemctl restart fail2ban

Firewall

A CentOS-nek van beépített tűzfal kezelő szolgáltatása, firewalld, így egyszerűbb a konfigurálás, mint iptables szabályokkal

systemctl enable firewalld
firewall-cmd --zone=public --change-interface=eth0
firewall-cmd --zone=dmz --change-interface=eth1
firewall-cmd --zone=internal --change-interface=eth2
firewall-cmd --reload

Monitoring

Zabbix agent

rpm -Uvh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
yum install zabbix-agent zabbix-sender
systemctl enable zabbix-agent

Syslog-ng

yum install syslog-ng
systemctl enable syslog-ng

/etc/syslog-ng/syslog-ng.conf

Elküldjük az összes logot a logcenter nevű gépünknek

destination logserver { tcp("logcenter.local" port(514) ); };
log { source(s_sys); destination(logserver); };

filter f_iptables { facility(kern) and message("IN=") and message("OUT="); };
destination firewall { file("/var/log/firewall" suppress(30)); };
log { source(s_sys); filter(f_iptables); destination(firewall); };