# 리눅스 서버 생성 및 기본 설정
스프링 웹서비스를 웹으로 배포하자. 그러기 위해서는 리눅스 서버를 만들고 여러 설정이 필요하다.
## 목차
1. 서버 구입
2. 서버 접속
3. 사용자 설정
4. 보안 설정
5. 업데이트
## 서버 구입
### 회원 가입 및 카드 등록
가벼운 서비스 개설을 위해 DigitalOcean 서버 호스팅을 사용하기로 함. (가격 저렴)
![Imgur](https://i.imgur.com/yP6ck4a.png)
회원 가입 및 이메일 인증 후, 카드번호를 입력해줌.
### Droplet(서버 인스턴스) 생성
OS 선택.
![Imgur](https://i.imgur.com/cLZrpIG.png)
CPU/DISK/Transfer 설정.
![Imgur](https://i.imgur.com/ajcGzg6.png)
서버 위치 설정. (물리적 거리가 가까울 수록 반응속도 빠름)
![Imgur](https://i.imgur.com/HJjSDXn.png)
기타 설정은 기본으로 사용. Create를 하여 인스턴스 생성.
![Imgur](https://i.imgur.com/YEp9V9p.png)
## 서버 접속
서버를 생성하였으니 접속을 해봄. 생성된 Droplet을 클릭하면 Access 메뉴가 있는데 여기서 Console 모드로 서버에 접속할 수 있음.
![Imgur](https://i.imgur.com/DphSbC1.png)
하지만 맥 유저인 나는 터미널 창을 이용해서 접속하기로 함. (윈도우 유저는 Putty를 이용해서 접속을 권함)
```
# 터미널에 ssh명령어를 사용하여 root계정으로 해당 아이피서버로 접속
$ ssh root@{server-ip-address}
```
초기 계정은 root이고 해당 계정의 비밀번호는 이메일로 와있는데 이를 참고하여 로그인!! (혹시 실수로 이메일을 지웠다면 Access 메뉴에서 Reset Root Password 버튼을 클릭하면 이메일로 비밀번호를 재전송 해주니 걱정 ㄴㄴ)
첫 로그인을 하면 root 계정의 비밀번호를 바꾸라고 함. 오타 안나게 알아서 잘 바꿔꿔야 함.. (초기 비밀번호가 생각보다 어려워 오타 자꾸나면 빡침)
## 사용자 설정
### 계정 생성
명령어를 입력하면 몇 가지 추가 정보를 입력하라고 나옴. (그냥 엔터쭉 눌러서 쿨하게 패스)
```
$ adduser {username}
```
### 루트 권한 부여
반적으로 리눅스는 루트(root) 계정 로그인을 권장하지 않기에 새롭게 만든 아이디에 루트 권한을 부여하기로 함. (루트권한을 부여하지 않으면 관리자 모드의 작업을 할 수 없음)
```
$ adduser {username} sudo
```
새 아이디로 로그인
```
exit
ssh {username}@{server-ip-address}
```
## 보안 설정
### 방화벽 설정
서버에 접속 가능한 포트들을 관리하는 걸 방화벽이라고 함. 우분투는 기본적으로 ufw 방화벽을 제공하므로 이를 사용하여 방화벽을 설정.
ssh(22번 포트) 접속과 http(80번 포트) 접속을 허용.
```
sudo ufw allow ssh // 22
sudo ufw allow http // 80
```
방화벽 적용
```
sudo ufw enable
```
방화벽 상태보기
```
sudo ufw status
```
### SSH 보안 설정
root 계정 접속을 막음. 왜? 무차별 대입 공격을 대비.
설정 파일 열기.
```
sudo vi /etc/ssh/sshd_config
```
아래의 내용 변경.
```
// 변경 전
PermitRootLogin yes
// 변경 후
PermitRootLogin no
```
무차별 대입 공격시 딜레이 방어 설정.
```
sudo apt-get install sshguard
```
## 업데이트
마무리!
```
sudo apt-get update
sudo apt-get upgrade
```