[CENTOS 7] SSH 무작위 대입 공격 (Brute-Force) 막기 Fail2ban

Posted by 대혀니_
2017. 11. 6. 20:00 IT/Linux

최근 의뢰받았던 서버 이전 세팅이후 다음날 접속했더니...

세팅한 서버에 375건의 접속 시도가 있었고 죄다 중국발 아이피였다 ㅡ.ㅡ;;

위 사진에 나온대로 1시 36분 마지막 성공 로그인 이후 6시 54분까지 375번의 접속시도가 이루어진것이였다.

물론 해당 서버의 비밀번호가 10자 이상에 특수문자와 대소문자가 합해진 자동생성된 비밀번호로 세팅이되어 해킹되진 않았으나, 혹시 몰라서 fail2ban으로 방어하고자 한다.


물론 fail2ban을 사용하지 않고 ssh 기본 포트인 22를 다른 포트번호로 변경하고 root 계정의 ssh로그인을 막아서 사용하는것이 간편하다.

하지만 내 서버가 아니라서 root 계정의 로그인을 막아둘수는 없는 상황이라 fail2ban을 사용하였다.


yum을 이용하는 자동 설치를 사용하였는데 yum으로 설치하려면 epel 저장소가 필요하다.

간단하게 아래와 같이 설치할 수 있다.

# yum install epel-release


epel 저장소가 적용되었으면 아래와 같이 fail2ban을 사용할 수 있다.

# yum install fail2ban

# systemctl start fail2ban

# systemctl enable fail2ban

기본 세팅시 fail2ban 은 firewalld 와 연동되는데 이거말고 systemd 랑 연동되게 하겠다.

systemd 연동하려면 아래 명령어 실행후 서비스를 재시작한다.

# yum install fail2ban-systemd


기본적으로 yum으로 까면 fail2ban 과 fail2ban-firewalld 가 같이 설정된다. 아래와 같이 fail2ban-firewalld를 사용하지 않도록 설정파일을 제외한다.

# mv /etc/fail2ban/jail.d/00-firewalld.conf 00-firewalld.nouse

해당 jail.d 폴더 아래에 있는 "*.conf" 를 모두 읽어드리기 때문에 아래에서 필요하다면 세팅값을 설정하여 사용한다.

fail2ban 메인에 있는 jail.conf 를 사용해도 되나 업데이트시 파일 내용이 변경되어 세팅값이 초기화 될 수 있기 때문이다.


아래와 같이 세팅값을 작성한다. (파일명은 상관없음)

# vi /etc/fail2ban/jail.d/jail.conf

[DEFAULT]

# Common

ignoreip  = 127.0.0.1/8

bantime   = 600

findtime  = 1800

maxretry  = 3



[sshd]

enabled = true



설정값을 보면 상당히 간단하다 단순히 무시할 IP , ban 할 시간 , findtime은 그 시간안에 maxretry 만큼 시도하면 차단하겠다는 뜻이다.

참고 : bantime 을 -1 로 주면 무기한인데, 이 경우 밴리스트를 재부팅시 전부다 읽어들이기 때문에 부팅속도 저하 원인이 된다. 86400 (1일) 을 최대로 권장한다.


주의 : [sshd] 밑에 enabled = true 를 해주어야 ssh 에서도 fail2ban이 작동한다.


설정값을 저장한후 서비스 재시작 해준다.

# systemctl restart fail2ban



중국 친구들 덕분에 재밌는 리눅스 공부를 했다. ^-^