리눅스 서버 입문

준비중..

리눅스 서버 입문

리눅스 너는 무엇~?!

02 리눅스 서버 생성 및 기본 설정

# 리눅스 서버 생성 및 기본 설정 ## 목적 Spring으로 만든 어플리케이션을 웹으로 배포하려고 한다. 이를 위해 리눅스 서버를 생성해야 하며, 기본 환경설정을 잡아줘야 한다. 아래는 이에 대한 내용이다. (이하 내용은 빠른 글쓰기를 위해 음슴체로 작성하기로 한다) ## 목차 + 서버 구입 + 서버 원격 접속 + 사용자 계정 생성 + 루트 권한 부여 + 방화벽 설정 + SSH 보안 설정 + apt-get 업데이트 ## 개발환경 + DigitalOcean VPS + Ubuntu 14.04 x86 + RAM: 1G + CPU: 1core + SSD: 30G ## 서버 구입하기 어디서 서버를 구입하면 좋을까 고민하던 중, 페이스북 광고로 접하게 된 [DigitalOcean](https://m.do.co/c/fe29dccc0207) 서버 호스팅을 사용하기로 했음.(가격이 매우 저렴해서 맘에듬) ![](https://www.dropbox.com/s/8tatog3xm8qms80/0101.png?dl=1) 회원을 가입하고 이메일로 인증을 받은 뒤, 카드번호를 입력해줌. 카드 인증을 마치고 Create Droplet을 클릭함. 가장먼저 해주는 설정으로 OS와 버전인데 **우분투 14.04 64bit** 버전을 설정 함. ![](https://www.dropbox.com/s/110tpfx7pxwys3u/0102.png?dl=1) 다음으로 CPU/DISK/Transfer 설정임. 나는 한달에 $10달라 짜리를 골랐음 (제일 싼건 한달에 $5임.. 싸다!) ![](https://www.dropbox.com/s/ntn1uhx6a1iih5p/0103.png?dl=1) 마지막으로 서버위치를 설정해줌. 한국에서 제일 가까운 지역인 싱가포르 서버로 설정함. (물리적으로 가까운 만큼 반응속도 또한 가장 빠름) ![](https://www.dropbox.com/s/yv84f1zs3s5fkhi/0104.png?dl=1) 여기서 언급하지 않은 여러 기타 설정들은 기본셋팅을 그대로 사용하였음. **Create**를 클릭하면 아래와 같이 서버가 생성됨. ![](https://www.dropbox.com/s/by6gd42hj467upb/0105.png?dl=1) ## 서버 원격 접속 서버를 생성하였으니 접속을 해봄. 생성된 Droplet을 클릭하면 Access 메뉴가 있는데 여기서 Console 모드로 서버에 접속할 수 있음. ![](https://www.dropbox.com/s/9c9g0yd2u66zei9/0106.png?dl=1) 하지만 맥 유저인 나는 터미널 창을 이용해서 접속하기로 함. (윈도우 유저는 Putty를 이용해서 접속을 권함) ``` # 터미널에 ssh명령어를 사용하여 root계정으로 해당 아이피서버로 접속 $ ssh root@{server-ip-address} ``` 초기 계정은 **root**이고 해당 계정의 비밀번호는 이메일로 와있는데 이를 참고하여 로그인!! (혹시 실수로 이메일을 지웠다면 Access 메뉴에서 Reset Root Password 버튼을 클릭하면 이메일로 비밀번호를 재전송 해주니 걱정 ㄴㄴ) 첫 로그인을 하면 root 계정의 비밀번호를 바꾸라고 함. 오타 안나게 알아서 잘 바꿔꿔야 함.. (초기 비밀번호가 생각보다 어려워 오타 자꾸나면 빡침) ## 사용자 계정 생성 로그인 할 수 있는 새로운 사용자를 만들어 봄. ``` $ adduser {username} ``` 위 명령어를 입력하면 몇 가지 추가 정보를 입력하라고 나옴. (그냥 엔터쭉 눌러서 쿨하게 패스) ## 루트 권한 부여 일반적으로 리눅스는 루트(root) 계정 로그인을 권장하지 않기에 새롭게 만든 아이디에 루트 권한을 부여하기로 함. (루트권한을 부여하지 않으면 관리자 모드의 작업을 할 수 없음) ``` $ adduser {username} sudo ``` 아까 만들어준 계정에 `sudo`권한을 부여하였으니 새 아이디로 로그인을 하자~~ ``` $ exit $ ssh {username}@{server-ip-address} ``` ## 방화벽 설정 서버에 접속 가능한 포트들을 관리하는 걸 방화벽이라고 함. 우분투는 기본적으로 ufw 방화벽을 제공하므로 이를 사용하여 방화벽을 설정. ``` $ sudo ufw allow ssh $ sudo ufw allow http ``` 위 명령어는 ssh(22번 포트) 접속과 http(80번 포트) 접속을 허용하는 명령임. 이를 동작시키려면 아래와 같이 enable 해야 함. ``` $ sudo ufw enable ``` 현재 방화벽 설정을 보려면 아래를 쳐주면 됨. ``` $ sudo ufw status ``` ## SSH 보안 설정 root 계정이 ssh 접속하게 해둔다면, 무차별 대입공격(해킹)이 들어올 수 있음. 이를 방지하기 위해 root 계정 로그인을 비활성화 하기로 함. 이를 위해 ssh 설정파일을 수정해 줘야 함. 먼저 vi 편집기를 사용해 해당 설정 파일을 열어 줌. ``` $ sudo vi /etc/ssh/sshd_config ``` 열려진 파일에서 다음의 내용을 찾아 ``` PermitRootLogin yes ``` 아래와 같이 바꿔 줌. ``` PermitRootLogin no ``` 혹시모를 무차별 대입 공격을 대비하기 위해 반복 접속 실패시 딜레이를 주도록 아래와 같이 설정함 ``` $ sudo apt-get install sshguard ``` ## apt-get 업데이트 기본설정의 마지막 작업으로 OS업데이트를 함. ``` $ sudo apt-get update $ sudo apt-get upgrade ``` update 명령을 통해 최신 업데이트 목록을 가져온 뒤, upgrade 명령을 통해 이를 최신화 함. 끝~~~