Vulnerability Assessment/Linux Server

[계정관리] ROOT 계정 원격 접속 제한

DarkSoul.Story 2021. 2. 26. 16:40
반응형
 사용된 OS 정보 : CentOS 6.10 x64

서버를 운영하다가 보면 서버실에 들어가서 콘솔(Console)로 작업하는 것보다 사무실 책상에서 Telnet*, SSH**를 이용하여 원격 연결 후 작업하는 경우 대부분이다. 원격 로그인을 할 때 편의상 root 계정으로 바로 로그인을 허용하고 사용하는 경우가 많으며 이는 보안상 문제가 발생할 수 있다.  

그 이유는 공격자(해커 등)들은 기본적으로 먼저 서버에 Open 되어 있는 Port를 확인 후 Telnet나 SSH로 원격 접속이 가능한 경우 무작위 대입 공격(Brute Force Attack)***, 사전 대입 공격(Dictionary Attack)****등을 이용하여 root 계정으로 로그인을 시도한다. 해당 공격들이 성공하면 서버는 공격자(해커 등)에 손에 넘어가고 그들의 놀이터가 된다. 

[그림1] root 원격 접속

이를 방지 위해서는 원격 접속 시 root  계정 로그인을 제한하고 일반 계정으로 로그인 후 su를 이용해서 root로 상승해야 한다. 이제 root 계정 원격 접속 제한 방법을 살펴보자.

1. Telnet 접속 시 root 계정 로그인 제한

Telnet 접속 시 root 계정 로그인 제한은 /etc/securetty 파일에서 설정한다. /etc/securetty 파일은 root 계정이 로그인 가능한 터미널의 종류를 나열한 파일로 [그림 2]와 터미널 리스트가 등록되어 있다. 

[그림2] /etc/securetty 파일

등록되어 있는 터미널 리스트의 내용은 아래와 같으며, 각 터미널 옆에 있는 숫자는 동시에 연결할 수 있는 수를 의미한다.  

 1) console : 서버의 로컬 장치에서 연결되어 있는 입출력 장치 

 2) pts/ (Pseudo-Terminal Slave) : 원격지에서 서버에 접속했을 때 열리는 터미널

    (참고: ptmx는 원격 접속을 위한 일종의 가상 tty로 ptmx, ptm(Master), pts(Slave)로 구성)

 3) vc/ (Virtual Console) : Xmanager와 같이 X Window를 이용하여 접속


 4) tty/ (TeleTYpewriter) : 서버와 직접 연결된 키보드 등을 통한 시리얼 통신 포트


vi 등 편집기 명령어를 이용하여 /etc/securetty 파일 열어 등록되어 있는 터미널 리스트 중 pts/로 시작하는 모든 내용을 주석 또는 삭제한 후 저장한다. 

[그림3] root 계정 원격 접속 제한 (Telnet)

pts/로 시작하는 모든 내용을 주석 또는 삭제를 하였더라도 바로 root 계정 로그인 제한이 되지 않으며 제한 설정을 적용하기 위해서는 xinetd를 재시작한다.

[그림4] xinetd 재시작

xinetd 재시작 후 root 계정으로 로그인 시도하는 경우 [그림 5]와 같이 로그인이 거부되는 것을 확인할 수 있다.

[그림5] root  계정 로그인 실패 (Telnet)

참고로 PAM 모듈을 이용하여 로그인 제어를 하고 있더라도 /etc/securetty 파일에 pts/ 관련 설정이 존재하는 경우 PAM 모듈 설정과 관련 없이 root 계정으로 로그인이 가능하다. PAM 모듈을 이용한 로그인 제어 방법은 추후에 알아보도록 하자.

2. SSH 접속 시 root 계정 로그인 제한

Telnet과 다르게 SSH는 설치 시 기본적으로 root 계정으로 로그인이 허용되어 있으며, root 계정 로그인 제한은 /etc/ssh/sshd_config 파일에서 설정한다.

[그림6] SSH 관련 파일

vi 등 편집기 명령어를 이용하여 sshd_config 파일을 열어 [그림 7]과 같이 PermitRootLogin 값을 찾는다. PermitRootLogin은 root 계정으로 로그인 시 허용 여부를 설정하는 값이다.

[그림7] sshd_config 파일 내용 일부

PermitRootLogin을 찾았다면 [그림 8]과 같이 주석을 제거 후 yes를 no로 변경 후 저장한다.

[그림8] PermitRootLogin 설정값 변경

PermitRootLogin 설정 값을 변경하였더라도 바로 root 계정 로그인 제한이 되지 않으며 제한 설정을 적용하기 위해서는 sshd를 재시작한다.

[그림9] sshd 재시작

sshd 재시작 후 root 계정으로 로그인 시도하는 경우 로그인이 거부되는 것을 확인할 수 있다.

Referance

pts(4) - Linux man page : https://linux.die.net/man/4/pts


 * Telnet : 
네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행에 쓰이는 네트워크 프로토콜로 보안 문제 때문에 원격 제어를 위해 SSH로 대체되고 있다. 23번 포트를 사용한다.

** SSH :
Secure Shell의 약자로 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜로 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 22번 포트를 사용한다.

*** 무작위 대입 공격(Brute Force Attack) :
패스워드를 알아내기 위해 입력 가능한 모든 값을 대입하는 공격 방법이다.

****  사전 대입 공격(Dictionary Attack) :
사전에 있는 단어를 입력하여 패스워드를 알아내거나 해독하는 공격 방법으로 단어를 그대로 입력할 뿐 아니라, 대문자와 소문자를 뒤섞기도 하고, 단어에 숫자를 첨부하기도 하는 등의 처리도 병행하면서 공격을 할 수 있다.

수십만 개의 단어가 수록되어 있는 사전을 자동 처리시킴으로써 짧은 시간 안에 모든 단어를 입력할 수 있기 때문에 기본적인 패스워드 탐색의 수법으로 이용된다. 

반응형