우분투를 포함한 리눅스 서버를 운영하면서 대부분 SSH를 설정해 원격에서 접속하거나 유지보수를 하게된다.

하지만 SSH를 열어두면 Brute-Force공격이 시도때도 없이 들어온다...

 

특히 중국쪽에서 SSH포트를 열면 한 10분도 안돼서 접속시도가 들어온다... 전체 아이피를 스캔하는 봇을 돌리는 것도 만만치 않을건데.. masscan와 비슷한 원리의 봇을 사용하는 듯하다..

 

우분투에서는 특정 IP만 SSH 접속이 가능하게 하려면 크게 2가지 방법이 있다.

첫번째는 /etc/hosts 파일을 이용하는 방법(TCP Wrapper) 과

두번째는 ufw같은 방화벽 유틸을 사용하는 것이다.

 

이번 포스트에서 다룰 방법은 전자다. 왜나하면 후자의 방법에 비해 훨씬 간단하고 기본적으로 설치된 소프트웨어를 사용해서 안정성있기 때문이다.

 

 

/etc/hosts.allow , deny파일을 통해 IP를 차단하는 것을 TCP Wrapper이라고 하는데

ssh뿐만 아니라 리눅스에서 돌아가는 모든 데몬에 대해서 설정이 가능하며 특징은 다음과 같다.

1. 별도의 패키지 설치가 필요없이 기본적으로 내장되 있다.

2. 기본적으로 TCP연결을 허용한다음 허용된 IP에 대해서만 response를 보낸다. ufw는 TCP ACK패킷 자체를 전송하지 않지만 TCP Wrapper는 TCP ACK패킷을 전송한다는 점에서 차이가 있다.

 

1. TCP Wrapper SSH 차단 방법

$ sudo vi /etc/hosts.deny

/etc폴더내 파일은 기본적으로 수정시 root 권한이 필요하므로 sudo를 통해 명령어를 실행한다.

우선 기본적으로 ssh 데몬(sshd)의 접근을 차단해주기 위해 다음과 같은 행을 추가한다.

sshd: ALL

 

**참고로 TCP Wrapper의 Priorty는 다음과 같다.

1. hosts.deny

2. hosts.allow

즉 차단 정책이 우선이므로 기본적으로 차단을 진행하는데 만약 IP가 allow에 존재한다면 예외적으로 접근을 허용하는 방식이다. 일반적인 방화벽 소프트웨어나 시스템과 다를 바 없다.

 

그다음 허용할 IP를 설정하기 위해 /etc/hosts.allow 파일을 수정한다.

$ sudo vi /etc/hosts.allow

그다음 허용할 IP를 설정하기 위해 다음과 같은 행을 추가한다.

sshd: IP주소
에를 들어 1.1.1.1를 추가하고자 한다면
sshd: 1.1.1.1

아주 간단하다, 그리고 IP가 여러개라면 ,(콤마)로 구별하거나 sshd: 행을 여러번 사용해도 된다.

만약에 IP대역을 입력하고 싶다면 CIDR형태로 입력해도 되고 뒷 부분을 그냥 쓰지 않고 .만 써도된다. 예시를 보여주자면 다음과 같다.

#1.1.1.1/24대역의 IP를 허용하고 싶을 때
sshd: 1.1.1.
또는
sshd: 1.1.1.1/24

#2.2.2.2/16 대역의 IP를 허용하고 싶을 때
sshd: 2.2.
또는 
sshd: 2.2.2.2/16

이처럼 CIDR로 써도되고 .으로 표시해도된다. 다만 추가하고자 하는 IP대역의 CIDR이 /24나 /16, /8이 아닌 /25,/27과 같은 형식이라면 .으로 표기하기는 어렵고 CIDR로 표기하면된다.

 

hosts.allow, hosts.deny 파일 수정을 마쳤으면 ssh데몬을 재시작한다.

$ sudo service sshd restart

 

그럼 정상적으로 특정IP만 ssh를 접속 가능하도록 허용하게 만드는데 성공한 것이다.

'서버운영' 카테고리의 다른 글

[Migrated From anhyunjun.com] 홈서버 운영 1년후기  (0) 2024.05.25
JAN 7, 2023  4 MIN READ  포스트

홈서버 운영 1년후기

우리 F.A Member들은 아시겠지만 저는 홈서버는 2022년 초반부터 현재까지 운영하고 있습니다.

홈서버를 운영하면서 장점과 단점과 여러가지 질문사항들에 답변을 해보겠습니다.

홈서버 운영 장점

  1. 장애(서버 셧다운,네트워크)발생시 즉각 대처가 가능하다.
  2. 원격지에서 ssh등으로 작업하기 꺼려지는 작업들(IP변경,리부팅,위해요소)을 걱정없이 할 수 있다.
  3. SW운영시험 용이, 예를들어 신규업데이트 패치를 실제 서버들에게 배포 적용하기전에 테스트를 할때 홈서버 상대로 적용을 해보면 버그등을 확인할 수 있다.   테스트베드를 실제 운영되는 서버로 지정하면 테스트시 발생되는 문제에 대한 책임등에 대한 리스크가 매우 크다.
  4. 비용 절감/ 호스팅사를 이용하거나 vps를 이용하는 것보다 전기료+네트워크 회선료를 포함하면 보다 저렴하게 이용이 가능하다.

홈서버 운영 단점

  1. 24시간 구동으로 인한 전기료

-물론 호스팅사보다는 적지만 서버 종류에 따라 전기료가 많이 발생된다.

2. 네트워크 트래픽 과다

-통신사들은 보통 개인적용도, 소매용(비상업용)을 목적으로 제공되는 회선에 서버운영을 금지하고 있지는 않지만 미디어서버 운영으로 인한 트래픽과다는 약관위반이다.

또한 홈서버 트래픽으로인해서 인터넷 속도가 감소된다.

3. 통신사의 반대

일부 통신사는 홈서버 운영을 못하게 하기위해 단지 "트래픽 과다 방지"라는 이유로 포트를 차단한다. 사실 이경우 매우 골치가 아픈데 고정IP를 제공하는 VPN을 이용하거나 통신사에 강력하게 요청해야 한다.(실제로 강력하게 요청해서 통신사에서 풀어준 사례가 존재한다..)

참고로 내가 방화벽 해제를 못한건지 아니면 통신사에서 차단한건지 알수있는 방법은 외부에서 서버IP와 포트로 tcptraceroute를 실시하면 된다.(통신사에서 차단한건지 내 서버 문제인지는 nmap으로는 확인못한다. nmap으로는 단지 포트 open여부까지만 확인이 가능하다.)

tcptraceroute결과에서 내ip에서 block된거라면 방화벽 설정을 잘못한거고 내ip가 아닌 상위장비에서 block된거라면 통신사측 상위장비에서 블럭한 경우다.

포트차단은 통신사 규정이나 내부 방침은 아니고 담당 국사의 망운용팀에서 자체적으로 판단하여 차단한것이다. 이용약관상 통신사 의무는 인터넷만 접속되게 하는 것 이므로 내가 요청해도 통신사측에서 풀어줄 의무는 없다.(약관에서 "통신사는 고객의 원활한 서비스 제공을 위해 과다트래픽 유발시 일시적으로 서비스를  제한 할수 있으며 고객은 이의를 제기할 수 없음"등의 규정이 있음)

우리가 통신사 서비스를 이용한다는건 서비스 이용약관에 동의한것이므로 계약과 비슷한 효력을 지닌다. 따라서 개인적용도, 소매용(비상업용)외의 목적외 용도, 메일서버 운영등은 통신사에서 고객을 상대로 소송을 걸수도 있음을 명심해야한다.

질문 & 응답

  1. 꼭 고정IP를 사용해야 하나요?

A: 아닙니다. 고정IP를 사용하지 않아도 통신사 공인IP회선에 링크만 유지해도 IP유지가 가능합니다. 다만 통신사에서 IP대역변경작업/상단장비 리부팅작업(절체,업타임과다,증설등의 사유로)을 진행한다면 변경될 가능성이 있습니다. 필자는 고정IP를 사용하지 않지만 3년넘게 동일한 IP를 사용한적도 있습니다.

2. OS는 무엇을 사용하나요?

A: 운영하시는 서비스에 맞는 OS를 결정하여 사용하십시오. 필자는 우분투 서버를 사용중입니다. IIS웹서버를 운영한다거나 windows 기반에서만 구동이 가능한 서비스를 구동하려면 windows기반 os로 사용해야 합니다.

*************추가 예정 2023/01/10*************

 

Published by:

 
 

You might also like...

APR
01

투닝(Tooning) 사용기 #1

5 min read
 
FEB
26

예인교회 중등부 유튜브 채널 링크

 
FEB
14

ChatGpt에게 물어보기 (Part 1)

2 min read
 
JAN
17

국내 아파트 FTTH Infra

2 min read
 
DEC
25

Merry Christmas

 
LuxNewton © 2024

+ Recent posts