리눅스 무차별 대입 공격 방지
무차별 대입 공격
우연히 아래 명령어로 ssh 접속 상태를 봤는데 소름
systemctl status ssh
누군가가 4~5초단위로
포트번호만 바꿔서
계속 접속하려고 시도하는 것을 발견
Sep 23 11:20:11 jwserver sshd[13833]: Failed password for root from 107.172.20.243 port 53516 ssh2
Sep 23 11:20:11 jwserver sshd[13833]: Connection closed by authenticating user root 107.172.20.243 port 53516 [preauth]
Sep 23 11:20:13 jwserver sshd[13837]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=>
Sep 23 11:20:15 jwserver sshd[13837]: Failed password for root from 107.172.20.243 port 56236 ssh2
Sep 23 11:20:17 jwserver sshd[13837]: Connection closed by authenticating user root 107.172.20.243 port 56236 [preauth]
Sep 23 11:20:20 jwserver sshd[13841]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=>
Sep 23 11:20:22 jwserver sshd[13841]: Failed password for root from 107.172.20.243 port 56240 ssh2
Sep 23 11:20:23 jwserver sshd[13841]: Connection closed by authenticating user root 107.172.20.243 port 56240 [preauth]
Sep 23 11:20:25 jwserver sshd[13843]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=>
Sep 23 11:20:27 jwserver sshd[13843]: Failed password for root from 107.172.20.243 port 58568 ssh2
구글에 검색해보니 ip 주소 조회 하는사이트가 있길래 검색
https://nordvpn.com/ko/ip-lookup/?srsltid=AfmBOopyzPBy9lwsa_sYTqkQ235jXaK8spipjf6yclfV2ciQ1NUruj-Q
IP 주소 조회 – 무료 IP 검사 도구
지금 바로 무료 IP 조회 도구를 사용해 보세요. IP 주소와 지리적 위치를 찾아보세요. IP 주소를 확인하고 호스트 이름과 ISP를 확인하여 교묘한 사기꾼으로부터 스스로를 보호하세요.
nordvpn.com
텍사스요..?
이후에도 여러 곳에서 접속하는 흔적들을 발견할 수 있었다
Fail2Ban
fail2ban은 기본적으로 /var/log/auth.log를 스캔하여 SSH 로그인을 많이 실패하는 IP주소를 차단해주는 프로그램이다.
이 프로그램을 통해 위와 같은 무작위공격을 예방할 수 있다.
설치
패키지 목록을 업데이트한다.
sudo apt update
fail2ban을 설치한다
sudo apt install fail2ban
설치가 완료되면, fail2ban 서비스를 시작하고 부팅 시 자동으로 시작 되도록 설정한다
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
기본 설정 파일을 복사하여 사용자 정의 설정 파일을 만든다
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
필요에 따라 /etc/fail2ban/jail.local 파일을 편집하여 설정을 변경한다
sudo vi /etc/fail2ban/jail.local
jail.local 내용
[DEFAULT]
bantime = 10m # 차단 시간
findtime = 10m # 위반 탐지 시간
maxretry = 5 # 최대 재시도 횟수
[sshd]
enabled = true # SSH 차단 활성화
port = ssh # 사용할 포트
filter = sshd # 필터 설정
logpath = /var/log/auth.log # 로그 파일 경로
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
[default]는 전역 설정이다
[sshd]는 SSH 로그인 시도에 대한 설정이다
[nignx-http-auth]는 필요에 따라 다른 서비스를 추가할 수 있어서 nginx를 예로들어 작성한 설정내용이다.
또한 #주석 은 에러가 나는 경우가 있으니 주석을 제거하고 적자.
또한 기억해둬야할 내용이 있는데
bantime 을 -1로 하면 영구차단된다.
fail2ban을 재시작해도 차단된 ip 가 남아있게된다
bantime이 -1이 아니라면 restart 시 차단 ip가 다 날아간다.
설정을 저장한 후, fail2ban 서비스를 다시 시작한다
sudo systemctl restart fail2ban
사용법
차단은 위 설정한대로 알아서 차단해준다
누가 차단당했는지 알 필요가 있다
차단 IP 확인
현재 차단당한 IP주소를 확인하려면 아래 명령어를 사용하면된다
sudo fail2ban-client status
그럼 위 사진과 같이
jail이 하나 있고
그 jail의 이름은 sshd 인 것이다
그럼 그 sshd 라는 jail안에는 어떤 ip가 차단되어 있는가?를 보려면
아래 명령어에 jail이름 대신 sshd 를 적으면된다
sudo fail2ban-client status jail이름
fail2ban의 로그확인하는법
vi /var/log/fail2ban.log
더 간단명료하게 확인 하는법
sudo fail2ban-client get sshd banned
또는
sudo fail2ban-client get sshd banip --with-time
99.240.228.76 : 차단된 IP주소
2024-09-23 13:24:51 : 차단 기간
차단 IP 해제
sudo fail2ban-client set [jail_name] unbanip [IP_address]
또는
sudo fail2ban-client unban 해제할아이피
특정 IP 강제 차단
1) fail2ban-client 명령어를 사용하여 IP 추가하기
sudo fail2ban-client set <jail_name> banip <IP_address>
2) iptables 로 직접 추가하기
fail2ban 은 기본적으로 iptables 를 사용하여 IP를 차단한다. fail2ban 설정과 상관없이 바로 iptables 명령어로 차단을 할 수도 있다.
sudo iptables -I <chain_name> -s <IP_address> -j DROP
- <chain_name> : 보통 fail2ban 에서 사용하는 체인 이름은 f2b-<jail_name>이다.
- <IP_address> : 차단할 IP 주소
예시
sudo iptables -I f2b-sshd -s 192.168.1.100 -j DROP
3) fail2ban 재시작
설정 변경 후, fail2ban 서비스를 재시작해야 변경 사항이 적용된다
sudo systemctl restart fail2ban
또는 빠르게 설정을 적용하려면 fail2ban을 재로드 할 수 있다.
sudo fail2ban-client reload
특정 IP 검열 무시
sudo vi /etc/fail2ban/jail.local
위 명령어로 jail.local 파일을 연다. 이후 검사에서 제외할 IP를 추가한다.
여러IP를 추가할 경우 , 로 구분하거나 띄어쓰기로 구분이 가능하다.
[sshd]
ignoreip = 192.168.1.100 10.0.0.0/24
저장하고 나가면된다
:wq!
마찬가지로 적용 후 재시작해야 설정이 반영된다
sudo systemctl restart fail2ban
'서버&백엔드 > 🐧 Linux' 카테고리의 다른 글
Ubuntu | SSH 설치 & 접속 하는법 (0) | 2024.09.25 |
---|---|
Ubuntu | 리눅스 권한관리 (0) | 2024.09.23 |
Ubuntu | 리눅스 명령어 정리 - 파일관련 (0) | 2024.09.23 |
[Kali Linux] SSH를 통해 원격으로 리눅스서버 접속 (0) | 2023.07.15 |
[리눅스마스터 1급] X 윈도우 (1) | 2023.07.09 |