웹사이트 검색

CentOS 서버 강화 보안 팁 20가지 - 1부


이 튜토리얼에서는 시스템을 강화하는 데 사용할 수 있는 CentOS 8/7에 대한 일반적인 보안 팁만 다룹니다. 체크리스트 팁은 다양한 유형의 베어메탈 서버나 네트워크 서비스를 제공하는 머신(물리적 또는 가상)에서 주로 사용하도록 고안되었습니다.

그러나 일부 팁은 데스크탑, 노트북, 카드 크기의 단일 보드 컴퓨터(Raspberry Pi)와 같은 범용 기계에도 성공적으로 적용될 수 있습니다.

요구사항

  • CentOS 8 최소 설치
  • CentOS 7 최소 설치

1. 물리적 보호

서버실 접근을 잠그고 랙 잠금 및 비디오 감시를 사용하십시오. 서버실에 물리적으로 접근하면 컴퓨터가 심각한 보안 문제에 노출될 수 있다는 점을 고려하세요.

BIOS 비밀번호는 마더보드의 점퍼를 재설정하거나 CMOS 배터리를 분리하여 변경할 수 있습니다. 또한 침입자는 하드 디스크를 훔치거나 새 하드 디스크를 마더보드 인터페이스(SATA, SCSI 등)에 직접 연결하고, Linux 라이브 배포판으로 부팅하고, 소프트웨어 흔적을 남기지 않고 데이터를 복제하거나 복사할 수 있습니다.

2. 감시 영향 감소

매우 민감한 데이터의 경우 서버를 패러데이 케이지에 배치하고 잠그는 것과 같은 고급 물리적 보호를 사용하거나 군사용 TEMPEST 솔루션을 사용하여 무선 또는 전기 누출을 통한 시스템 감시의 영향을 최소화해야 합니다.

3. 보안 BIOS/UEFI

BIOS/UEFI 설정을 보호하여 시스템 강화 프로세스를 시작합니다. 특히 BIOS/UEFI 비밀번호를 설정하고 부팅 미디어 장치(CD, DVD, USB 지원 비활성화)를 비활성화합니다. 권한이 없는 사용자가 시스템 BIOS 설정을 수정하거나 부팅 장치 우선 순위를 변경하고 대체 매체에서 머신을 부팅하는 것을 방지합니다.

이러한 유형의 변경 사항을 컴퓨터에 적용하려면 마더보드 제조업체 설명서에서 특정 지침을 참조해야 합니다.

4. 보안 부트 로더

악의적인 사용자가 커널 부팅 순서나 실행 수준을 변조하는 것을 방지하고, 커널 매개변수를 편집하거나 시스템을 손상시키고 루트를 재설정하기 위해 시스템을 단일 사용자 모드로 시작하는 것을 방지하려면 GRUB 비밀번호를 설정하세요. 권한 있는 제어를 얻기 위한 비밀번호입니다.

5. 별도의 디스크 파티션 사용

프로덕션 서버로 사용하려는 시스템에 CentOS를 설치할 때 시스템의 다음 부분에 전용 파티션이나 전용 하드 디스크를 사용하세요.

/(root) 
/boot  
/home  
/tmp 
/var 

6. 중복성 및 파일 시스템 증가를 위해 LVM 및 RAID 사용

/var 파티션은 로그 메시지가 디스크에 기록되는 장소입니다. 시스템의 이 부분은 웹 서버나 파일 서버와 같은 네트워크 서비스를 노출하는 트래픽이 많은 서버에서 크기가 기하급수적으로 커질 수 있습니다.

따라서 /var에 대해 큰 파티션을 사용하거나 논리 볼륨(LVM)을 사용하여 이 파티션을 설정하거나 여러 개의 물리적 디스크를 하나의 더 큰 가상 RAID 0 장치로 결합하여 대용량을 유지하는 것을 고려하십시오. 데이터의 양. 데이터의 경우 RAID 1 수준 위에 LVM 레이아웃을 사용하여 중복성을 고려하세요.

디스크에 LVM 또는 RAID를 설정하려면 유용한 가이드를 따르십시오.

  1. Linux에서 LVM을 사용하여 디스크 저장소 설정
  2. vgcreate, lvcreate 및 lvextend를 사용하여 LVM 디스크 생성
  3. 여러 디스크를 하나의 대형 가상 스토리지로 결합
  4. Linux에서 두 개의 디스크를 사용하여 RAID 1 생성

7. 데이터 파티션 보안을 위해 fstab 옵션 수정

아래 그림과 같이 fstab 파일에 다음 옵션을 추가하여 데이터 저장용 파티션을 분리하고 이러한 유형의 파티션에서 프로그램, 장치 파일 또는 setuid 비트의 실행을 방지합니다. 발췌:

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

권한 상승 및 임의 스크립트 실행을 방지하려면 /tmp에 대해 별도의 파티션을 생성하고 이를 nosuid, nodevnoexec로 마운트합니다. .

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. LUKS를 사용하여 블록 수준에서 하드 디스크를 암호화합니다.

머신 하드 드라이브에 물리적으로 접근하는 경우 민감한 데이터 스누핑을 방지하기 위해. LUKS를 사용한 Linux 하드 디스크 데이터 암호화 기사를 읽고 디스크를 암호화하는 방법을 배우는 것이 좋습니다.

9. PGP 및 공개 키 암호화 사용

디스크를 암호화하려면 암호화된 Linux 시스템 저장소 구성 문서에 표시된 대로 PGP 및 공개 키 암호화 또는 OpenSSL 명령을 사용하여 중요한 파일을 암호로 암호화하고 해독하십시오.

10. 필요한 최소한의 패키지만 설치하세요

패키지 취약점을 방지하려면 중요하지 않거나 불필요한 프로그램, 응용 프로그램 또는 서비스를 설치하지 마십시오. 이렇게 하면 소프트웨어 일부가 손상되어 다른 응용 프로그램, 시스템 일부 또는 파일 시스템까지 손상되어 최종적으로 데이터 손상이나 데이터 손실을 초래할 수 있는 위험을 줄일 수 있습니다.

11. 시스템을 자주 업데이트하세요

시스템을 정기적으로 업데이트하십시오. 아래 명령을 실행하여 Linux 커널을 최신 보안 패치 및 설치된 모든 소프트웨어와 최신 버전으로 동기화하십시오.

yum update

12. Ctrl+Alt+Del 비활성화

사용자가 키보드에 물리적으로 액세스하거나 원격 콘솔 애플리케이션 또는 가상화된 콘솔(KVM, 가상화 소프트웨어 인터페이스)을 통해 서버를 재부팅하는 것을 방지하려면 Ctrl+Alt를 비활성화해야 합니다. +Del 키 시퀀스를 실행하여 아래 명령을 실행하세요.

systemctl mask ctrl-alt-del.target 

13. 불필요한 소프트웨어 패키지 제거

귀하의 컴퓨터에 필요한 최소한의 소프트웨어를 설치하십시오. 추가 프로그램이나 서비스를 설치하지 마십시오. 신뢰할 수 있는 저장소나 공식 저장소에서만 패키지를 설치하십시오. 시스템이 전체 수명을 서버로 실행해야 하는 경우 시스템을 최소 설치로 사용하십시오.

다음 명령 중 하나를 사용하여 설치된 패키지를 확인합니다.

rpm -qa

설치된 모든 패키지의 로컬 목록을 만듭니다.

yum list installed >> installed.txt

쓸모없는 소프트웨어 목록을 확인하고 아래 명령을 실행하여 패키지를 삭제하십시오.

yum remove package_name

14. 데몬 업데이트 후 Systemd 서비스 다시 시작

새 업데이트를 적용하려면 아래 명령 예제를 사용하여 systemd 서비스를 다시 시작하십시오.

systemctl restart httpd.service

15. 불필요한 서비스 제거

다음 ss 명령을 사용하여 특정 포트에서 수신 대기 중인 서비스를 식별합니다.

ss -tulpn

출력 상태와 함께 설치된 모든 서비스를 나열하려면 아래 명령을 실행하십시오.

systemctl list-units -t service

예를 들어, CentOS 기본 최소 설치에는 기본적으로 포트 25에서 마스터 이름으로 실행되는 Postfix 데몬이 설치되어 있습니다. 컴퓨터가 메일 서버로 사용되지 않을 경우 Postfix 네트워크 서비스를 제거하십시오.

yum remove postfix

16. 전송된 데이터 암호화

Telnet, FTP 또는 SMTP, HTTP, NFS 또는 SMB와 같은 기타 일반 텍스트 기반 프로토콜과 같은 원격 액세스 또는 파일 전송에 보안되지 않은 프로토콜을 사용하지 마십시오. 기본값은 인증 세션이나 전송된 데이터를 암호화하지 않습니다.

파일 전송에는 sftp, scp만 사용하고, 원격 콘솔 연결이나 GUI 액세스에는 SSH 터널을 통한 SSH 또는 VNC만 사용하세요.

SSH를 통해 VNC 콘솔을 터널링하려면 원격 시스템에서 로컬 시스템으로 VNC 포트 5901을 전달하는 아래 예를 사용하십시오.

ssh -L 5902:localhost:5901 remote_machine

로컬 컴퓨터에서 원격 끝점에 대한 가상 연결을 위해 아래 명령을 실행합니다.

vncviewer localhost:5902

17. 네트워크 포트 스캐닝

LAN을 통해 원격 시스템에서 Nmap 도구를 사용하여 외부 포트 검사를 수행합니다. 이러한 유형의 검색은 네트워크 취약성을 확인하거나 방화벽 규칙을 테스트하는 데 사용할 수 있습니다.

nmap -sT -O 192.168.1.10

18. 패킷 필터링 방화벽

firewalld 유틸리티를 사용하여 시스템 포트를 보호하고 특정 서비스 포트, 특히 잘 알려진 포트(<1024)를 열거나 닫습니다.

아래 명령을 실행하여 방화벽 규칙을 설치, 시작, 활성화 및 나열합니다.

yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all

19. Tcpdump로 프로토콜 패킷 검사

로컬에서 네트워크 패킷을 스니핑하고 해당 콘텐츠에 의심스러운 트래픽(소스 대상 포트, TCP/IP 프로토콜, 레이어 2 트래픽, 비정상적인 ARP 요청)이 있는지 검사하려면 tcpdump 유틸리티를 사용하십시오.

캡처된 tcpdump 파일을 더 잘 분석하려면 Wireshark와 같은 고급 프로그램을 사용하세요.

tcpdump -i eno16777736 -w tcpdump.pcap

20. DNS 공격 방지

맨인더(man-in-the) 공격을 피하기 위해 도메인 이름을 쿼리하는 데 사용해야 하는 DNS 서버의 IP 주소를 정의하는 확인자(일반적으로 /etc/resolv.conf 파일)의 내용을 검사합니다. -중간 공격, 루트 DNS 서버에 대한 불필요한 트래픽, 스푸핑 또는 DOS 공격 생성.

이것은 단지 첫 번째 부분입니다. 다음 부분에서는 CentOS 8/7에 대한 기타 보안 팁에 대해 논의하겠습니다.