본문 바로가기
Linux,Cloud

우분투 18.04 초기 서버 설정하기 + 간단한 리눅스 명령어 모음

by 돈민찌 2021. 10. 8.
반응형

우분투 하이

우분투 18.04 버전 서버를 새로 만든 후 보안을 강화하고 나중에 관리하기 편하도록 초기에 세팅해놓아야 할 몇가지 단계가 있습니다.

1단계 - 루트 계정으로 로그인하기

새로 설치된 서버에는 일반적으로 루트 계정만 설정되어 있고, 이것으로 처음 로그인을 하게 됩니다 .루트 사용자는 매우 광범위한 권한이 있는 관리자 계정이기 때문에 정기적으로, 장기적으로 사용하는 것은 권장하지 않습니다. 이는 루트 계정에 내재된 권한의 일부가 우연히 실수로라도 매우 파괴적인 변경을 할 수 있기 때문입니다. 이러한 이유로 권장되는 방법은 일반 시스템 사용자 계정을 만들고, 이 사용자에게 일시적으로 특정 제한 사항이 있는 관리 명령문을 실행할 수 있도록 sudo 라는 권한을 부여하는 것입니다.

ssh -i [SSH키가 위치한 로컬 디렉토리] root@[원격 접속할 서버의 IP]

우선 AWS 등에서 부여받은 서버의 공개 IP주소를 알고 있어야 합니다. 인증하려면 서버 내에서 설정한 SSH 키가 필요합니다. 이 키는 원격으로 데이터를 전송하거나 시스템을 제어할 때 보안적으로 아주 중요한 역할을 하므로 탈취되거나 유출되지 않도록 주의해야 합니다.

SSH란 다양한 원격 접속 프로그램 (우분투 등)을 사용하여 원격으로 떨어져있는 서버에 직접 찾아가지 않고 IP를 통해 리눅스에 접속할 수 있게 해주는 프로토콜(네트워크 접속 도구)의 한 종류입니다. 이러한 프로토콜에는 Rlogin, Telnet, SSH가 있고 (보안적인 이유로) 최근 가장 많이 쓰이는 것이 SSH(Secure Shell)입니다. 리눅스 시스템을 직접 사용할 때에는 사용할 필요가 없습니다. https://blog.robertelder.org/what-is-ssh/

 

What is SSH? Linux Commands For Beginners

2017-04-30 - By Robert Elder      SSH is a network protocol for securely communicating between computers.  Often when people refer to 'using SSH', they are referring to using an SSH client to connect to another computer's SSH server in order to remot

blog.robertelder.org

호스트 인증에 대한 경고가 나타나고 이 때 yes를 입력하면 로그인이 됩니다. 이 때 일반적으로는 시스템 일반 사용자가 될 사용자를 새로 생성합니다. 명령어를 입력합니다.

adduser sammy

이렇게 생성된 유저는 아직 sudo의 권한을 가지고 있지 않습니다. 이러한 권한이 있어야 특정한 상황에 관리자의 권한을 빌려 사용할 수 있기 때문에 sudo 그룹에 이 사용자를 추가해줘야 합니다.

usermod -aG sudo sammy

user를 수정(mod)한다. add to Group sudo (sudo 그룹에 넣어준다.) sammy

UFW(Uncomplicated Fire Wall:: 복잡하지 않은 방화벽)를 설정해 특정 서비스에 대한 연결만을 허용할 수 있습니다.

ufw app list

현재 사용 가능한 모든 프로필 목록을 가져옵니다.

ufw enable

y를 입력하고 방화벽을 닫아줍니다. 이렇게 닫아준 다음에 특정한 접근만을 허용하는 것이 보안상으로 유리합니다.

다음에 다시 SSH 키를 통해 로그인하려면 방화벽이 SSH 연결을 허용해야 합니다. (필수)

ufw allow OpenSSH

이제 OpenSSH를 열어줌으로써, SSH키만 있다면 데이터베이스든, 서버든 CLI 환경이든 어디든 진입할 수 있습니다. 이제 앞으로는 그때그때 필요한 연결만을 허용하는 방식을 고수할 것입니다.

ufw status

Status: active

To                         Action      From
---                        -------      ---------
OpenSSH               ALLOW   Anywhere
OpenSSH (v6)         ALLOW   Anywhere (v6)

루트 계정이 SSH 키 인증을 사용하는 경우 SSH에 대한 비밀번호 인증이 비활성화 되어 있을 수 있습니다. 혹은 일반 사용자로써 sudo 명령문을 처음 사용할 때 일반 사용자 암호를 입력하라는 메세지가 표시될 수 있습니다. 보안을 강화하기 위해 비밀번호보다는 SSH키를 사용하는 것이 좋습니다.

공개 SSH 키는 이미 서버의 루트 계정의 ~/.ssh/authorized_keys 파일에 있으므로 해당 파일과 디렉토리 구조 자체를 새 사용자의 계정에 복사해와야 합니다. 이때 사용할 수 있는 간단한 명령문인 rsync가 있습니다.

rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

이제 다시 새 터미널을 열고 사용자 이름으로 로그인을 시도합니다.

ssh sammy@[접속할 서버의 IP 주소]

이제부터 sudo 명령을 사용할 수 있는 sammy라는 계정을 사용할 수 있습니다.

프롬프트 끝에

$ 기호가 있다면 일반 사용자로 접속해 있는 것이고,

# 기호가 있다면 루트 사용자로 로그인한 상태입니다.


pwd: page working directory 현재 내가 있는 디렉토리의 시스템 상 위치를 알려줍니다.

ls: list. 현재 디렉토리에서 접근할 수 있는 파일들을 나열해 보여줍니다.

mkdir: make directory. 디렉토리(폴더)를 생성합니다.

cd: change directory. 디렉토리를 이동합니다.

cp: copy 파일을 복사합니다.

mv [파일명] [디렉토리명] : move 파일을 이동시킵니다. 디렉토리명에 파일 확장자까지 기입할 경우 이름도 변경.

rm [파일명] : remove "파일"을 삭제합니다. -r 옵션을 입력하면 디렉토리와 하위의 파일들까지 삭제할 수 있습니다.

rmdir [디렉토리명] : remove directory "디렉토리"를 삭제합니다.


. 현재 위치한 디렉토리를 기준으로 합니다.

.. 현재 위치한 디렉토리의 상위 디렉토리를 가르킵니다.

~ 루트 디렉토리 (홈 디렉토리)를 가르킵니다.


옵션:

-h 옵션의 축약어

--human-readable 옵션의 축약어 아님

-lh 복수 옵션 함께 사용 (-l과 -h를 합침)


touch [파일명].[확장자명] 파일을 생성합니다. (빈 파일)

echo [특정 변수 or 값] 해당하는 값을 출력합니다.

echo [특정 변수 or 값] > [파일명].[확장자명] 해당하는 값을 해당 파일명으로 저장합니다.

cat [파일명].[확장자명] (concatenate) 파일의 내용을 표시합니다.


nano / gedit / vim 리눅스의 텍스트 편집기입니다. 파일명과 함께 호출해서 바로 텍스트를 입력 가능합니다.

vim이 좀 더 보편적이지만 nano 사용법이 더 취향에 맞아 nano를 씁니다.

^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell

^ 기호는 터미널에서 Ctrl 키를 의미합니다.
Ctrl + X를 누르고 Shift + Y, Enter를 누르면 처음 정한 이름 그대로 파일을 저장합니다.

나노 홈페이지

반응형

댓글