Konfiguracja CentOS to nie taki prosty temat i każdy z nas ma taki moment, że dobrym pomysłem po instalacji systemu operacyjnego jest jego skonfigurowanie do pracy. Każdy ma swoje sposoby, zaś ja chciałbym przedstawić moje must-have na start nim przejdę do realnego zastosowania nowego systemu.
Na wstępie zaznaczę, że opisuję wersję CentOS 7. Nie jest to najnowsza wersja tego systemu, ale po prostu nie miałem jeszcze okazji bawić się wersją 8, która wyszła w miarę niedawno. Wiedza powinna być raczej uniwersalna i również do zastosowania w wersji 8. Jednak mogę się mylić? (tak, to pytanie).
Konfigurację serwerów do ostatecznej pracy staram się prowadzić bezpośrednio z poziomu SaltStack. Oczywiście są inne narzędzia jak Ansible, czy Chef – jednak żadnej z trójki nie poruszę w tym artykule. Nim zacznę z nich korzystać, robię kilka rzeczy na start, bo nie wymagają dużego nakładu pracy (w mojej skali oczywiście), a automatyzację stosuję zaraz po zakończeniu tych pierwszych etapów.
CentOS 7 i 8 możemy pobrać ze strony projektu: https://centos.org/
CentOS i aktualizacje!
Skłamałbym, gdybym powiedział następujące słowa:
Aktualizacje robi się z rozwagą!
Jasne – tak się je powinno robić, ale na początek – na czystym systemie przyznam, że średnio mnie interesuje rozwaga, bo mogę wszystko zacząć od nowa niskim kosztem i bogatszy o nową wiedzę. Pierwszą rzeczą co robię jest pełna aktualizacja systemu. Można ją wykonać poprzez komendy:
yum check-update
yum upgrade
Co tutaj dużo opowiadać? Robimy aktualizację i system jest gotowy do pracy!
Pierwsza konfiguracja CentOS – Podstawowe narzędzia
Nie zawsze wszystko jest już zainstalowane. Wiele paczek na start instaluję, by mieć pewność ich obecności w razie potrzeby. Paczki takie jak vim, curl, netcat, htop, pstree, czy lsof są bardzo przydatne na wielu etapach pracy z systemem operacyjnym jakim jest system bazujący na jądrze GNU/Linux, więc warto takie posiadać. Każdy ma swoje ulubione pakiety, więc podane przykłady są bardzo mocno nastawione na moje potrzeby – Wy skorzystajcie z moich lub zbierzcie swoje ulubione pakiety! Np.: zamiast vim użyjcie nano – poczuję smutek w sercu, ale jak najbardziej masz do tego prawo 🙂
Jak instalujemy pakiety z repozytorium w CentOS? yum!
yum install vim nc htop lsof curl psmisc
Gotowe!
Serwisy w CentOS!
Były brakujące pakiety – to może teraz pakiety, których jest za dużo? Często działają jakieś serwisy w tle, których naprawdę nie potrzebujemy. W moim przypadku jest to często np.: postfix. Jest uruchomiony jako serwis w systemctl – nie jest mi on potrzebny, więc po co go utrzymywać? Wyłączmy go i usuńmy:
systemctl stop postfix systemctl disable postfix yum autoremove postfix
Oczywiście Ty drogi czytelniku musisz sam sobie wybrać czego nie potrzebujesz. W tym celu w poprzednim etapie instalowałem pstree z pakietu psmisc. Wpisujemy pstree -p i widzimy co tam mamy, ewentualnie systemctl list-unit-files
CentOS i jego zapora ogniowa
Przyznam, że śmieszy mnie ta nazwa – wolę angielski odpowiednik firewall. W poprzednim punkcie zmieniliśmy port dla SSH, by nie był na standardowym porcie. (nie zmieniliśmy, bo sobie sam wyciąłem dostęp… To będziemy robić później 🙂 ) Jak włączymy firewall to nam się trochę może uciąć dostęp, prawda?
Najpierw włączmy firewall. Standardowo jest nakładka o nazwie firewalld i z niego skorzystamy.
systemctl enable firewalld
systemctl start firewalld
No to dodajmy usługi! Jeśli korzystamy z HTTP/HTTPS to dodajmy je do wyjątków:
// Najpierw wersja https
firewall-cmd –add-service=https –permanent// Dodajmy następnie wersję http
firewall-cmd –add-service=http –permanent// Na koniec dodajmy SSH!
firewall-cmd –add-service=ssh –permanent //Tylko tymczasowo dodamy, o tym później// A na koniec przeładujmy!
firewall-cmd –reload
No to mamy zaporę gotową! Dodamy jeszcze jeden port na potrzeby kolejnego punktu:
firewall-cmd –add-port=55555/tcp –permanent
// No i znowu przeładowanie!
firewall-cmd –reload
Konfiguracja SSH! Zmieńmy porty! Bezpieczeństwo!
Ten punkt miał być szybciej, ale jest teraz – tak dla bezpieczeństwa 🙂 Konfiguracja SSH nie jest prosta i wymaga trochę pracy, by znaleźć bezpieczny środek.
Na początku uruchomić musimy edytor i konfigurację trochę zmodyfikować:
vim /etc/ssh/sshd_config
Dostaliśmy się do konfiguracji i teraz wprowadźmy zmianę taką typowo standardową – pozostałe zmiany według uznania:
- W linijce z portem:
- Port 22
- Zmieniamy (i usuwamy komentarz jak jest zakomentowana) na inny port (który dodaliśmy do wyjątku w firewalld!), np.:
- Port 55555
Konfiguracja CentOS – Inne pomysły
Są rzeczy, których nie opisałem, bo to wszystko zależy od potrzeb. Nie bez powodu trzeba to samemu skonfigurować. Ja te rzeczy mam w systemie automatyzacji, inni robią ręcznie lub skryptami. Tymi rzeczami są np.: instalacja antywirusa, dodanie użytkownika i zablokowanie dostępu do konta root z zewnątrz po SSH, a także wiele innych czynności.
Osobiście pierw instaluję aplikację Lynis – świetne i proste narzędzie do audytu i „utwardzam” system, by był „bezpieczniejszy”.
yum install lynis
lynis audit system
W ten sposób dostaniemy wygodny raport. Zainstalujemy w ten sposób jakiś rootkit hunter, clamav, zmniejszymy niebezpieczeństwo pewnych konfiguracji SSH, zainstalujemy fail2ban i wiele, wiele innych. To pozostawiam Waszej ocenie, bo wszystko jest zależne od realnych potrzeb serwera, gdzie ten system instalowaliśmy.
A Wy, czy macie swoje pomysły co można zrobić lepiej, albo co robicie zawsze na serwerach? Podzielcie się swoją wiedzą!
Również zapraszam do naszych innych materiałów: tutaj