Linux

Linux서버 자동으로 해킹시도 IP차단방법

아이티제어 2024. 1. 16. 06:00

 

리눅스 iptables 을 통하여  /var/log/secure 로그파일을 이용한 자동 해킹차단 구현하기

 iptable 혹은 firewall-cmd 를 통해서 아이피 차단을 수동으로 가능도 하고 

자동으로 /var/log/secure 에 로그인 실패 가되는것을 체크하여 자동으로 방화벽에 추가하므로 인해 

무한 해킹을 시도하는것으로 부터 원천 차단하는 법을 소개한다.

 

서버를 오랫만에 들어가보니
아래와같은 무지비한 공격의 시도가 있었다...

Jan 14 05:17:20 NkCloudKt1 sshd[17750]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=107.172.10.199
Jan 14 05:17:22 NkCloudKt1 sshd[17750]: Failed password for invalid user ashton1 from 107.172.10.199 port 42458 ssh2
Jan 14 05:17:22 NkCloudKt1 sshd[17750]: Received disconnect from 107.172.10.199 port 42458:11: Bye Bye [preauth]
Jan 14 05:17:22 NkCloudKt1 sshd[17750]: Disconnected from 107.172.10.199 port 42458 [preauth]
Jan 14 05:17:41 NkCloudKt1 sshd[17752]: reverse mapping checking getaddrinfo for 107-172-10-199-host.colocrossing.com [107.172.10.199] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 14 05:17:41 NkCloudKt1 sshd[17752]: Invalid user ashton from 107.172.10.199 port 59768
Jan 14 05:17:41 NkCloudKt1 sshd[17752]: input_userauth_request: invalid user ashton [preauth]
Jan 14 05:17:41 NkCloudKt1 sshd[17752]: pam_unix(sshd:auth): check pass; user unknown
Jan 14 05:17:41 NkCloudKt1 sshd[17752]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=107.172.10.199
Jan 14 05:17:43 NkCloudKt1 sshd[17752]: Failed password for invalid user ashton from 107.172.10.199 port 59768 ssh2
Jan 14 05:17:43 NkCloudKt1 sshd[17752]: Received disconnect from 107.172.10.199 port 59768:11: Bye Bye [preauth]
Jan 14 05:17:43 NkCloudKt1 sshd[17752]: Disconnected from 107.172.10.199 port 59768 [preauth]
Jan 14 05:18:02 NkCloudKt1 sshd[17766]: reverse mapping checking getaddrinfo for 107-172-10-199-host.colocrossing.com [107.172.10.199] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 14 05:18:02 NkCloudKt1 sshd[17766]: Invalid user ashton from 107.172.10.199 port 48852

파이선을 설치하고 iptable 또한 설치되어있어야 한다. 역서 설치방법은  생략.

import subprocess
import re

# /var/log/secure 파일을 읽어서 처리
with open("/var/log/secure", "r") as file:
    log_lines = file.readlines()

# 비정상적인 접속 시도를 추적할 IP 주소 저장
ip_list = set()

for line in log_lines:
    if "Failed password" in line:
        ip = re.findall(r'[0-9]+(?:\.[0-9]+){3}', line)[0]
        ip_list.add(ip)

# 방화벽에 IP 추가
for ip in ip_list:
    subprocess.run(["iptables", "-A", "INPUT", "-s", ip, "-j", "DROP"])
    print(f"Blocked IP: {ip}")

 

위에코드를  vi  /root/yy_python/auto_iptable_add.py 라고 치고 엔터
그리고 붙어넣은다음에 

python /root/yy_python/auto_iptable_add.py  &


이렇게 하면 된다.
아래는 실행결과이다.

[root@NkCloudKt1 yy_python]# py auto_iptable_add.py
Blocked IP: 189.7.17.61
Blocked IP: 134.209.157.228
Blocked IP: 128.199.168.222
Blocked IP: 157.245.146.5
Blocked IP: 107.172.10.199
Blocked IP: 128.199.154.102


나뿐 시끼들..감히.이젠 맘편히 있을수있겠다.
만약 내가 잘못하여 블럭이되면?  재부팅하면 사라진다.

# 만약 재부팅되도 사라지 않게 하려면  
service iptables save

자동으로 ip를 추가할때는 자신의 ip가 차단되면 곤란해질수있으니
만약 자신것이 차단되면? 우회하여 접속하여 

#아래는 INPUT체인에서 DORP규칙을 삭제합니다.
iptables -D INPUT -s 107.172.10.199 -j DROP

#실행명령어 실행 즉시 네트웍에 적용됩니다.

#이제  저장하여 재부팅시에도 유지되게 
service iptables save

 

파이선 설치 확인   which  패키지이름이나명령어 

[root@NkCloudKt1 yy_python]# which python3
/usr/local/bin/python3

 

py 라고  링크걸면 편리하다.

# ln -s /usr/local/bin/python3 /usr/bin/py

 


아이티제어  윤재만 올림 2024-1-16