구글 AI가 외곡 된 개요를 보여줄 때도 있지만 종종 도움되는 설명을 해주는 경우도 자주 있다. 몇시간동안 삽질하다가 “docker container reject ip”로 구글링하여 표시된 AI 개요를 바탕으로 ChatGPT에 “fail2ban에서 sudo iptables -I DOCKER-USER -s 1.2.3.4 -j DROP 명령으로 ip를 차단하도록 하려면?”을 입력하여 출력 된 결과를 옮겨적는다.
설정파일 추가 (/etc/fail2ban/action.d/iptables-docker.conf)
[Definition]
actionstart = true
actionstop = true
actioncheck = true
actionban = iptables -I DOCKER-USER -s <ip> -j DROP
actionunban = iptables -D DOCKER-USER -s <ip> -j DROP
[Init]
name = default
gitlab의 ssh 로그 규칙 추가 (젠투 리눅스 기준 /etc/fail2ban/jail.conf)
[gitlab-sshd]
enabled = true
port = 1022
filter = sshd
logpath = /opt/docker/gitlab/logs/sshd/current
maxretry = 5
findtime = 60
bantime = 7d
mode = extra
action = iptables-docker[name=gitlab-sshed]
gitlab 컨테이너는 1022 -> 22로 포워딩 설정 되어 있으며 /var/log/gitlab를 호스트의 /opt/docker/gitlab/logs로 마운트 시킨 상태. 위 규칙은 sshd 필터를 사용(잰투 기준으로 gitlab 컨테이터의 sshd 로그가 필터링 되었다), mode는 extra로 복잡한 규칙까지 사용, 1022로 외부에서 연결되며 60초동안 5회 로그인 실패하면 7일간 차단한다.
iptable 액션으로 차단 안되던 아이피가 iptables-docker 액션을 추가하여 추가한 gitlab-sshd 규칙에 해당 action을 설정 후 fail2ban을 재시작하면 아래와같이 바로 차단되는것을 확인할 수 있다.

이번 삽질에서 또한번 겪게 된 문제지만, ChatGPT는 명확한 답을 가지고 있음에도 해결법을 찾아서 질의를 보내지 않으면 절대로 알려주지 않는 경우나 잘못 된 정보를 알려주는 경우가 의외로 자주 발생한다.
Continue reading docker 컨테이너에서 실행 중인 gitlab에 fail2ban 적용하기