기본 콘텐츠로 건너뛰기

RHEL, CENTOS 7.x 서비스 최적화

개정 1)
서비스 정리 스크립트 수정 (multipathd, syssate 활성화) 

우리가 시스템을 설치할 때 Servce with GUI 항목에서 하위의 모든 항목을 설치하는 것을 기본으로 하고 있습니다.

이 상태로 설치를 끝낸 시스템에서는 불필요하다가 느껴지는 서비스들이 작동을 하고 있으므로, 설치 후엔 최적화를 해주고 추후에 필요에 의해서 서비스를 활성화 하도록 합니다.

이유를 들어보자면 첫째, 시스템 최적화와 보안 구멍 막기가 주 이유입니다.

먼저 서비스르 리스트를

host]# systemctl list-unit-files --type service | grep enabled

명령으로 활성화 된 서비스를 확인합니다.

명령의 결과는 별도의 파일로 만드는 것을 추천합니다.

host]# systemctl list-unit-files --type service | grep enabled  | awk '{print "systemctl disable " $1}' > disablelist.sh

위와 같이 별도의 파일로 만들어서 필수를 제외한 서비스에 대해서 enabled 항목을 disabled  변경합니다.

확실하게 하기 위해서 필수인 서비스는 라인에서 지우고 파일을 실행시켜서 불필요한서비스를 정리합니다.

대표적인 불필요 서비스 목록 
 postfix
 firewalld
 iscsi
 atd
 chronyd
 auditd
 autovt@
 bluetooth
 cups
 abrt
 libvirtd
 mcelog
 modemManager
 NetworkManager
 multipathd
 qemu-guest-agent
 smartd
 spice-vdagentd


위의 서비스에서 NetworkManager를 비활성화 하면 네트워크에 접속이 안되기 때문에
위의 스크립트를 작성하기전에 NetworkManager 를 비활성화 시키고 수동으로 /etc/sysconfig/network-scripts 디렉토리에서 네트워크 설정을 해놓아야 합니다.
그렇지 않으면 네트웍이 끊겨버립니다.


서비스 정리 스크립트


#!/bin/bash

systemctl disable abrt-ccpp.service

systemctl disable abrt-vmcore.service
systemctl disable abrt-xorg.service
systemctl disable abrtd.service
systemctl disable atd.service
systemctl disable auditd.service
systemctl disable autovt@.service
systemctl disable bluetooth.service
systemctl disable chronyd.service
systemctl disable crond.service
systemctl disable cups.service
systemctl disable firewalld.service
systemctl disable libvirtd.service
systemctl disable mcelog.service
systemctl disable ModemManager.service
systemctl disable NetworkManager-dispatcher.service
systemctl disable NetworkManager.service
systemctl disable postfix.service
systemctl disable qemu-guest-agent.service
systemctl disable smartd.service
systemctl disable spice-vdagentd.service



host]# chmod 700 ./disablelist.sh



주의)
현재 버전이 7.3 임에도 불구하고 NetworkManager 자체의 난해함과 약간의 버그 (데스크톱이면 괜찮은데 서버에선 문제가 발생) 그리고 기타 서비스를 운용하는데 적합하지는 않습니다. 

현재 레드햇도 서버의 네트워크 설정에 대해서 openstack, openshift, gluster, RHEV등의 서비스 설치시엔NetworkManager를 비활성화 하고 수동으로 설정하도록 하고 있습니다.



댓글

이 블로그의 인기 게시물

RHEL6 보안 설정 (RHEL 7포함)

리눅스를 처음에 설치하면 보안에 관련된 설정이 아무것도 되어 있지 않습니다. 이 글에서는 서버를 처음 설치하고 반드시 해야하는 보안 설정에 대해 다뤄보려고 합니다. 설정 내용들 중에는 자신의 서버와 환경이 맞지 않을 수도 있으니, 조심하시기 바랍니다. 보안설정 시나리오는 다음과 같습니다.  1. 원격지에서 root는 로그인을 못하도록 한다.  2. 특정한 사용자에게만 su(switch user)를 통해서 root 권한을 줄것이다.  3. 패스워드의 유효기간은 90일이고 ,  패스워드의 최고 길이는 8글자이다.  4. 패스워드는 반드시 하나 이상의 대/소문자, 숫자. 특수기호가 들어가야 한다. 1. root의 원격접속 막기 원격접속을 관리하는 sshd 의 설정파일을 통해서 제어 할 수 있습니다. /etc/ssh/sshd_config 파일에서 PermitRootLogin을 no 로 바꿔줍니다. 2. 원격접속용 일반 사용자 생성 root가 원격 접속이 불가능한 상태이므로, 원격 접속을 위한 일반 계정을 하나 생성합니다. shell ]# adduser sysadmin 리눅스는 기본적으로 모든 사용자가 su (switch user)명령을 사용해서 root로 접근이 가능하지만 우리는 특정 그룹(대표그룹 wheel)에 su의 사용권한을 줄것입니다. 그러기 위해서는 먼저 생성한 일반계정의 그룹에 wheel 그룹을 추가합니다. shell ]# usermod -G wheel sysadmin 그리고 PAM에서 wheel 그룹만 su를 사용할 수 있도록 변경해줍니다. shell ]# vi /etc/pam.d/su #%PAM-1.0 auth        sufficient  pam_rootok.so # Uncomment the following line to implicitly trust users in the ...

centos 6.x 설치 (centos 6.x installation)

미디어 준비  https://wiki.centos.org/Download 위의 웹페이지에서 6.9(EOL: 30 Nov 2020)를 다운로드 받습니다. CentOS 6.9 릴리즈 노트 주요 변경 사항 1. LiveCD는 더 이상 제공되지 않습니다. LiveDVD를 USB 드라이브등에 복사해서 사용할 수 있습니다. 2. GNUTLS가 TLSv1.2를 지원합니다. (암호화를 사용하는모든 CentOS의 패키지에서 TLSv1.2를 사용할 수 있습니다.) 3. 안전하지 않은 Chiper에 대한 지원이 종료되었습니다. => MD5, SAH0, RC4 및 DH 매개변수의 사용에 영향이 있습니다. 4. 클라우드 도구인 cloud-init가 추가되었습니다.   => cloud-init패키지가 설정되지 않은 상태로 부팅을 하면 약 5분간 지연될 수 있습니다.   => cloud-init패키는 /etc/ssh/sshd_config의 설정중 패스워드로 접속가능한 부분을 no로 변경합니다.   PasswordAuthentication no 기본값으로 되어 원격지에서 ssh접속이 불가합니다. 5. UEFI지원 시스템에서 CentOS 6.x는 부트설정을 /boot/efi/EFI/redhat에 생성을 하는데, 이미 CentOS 혹은 RHEL이 설치된 시스템에서 문제가 발생할 수 있습니다. 6. CentOS 6.9의 UEFI:i386은 UEFI와 동장하지 않습니다.    UEFI환경에서는 CentOS 6.9 x86_64를 이용해 합니다.    BIOS상에서 SecureBook가 켜진 상태에서는 모든 버전의 CentOS 6.x 버전은 작동하지 않습니다.   => CentOS 6.x 버전에서 전체설치는 하는 경우에 system->base 패키지에서 tboot 패키지를 제외해야합니다.  본격적인 설치에 앞서 앞의...

아파치 웹서버 2.4 MPM 지시자(Directive of Apache httpd server 2.4)

웹서버는 우리가 보통 쓰는 apache 2.4를 기준으로 생각했을 때 서버사양에 맞는 튜닝값을 찾아 내는 방법과 서버에서 따로 해줘야하는 설정값이 본 글의 주제입니다. 먼저 아파치 튜닝을 위해서 알아둬야하는 개념은 MPM입니다. 참고: APACHE 2.4 의 MPM 관련 글  MPM은 Multi processing module (다중 처리 모듈)의 약자입니다. 먼저 대표적은 두가지 방식이 있는데 worker 와 prefork방식이 있습니다. worker는 Thread MPM 이고 , prefork는 Process MPM 입니다. worker 방식은 확장가능성이 중심이고 prefork는 안정성 및 오래된 소프트웨어와의 호환성에 중점을 두고 있습니다. 또한 다른 사용자아이디로 여러 호스트는 서비스하는 (prebuild)와 같은 기능도 제공 됩니다. MPM은 아파치 컴파일시에 지정 할 수 있으며 (--with-mpm=worker, --with-mpm=prefork) 한 서버에서 한가지 방식의 MPM만 사용할 수 있습니다. MPM을 설정하지 않으면 다음과 같이 각 OS에 맞는 기본값이 선택됩니다. BeOS : beos Netware : mpm_netware OS/2 : mpmt_os2 유닉스 : prefork 윈도우즈 : mpm_winnt 1. worker MPM (apache 2.4 기준) 참고 : 워커 방식의 작동 방법  MPM 모듈의 지시자 ServerLimit 16 StartServers 16 MaxClients 150 MinSpareThreads  25 MaxSpareThreads 75 ThreadsPerChild  25 MaxRequestPerChild 0  ServerLimit => 구성 가능한 child 프로세스의 수 StartServers => 시작시에 초기회 되는 프로세스의 갯수 MaxClients => 동시에 접속 가...