Konfiguracja serwera CentOS 7

  1. Wprowadzenie
  2. Początkowa konfiguracja CentOS 7
  3. Określ ustawienia sieciowe
  4. Skonfiguruj zaporę
  5. Konfiguracja SSH w CentOS 7
  6. Ustawienie czasu
  7. Dodawanie repozytoriów
  8. Ustawianie historii przechowywania w bash_history
  9. Automatyczna aktualizacja systemu
  10. Wyłącz komunikaty powodziowe w / var / log / messages
  11. Zainstaluj iftop, atop, htop, lsof w CentOS 7
  12. Konfigurowanie poczty systemowej
  13. Wniosek
  14. Wideo na temat konfiguracji CentOS 7

Mam świeżo zainstalowany serwer CentOS 7 na VDS z wirtualizacją KVM. Porozmawiam o tym, jak wykonać podstawową konfigurację serwera, aby używać go w dowolnej pojemności według własnego uznania. Może być serwer internetowy , serwer VPN serwer monitorowanie . Porozmawiam o początkowych ustawieniach systemu CentOS, które zwiększają bezpieczeństwo i wygodę pracy z serwerem. Zaznaczam, że w siódmej wersji systemu nastąpiły pewne zmiany w porównaniu z poprzednimi wersjami.

Kurs online Data Engineer jest przeznaczony dla programistów, administratorów DBMS i każdego, kto chce doskonalić swoje umiejętności, uczyć się nowych narzędzi i angażować w ciekawe zadania z zakresu pracy z dużymi danymi. Kurs nie jest dla początkujących - musisz przejść.

Wprowadzenie

Aby skonfigurować prawie każdy serwer, musisz wykonać kilka standardowych kroków, które różnią się nieznacznie w różnych sytuacjach. Bez względu na to, jaką funkcjonalność przygotowałeś, będziesz musiał ustawić prawidłowy czas i włączyć jego automatyczną aktualizację. Bez instalowania ustawień sieciowych nie wyobrażam sobie pracy nowoczesnego serwera. Nie przychodzi na myśl żaden przykład. Ten sam zestaw ustawień prawie na maszynie jest wykonywany po instalacji. Chcę podzielić się z tobą moją pracą na ten temat - co przede wszystkim ustawiłem na nowym serwerze centos.

Jeszcze raz zwracam uwagę, że wprowadzam te ustawienia na serwerze wirtualnym. Jeśli masz żelazny serwer, zaleca się wykonanie kilku dodatkowych ustawień, o których tutaj nie wspominam. Obejmują one, na przykład, konfigurowanie i sprawdzanie odporności na uszkodzenia, gdy jeden z dysków wychodzi. Wyłącz regularne sprawdzanie tablicy mdadm itp.

Początkowa konfiguracja CentOS 7

Mamy więc: # uname -a Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 # 1 SMP Czw Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

Przede wszystkim zaktualizujemy system podstawowy:

# aktualizacja yum

Aby ułatwić administrowanie, zawsze instaluję Midnight Commander lub po prostu mc:

# yum install mc

Natychmiast włączam podświetlanie składni wszystkich plików, które nie są wyraźnie wskazane w pliku / usr / share / mc / syntax / Syntax ze składnią dla skryptów sh i bash. Ta uniwersalna składnia jest zwykle odpowiednia dla plików konfiguracyjnych, z którymi często pracujesz na serwerze. Nadpisywanie pliku unknown.syntax. Jest to ten szablon, który zostanie zastosowany do plików .conf i .cf, ponieważ żadna składnia nie jest z nimi bezpośrednio powiązana.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Dalsze narzędzia sieciowe będą nam przydatne. W ustawieniu minimalnym będziesz zaskoczony po wpisaniu polecenia:

# ifconfig

I zobaczysz odpowiedź:

-bash: ifconfig: nie znaleziono polecenia

Przynajmniej, kiedy pierwszy raz to zobaczyłem, byłem zaskoczony. Pomyślałem, że popełniłem błąd pisząc polecenie, sprawdziłem wszystko kilka razy, ale bez rezultatu. Okazało się, że musisz osobno zainstalować pakiet, aby uruchomić ifconfig i inne narzędzia sieciowe.

Zamiast ifconfig w CentOS 7, narzędzie ip jest teraz. Nie rozumiem, dlaczego wyciąć osobne programy do zarządzania ustawieniami sieci, jeśli ifconfig i tak doskonale radzi sobie z zadaniem. Ponadto zawsze podobało mi się, że w różnych dystrybucjach systemu Linux wszystko jest takie samo. Z ifconfig możesz skonfigurować sieć nie tylko w Linuksie, ale także w freebsd. To jest wygodne. A kiedy w każdej dystrybucji narzędzie jest niewygodne. Proponuję więc zainstalować zwykły ifconfig.

Zrób to:

# yum zainstaluj net-tools

Teraz, aby polecenia nslookup działały z nami lub na przykład host, musisz zainstalować pakiet bind-utils. Jeśli tego nie zrobisz, a następnie na polecenie:

# nslookup

Będzie wniosek:

-bash: nslookup: nie znaleziono polecenia

Więc zainstaluj bind-utils:

# yum zainstaluj bind-utils

Wyłącz SELinux. Jego użycie i konfiguracja to osobna rozmowa. Teraz tego nie zrobię. Więc wyłącz:

# mcedit / etc / sysconfig / selinux

zmiana wartości
SELINUX = wyłączony
Aby zmiany odniosły skutek, uruchom ponownie:

# ponowne uruchomienie

Możesz zastosować wyłączenie SElinux bez ponownego uruchamiania:

# setenforce 0

Określ ustawienia sieciowe

Teraz produkuj konfiguracja sieci w CentOS . Aby to zrobić, otwórz plik / etc / sysconfig / network-scripts / ifcfg-eth0

# mcedit / etc / sysconfig / network-scripts / ifcfg-eth0

W polu IPADDR wprowadź swój adres, w NETMASK maskę sieci, w bramce GATEWAY, adres DNS1 serwera DNS. Zapisz plik i uruchom ponownie sieć, aby zastosować ustawienia:

# /etc/init.d/network restart

Skonfiguruj zaporę

Bardzo szczegółowe pytanie Ustawienia iptables w CentOS 7 Przejrzałem osobno. Teraz szybko i łatwo skonfigurujemy zaporę. W CentOS 7, iptables działa jak firewall. Domyślnie działa. Aby wyświetlić bieżące reguły, wprowadź polecenie:

# iptables -L -v -n

Chcę tylko ostrzec, że bez dostępu do konsoli serwera konfiguracja zapory ogniowej to zły pomysł. Nawet jeśli dobrze rozumiesz, co robisz i robiłeś to wiele razy, nadal masz szansę pozostać bez dostępu do serwera. Przede wszystkim przed skonfigurowaniem iptables sprawdzamy dostęp do konsoli za pomocą KVM lub fizycznie.

W siódmej wersji CentOS stworzono nowe narzędzie o nazwie firewalld do zarządzania iptables i cała kontrola odbywa się za jego pośrednictwem. Nie rozumiałem, dlaczego to zrobili i nie mogę powiedzieć, czy stało się to dla niego wygodniejsze, czy nie. Dla mnie wygodniej jest korzystać z tego samego doświadczenia w iptables. Migrując z serwera na serwer i z dystrybucji do dystrybucji, po prostu edytuję skrypt ustawień zapory.

Ale z jakiegoś powodu CentOS wynalazł firewalld, w Ubuntu jest ufw, ale esencja jest taka sama - są to narzędzia do konfigurowania iptables, które są takie same we wszystkich dystrybucjach. Zarządzałem iptables za pomocą skryptu napisanego samodzielnie, który przesyłałem z serwera na serwer i edytowałem dla określonych potrzeb. Udostępnię ten skrypt. Więc najpierw zatrzymaj i wyłącz firewalld:

# systemctl stop firewalld # systemctl wyłącz firewalld rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service'

Zainstaluj narzędzia dla iptables:

# yum -y zainstaluj usługi iptables

Włącz autorun iptables:

# systemctl włącz iptables

Teraz utworzymy plik /etc/iptables_rules.sh o następującej treści:

#! / bin / bash # # Deklarowanie zmiennych eksportu IPT = "iptables" # Interfejs, który wygląda na eksport do Internetu WAN = eksport eth0 WAN_IP = 149.154.71.205 # Czyszczenie wszystkich łańcuchów iptables $ IPT -F $ IPT -F -t nat $ IPT -F -t mangle $ IPT -X $ IPT -t nat -X $ IPT -t mangle -X # Ustaw domyślne zasady dla ruchu, który nie pasuje do żadnej z reguł $ IPT -P INPUT DROP $ IPT -P OUTPUT DROP $ IPT -P FORWARD DROP # zezwól na ruch lokalny dla loopback $ IPT -A INPUT -i lo -j AKCEPTUJ $ IPT-OUTPUT -o lo -j AKCEPTUJ # Zezwól na połączenia wychodzące samego serwera $ IPT -A OUTPUT -o $ WAN -j ACCEPT # Stan ESTABLISHED wskazuje, że nie jest to pierwszy pakiet w połączeniu. # Ignoruj ​​wszystkie już zainicjowane połączenia, a także ich potomek $ IPT -A INPUT -p wszystkie -m stan - stan ESTABLISHED, RELATED -j ACCEPT # Pomiń nowe, a także już zainicjowane i ich połączenia potomne $ IPT -A OUTPUT -p wszystkie -m stan - stan ESTABLISHED, RELATED -j ACCEPT # Zezwalaj na przekazywanie dla już zainicjowanych i ich połączenia potomne $ IPT -A FORWARD -p wszystkie -m stan - stan ESTABLISHED, RELATED -j ACCEPT # Włącz fragmentację pakietów. Wymagane z powodu różnych wartości MTU $ IPT -I FORWARD -p tcp --tcp-flags SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu # Usuń wszystkie pakiety, których nie można zidentyfikować # i dlatego nie mogą mieć określony status. $ IPT -A INPUT -m state --state INVALID -j DROP $ IPT -A FORWARD -m state --state INVALID -j DROP # Prowadzi do łączenia zasobów systemowych, dzięki czemu prawdziwa # wymiana danych staje się niemożliwa, odciąć $ IPT -A INPUT -p tcp! --syn -m state --state NEW -j DROP $ IPT -A OUTPUT -p tcp! --syn -m state --state NEW -j DROP # Rozpoznaj ping $ IPT -A INPUT -p icmp --icmp-type echo-reply -j AKCEPTUJ $ IPT -A INPUT -p icmp --icmp-type cel- nieosiągalny -j AKCEPTUJ $ IPT -A INPUT -p icmp - typ icmp przekroczony czas -j AKCEPTUJ $ IPT -A INPUT -p icmp - typ icmp echo-request -j AKCEPTUJ # Otwórz port dla ssh $ IPT - A INPUT -i $ WAN -p tcp --dport 22 -j AKCEPTUJ # Otwórz port dla DNS # $ IPT -A INPUT -i $ WAN -p udp --dport 53 -j AKCEPTUJ # Otwórz port dla NTP # $ IPT - A WEJŚCIE -i $ WAN -p udp --dport 123 -j AKCEPTUJ # Logowanie # Wszystko, co jest niedozwolone, ale łamie się, wyślij do łańcucha undef $ IPT -N undef_in $ IPT -N undef_out $ IPT -N undef_fw $ IPT -A INPUT -j undef_in $ IPT -A OUTPUT -j undef_out $ IPT -A FORWARD -j undef_fw # Loguj wszystko z undef $ IPT -A undef_in -j LOG - informacje na poziomie logu - log-prefix "- IN - DROP "$ IPT -A undef_in -j DROP $ IPT -A undef_out -j LOG - log-level info - log-prefix "- OUT - DROP" $ IPT -A undef_out -j DROP $ IPT -A undef_fw -j LOG - log-level info --log-prefix "- FW - DROP "$ IPT -A undef_fw -j DROP # Napisz reguły / sbin / iptables-save> / etc / sysconfig / iptables

W zasadzie nie ma nic do dodania, wszystkie komentarze są podane w pliku. W tej formie logi wszystkiego zablokowanego zostaną zapisane w pliku / var / log / messages i będzie wiele rekordów. Tak więc podczas normalnej pracy linie te muszą zostać skomentowane i użyte tylko podczas debugowania. Bardziej szczegółowy opis zasad i przykładów ustawień zapory ogniowej w przypadku, gdy serwer jest bramą sieci lokalnej, jest podany w linku w początek sekcja.

Zrób plik z wykonywalnymi regułami i uruchom:

# chmod 0740 /etc/iptables_rules.sh # /etc/iptables_rules.sh

Sprawdź, czy obowiązują zasady:

# iptables -L -v -n

Za każdym razem, gdy uruchamiasz plik z regułami iptables, wszystkie zmiany są zapisywane w pliku / etc / sysconfig / iptables i są stosowane podczas uruchamiania systemu.

Konfiguracja SSH w CentOS 7

Ponadto wprowadzimy pewne zmiany w ssh, aby zwiększyć bezpieczeństwo. Domyślnie usługa działa na porcie 22 i jeśli wszystko pozostanie bez zmian, otrzymamy ogromną liczbę prób zalogowania się. Boty stale skanują Internet i zbierają hasła do ssh. Aby uchronić się przed skanowaniem prostych botów, zmień port, na którym działa ssh. Możesz wybrać dowolną pięciocyfrową liczbę, to nie ma znaczenia. Chroni przed automatycznym skanowaniem. Zawieś demona ssh na porcie 25333. Aby to zrobić, edytuj plik / etc / ssh / sshd_config

# mcedit / etc / ssh / sshd_config

Odkomentuj linię Port 22 i zastąp wartość 22 25333.
Zwykle pozwalam rootowi łączyć się przez ssh. Jest to dla mnie wygodniejsze. Nigdy nie miałem z tym żadnych problemów. Jeśli uważasz, że nie jest to bezpieczne, nie dotykaj tego ustawienia. Aby zezwolić użytkownikowi root na połączenie przez ssh, odkomentuj linię PermitRootLogin yes.

Zapisz plik. Teraz na pewno zmienimy ustawienia iptables, dodamy dozwolone połączenia zamiast portu 22 25333. Jeśli nie zostanie to zrobione, po ponownym uruchomieniu sshd stracimy zdalny dostęp do serwera. Więc otwórz /etc/iptables_rules.sh i zmień go w linii

$ IPT -A INPUT -i $ WAN -p tcp --dport 22 -j AKCEPTUJ

22 przy 25333 i uruchom plik. Nasze aktualne połączenie nie zakończy się, ponieważ zostało już ustanowione, ale ponowne połączenie przez ssh do portu 22 nie działa.

Uruchom ponownie sshd:

# systemctl restart sshd

Sprawdź, który port sshd nasłuchuje:

# netstat -tulpn | grep sshd tcp 0 0 0.0.0.0:25333 0.0.0.0:* LISTEN 1799 / sshd tcp6 0 0 ::: 25333 ::: * LISTEN 1799 / sshd

Jeśli wyjście jest takie samo jak moje, to wszystko jest w porządku, teraz możesz połączyć się z ssh przez port 25333.

Dodaj kolejne małe ustawienie. Czasami, gdy występują problemy z serwerem dns, logowanie ssh zawiesza się na 30-60 sekund. Po prostu poczekasz po wpisaniu swojego loginu, kiedy będziesz mógł wprowadzić hasło. Aby uniknąć tego spowolnienia, niech ssh nie użyje dns w swojej pracy. Aby to zrobić, usuń komentarz z linii za pomocą parametru UseDNS w konfiguracji i wyłącz go. Domyślnie jest włączona.

UseDNS no

Aby zastosować zmiany, musisz ponownie uruchomić usługę ssh, tak jak to zrobiliśmy wcześniej.

Ustawienie czasu

Możesz sprawdzić, która godzina jest na serwerze za pomocą polecenia daty:

# data

Aby zmienić strefę czasową, musisz wybrać odpowiedni plik strefy czasowej w / usr / share / zoneinfo. Jeśli masz strefę czasową w Moskwie, wykonaj następujące czynności:

# mv / etc / localtime /etc/localtime.bak # ln -s / usr / share / zoneinfo / Europe / Moscow / etc / localtime

Możesz też użyć specjalnego narzędzia dołączonego do zestawu CentOS 7. Robi dokładnie to samo:

# timedatectl set-timezone Europa / Moskwa

CentOS 7 ma chroniczne narzędzie do synchronizacji czasu. W standardowej instalacji musi być zainstalowany w systemie, w minimalnym stopniu nie. Jeśli go nie potrzebujesz, zainstaluj go ręcznie:

# yum zainstaluj chrony

Uruchom chrony i dodaj do automatycznego ładowania:

# systemctl start chronyd # systemctl włącz chronyd

Sprawdź, czy zaczęło się normalnie:

# statusctl status chronyd ● chronyd.service - klient / serwer NTP Załadowany: załadowany (/usr/lib/systemd/system/chronyd.service; włączony; ustawienie dostawcy: włączone) Aktywny: aktywny (uruchomiony) od piątku 2016-08-05 00:33:09 MSK; 52min left Main PID: 667 (chronyd) CGroup: /system.slice/chronyd.service 66─667 / usr / sbin / chronyd Aug 05 00:33:09 centos.local systemd [1]: Uruchamianie klienta / serwera NTP. Aug 05 00:33:09 centos.local chronyd [667]: uruchamianie chronyd wersji 2.1.1 (+ CMDMON + NTP + REFCLOCK + RTC + PRIVDROP + DEBUG + ASYNCDNS + IPV6 + SECHASH) sie 05 00:33:09 centos .local chronyd [667]: Wygenerowany klucz 1 sie 05 00:33:09 centos.local systemd [1]: Uruchomiony klient / serwer NTP. Aug 05 00:33:26 centos.local chronyd [667]: Wybrane źródło 85.21.78.91 Aug 05 00:33:26 centos.local chronyd [667]: zegar systemowy błędny o -3595.761368 sekund, regulacja rozpoczęta 04 sierpnia 23:33 : 30 centos.local chronyd [667]: Zegar systemowy został zwiększony o -3595.761368 sekund

Wszystko jest w porządku, serwis działa. Po uruchomieniu automatycznie synchronizuje czas.

Aby zsynchronizować czas, możesz użyć bardziej znanego programu, który jest obecny w prawie wszystkich dystrybucjach unixowych - ntp . Zainstaluj narzędzie synchronizacji czasu ntp w CentOS:

# yum zainstaluj ntp

Po synchronizacji czasu:

# / usr / sbin / ntpdate pool.ntp.org

Jeśli ntpdate nie działa , spójrz na materiał, może to twoja sprawa. Zacznijmy od demona synchronizacji i napiszmy jego start do autoload:

# systemctl start ntpd # systemctl włącz ntpd ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

Teraz nasze zegarki zostaną automatycznie zsynchronizowane z serwerem czasu.

Więcej szczegółów na ten temat jest napisanych osobno w moim materiale - instalacja, konfiguracja i synchronizacja czasu w CentOS .

Nie używaj jednocześnie demona synchronizacji czasu - chrony i ntp. Wybierz dowolny. Osobiście nie widzę w nich żadnej różnicy, sam często używam zwykłego ntp.

Dodawanie repozytoriów

Aby zainstalować różne potrzebne oprogramowanie połącz repozytoria z CentOS . Najbardziej popularne to EPEL i rpmforge, więc dodaj je. Najpierw umieszczamy EPEL. Wszystko jest proste, jest dodawane ze standardowego repozytorium:

# yum zainstaluj wydanie epel

Zainstaluj rpmforge:

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1 .el7.rf.x86_64.rpm

Obecnie powyższy link nie działa z nieznanych powodów, mam nadzieję, że jest to tymczasowy problem z witryną. Podczas gdy możesz użyć alternatywy:

# yum zainstaluj http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

Ustawianie historii przechowywania w bash_history

Przydatne byłoby wprowadzenie pewnych zmian w standardowym mechanizmie zapisywania historii poleceń. Często pomaga, gdy trzeba zapamiętać jedno z wcześniej wprowadzonych poleceń. Ustawienia domyślne mają pewne ograniczenia, które są niewygodne. Oto ich lista:

  1. Domyślnie zapisywanych jest tylko 1000 ostatnich poleceń. Jeśli jest ich więcej, starsze zostaną usunięte i zastąpione nowymi.
  2. Nie ma dat wykonania poleceń, tylko ich lista w kolejności wykonania.
  3. Plik z listą poleceń jest aktualizowany po sesji. W przypadku sesji równoległych niektóre polecenia mogą zostać utracone.
  4. Absolutnie wszystkie polecenia są zapisywane, choć nie ma sensu ich zachować.

Lista ostatnio wykonanych poleceń jest przechowywana w katalogu domowym użytkownika w pliku .bash_history (na początku okresu). Może zostać otwarty przez dowolnego edytora i zobaczyć. Aby uzyskać wygodniejsze wyjście z listy, możesz wprowadzić następujące polecenie w konsoli:

# historia

i zobacz listę numerowaną. Możesz szybko znaleźć konkretną komendę, filtrując tylko niezbędne linie, na przykład tak:

# historia | grep mniam

Zobaczymy więc wszystkie opcje uruchamiania polecenia yum, które są przechowywane w historii. Popraw wymienione wady standardowych ustawień przechowywania historii poleceń w CentOS 7. W tym celu dokonaj edycji pliku .bashrc , który znajduje się w tym samym katalogu, co plik historii. Dodaj do niego następujące linie:

export HISTSIZE = 10000 export HISTTIMEFORMAT = "% h% d% H:% M:% S" PROMPT_COMMAND = 'historia -a' eksport HISTIGNORE = "ls: ll: history: w: htop"

Pierwszy parametr zwiększa rozmiar pliku do 10 000 linii. Możesz zrobić więcej, choć zwykle wystarcza tego rozmiaru. Drugi parametr wskazuje, że konieczne jest zapisanie daty i godziny polecenia. Trzecia linia zmusza Cię natychmiast po poleceniu do zapisania jej w historii. W ostatniej linii tworzymy listę wyjątków dla tych poleceń, które nie są wymagane w historii. Podałem przykład najprostszej listy. Możesz go dodać według własnego uznania.

Aby zastosować zmiany, musisz się wylogować i ponownie połączyć lub wykonać polecenie:

# źródło ~ / .bashrc

Automatyczna aktualizacja systemu

Aby utrzymać bezpieczeństwo serwera na odpowiednim poziomie, konieczne jest zaktualizowanie go co najmniej na czas - zarówno samo jądro z narzędziami systemowymi, jak i inne pakiety. Możesz to zrobić ręcznie, ale dla bardziej wydajnej pracy lepiej jest zautomatyzować rutynowe czynności. Nie trzeba instalować aktualizacji automatycznie, ale przynajmniej sprawdzić ich wygląd. Zwykle stosuję tę strategię.

Aby automatycznie sprawdzić aktualizacje, pomoże nam narzędzie yum-cron . Jest on tradycyjnie umieszczany w yum ze standardowego repozytorium.

# yum zainstaluj yum-cron

Po instalacji tworzone jest zadanie automatyczne, aby uruchomić narzędzie w /etc/cron.daily i /etc/cron.hourly . Domyślnie narzędzie pobiera znalezione aktualizacje, ale ich nie stosuje. Zamiast tego powiadomienie o aktualizacji jest wysyłane do lokalnego administratora głównej skrzynki pocztowej. Następnie przechodzisz do trybu ręcznego i decydujesz, czy zainstalować aktualizacje w dogodnym dla Ciebie czasie. Ten tryb działania uważam za najwygodniejszy, więc nie zmieniam tych ustawień.

Pliki konfiguracyjne yum-cron znajdują się w /etc/yum/yum-cron.conf i yum-cron-hourly.conf . Są dobrze komentowane, więc nie potrzebujesz szczegółowych wyjaśnień. Zwróć uwagę na sekcję [email] , w której możesz określić parametry wysyłania wiadomości. Domyślnie wysyłana jest poczta za pośrednictwem lokalnego hosta. Możesz tutaj zmienić ustawienia i wysyłać wiadomości za pośrednictwem serwera poczty innej firmy. Zamiast tego osobiście wolę, aby cały serwer konfigurował wysyłanie lokalnej poczty roota do zewnętrznej skrzynki pocztowej za pomocą autoryzacji na innym serwerze smtp.

Wyłącz komunikaty powodziowe w / var / log / messages

W domyślnej instalacji CentOS 7 cały dziennik systemu / var / log / messages po pewnym czasie działania serwera zostanie zablokowany następującymi wpisami.

16 października 14:01:01 pliki xs systemd: Utworzono kawałek u user-0.slice. 16 października 14:01:01 system plików xs: Uruchamianie użytkownika-0.slice. 16 października 14:01:01 xs-files systemd: Rozpoczęto sesję 14440 użytkownika root. 16 października 14:01:01 xs-files systemd: Uruchamianie sesji 14440 użytkownika root. 16 października 14:01:01 system plików xs: Usunięto kawałek użytkownika-0.slice. 16 października 14:01:01 pliki xs systemd: zatrzymanie użytkownika-0.sice. 16 października 15:01:01 pliki xs systemd: Utworzono kawałek u person-0.slice. 16 października 15:01:01 pliki xs systemd: Uruchamianie użytkownika-0.slice. 16 października 15:01:01 xs-files systemd: Rozpoczęto sesję 14441 użytkownika root. 16 października 15:01:01 pliki xs systemd: Rozpoczęcie sesji 14441 użytkownika root. 16 października 15:01:01 xs-files systemd: Rozpoczęto sesję 14442 użytkownika root. Oct 16 15:01:01 xs-files systemd: Rozpoczęcie sesji 14442 użytkownika root. 16 października 15:01:01 system plików xs: Usunięto kawałek użytkownika-0.slice. Oct 16 15:01:01 xs-files systemd: Zatrzymanie użytkownika-0.slice. 16 października 16:01:01 pliki xs systemd: Utworzono kawałek użytkownika-0.slice. 16 października 16:01:01 pliki xs systemd: Uruchamianie użytkownika-0.slice. 16 października 16:01:01 xs-files systemd: Rozpoczęto sesję 14443 użytkownika root. 16 października 16:01:01 xs-files systemd: Rozpoczęcie sesji 14443 użytkownika root. 16 października 16:01:01 system plików xs: Usunięto kawałek użytkownika-0.slice.

Nie przynoszą żadnych praktycznych korzyści, więc je wyłączymy. Aby to zrobić, utwórz osobną regułę dla rsyslog, gdzie wymienimy wszystkie szablony wiadomości, które wycinamy. Opublikujemy tę regułę w osobnym pliku /etc/rsyslog.d/ignore-systemd-session-slice.conf .

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf jeśli $ programname == "systemd" i ($ msg zawiera "Starting Session" lub $ msg zawiera "Started Session" lub $ msg zawiera "Created slice "lub $ msg zawiera" plasterek użytkownika początkowego "lub $ msg zawiera" Usunięty plasterek "Kromka lub" msg zawiera "Zatrzymywanie wycinka użytkownika" ) a następnie zatrzymaj się

Zapisz plik i uruchom ponownie rsyslog, aby zastosować ustawienia.

# systemctl ponownie uruchom rsyslog

Należy zrozumieć, że w tym przypadku wyłączamy powódź w pliku dziennika tylko na serwerze lokalnym. Jeśli będziesz się logował zdalny serwer syslog , wtedy ta zasada będzie musiała zostać skonfigurowana.

Zainstaluj iftop, atop, htop, lsof w CentOS 7

I wreszcie dodaj kilka przydatnych narzędzi, które mogą być przydatne podczas działania serwera.

iftop pokazuje w czasie rzeczywistym ładowanie interfejsu sieciowego, może być uruchamiany za pomocą różnych kluczy, nie będę się nad tym szczegółowo rozwodził, w Internecie są informacje w Internecie. Umieściliśmy:

# yum zainstaluj iftop

I dwóch interesujących menedżerów zadań, często używam htop, ale czasami jest przydatny. Umieszczamy obie rzeczy, przekonaj się sam, wymyśl, co lubisz najbardziej, dopasuj:

# yum -y zainstaluj htop # yum -y install atop

Oto jak wygląda htop:

Oto jak wygląda htop:

Aby wyświetlić informacje o tym, które pliki są używane przez różne procesy, radzę zainstalować narzędzie lsof . Prawdopodobnie przyda się wcześniej lub później, gdy zdiagnozujesz działanie serwera.

# yum install lsof

Polecam zainstalować kilka bardziej użytecznych i przydatnych programów, które często są konieczne, ale są nieobecne w minimalnej instalacji - wget , bzip2 , traceroute , gdisk .

# yum zainstaluj wget bzip2 traceroute gdisk

Mam to wszystko. Zakończono podstawową konfigurację CentOS 7, możesz przystąpić do instalacji i konfiguracji głównej funkcjonalności.

Konfigurowanie poczty systemowej

Na końcu konfiguracji serwera CentOS 7 zrobimy to, aby poczta adresowana do lokalnego roota była wysyłana przez zewnętrzny serwer pocztowy do wybranej skrzynki pocztowej. Jeśli nie zostanie to zrobione, zostanie ono dodane lokalnie do pliku / var / spool / mail / root . I mogą być ważne i przydatne informacje. Skonfigurujmy jego wysyłanie w skrzynce administratora systemu.

Mówiłem o tym szczegółowo w oddzielnym artykule - Wysyłanie poczty przez konsolę z autoryzacją w Linuksie . Tutaj tylko polecenia i szybka konfiguracja są krótkie. Umieść niezbędne pakiety:

# yum zainstaluj mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Rysujemy w przybliżeniu taką konfigurację dla postfixa.

cat /etc/postfix/main.cf ## DEFAULT CONFIG BEGIN ###################### queue_directory = / var / spool / postfix command_directory = / usr / sbin katalog_demonów = / usr / libexec / postfix katalog_danych = / var / lib / postfix poczta_a_a_a_a_a_a_a_a_a_a_a_a_a_katalog_ethex_directory_ethex_directory_ethex_directory_ethex_directory = / bin: / usr / bin: / usr / local / bin: / usr / X11R6 / bin ddd $ daemon_directory / $ process_name $ process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = / usr / bin / newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = nie katalog_podręczników = / usr / share / man przykładowy_katalog = /usr/share/doc/postfix-2.10.1/samples readme_directory = / usr / share / doc / postfix-2.10.1 / README_FILES ## DEFAULT KONFIG. KONIEC ###################### # Nazwa serwera wyświetlana przez polecenie hostname myhostname = ce ntos7-test.xs.local # Tutaj logicznie, musisz opuścić domenę, ale w tym przypadku lepiej zostawić pełną nazwę serwera, aby pole # nadawcy zawierało pełną nazwę serwera, więc wygodniej jest analizować wiadomości usługi mydomain = centos7-test.xs.local mydestination = $ myhostname myorigin = $ mydomain # adres serwera, który będzie wysyłać pocztę relayhost = mailsrv.mymail.ru:25 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash: / etc / postfix / sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = może

Utwórz plik z informacjami o nazwie użytkownika i haśle do autoryzacji.

# mcedit / etc / postfix / sasl_passwd mailsrv.mymail.ru:25 [email protected]: hasło

Utwórz plik db.

# postmap / etc / postfix / sasl_passwd

Teraz możesz ponownie uruchomić postfix i przetestować pracę.

# systemctl uruchom ponownie postfix

Do standardowego aliasu root w pliku / etc / aliases dodaj adres zewnętrzny, do którego duplikowana będzie poczta adresowana do roota. Aby to zrobić, edytuj określony plik, zmieniając ostatni wiersz.

To było:

#root: marc

Stało się

root: root, admin @ mymail.ru

Zaktualizuj bazę danych certyfikatów:

# newaliases

Wyślij list przez konsolę do lokalnego katalogu głównego:

# df -h | root -s „Wykorzystanie dysku” root

List powinien trafić do zewnętrznego pudełka. To kończy konfigurację poczty lokalnej. Teraz wszystkie e-maile adresowane do lokalnego roota, na przykład raporty z crona, będą duplikowane na zewnętrzną skrzynkę pocztową i wysyłane przez normalny serwer pocztowy. Litery będą więc dostarczane normalnie, bez wchodzenia w spam (choć niekoniecznie są jeszcze filtry heurystyczne).

Wniosek

Nie podobał mi się ten artykuł i chcesz mnie nauczyć administrować? Proszę, uwielbiam studiować. Komentarze do Twojej dyspozycji. Powiedz mi, jak zrobić dobrze!

Ukończyliśmy kilka wstępnych kroków w celu skonfigurowania serwera CentOS 7, co zwykle robię podczas przygotowywania serwera. Nie twierdzę, że jestem absolutną prawdą, może coś mi brakuje lub robię coś, co nie jest do końca właściwe. Z przyjemnością przedstawię rozsądne i znaczące komentarze i komentarze z sugestiami.

Po podstawowej konfiguracji przydatne jest natychmiastowe połączenie serwera z systemem monitorowania. Lub dostosuj go, jeśli jeszcze go nie masz. Mam szczegółowy cykl artykułów na temat konfigurowania monitorowania:

  1. Przykład konfiguracji serwera monitorowania zabbix lub po prostu podłącz centos do monitorowania, instalując na nim agenta.
  2. W osobnej sekcji zabbix Istnieje wiele przykładów monitorowania różnych przydatnych metryk.

Od najbardziej popularnych i obszernych artykułów na temat konfigurowania różnych funkcji opartych na serwerze centos, chciałbym zwrócić uwagę na następujące kwestie:

I nigdy nie zapominaj o tworzeniu kopii zapasowych i weryfikacji - backup lub transfer serwera linux .

Wideo na temat konfiguracji CentOS 7

Kurs online „DevOps praktyki i narzędzia”

Jeśli chcesz się zdobyć, jak budować i utrzymywać dostępne oprogramowanie, to, jak mogę dostarczyć oprogramowanie, monitorować i logować aplikacje internetoezekz zek, zakład, system zawodowy, monitorowa, zakyować Kurs nie jest przeznaczony dla początkujących, posiadający wiedzę na temat sieci i instalacji Linuksa na maszynie wirtualnej. Szkolenie trwa 5 miesięcy, po których udaje się przeprowadzać wywiady z partnerami. Aby uzyskać więcej szczegółów.

Czy artykuł pomógł? Możliwość Isstnieje dziękuję autor

Czy artykuł pomógł?