리눅스(linux) 서버에 외부로 부터 접속을 반복해서 수행하는 누군가가 있다고 생각해봅니다. 로그인 시도가 계속해서 틀리는 경우 만약에 해커라면? 이런 경우를 대비하여 어떻게 해야 할까요?



# 리눅스 최대 로그인 횟수 설정하기, pam_tally2
무한정으로 로그인 시도를 할 수 있다면? 언젠가는 보안이 풀릴 위험이 있습니다. 이런 이유로 외부의 로그인 시도시 틀릴 경우 최대시도 횟수 설정이 있다면 외부 위협을 어느 정도 벗어날 수 있겠군요.

pam_tally2

이런 보안 설정에 필요한 것이 바로 pam_tally2입니다. 접속 시도가 계속 틀릴 경우 횟수에 제한을 설정하여 일정 시간 동안 계정 잠금 상태로 설정하는 것이 가능합니다.

그럼 아래에서 어떻게 사용하는지 자세히 알아보겠습니다.



! 리눅스 pam_tally2 설정하기
먼저 설정을 위해 아래의 설정 파일을 수정해야 합니다.
vim /etc/pam.d/common-auth

이제 파일 안에 아래와 같은 내용을 추가합니다.
auth    required               pam_tally2.so onerr=fail even_deny_root deny=5 unlock_time=1800

여기서 설정하는 옵션과 값은 아래를 참고합니다.
onerr : lock 수행하는 기준
deny : 실패 횟수 정하기
unlock_time : second 기준(100 = 100초)
위의 설정 값을 그래로 설정할 경우 로그인 5회 실패시 1800초, 30분간 로그인 시도가 불가능하도록 설정되었습니다.


@ 설정 완료 후 테스트 하기
이제 새로운 계정을 만들어 로그인 실패시 설정한 부분이 정상 동작하는지 테스트, 확인이 필요합니다. 먼저 새로운 계정 만들어야죠. tester라는 계정을 만드는 경우 아래와 같이 입력합니다.
adduser tester

이제 실제로 접속 후 반복하여 실패하도록 합니다.

현재 tester 계정이 더 이상 접속할 수 없는지 그리고 접속 실패 상태를 확인하기 위해 아래와 같이 입력합니다.
pam_tally2 -u tester

// 출력 결과
Login           Failures Latest failure     From
tester              5

보이는 것처럼 현재 실패한 계정의 상태를 보여줍니다.


@ 계정 접속 횟수 초기화 해주기
필요에 따라 접속을 허용해야한다면 아래와 같이 r 플래그를 사용하여 리셋해줍니다.
pam_tally2 -u tester -r

여기서 r은 리셋을 의미하죠
-r 또는 --reset이제 tester 계정을 확인해보면 아래와 같이 리셋된 것을 확인할 수 있습니다.

@ 다시 실패 횟수 확인하기
sudo pam_tally2 -u tester

// 출력 결과
Login           Failures Latest failure     From
tester              0

로그인 실패 횟수가 초기화 되어 0으로 나타는 것을 알 수 있습니다.


여기까지 서버 보안을 위한 로그인 횟수 제한을 설정하는 pam_tally2에 대하여 알아보았습니다.