가이드는 아래와 같은 셋팅 정보를 예시로 설명을 진행합니다.
예시에 빨간색 표시한 값들을 선호하는 값으로 바꾸어 진행하셔도 됩니다.

예시)
- 인스턴스 IP : 123.45.67.89
- Ubuntu 유저 계정 : test1234
- 변경할 SSH 포트 : 11122
- 변경할 xRDP 포트 : 11133

Tip. 리눅스 console에서 command 실행 결과는 "접은글"로 숨겨 놓았습니다.
     실행 결과에 대한 참고가 필요한 경우 "더보기"를 클릭해서 확인 할 수 있습니다.

Tip. vim 편집 내용은 표로 정리 하였는데, 표 안의 // 주석은 편집해야할 위차나 설명이니
     // 까지 함께 copy & paste 하시면 에러 날 수 있으니 잘 필터링 해주세요.

 

2-3. Ubuntu 20.04 보안 설정

1) fail2ban 설치

// fail2ban 설치

  • $ sudo apt install -y fail2ban python3-pip sqlite3 rsyslog
  • $ sudo pip3 install pyinotify


// 정책 파일 복사 (필요시 수정)

  • $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


// 서비스 재시작

  • $ sudo systemctl enable fail2ban
  • $ sudo systemctl restart fail2ban
  • $ sudo systemctl status fail2ban

 

더보기

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
$ sudo systemctl enable fail2ban
Synchronizing state of fail2ban.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable fail2ban

$ sudo systemctl restart fail2ban
$ sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-07 23:03:06 KST; 3s ago
Docs: man:fail2ban(1)
Process: 20454 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 20455 (f2b/server)
Tasks: 5 (limit: 1081)
Memory: 11.3M
CGroup: /system.slice/fail2ban.service
└─20455 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Apr 07 23:03:06 test systemd[1]: Starting Fail2Ban Service...
Apr 07 23:03:06 test systemd[1]: Started Fail2Ban Service.
Apr 07 23:03:07 test fail2ban-server[20455]: Server ready

 

 

2) fail2ban 사용법


// 현재 ssh 접속 실패 로그 확인 (아무 결과도 없는게 좋은겁니다.)

  • $ sudo cat /var/log/auth.log | grep "Failed password"

 

더보기

$ sudo cat /var/log/auth.log | grep "Failed password"
...(생략)
Apr 7 14:02:27 test sshd[19732]: Failed password for invalid user kostas from 43.154.166.195 port 51524 ssh2
Apr 7 14:02:40 test sshd[20344]: Failed password for invalid user dmitry from 165.227.30.170 port 46544 ssh2
Apr 7 14:03:00 test sshd[20352]: Failed password for invalid user datav from 115.186.58.55 port 46630 ssh2
Apr 7 14:03:09 test sshd[20448]: Failed password for invalid user honza from 51.140.185.84 port 43388 ssh2
Apr 7 14:03:26 test sshd[20467]: Failed password for invalid user ca from 20.205.206.132 port 43160 ssh2
Apr 7 14:04:01 test sshd[20469]: Failed password for root from 92.255.85.237 port 62684 ssh2


// Bans 테이블에서 차단된 IP 조회

  • $ sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips;"

 

더보기

$ sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips;"
115.186.58.55
164.132.50.191
20.205.206.132


// checkban 명령 alias 추가 (자주 실행해 보기 위해 단축 명령어 설정)

  • $ vim ~/.bashrc
// 맨 아래줄 추가
alias checkban='sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips;"'
alias checkauth='sudo cat /var/log/auth.log | grep "Failed password"'
  • $ source ~/.bashrc
  • $ checkban
  • $ checkauth

 

더보기

$ checkban
115.186.58.55
164.132.50.191
20.205.206.132

$ checkauth
...(생략)
Apr 7 14:02:27 test sshd[19732]: Failed password for invalid user kostas from 43.154.166.195 port 51524 ssh2
Apr 7 14:02:40 test sshd[20344]: Failed password for invalid user dmitry from 165.227.30.170 port 46544 ssh2
Apr 7 14:03:00 test sshd[20352]: Failed password for invalid user datav from 115.186.58.55 port 46630 ssh2
Apr 7 14:03:09 test sshd[20448]: Failed password for invalid user honza from 51.140.185.84 port 43388 ssh2
Apr 7 14:03:26 test sshd[20467]: Failed password for invalid user ca from 20.205.206.132 port 43160 ssh2
Apr 7 14:04:01 test sshd[20469]: Failed password for root from 92.255.85.237 port 62684 ssh2



// fail2ban 로그 마지막 100 라인 확인 (필요시에만 사용. CTRL+C 누르면 종료됨)

  • $ sudo tail -100f /var/log/fail2ban.log

 

// IP 차단 커맨드 설정/제거

  • $ sudo fail2ban-client set sshd banip <IP주소>
  • $ sudo fail2ban-client set sshd unbanip <IP주소>

 

더보기

$ sudo fail2ban-client set sshd banip 111.111.111.111
1

$ checkban
111.111.111.111
115.186.58.55
164.132.50.191
20.205.206.132

$ sudo fail2ban-client set sshd unbanip 111.111.111.111
1

$ checkban
115.186.58.55
164.132.50.191
20.205.206.132

 


fail2ban 설정법 출처: https://www.clien.net/service/board/cm_nas/17149125



보안 설정에 더 추가할 내용이 생각나면 편집으로 업데이트 하겠습니다.

 

NEXT

 

PS. 본 포스팅이 도움이 되셨다면 소중한 리플로 후기 공유해주세요. 광고 클릭도 큰 도움이 됩니다.

 

+ Recent posts