CentOS / ubuntu 계정 잠금 임계값 설정

서버에 접근을 할때 패스워드가 일정 횟수 이상 틀릴 경우 잠깐이라도 해당 계정을 잠금 처리 하는것이 사전 대입 방지(brute force attack) 공격에 대비 할 수 있다.

이방법은 pam.d 에 설정하는것으로 pam.d를 이용하는 모든 접속 서비스 sasl, pop3, smtp,ssh , ftp 에 공통 적용이 된다. (물론 pam.d 설정을 별도로 해서 쓴다면 이야기는 바뀌겠다.)

물론 이러한 사전 공격 대응 방법은 일반적으로 iptables 로직이나 hosts.deny 쪽에서 설정도 가능하지만…

최근 공격 방식은 port scan 이후에 ssh 공격4회 -> pop3 공격4회 -> smtp 공격 4회 -> ftp 공격 4회 의 순서로 이루어 진다.

즉 iptables 로 3 ~ 5회 제한으로 하는경우가 많기 때문에 프로토콜을 바꾸어 가며 로그인을 사전대입 공격을 하고 공격이후 일정시간 interval 이후에 다시 순차 공격을 한다.

때문에 이와 같은 설정을 추가로 한다.

pam_tally2 를 이용하여 CentOS 7 및 ubuntu 14.04 에 설정을 하는 방법이다.

  • CentOS 7

vi /etc/pam.d/system-auth   (2번째 줄은 변경, 13번째 줄은 추가 한다.)

vi /etc/pam.d/password-auth (2번째 줄, 8번째줄을 추가한다.)

  • Ubuntu 14.04 LTS

vi /etc/pam.d/common-auth (16번째줄을 추가한다.)

추가되는 줄의 deny=5 는 몇 회 틀렸을 경우 잠금을 할지 선언하는 부분이다.
unlock_time=600 잠금시간을 설정 한다. (10분=600초)


이후 적용되었는지 다른 세션을 열어 접속시도 및 잘못된 패스워드를 대입하면서 테스트 해볼 수 있다.

로그인 테스트를 하면서 패스워드 임계값 5회 를 초과한경우 아래와 같은 메세지를 볼 수 있다.

잠긴 상태이므로 설정한 10분을 기다린 뒤에 접속을 할수 있으며, 필요시 pam_tally2 명령어로 누적 카운트를 초기화 해줄 수 있다.