본문 바로가기

IT 내용 정리

홈서버 운영 - fail2ban 을 써보자!

728x90
반응형
SMALL

난 현재 Ubuntu 18.04 운영체제의 간단한 홈 서버를 운영중에 있다.

 

sudo /var/log/auth.log 

sudo /var/log/auth.log 

를 통해 내 서버의 접속 목록을 살펴보자..

누가 로그인 시도를 했을까?

뭐 많다...

이런,,, 엄청 많다... 정말 많다. 중국 예맨 브라질 미국 특정 주 등등... WHOIS에만 찾아봐도 다양한 국가의 IP들이 나온다..

https://xn--c79as89aj0e29b77z.xn--3e0b707e/kor/main.jsp

 

KISA 후이즈검색 whois.kisa.or.kr

한국인터넷진흥원 인터넷주소자원 검색(후이즈검색) 서비스 입니다.

xn--c79as89aj0e29b77z.xn--3e0b707e

그래서 더욱 필요해졌다. 이름은 fail2ban

fail2ban 이란 지정한 시간내에 지정한 횟수만큼 실패 하면 ban 시간만큼 접속을 차단하는 것이다.

방화벽 세팅을 하기 귀찮은 나에게 있어서는 최고!

fail2ban 은 로그기반 프로그램이기 때문에 로그가 쌓이는 시점으로 계산된다.


이것 때문에 발생하는 fail2ban maxretry별 최대 로그인 시도가능 횟수.

1 => 1번

2 => 7번

3=> 13번

4=> 19번

5=> 25번

6=>31번

n=> 6*(n-1) + 1 

SSH의 경우 로그인이 실패(fail)하면 재시도(retry) 5회 하도록 해 줍니다.  재시도는 카운트 되지 않습니다.

SFTP의 경우 로그인이 실패(fail)하면 retry 안하고 바로 연결을 끊기 때문에 로그인 최대 시도횟수가 의도한대로 동작합니다.

출처:https://blog.lael.be/post/1209

1단계: Fail2ban 설치하기!

apt-get install fail2ban

설치 후

sudo iptables -L 로 방화벽 확인해야한다.

f2b

f2b 라는 항목이 추가되었으며, 패킷을 컨트롤 할 수 있게되었다.

설정 몇가지만 만져보도록 하자.

 

2단계: Fail2ban 설정 만지기

vi /etc/fail2ban/jail.conf

명렁어를 쳐서 수정을 들어가보자.

이렇게 수정하여보자.


ignoreip 에는 ban 이 절대 되지 않을 아이피를 적는다. (123.124.123.124/12 형태로 적는다. 추가는 스페이스바로 구분.)

bantime 은 접속을 차단할 시간이다. 600은 초단위로 10분을 의미한다.

findtime 은 통계 찾을 시간이다.

maxretry  fail 횟수이다.


ssh 의 경우 로그인의 성공이나 실패여부를 모두 /var/log/auth.log 에 저장한다.

 

3단계: 설정파일 적용을 위해서 Fail2ban 재시작

service fail2ban restart

sudo service fail2ban restart

조언: fail2ban이 리로드 되거나 리스타트 되면 벤 때린 목록 초기화가 된다.

이점을 이용해서 본인의 IP가 밴때려졌다면 서버 재부팅을 해서 목록 초기화를 하자.

로그는 삭제되지 않으니 조심해야한다.


https://zetawiki.com/wiki/Fail2ban_%EB%A1%9C%EA%B7%B8_%EC%B9%A8%EC%9E%85%EC%8B%9C%EB%8F%84_%EC%95%84%EC%9D%B4%ED%94%BC_%ED%99%95%EC%9D%B8

 

Fail2ban 로그 침입시도 아이피 확인 - 제타위키

다음 문자열 포함...

zetawiki.com

fail2ban이 잡은 아이들을 찾아보았다. (내서버 기준)

 

먼저 이 코드를 터미널에 치자

cat /var/log/fail2ban.log* | grep "] Ban" | awk '{print $NF}' | sort | uniq -c | sort -n

그럼 결과가 그랩되서 나올 것이다.

그 결과는...

아니 이런;;

103.79.142.149 저사람... 6번이나 로그인 때렸다...

옆에 숫자가 시도 횟수이다.


느낀점.. 로그를 보니까생각보다 내 서버에 침투하려는 나쁜 사람들이 많았다.. 중국 태국 브라질 베트남:하노이 미국:특정 뭐시기 주 등등...

내서버에 별거 없는데도 침입하려는 자가 많았다.

Fail2ban이 잡은 아이들은 9개이다..


꼭 해외 IP는 막도록 하자.

홈서버 이용시 백업은 필수에 중요 파일은 왠만해선 올리지 말자..

루트 계정 암호를 빡세게 만들자!


추가로 방화벽 설정에 참조한 블로그 링크를 올린다.

 

[Ubuntu] 우분투 방화벽(UFW) 설정

우분투의 기본적인 방화벽은 UFW입니다. 이는 iptables를 좀 더 쉽게 설정할 수 있도록 한 것인데 간단한 방화벽 구성에는 문제가 없지만 수준 높은 방화벽 구성에는 iptables 룰을 직접 사용해야 합니다. 참고 :..

webdir.tistory.com

UFW 설정도 잘해야 좋은 서버인거 같다. 

나는 실수로 22번 차단했다가 ssh 연결이 안되서 다시 22번 포트 열은 기억이 있다.

sudo ufw 어쩌구 명령어로 하는것들이다. 꼭 숙지해서 하자!

반응형
LIST