우분투 14.04 서버 초기 설정

자신의 서버를 가지게 되면 기본적으로 설정해야 할 설정 항목들이 있다. sudo 권한을 가진 계정 생성, 루트 계정 비활성화, SSH 접속 계정 설정등이 그것이다. 해외 호스팅 업체로 보이는 DigitalOcean이 작성한 글에서 서버의 초기 설정 방법을 잘 작성해 놓았다. 이 글에서 제시한 방법으로 서버 설정을 완료하고, 유용한 듯 보여 전문을 번역하였다. 번역하다가 애매한 부분이 있으면 조금 더 추가적인 설명을 붙여 작성하였다. 서버 호스팅을 받거나, 자신의 서버를 구성했다면 이 글이 초기 설정에 도움이 될 것이다.

아래는 원문인 Initial Server Setup with Ubuntu 14.04 글의 전문 번역이다.

처음으로 서버를 만들 때 기본 설정의 일부분으로 초기에 수행해야 할 몇 가지 구성 단계가 있다. 이것은 서버의 보안과 가용성을 증가시키고 당신이 후속 조치를 할 때 견고한 기반을 제공할 것이다.

1 단계 - 루트 로그인

처음에 서버에 로그인하려면 서버의 공용 IP 주소와 “루트” 사용자의 계정에 대한 암호를 알아야 한다. 대부분의 서버의 경우 서버 자격 증명 및 서버의 IP 주소가 포함 된 이메일을 서버 호스팅 업체로부터 받게 된다.

루트 사용자는 리눅스 환경에서 매우 광범위한 권한을 가진 관리자다. 계속해서 루트 계정을 사용한다면 루트 계정의 높은 권한 때문에 낙담하는 일이 발생한다. 루트 계정이 가진 파워 중 하나는 매우 치명적인 변경도 가능하게 하는 것이기 때문이다. 그것이 실수일지라도…

이 가이드는 당신이 다른 유저 계정을 설정하여 일상적인 작업에서 영향력의 범위를 줄여주는데 도움을 줄 것이다. 또한 당신이 루트의 권한을 필요로 하는 동안 권한을 어떻게 높이는지도 가르쳐 줄 것이다.(sudo 설정)

첫 번째 단계는 서버에 로그인하는 것이다. 우리가 가진 유일한 계정은 루트 계정이다. 터미널에서 ssh 명령어를 사용하여 서버에 접속 할 수 있다. 그 명령어는 다음과 같을 것이다.

1
$ ssh root@server\_ip\_address

2 단계 - 비밀번호 변경

당신은 현재 루트 계정에 대해 설정된 암호를 기억할 가능성이 없다. 본인이 더 쉽게 기억할 수 있는 암호로 변경하자.

1
$ passwd

위 명령어를 입력하고 나면 새 암호를 확인하도록 요청한다. 이 과정에서 입력을 해도 아무것도 화면에 표시가 표시되지 않는다. 이것은 의도적인 것이며 사람들이 어깨 너머로 보고 문자의 갯수로 암호를 추측하는 것을 방지한다.

3 단계 - 새 사용자 만들기

이 단계에서 앞으로 로그인하는데 사용할 새 사용자 계정을 추가 할 것이다.

여기서는 사용자의 이름을 dezang으로 하지만 당신은 당신이 원하는 어떤 이름을 선택할 수 있다.

1
$ adduser dezang

당신은 계정 암호로 시작하는 몇 가지 질문을 받게 될 것이다.

암호를 제외한 나머지 부가적인 정보는 필요하지 않다. 건너뛰기를 원한다면 엔터를 누르면 된다.

4 단계 - 루트 권한

이제 우리는 일반 계정 권한이 있는 새 사용자 계정을 가지게 되었다. 그러나 때때로 관리 작업을 수행해야 할 시기에 직면하게 된다.

루트 권한을 위해 일반 사용자에서 로그아웃하고 루트 계정으로 다시 로그인하는 것은 번거로움을 해결하기 위해 우리는 일반 계정에 sudo 권한을 설정할 수 있다. 이것은 일반 사용자가 각 명령 앞에 단어 sudo를 넣어 관리자 권한으로 명령을 실행할 수 있도록 한다.

새로운 계정에 이러한 권한을 추가하려면, visudo 명령을 사용한다. 이 명령은 환경설정 파일을 연다.

1
$ visudo

사용자 권한을 다루는 부분을 찾을 때까지 아래로 스크롤 한다.우리가 찾을 부분은 아래와 유사하다.

1
2
# User privilege specification
root ALL=(ALL:ALL) ALL

복잡​​하게 보일 수 있지만, 그것에 대해 걱정할 필요가 없다.우리가 해야 할 일은 당신이 만든 “dezang”을 같은 형식으로 아래 라인에 추가하는 것이 전부다.

1
2
3
# User privilege specification
root ALL=(ALL:ALL) ALL
demo ALL=(ALL:ALL) ALL

이 작업을 수행 한 후 Ctrl-X를 눌러 종료한다. 파일을 저장하기 위해 “Y”를 입력하고 저장 위치를 확인한 다음 “ENTER”를 누른다.

5 단계 - SSH 구성 (선택 사항)

이제 새로운 계정을 가지게 되었고, 우리는 SSH의 설정을 통해 서버를 조금 더 보호 할 수 있다.

루트를 사용하여(혹은 sudo 명령어를 사용하여) 텍스트 편집기로 설정 파일을 열어 시작한다.

1
$ vim /etc/ssh/sshd_config

SSH 포트 변경

첫 번째 옵션은 SSH가 실행되는 포트를 변경하는 것이다. 다음과 같이 보이는 행을 찾는다.

1
Port 22

1025에서 65536 사이에 임의의 번호로 변경할 경우, 서버에 있는 SSH 서비스는 변경한 포트로 연결을 찾을 것이다. 때때로 권한이 없는 사용자가 SSH를 공격하여 서버에 침입하려고하기 때문에 이것은 도움이 된다. 포트를 변경하게 되면, 그들은 그것을 스니핑하는 추가 단계를 완료해야 한다.

이 값을 변경하면 서버가 새 포트에서 실행중이라는 것을 명심해야 한다. 이 가이드를 위해, 데모로 4444로 변경한다. SSH에 연결하기 위해서, 기본이 아닌 설정한 포트를 사용하도록 자신이 사용하는 SSH 클라이언트의 포트 설정 값을 수정한다.

1
Port 4444

루트 로그인 제한

다음으로 다음과 같은 라인을 찾는다.

1
PermitRootLogin yes

여기서 SSH를 통한 루트 로그인을 비활성화 할 수 있다. 이것은 일반 사용자 계정을 통해 서버에 액세스 할 때 필요한 권한을 상승 할 수 있기 때문에 보다 안전한 설정이다.

루트 로그인을 비활성화 하기 위해서는 이 부분을 “no”로 수정하면 된다.

1
PermitRootLogin no

명시적으로 특정 사용자를 허용

한 단계 더 나아가 서버에 로그인 할 수 있도록 하고자하는 정확한 사용자를 지정할 수 있다. 설정 목록에 없는 어떤 사용자도 SSH를 통해 로그인하는 것이 허용되지 않는다.

만약 계정명을 잘못 입력하면 쉽게 스스로를 접근하지 못하게 만들 수 있게 때문에 이 옵션을 설정할 때 주의해야 한다.

이 옵션의 경우 라인을 직접 추가 해야한다. 다음과 같은 구문을 사용한다. 당신이 생성한 계정명인 “dezang”으로 대체하는 것을 잊지마라.

1
AllowUsers dezang

위의 옵션 변경 사항을 마치면, 저장하고 파일을 닫는다. (CTRL-X -> “Y” -> “ENTER”)

6 단계 - SSH 재시작

이제 지금까지 변경한 새로운 구성을 사용할 수 있도록 SSH 서비스를 다시 시작해야 한다.

SSH를 재시작하는 명령어는 :

1
$ service ssh restart

서버에서 로그 아웃하기 전에 새로운 구성으로 연결이 성공적으로 되는지 확인하기 전까지 연결을 해제하지 않아야 한다. 만약 실수로 잘못된 설정을 하여 연결이 되지 않는데, 연결을 해제하면 이를 복구 할 수 있는 방법이 없기 때문이다.

새 터미널 창을 열고 서버에 새로운 연결을 시작해야 한다.이번에는 루트 계정 대신에 우리가 만든 새 계정을 사용하여 접속할 것이다.(위 설정대로 했다면 루트계정을 막아놨기 때문에 어짜피 접속이 되지 않는다.)

SSH가 실행되고있는 포트 번호를 변경 한 경우, 새로운 포트 번호를 클라이언트에 설정해야 한다. 당신은 -p 4444 옵션을 사용하여 이 작업을 수행 할 수 있다. 여기서 “4444”는 당신이 설정한 포트 번호이다.

위 구성으로 설정한 서버의 경우 터미널에서 다음과 같은 명령어로 SSH 에 접속할 수 있다.

1
$ ssh -p 4444 dezang@server_ip_address

위 명령어를 입력하면 당신이 구성한 새 사용자의 암호를 입력하라는 메시지가 표시된다. 그 후, 당신은 새로운 사용자로 로그인 할 수 있다.

루트 권한이 필요할 경우 “sudo” 명령어를 사용해야 하는 것을 기억하자.

1
$ sudo comman_to_run

모든 것이 잘 경우, 다음을 입력하여 세션을 종료 할 수 있다.

1
$ exit

그 다음에 할 일은?

이 시점에서, 당신은 서버에 대한 기반을 가지고 있다. 당신은 fail2ban을 구현함으로써 서버의 대한 보안 작업을 계속할 수 있다. fail2ban은 서버에 직접적인 강제 공격으로부터 보호하는 데 도움이 된다.

당신은 서버에 필요한 소프트웨어 중 하나를 설치할 수 있다. 우리의 커뮤니티에서 나머지 부분을 살펴보면 자습서를 더 찾을 수 있다. 일부 인기있는 아이디어는 LAMP 스택 또는 LEMP 스택을 구성하는 것이다. 이를 구성하면 당신은 웹 사이트를 호스팅 할 수 있다.