보안 - 서버의 보안

서버의 보안

flowchart TB;

hacker["해커"]
internet["인터넷"]

subgraph router["공유기"]
hacker-pc["해커"]
server["서버"]
hacker-pc --> server;
end

hacker --> internet --> router;

공유기가 1차 방어선이라면, 서버는 최종 방어선이라 할 수 있어요. 공유기는 기본적으로 내부에 연결된 장치들이 서로 제한 없이 통신할 수 있도록 구성되어 있어요. 그래서 악성 사용자가 내 공유기 와이파이에 연결하면 서버의 어떤 포트에라도 공격을 시도할 수 있게 돼요.

그리고 공유기에서 서버로 포트 포워딩되어 있다면 이 포트는 공유기의 보호 없이 인터넷에서 직접적인 공격을 받게 될 거예요. 인터넷에 무언가를 공개하려면 반드시 공격도 허용해야 한다는 건데 참 안타까운 현실이죠?

그래서 공유기의 보안 못지 않게, 서버의 보안 역시 신경 쓰고 관리해야 해요. 여기서는 다음의 사항들을 점검하고 설정을 변경하시길 권해드려요.


주기적으로 업데이트하기

모든 운영체제가 그렇듯, 리눅스도 시간이 지나면서 보안 취약점이 발견되곤 해요. 그래서 이따금 생각날 때마다 업데이트 명령어로 서버를 최신 상태로 유지하시길 권해드려요.

sudo apt update
sudo apt upgrade -y

계정 비밀번호 바꾸기

누군가 내부 네트워크에 침입하게 되면 먼저 SSH 연결을 시도할 가능성이 높아요. 그래서 사용자 계정의 비밀번호를 강력하게 변경할 필요가 있어요.

비밀번호를 바꾸기 위해선 다음의 명령어를 실행해 주세요.

passwd

그러면 먼저 현재 비밀번호를 입력하라는 안내가 나오고 이후 안내에 따라 새로운 비밀번호를 두 번 입력하면 돼요.


서버의 방화벽 켜기

공유기와 마찬가지로 우분투에서도 ufw라는 방화벽 기능을 사용할 수 있어요. 다음의 명령어를 실행해 보세요.

sudo ufw status

ufw status는 현재 방화벽의 상태를 확인하는 명령어에요. 기본적으로는 꺼져 있는 상태이기 때문에 위 사진처럼 inactive 라고 나올 거예요.

이걸 켜 보기 전에, 바로 켜게 되면 ssh 까지 차단되기 때문에 ssh 연결을 먼저 허용해 줄 필요가 있어요. 이번에는 다음의 명령어를 실행해 보세요.

sudo ufw allow 22/tcp

이는 ssh 가 사용하는 22번 포트의 TCP 프로토콜 연결을 허용한다는 의미에요.

Rules updated 라는 출력이 나왔다면 성공이에요.
이제 방화벽을 켜더라도 ssh는 잘 동작할 거예요. 이제는 다음의 명령어로 방화벽을 켜 주세요.

sudo ufw enable

이와 같이 나온다면 잘 동작하고 있는 거예요. 이제 ssh의 22번을 제외한 포트들은 모두 차단되게 돼요.
잘 동작하고 있는지 확인하기 위해 sudo ufw status 를 다시 한번 실행해 보세요.

이제는 이와 같이 active 라는 출력이 나오고, 접근을 허용한 포트들이 나오게 돼요.

만약 더 허용하고 싶은 포트가 생긴다면 ufw allow 포트명/프로토콜명을 입력하면 되고, 이를 다시 거부하려면 ufw deny 포트명/프로토콜명을 입력하면 돼요. 앞으로 추가하는 소프트웨어마다 적절하게 지정해 주면 될 거예요.