[리눅스] iptables로 중국 IP 막아놓기

2018. 7. 14. 23:30공부 자료/리눅스

[리눅스] 중국 IP 막아놓기



    우연히 아는 후배가 자신의 서버에 바이두 서버에서 자꾸 접속 기록이 나온다고 하여, 현재 가정 집에 켜두고 있는 리눅스 서버에 접속한 기록이 궁금해졌습니다. 결과는 충격적이게도 거의 1분에 5 ~ 15회씩 접속하는 IP가 상당히 많았었습니다. 다행이 비밀번호가 어려운 비밀번호라 접속이 뚫리진 않았지만, 평소 생각도 못하고 있었던 결과라 조금 충격적이었습니다.


[ 사진 1 - 접속 기록 ]


    ssh : notty 는 5번의 접속 실패 이후 접속이 강제로 끊기는 것을 의미하며, root, admin 등의 ID로 접속을 시도하는 것을 알 수 있습니다. 위의 IP를 지역 검색을 통해 찾아 본 결과, 일본, 중국, 말레이시아 등에서 접속 한 것을 알 수 있었습니다. 당연하게도, 제가 접속 한 것이 아니며, 비록 뚫리진 않았지만 막아두어야 하겠다는 생각이 들어서 이런 포스팅을 남겨 봅니다. 


    리눅스는 간단하게 iptables 자체 방화벽이 존재하므로, 그 방화벽을 통해 ip / port를 각각 막을 수 있습니다. 이번 포스팅에서는 다양한 기능 중에서도 특정 ip에서 오는 패킷을 모두 무시하도록 해 보겠습니다. iptables 자체 명령어는 있지만, 설정을 저장하고 reload 하기 위해서는 " iptables-persistent " 라는 프로그램을 설치하여야 합니다. su 를 통해 관리자 계정으로 들어간 뒤, apt-get install iptables-persistent 를 통해 설치하도록 합시다. 설치 되는 과정에서 자주색 화면으로 ~~ipv4, ipv6 같은 창이 뜰 텐데, 여기선 ok 를 눌러주시면 됩니다. ( 현재 상태를 저장하냐는 의미입니다. )


[ 사진 2 - 설치 ]


   설치가 마무리 되면, 접속 ip를 확인해야 합니다. last 나 lastb 명령어는 마지막 접속 혹은 접속 로그를 보여줍니다. 다만 lastb 명령어는 접속 요청이 많을 시, 화면이 상당히 많이 넘어가게 됩니다. 한페이지씩 보기 위해서는 more 명령어로 파이프 라이닝 해줘야 합니다. ( | 로 이어주는 것을 의미합니다. ) " lastb | more " 명령어로 접속한 IP를 확인 해 봅시다.


[ 사진 3 - 상당히 많은 접속 기록, 사진 1과 동일한 사진입니다. ]


    이러한 IP 중, 자신이 쓰는 IP가 아닌 IP들은 IP 위치 추적으로 검색 해 봅니다. 해외로 뜨는 IP들은 따로 적어두던지 해서 기억 해 두도록 하고 진행합니다. 이제 iptables 명령어를 통해 저 IP를 하나하나 막아보도록 하겠습니다. 사용 방법은 다음과 같습니다.


iptables -A INPUT -s 막고싶은_IP -j DROP

[ 사진 4 - IP ban 명령어 예시 ]


   이와 같이 IP 를 입력 하였으면, 확인해 보도록 합니다. 확인 명령어는 다음과 같습니다.

iptables -nL

[ 사진 5 - iptable 확인 ]


    이제 IP table을 저장하고 진행합니다. 명령어는 아까 설치했던 netfilter-persistent를 사용합니다.


netfilter-persistent save

netfilter-persistent reload


[ 사진 5 - iptable 저장 ]


    이제 몇분 후 얼마나 줄어들었는지 확인 해 보도록 합니다.

[ 사진 6 - ban 뒤 변경 된 lastb ]


    여전히 접속 기록은 있지만, 그래도 아까 올린 것 보단 기록이 눈에 띄게 적어진 것을 알 수 있는데, 아마 ip를 우회해서 접속하거나, 필자가 미처 막지 못한 ip가 여전히 존재해서 그럴 수 있을 것 같습니다. 이렇게 몇 번 막아두다 보면 언젠간 clean한 서버를 만들 수 있을 것 같습니다.