ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 중국발 해킹 시도와 fail2ban 사용하기
    일상/블로그관리 2014. 12. 15. 03:37
    728x90
    반응형


     

     

    주말에 서버에서 작업하고 있는데 자꾸 이메일 알림이 들어와서 메일함을 확인해보니 

    아래와 같은 메세지가  메일함에 가득 차 있었다.

     

    Hi,

    The IP 123.127.36.162 has just been banned by Fail2Ban after
    5 attempts against SSH.


    Here are more information about 123.127.36.162:

    [Querying whois.apnic.net]
    [whois.apnic.net]
    % [whois.apnic.net]
    % Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

    % Information related to '123.127.36.160 - 123.127.36.191'

    inetnum:        123.127.36.160 - 123.127.36.191
    netname:        BUCGI-CO
    descr:          BUCGI-CO
    country:        CN
    admin-c:        Qh284-AP
    tech-c:         Qh284-AP
    mnt-by:         MAINT-CNCGROUP-BJ
    changed:        hostmast@publicf.bta.net.cn 20080403
    status:         ASSIGNED NON-PORTABLE
    source:         APNIC

    person:         QI haifeng
    address:        Chao yang qu wang jing xin xing chan ye kai fa qu li ze zhong yuan 2-218-220
    country:        CN
    nic-hdl:        Qh284-AP
    phone:          +86-10-13581605988
    fax-no:         +86-10-64915798
    e-mail:         buchi2006@163.com
    mnt-by:         MAINT-CNCGROUP-BJ
    changed:        hostmast@publicf.bta.net.cn 20080403
    source:         APNIC

    % This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (UNDEFINED)

    Regards,

    Fail2Ban

     

    어떤 IP가 패스워드 무작위 입력으로 SSH 로그인 시도를 5번 시도하다가 fail2ban 프로그램에 자동으로 막혀

    block 처리가 되었다는 것을 알려주는 메일이였다.

    친절하게 침입을 시도한 ip의 whois 정보까지 같이 알려주고 있다. 중국 주소인 듯 하다.

    이런 시도가 많았는지 아래와 같이 grep "Last"로 확인해보니 어제 하루에만 거의 40번의 해킹 시도가 있었다.

     

    Last-Attempt-Date: Sun, 14 Dec 2014 02:54:28 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 02:54:28 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 03:07:01 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 03:07:01 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 03:59:04 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 03:59:04 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 05:57:36 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 05:57:36 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 06:20:04 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 06:20:04 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 06:44:00 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 06:44:00 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 08:32:38 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 08:32:38 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 09:47:55 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 09:47:54 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 10:12:01 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 10:12:01 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 10:35:17 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 10:35:16 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 13:36:00 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 13:36:00 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 14:37:24 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 14:37:24 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 16:04:27 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 16:04:27 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 16:17:48 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 16:17:47 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 17:57:49 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 17:57:49 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 23:46:25 +0900
    Last-Attempt-Date: Sun, 14 Dec 2014 23:46:25 +0900

     

    흔한 아이디와 무작위로 쉬운 암호를 입력해 계속해서 ssh 로그인을 시도하는 것을  ssh brute force login attack이라고 하는데

    fail2ban은 이런 공격을 막기 위한 프로그램으로 iptables가 연동되어 공격을 시도한 ip 차단을 자동으로 할 수 있는 것이 장점이다.

     

    fail2ban을 사용해서 차단된 ip들은 iptalbes -L 명령어로 확인할 수 있다.

    어제 해킹을 시도했던 아이피들이 차단이 된 것을 아래와 같이 확인하였다.

     

    # iptables -L

    ...


    Chain fail2ban-SSH (1 references)
    target     prot opt source               destination
    Chain fail2ban-SSH (1 references)
    target     prot opt source               destination
    DROP       all  --  1.234.56.125         anywhere
    DROP       all  --  123.127.36.162       anywhere
    DROP       all  --  122.225.97.67        anywhere
    DROP       all  --  122.225.109.201      anywhere
    DROP       all  --  61.174.51.226        anywhere
    DROP       all  --  62.210.151.213       anywhere
    DROP       all  --  68.64.163.122        anywhere
    DROP       all  --  122.225.103.103      anywhere
    DROP       all  --  60.173.26.16         anywhere
    DROP       all  --  122.225.109.99       anywhere
    DROP       all  --  61.174.50.161        anywhere
    DROP       all  --  94.126.178.1         anywhere
    DROP       all  --  61.174.51.210        anywhere
    DROP       all  --  114.31.6.235         anywhere
    DROP       all  --  218.2.0.121          anywhere
    DROP       all  --  122.225.103.121      anywhere
    RETURN     all  --  anywhere             anywhere

     

     

     

    추가로 더 자세한 로그를 보고 싶으면  /var/log/secure 파일을 확인해보면 된다.

     

    지금도 잘 막고 있긴 하지만 공격이 계속 들어오고 있으니 설정을 좀 더 엄격하게 해야할 것 같아

    /etc/fail2ban/jail.conf 에 있는 fail2ban의 현재 설정값을 확인해 보았다.

     

    # "bantime" is the number of seconds that a host is banned.
    bantime  = 84600

    # A host is banned if it has generated "maxretry" during the last "findtime"
    # seconds.
    findtime  = 600

    # "maxretry" is the number of failures before a host get banned.
    maxretry = 3

     

    ..

     

    [ssh-iptables]

    enabled  = true
    filter   = sshd
    action   = iptables[name=SSH, port=ssh, protocol=tcp]
               sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
    logpath  = /var/log/secure
    maxretry = 5


     


     

    maxretry는 최대 로그인 실패 가능 횟수를 의미하고

    findtime은 위 로그인 실패를 확인할 시간 단위이다.

    bantime에서는 findtime 안에 maxretry 번 로그인 실패한 ip들을 차단할 시간을 설정할 수 있다.

    이 파일에서는 600초안에 3번 로그인 실패한 ip를 하루(84600초)동안 차단하도록 되어있다.

     

    ssh-iptables 는 ssh 접근을 탐지해서 실패할 경우 iptables에서 차단하는 기능을 설정할 수 있다.

    enabled=true로 되어 있어야 해당 기능을 실행할 수 있다.

    그리고 maxretry는 ssh에서의 최대 로그인 실패 횟수를 의미한다.

     

    일단 findtime을 조금 늘리고 ssh-iptalbes의 maxretry를 3으로 변경하였다.

    그리고 아래와 같이 service fail2ban 서비스를 재시작하여 변경된 설정을 변경하였다.

     

    #service fail2ban restart
    Stopping fail2ban:                                         [  OK  ]
    Starting fail2ban:                                         [  OK  ]

     

    일단은 이렇게 미봉책으로 설정을 조금 수정하였지만

    차후 ssh 포트를 변경하거나 중국발 ip를 다 접근 차단하는 식이 추가 대응이 필요할 것 같다.

     

     

     

     

     

     

    728x90
    반응형
Designed by Tistory.