웹사이트 검색

RHEL/CentOS 7 최소 설치에서 원하지 않는 서비스 비활성화 및 제거


RHEL/CentOS 7 서버용 최소 설치에는 Postfix 메일 전송 에이전트 데몬, Avahi와 같은 일부 기본 사전 설치된 서비스가 함께 제공됩니다. mdns 데몬(멀티캐스트 도메인 이름 시스템) 및 시스템 시계 유지 관리를 담당하는 Chrony 서비스.

이제 질문이 생깁니다. 왜 이러한 모든 서비스를 비활성화해야 합니까? 사전 설치되어 있다면? 주된 이유 중 하나는 시스템 보안 수준 수준을 높이는 것이고, 두 번째 이유는 시스템 최종 목적지, 세 번째 이유는 시스템 리소스입니다.

요구사항

  1. CentOS 7 최소 설치
  2. RHEL 7 최소 설치

새로 설치된 RHEL/CentOS 7을 사용하여 Apache 또는 Nginx에서 실행되는 소규모 웹사이트를 호스팅하거나 DNS와 같은 네트워크 서비스를 제공하려는 경우 , DHCP, PXE 부팅, FTP 서버 등 또는 Postifx MTA 데몬, Chrony 또는 Avahi 데몬을 실행할 필요가 없는 기타 서비스, 그렇다면 이러한 불필요한 데몬을 모두 설치하거나 서버에서 실행해야 하는 이유는 무엇입니까?

최소 설치를 수행한 후 서버가 실제로 실행해야 하는 주요 외부 서비스는 시스템에 대한 원격 로그인을 허용하기 위한 SSH 데몬일 뿐이며 경우에 따라 NTP 서비스도 가능합니다. 서버 내부 시계를 외부 NTP 서버와 정확하게 동기화하세요.

Postfix MTA, Avahi 및 Chrony 서비스 비활성화/제거

1. 설치가 완료된 후 루트 계정 또는 루트 권한이 있는 사용자로 서버에 로그인하고 시스템 업데이트를 수행하여 시스템이 최신 상태인지 확인하세요. -모든 패키지 및 보안 패치가 포함된 날짜입니다.

yum upgrade

2. 다음 단계는 YUM 패키지 관리자를 사용하여 net-tools와 같은 몇 가지 유용한 시스템 유틸리티를 설치하는 것입니다(이 패키지는 이전 버전을 제공합니다
하지만 좋은 ifconfig 명령), nano 텍스트 편집기, URL 전송을 위한 wgetcurl, lsof(열린 파일 목록 표시) 및 입력된 명령을 자동 완성하는 bash-completion.

yum install nano bash-completion net-tools wget curl lsof

3. 이제 사전 설치된 원치 않는 서비스를 비활성화하고 제거할 수 있습니다. 먼저 TCP, UDP 및 Listen 상태 네트워크 소켓에 대해 netstat 명령을 실행하여 활성화되어 실행 중인 모든 서비스 목록을 가져옵니다.

netstat -tulpn  	## To output numerical service sockets

netstat -tulp      	## To output literal service sockets

4. 보시다시피 Postfix가 시작되어 포트 25의 localhost를 수신하며 Avahi 데몬은 모든 네트워크 인터페이스와 Chronyd에 바인딩됩니다. 서비스는 로컬 호스트와 다른 포트의 모든 네트워크 인터페이스에 바인딩됩니다. 다음 명령을 실행하여 Postfix MTA 서비스 제거를 진행합니다.

systemctl stop postfix
yum remove postfix

5. 다음으로 다음 명령을 실행하여 NTP 서버로 대체될 Chronyd 서비스를 제거합니다.

systemctl stop chronyd
yum remove chrony

6. 이제 Avahi 데몬을 제거할 차례입니다. RHEL/CentOS 7 Avahi 데몬은 매우 엄격하며 Network Manager 서비스에 의존하는 것 같습니다. Avahi 데몬 제거를 수행하면 시스템이 네트워크 연결 없이 종료될 수 있습니다.

따라서 이 단계에 특히 주의를 기울이십시오. Network Manager에서 제공하는 자동 네트워크 구성이 꼭 필요하거나 인터페이스를 편집해야 하는 경우
nmtui 네트워크 및 인터페이스 유틸리티를 통해 Avahi 데몬만 중지 및 비활성화해야 하며 제거 작업은 전혀 수행하지 않아야 합니다.

그래도 이 서비스를 완전히 제거하려면 /etc/sysconfig/network-scripts/ifcfg-interface_name에 있는 네트워크 구성 파일을 수동으로 편집한 다음 네트워킹 서비스를 시작하고 활성화해야 합니다.

Avahi mdns 데몬을 제거하려면 다음 명령을 실행하세요. 주의: SSH를 통해 연결된 경우 Avahi 데몬을 제거하려고 시도하지 마세요.

systemctl stop avahi-daemon.socket avahi-daemon.service
systemctl disable avahi-daemon.socket avahi-daemon.service
--------- Stop here if you don't want removal --------- 

yum remove avahi-autoipd avahi-libs avahi

7. 이 단계는 Avahi 데몬을 제거하고 네트워크 연결이 중단되어 네트워크 인터페이스 카드를 수동으로 다시 구성해야 하는 경우에만 필요합니다.

IPv6고정 IP 주소를 사용하도록 NIC를 편집하려면 /etc/sysconfig/network-scripts/ 경로로 이동하여 NIC 인터페이스 파일을 엽니다. (일반적으로 첫 번째 카드의 이름은 ifcfg-eno1677776이고 Network Manager에 의해 이미 구성되어 있습니다.)
네트워크 인터페이스에는 구성이 없습니다.

IPV6INIT=no
IPV6_AUTOCONF=yes
BOOTPROTO=none
DEVICE=eno16777736
ONBOOT=yes
UUID=c3f0dc21-d2eb-48eb-aadf-10a520b13df0
TYPE=Ethernet
#DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME="System eno16777736"
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=00:0C:29:E2:06:E9
                IPADDR=192.168.1.25
                NETMASK=255.255.255.0
                GATEWAY=192.168.1.1
                DNS1=192.168.1.1
                DNS2=8.8.8.8

여기에서 고려해야 할 가장 중요한 설정은 다음과 같습니다.

  1. BOOTPROTO – 고정 IP 주소의 경우 없음 또는 고정으로 설정합니다.
  2. ONBOOT – yes로 설정하면 재부팅 후 인터페이스를 불러옵니다.
  3. DEFROUTE – #로 주석 처리되거나 완전히 제거된 문 – 기본 경로를 사용하지 않습니다(여기서 사용하는 경우 기본 경로로 사용되지 않는 모든 네트워크 인터페이스에 "DEFROUTE: no"를 추가해야 합니다).

8. 인프라에 자동으로 IP 주소를 할당하는 DHCP 서버가 있는 경우 네트워크 인터페이스 구성에 대한 다음 발췌 내용을 사용하십시오.

IPV6INIT=no
IPV6_AUTOCONF=yes
BOOTPROTO=dhcp
DEVICE=eno16777736
ONBOOT=yes
UUID=c3f0dc21-d2eb-48eb-aadf-10a520b13df0
TYPE=Ethernet
##DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME="System eno16777736"
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=00:0C:29:E2:06:E9

고정 IP 주소 구성과 동일하게 BOOTPROTOdhcp로 설정되어 있고 DEFROUTE 문이 주석 처리되거나 제거되었으며 장치가 다음과 같이 구성되어 있는지 확인하세요. 부팅 시 자동으로 시작됩니다. IPv6를 사용하지 않는 경우 IPV6이 포함된 모든 줄을 제거하거나 주석 처리하면 됩니다.

9. 네트워크 인터페이스에 대한 새 구성을 적용하려면 네트워크 서비스를 다시 시작해야 합니다. 네트워크 데몬을 다시 시작한 후 ifconfig
를 사용하세요. 또는 ip addr show 명령을 사용하여 인터페이스 설정을 가져오고 도메인 이름을 핑하여 네트워크가 작동하는지 확인하세요.

service network restart	## Use this command before systemctl
chkconfig network on
systemctl restart network
ifconfig
ping domain.tld

10. 마지막 설정으로 hostnamectl 유틸리티를 사용하여 시스템 호스트 이름에 대한 이름을 설정하고 호스트 이름<으로 구성을 검토하십시오. 명령.

hostnamectl set-hostname FQDN_system_name
hostnamectl status
hostname
hostname -s   	## Short name
hostname -f   	## FQDN name

11. 그게 전부입니다! 마지막 테스트로 netstat 명령을 다시 실행하여 시스템에서 어떤 서비스가 실행되고 있는지 살펴보세요.

netstat -tulpn
netstat -tulp

12. SSH 서버 외에도 네트워크가 DHCP를 사용하여 동적 IP 구성을 가져오는 경우 DHCP 클라이언트가 UDP 포트에서 실행되고 활성화되어야 합니다.

netstat -tulpn

13. netstat 유틸리티 대신 소켓 통계 명령을 사용하여 실행 중인 네트워크 소켓을 출력할 수 있습니다.

ss -tulpn 

14. 서버를 재부팅하고 systemd-analize 명령을 실행하여 시스템 부팅 시간 성능을 확인하고 무료디스크
RAM 및 HDD 통계를 표시하는 Free
명령과 가장 많이 사용되는 시스템 리소스의 상위를 확인하는 top 명령.

free -h
df -h
top 

축하해요! 이제 설치 및 실행되는 서비스가 적고 향후 구성에 사용할 수 있는 리소스가 더 많은 깔끔한 최소 RHEL/CentOS 7 시스템 환경이 생겼습니다.

추가 읽기: Linux에서 원치 않는 서비스 중지 및 비활성화