리눅스 서버 root 사용 중지로 리눅스 서버 보안 강화하기

Updated on 2020-12-20 by

강력한 리눅스 서버 보안 방법 중의 하나인 리눅스 서버 root 사용 중지로 서버 root 로그인 시도를 원천적으로 막음으로서 서버 보안 강화 및 서버 최적화 방법에 대해서 살펴보겠습니다.

대부분 서버의 가장 강력한 권한을 갖는 사용자는 Super User라고 할 수 있는 root 입니다. root만 장악하면 서버 전반을 좌지우지할 수 있기 때문에 해커의 중요한 타겟이 됩니다.

여기에 이 Super user 사용자 이름은 root로 만천하에 알려져 있기 때문에 강력한 컴퓨팅에 의한 스크립트 실행으로 다양한 비밀번호를 대입해 보면서 강제적인 roor 로그인을 시도할 수 있습니다.

그렇기 때문에 여기서는 우분투를 비롯한 리눅스 서버에서 roor를 사용하지 않고 서버를 운영하는 방법에 대해서 살펴보도록 하겠습니다. 아래 내용들은 우분투 20.04를 기준으로 설명합니다.

우분투를 비롯한 리눅스 서버 보안을 위해서 아래와 같은 사항들이 고려됩니다.

  1. ssh 접속 포트를 22번 포트가 아닌 다른 포트 사용
  2. ssh 접속 ip를 특정 ip대로 제한
    예를들어 한국에서만 접속 가능토록 한국 ip로만 한정하든지 또는 집과 태블릿 접속 ip대로만 한정
  3. root 사용 중지 및 특정 사용자_ID만 사용
    보안을 위해 사용자_ID를 굉장히 길고 복잡하게 만들어 해커가 사용자_ID 파악을 어렵게 만듬
    그리고 root 사용 중지
  4. 사용자 비밀번호를 보안이 높도록 만들고, 가능하면 정기적 변경
  5. ssh key를 통한 접속으로 사용자_ID와 비밀번호를 통한 ssh 접속 방법이 한계 극복

우분투 서버 설치 시 기본 설정은 root 미사용

기본적으로 우분투를 설치하면 root를 사용할 수 없도록 되어 있습니다. 왜냐하면 root의 비밀번호가 설정되지 않았기 때문이죠.

그래서 root를 사용하려면 root 비밀번호를 설정한 후 사용할 수 있습니다.

그러나 Vultr와 같은 가상 서버 호스팅에서 우분투 서버를 설치하면 ip 주소가 정해지고, 기본 사용자로 root로 설정되고, root의 비밀번호도 정해집니다.

그래서 ssh 이용 시 주어진 ip주소와 root 사용자 그리고 주어진 root 비밀번호를 사용하게 됩니다.

서버 보안에서 강력히 권고하는 한가지 사항은 root를 사용하지말고 별도 사용자를 등록하고 별도 사용자에게 일부 root 권한을 행사하도록 하는 것입니다.

제가 Vultr에 root 사용자를 사용하지 않기위해 없애는 것이 가능한지 질문을 했는데요. Vultr에서는 불가능하다고 답변이 왔습니다.

그런데 구글링을 해보면 우분투에서 root를 사용하지 않을 수 있고, 오히려 root를 사용하지 말라고 권고가 많습니다. 그리고 위해서 한번 설명했지만 우분투는 기본적으로 root를 비활성한 채 설치된다고 합니다.

그래서 조금 더 고민해보고 구글링에 구글링을 거듭하다가 내린 결론은 제 질문이 잘못되었다는 것을 알 수 있었습니다.

  • root 계정 자체를 없애는 것은 불가능
  • 대신 root 비밀번호를 없애서 root가 없는 것처럼 우분투 서버 운영 가능
    root 비밀번호 설정을 없애는 것은 root로 로그인 상태에서 passwd -dl root 명령으로 가능
  • 따라서 root 비밀번호를 없애고, 특정 사용자를 root 수준의 권한을 준다면(sudo) root없이도 모든 작업이 가능

새로운 사용자 등록 및 sudo 권한 등록

사용자 등록 후 이 사용자에게 sudo 권한을 부여하는 방법은 아래와 같습니다.

위에서도 간단히 설명했지만 가능하는 한 사용자_ID를 복잡하고 유추하기 어렵게 만들어 외부 해커가 사용자_ID 파악을 어렵게 만들고, 더 나아가 비밀번호를 강화해 해킹 가능성을 낮추는 것이 목표입니다.

사용자 등록 및 sudo 그룹 등록

먼저 사용자 등록을 합니다.사용자는 가능하면 어렵고 쉽게 유추할 수 없는 이름을 사용합니다.

adduser 신규_사용자_IDCode language: PHP (php)

이 신규_사용자_ID에 sudo 권한 부여를 위해서는 아래와 같이 sudo 그룹에 이 사용자_ID를 추가해 줍니다.

usermod -aG sudo 신규_사용자_IDCode language: PHP (php)

이 명령은 root로 로그인 했을 때나 신규_사용자_ID로 로그인때나 사용 가능했습니다.

여기까지 진행되었다면 신규_사용자_ID로 sudo를 사용할 수 있습니다.

참고로 일부에서는 사용자 추가 시 동시에 sudo 기능을 추가할 수 있도록 아래와 같이 사용자 추가 시 sudo를 추가해주는 방법을 소개하는데요.

이 방법(아래 명령어)은 우분투 20.04에서는 작동하지 않았습니다.

sudo adduser 신규_사용자_ID sudoCode language: PHP (php)

우분투 서버 root 사용 중지하기

이번에는 우분투 서버에서 root 사용 중지하는 방법에 대해서 알아봅니다.

앞서 설명한대로 root 사용자를 아예 없애는 것은 불가능합니다. 다만 root 비밀번호를 없애서 root를 사용하지 않토록 하는 방법이 있죠.

이는 root로 로그인 상태에서 아래와 같은 명령을 사용합니다. 아니면 특정 사용자로 로그인 상태라면 root 권한(sudo -i 옵션을 사용)을 획득한 상태에서 사용할 수 있겠죠.

불필요한 혼란을 방지하기 위해서 root 로그인 상태에서 아래 명령어를 사용합니다.

sudo passwd -dl rootCode language: PHP (php)

여기서 -l은 root 비밀번호를 lock한다는 의미에서 사용하는 옵션으로 보입니다. 이러면 이후부터는 root로 ssh 로그인이 안되고 root 사용이 안됩니다.

그러면 root를 다시 살리려면 어떻게할까요?

이미 root를 사용할 수 없도록 만들었기 때문 root를 사용하려면 아래 명령어를 사용합니다. 그리고 새로운 root 비밀번호를 설정할 수 있습니다.

sudo -i passwd rootCode language: PHP (php)

결국 sudo 권한을 획득한다는 것은 조금 불편하지만 언제든지 root 권한을 획득 할 수 있다는 것을 의미합니다.

그렇게 때문에 개인 사용자나 작은 스타트업에서는 sudo 권한을 가진 사용자를 만든다면 굳이 root 사용자가 필요없다는 결론에 이르고 이것이 더 보안에 유리한 것이 아닐까 싶습니다.

특정 사용자를 root처럼 사용하기

기업의 IT팀이 아니라면 root를 두고 여러 사용자를 등록시켜 일정 권한을 주는 방식이 바람직하기 때문에 root도 필요하고 각기 다른 낮은 사용 권한을 가진 사용자들도 필요합니다.

그러나 개인이 운영하는 서버이거나 작은 스타트업이라면 서버 운영 시 여러 사용자를 둘 필요는 없습니다.

단 한명의 사용자면 충분하죠. 귀찮은 경우 root를 그냥 사용하기도 합니다. 그렇지만 root를 그대로 사용하는 하는 것은 해킹 위험에 더 노출됩니다.

서버 공략 시 사용자로 root를 설정하고 여기에 다양한 비밀번호를 대입해 서버 로그인을 시도하기 때문입니다.

어짜피 서버에서는 root에 준하는 권한을 가진 한 사람은 반드시 필요하기 때문에 root를 사용중지하고 대신 특정 사용자_ID에 root에 준하는 권한을 주는 것이 더 효율적입니다.

해커는 root가 아닌 특정 사용자_ID를 찾아야 하고 거기서 또 비밀번호를 찾아야하기 때문에 그만큼 해킹 확률을 낮출 수 있습니다.

거기에 fail2Ban과 같은 보안 프로그램과 결합한다면 더욱 더 해킹 가능성을 낮출 수 있습니다.

  1. ssh 접속 포트를 22번 포트가 아닌 다른 포트 사용
  2. ssh 접속 ip를 특정 ip대로 제한
    예를들어 한국 ip대로만 한정하든지 또는 집과 태블릿 접속 ip로만 한정
  3. root를 사용하지 않고 특정 사용자_ID만 사용
    보안을 위한 사용자_ID를 굉장히 길고 복잡하게 만드는 경우도 있는 어짜피 ssh나 sftp 사용 시 사용자_ID를 등록해 놓기 때문에 길고 복잡한 사용자_ID가 불편하지는 않음

특정 사용자_ID에게 임시로 root 권한을 부여하는 것은 아래 명령으로 가능합니다.

sudo -iCode language: PHP (php)

이러면 사용자_ID 비밀번호를 묻는데 비밀번호를 입력하면 마치 root처럼 사용할 수 있습니다.

사용자를 root처럼 이용하기

아시다시피 sudo 기능을 사용하려면 사용자_ID 비밀번호를 다시 입력해야 합니다. 보안을 위해서이지만 매넌 비밀번호를 입력하기가 귀찮을 수 있겠죠.

보안을 조금 포기하고 편리함에 더 방점을 둔다면 sudo 사용을 위해서 비밀번호 입력하지 않아도 되도록 만들 수 있습니다.

아래 visudo 명령을 사용하면 sido 사용자 권한을 조정할 수 있습니다.

sudo visudo

또는 

nano /etc/sudoersCode language: PHP (php)

그러면 /etc/sudoers 파일을 편집할 수 있는데요. 여기에서 root에만 허용되어 있는 NOPASSWD 권한을 사용하려는 사용자_ID에도 부과합니다.

즉 User privilege specification 부분에 사용자_ID ALL=(ALL) NOPASSWD: ALL을 추가합니다. 아래와 같은 모습이 됩니다.

root ALL=(ALL) NOPASSWD: ALL
사용자_ID ALL=(ALL) NOPASSWD: ALLCode language: PHP (php)
서버 보안, 일반 사용자를 root 사용자처럼 만들기-사용자 권한 부여

물론 이러한 명령어는 한번 더 비밀번호 체크 기능을 없애면서 보안이 더 낮아지는 효과가 있겠지만 사용자 입장에서는 로그인 후 매번 sudo 사용을 위해 비밀번호를 입력하는 불편함을 줄일 수는 있습니다.

편의성을 높이느냐 아니면 보안을 유지하느냐는 선택의 문제입니다.

uid와 gid를 root처럼 만든다.

다름으호 할 것은 사용자 ID와 그룹 ID를 root처럼 만드는 것입니다.

nano /etc/passwdCode language: PHP (php)

여기 맨 위를 보면 root 설정 내용을 볼 수 있는데요. root는 uid와 gid 값이 0입니다. 일반 사용자는 값이 1000으로 책정되어 있습니다.

여기서 사용자의 uid와 gid를 root처럼 0으로 변경합니다.

서버 보안, 일반 사용자를 root 사용자처럼 만들기-uid와gid를 root처럼 0으로 변경

root 그룹에 일반 사용자 추가

다음으로 할 것은 root 그룹에 일반 사용자 계정을 추가하는 것입니다.

nano /etc/groupCode language: PHP (php)

여기 맨위가 root 그룹을 나타내는데요. 여기서 맨위 root:x:0: 다음에 일반 사용자 계정을 추가하면 됩니다.

서버 보안, 일반 사용자를 root 사용자처럼 만들기- root 그룹에 일반 사용자 계정 추가

이어면 일반 사용자 계정으로 마치 root처럼 사용할 수 있습니다. 그러면 이제는 root를 굳이 사용할 필요가 없기 때문에 root 사용 중지시키면 됩니다.

sudo passwd -dl rootCode language: PHP (php)

참고

우분투 20.04와 PHP 8 기반 워드프레스 설치 방법

가상 서버를 운영하고픈 勇者에게 전하는 가상 서버 운영 입문 노하우 – Vultr 가상서버호스팅(VPS)를 중심으로

워드프레스 최적화를 위한 18개월간의 고민, 그 노하우를 담다.

도쿄 리젼과 비교해 본 Vultr 서울 리젼 사용기

가성비가 뛰어난 Vultr 가상서버호스팅(클라우드호스팅,VPS) 사용기

새롭게 뉴스레터를 시작했습니다.

1️⃣ 주식 등 투자 정보 : 기업 분석, IB 투자의견 등 투자 관련 내용
..... 테슬라 실적 및 IB들의의 테슬라 투자의견
2️⃣ 사례 및 트렌드 : 사례연구와 트렌드 관련 괜찮은 내용
.....유튜브와 경쟁대신 구독 전환한 비디오 플래폼 비메오 사례

서울에 생긴 Vultr 서버 100$ 프로모션

안녕하세요?
새로운 사이트 구축을 위한 신규 서버를 고민하신다면 , 서울 리젼이 생겨 더욱 빨라진 Vultr 서버를 Vultr 100$ 프로모션으로 이용해 보세요.

아래 프로모션 코드 링크를 통해 Vultr에서 서버 구축 후 1달 이상 사용 및 $25이상 결제 時 추가 100$을 주는 프로모션입니다.

Vultr는 서울에도 리젼이 있어 매우 빠르고, 아마존 웹 서비스(AWS)보다 성능이 높으며 가장 가성비가 뛰어납니다.

거기다 사용자 UI도 좋고, 15개까지 스냅샷을 무료로 제공하기 때문에 관리하기 좋습니다. 그리고 지금 100$ 프로모션처럼 가격적인 메리트도 있습니다.

우분투 20.04와 PHP 8 기반 워드프레스 설치 방법

가상 서버를 운영하고픈 勇者에게 전하는 가상 서버 운영 입문 노하우 – Vultr 가상서버호스팅(VPS)를 중심으로

워드프레스 최적화를 위한 18개월간의 고민, 그 노하우를 담다.

도쿄 리젼과 비교해 본 Vultr 서울 리젼 사용기

가성비가 뛰어난 Vultr 가상서버호스팅(클라우드호스팅,VPS) 사용기

Subscribe
Notify of
guest
0 Comments
Oldest
Newest
Inline Feedbacks
View all comments