Linux에서 암호 시도 횟수 제한 이는 단순히 편집증적인 관리자의 기벽이 아니라, 데스크톱과 서버 환경 모두에서 무차별 대입 공격과 무단 접근을 막는 가장 효과적인 조치 중 하나입니다. 컴퓨터에 중요한 정보가 저장되어 있거나 인터넷에 연결되어 있다면, 시스템의 이 부분을 보호하는 것이 필수적입니다. 로컬 네트워크를 감사합니다.
강력한 비밀번호를 설정하는 것 외에도, 여러 번 오류가 발생한 후 임시 또는 영구 잠금을 구성합니다. 이것이 핵심입니다. 공격자의 속도를 늦추고, 감사에 필요한 로그를 더 많이 생성하며, 다른 암호 정책(만료, 복잡성, 재사용 등)과 결합하여 보호 기능을 강화할 수 있습니다. 이제 다양한 배포판과 시스템 각 계층에서 이러한 기능이 어떻게 구현되는지 차분하지만 자세하게 살펴보겠습니다.
Red Hat, CentOS 및 파생 운영 체제에서 로그인 시도 실패로 인해 계정이 잠겼습니다.
배포에서 레드햇 기반(RHEL, CentOS, Rocky, AlmaLinux 등)로그인 시도 실패로 인한 계정 차단은 PAM 모듈을 통해 관리됩니다. 팸_페일록이 모듈은 허용되는 로그인 실패 횟수, 계정 잠금 시간, 그리고 영향을 받는 사용자(원하는 경우 루트 사용자 포함)를 제어합니다.
이 정책을 적용하려면 일반적으로 전역 PAM 파일을 편집해야 합니다. /etc/pam.d/system-auth 그리고 일부 버전에서는 또한 /etc/pam.d/password-auth이 파일들은 시스템의 대부분의 인증 서비스(콘솔 로그인, sudo, SSH 등)에 대한 템플릿 역할을 합니다.
이 파일에는 다음과 유사한 줄이 해당 섹션 내에 포함되어 있습니다. 정식 y 계정:
auth required pam_faillock.so preauth silent audit deny=2 unlock_time=120
auth pam_faillock.so authfail audit deny=2 unlock_time=120
account required pam_faillock.so
첫 번째 줄이 역할을 합니다. 실제 인증 전 (사전 인증)두 번째 스크립트는 인증에 실패했을 때 실행되고, 세 번째 스크립트는 해당 단계에서 계정 잠금 상태를 확인하는 역할을 합니다. 계정매개변수를 수정하면 필요에 맞게 정책을 조정할 수 있습니다.
가장 일반적인 매개변수 팸_페일록 위치 :
- 회계 감사로그인 시도에 대한 자세한 로깅을 활성화하여 시스템 로그(예: )에 기록이 남도록 합니다. / var / log / secure).
- 거부=2이 설정은 계정이 잠기기 전에 허용되는 최대 비밀번호 입력 실패 횟수를 지정합니다. 이 예시에서는 2회이지만, 3회, 5회, 10회 등으로 늘릴 수 있습니다.
- 잠금 해제 시간=120: 차단 시간을 초 단위로 나타냅니다. 여기서는 계정이 자동으로 다시 활성화될 때까지 120초(2분)가 걸립니다.
- 조용한만약 그것이 존재한다면, 사용자가 차단되었다는 사실을 알려주지 않습니다.로그인 요청을 아예 받지 않음으로써 공격자에게 시스템이 덜 "자세한 정보"를 제공하도록 만드는 것입니다.
중요한 세부 사항 하나는 기본적으로 루트는 이 블록에서 제외됩니다.동일한 규칙을 적용하려면 매개변수를 추가해야 합니다. 루트를 거부합니다 인증 섹션의 pam_faillock 라인에 추가합니다. 이렇게 하면 보안이 강화되지만, 실수를 너무 많이 하면 접근 권한을 잃을 위험이 있다는 점을 고려해야 합니다.
계정이 잠겨 있고 해당 매개변수를 사용하지 않는 경우 조용한이 시스템은 사용자가 허용된 시도 횟수를 초과했음을 알리는 경고 메시지를 명시적으로 표시할 수 있습니다. 이는 테스트 환경에서 설정을 확인하는 데 유용하지만, 실제 운영 환경에서는 너무 많은 정보를 제공하지 않는 것이 일반적으로 좋습니다.
Red Hat 시스템에서 특정 사용자의 로그인 실패 시도 횟수를 확인하려면 다음 명령어를 사용할 수 있습니다. 페일락 관심 있는 계정을 가리키면서:
faillock --user lionel
이 명령은 다음을 보여줍니다. 해당 사용자는 지금까지 총 몇 번의 실패 시도를 했습니까?여기에는 SSH 연결 시 사용된 IP 주소 및 감사와 관련된 기타 세부 정보가 포함됩니다. 또한, 표시되는 내용을 언제든지 검토할 수 있습니다. / var / log / secure이러한 보안 이벤트는 여기에 기록됩니다.

데비안 및 우분투에서 로그인 시도 실패로 인한 계정 잠금
의 경우 Debian, Ubuntu 및 파생 제품논리는 비슷하지만 사용되는 PAM 모듈이 다릅니다. 전통적으로는 다음과 같은 것들이 사용되었습니다. 팸_탤리2 실패한 시도 횟수를 세고 계정을 자동으로 차단하는 기능이 있지만, 최신 버전에서는 마이그레이션하는 것이 권장됩니다. 팸_페일록그럼에도 불구하고 pam_tally2는 여전히 많은 가이드와 환경에서 널리 사용되고 있습니다.
일반적인 데비안 시스템에서 로그인 실패 횟수에 따라 잠금을 적용하려면 보통 해당 파일을 편집합니다. /etc/pam.d/common-auth이는 대부분의 로컬 서비스에 대한 표준 인증 정책을 정의합니다. 여기에 다음과 같은 줄을 추가할 수 있습니다.
auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 audit even_deny_root root_unlock_time=600
이 구성으로 시스템은 3회 로그인 시도 실패 후 계정이 차단되었습니다.일반 사용자의 경우 120초 동안, 루트 사용자의 경우 600초 동안 잠금을 유지합니다. 또한 모듈에서 오류가 발생할 경우 (onerr=실패보안상의 이유로 접근이 허용되는 대신 거부됩니다.
주요 매개변수 팸_탤리2 위치 :
- onerr=실패시도 횟수를 읽거나 업데이트하는 데 문제가 발생하면 실수로 문이 열린 채로 방치되는 것을 방지하기 위해 인증이 거부됩니다.
- 거부=3계정이 잠기기 전에 허용되는 최대 실패 횟수입니다. 일반적으로 3회 정도가 적당합니다.
- 잠금 해제 시간=120: 일반 사용자의 계정이 잠금 상태로 유지되는 시간(초)입니다.
- 회계 감사: 인증 실패 정보를 로그에 기록합니다(데비안에서는 일반적으로 다음과 같습니다). /var/log/auth.log).
- 루트를 거부합니다루트 사용자도 이 잠금 시스템에 포함되도록 강제하는 기능이므로 주의해서 사용해야 합니다.
- 루트 잠금 해제 시간=600루트 계정에 대한 특정 잠금 시간(초)으로, 다른 사용자와는 독립적입니다.
차단 기능이 활성화되면 사용자는 로그인 시도 횟수 초과로 인해 계정이 일시적으로 비활성화되었다는 메시지를 보게 됩니다. 이를 통해 관리자는 의심스러운 행동을 감지하고 사용자에게 문제가 있음을 알릴 수 있습니다.
기록된 실패 시도 횟수를 보려면 팸_탤리2 특정 사용자(예: lionel)의 경우 다음과 같이 사용할 수 있습니다.
pam_tally2 -u lionel
이 명령 누적 실패 횟수를 보여줍니다. 또한 필요에 따라 추가 옵션을 사용하여 카운터를 수동으로 재설정할 수 있습니다. 뿐만 아니라 Red Hat과 마찬가지로 언제든지 검토할 수 있는 옵션이 제공됩니다. /var/log/auth.log 각 인증 시도에서 어떤 일이 발생했는지 더 자세히 확인하기 위해서입니다.
MaxAuthTries를 사용하여 SSH 시도 횟수를 제한하세요.
리눅스 서버에 가장 흔하게 접근하는 방법 중 하나는 다음과 같습니다. SSH그렇기 때문에 연결당 허용되는 인증 시도 횟수를 제어하는 것이 매우 중요합니다. 바로 이 부분에서 정책이 중요한 역할을 합니다. 최대 인증 시도 횟수파일에 설정되어 있습니다. / etc / ssh / sshd_config OpenSSH 서버에서.
아이디어는 간단합니다. MaxAuthTries는 SSH 연결당 허용되는 최대 인증 시도 횟수를 정의합니다.이 제한을 초과하면 서버는 연결을 차단하여 공격자가 조합 시도를 계속하려면 새 세션을 시작해야 하므로 자동화된 무차별 대입 공격 속도가 크게 저하됩니다.
설정하려면 구성 파일을 편집하기만 하면 됩니다.
sudo nano /etc/ssh/sshd_config
다음으로, 다음과 같은 줄을 찾거나 추가하세요.
MaxAuthTries 3
이 값을 사용하면, SSH 연결당 인증 시도는 세 번만 허용됩니다.사용자가 동일한 실수를 여러 번 반복하면 sshd 데몬이 해당 사용자를 로그아웃합니다. 변경 사항을 적용하려면 서비스를 다시 로드하거나 재시작해야 합니다. 예를 들어 다음과 같이 할 수 있습니다.
sudo systemctl restart sshd
MaxAuthTries는 pam_tally2 또는 pam_faillock과 같은 PAM 모듈을 대체하는 것이 아니라, 병렬로 작업합니다SSH 서버는 단일 세션에서 허용되는 연속 시도 횟수를 제어하는 반면, PAM은 사용자별 전체 시도 횟수를 유지하고 시스템 수준에서 해당 계정을 차단할 수 있습니다.
MaxAuthTries 외에도 다른 SSH 보안 조치를 함께 사용하면 서비스의 안정성을 훨씬 높일 수 있습니다.
- 기본 포트 변경포트 22 사용을 중단하고 SSH를 덜 눈에 띄는 포트로 이동하면 기본적인 자동 스캔을 걸러내는 데 도움이 됩니다.
- 비밀번호 대신 공개 키를 사용하세요SSH 키를 사용한 인증은 취약한 비밀번호 문제를 해결하고 무차별 대입 공격에 훨씬 더 강력하게 대응합니다.
- 방화벽을 사용하여 소스를 제한하거나 DMZ를 구성하십시오.특정 IP 주소 또는 네트워크 범위에서만 SSH 접속을 허용하면 네트워크 수준에서 매우 효과적인 장벽을 만들 수 있습니다.
PAM을 사용하여 로컬 인증 시도 횟수를 제한합니다.
SSH를 넘어서, 로컬 인증 (콘솔, TTY, sudo, 그래픽 디스플레이 관리자) 또한 PAM으로 관리됩니다. 예를 들어, 데비안과 우분투에서는 해당 파일이 /etc/pam.d/common-auth 이는 해당 구성의 핵심이며, Red Hat 시스템에서 중요한 역할을 수행합니다. 시스템 인증 (그리고 경우에 따라 비밀번호 인증이 필요합니다).
pam_faillock이나 pam_tally2와 같은 전용 차단 모듈 외에도 일부 배포판에서는 로그인 시도 횟수와 시간을 직접 제한할 수 있도록 지원합니다. 로그인.defs이 파일은 다음 위치에 있습니다. /etc/login.defs다음과 같은 값들이 선언됩니다:
- 로그인_재시도로그인 프롬프트에서 프로세스를 중단하기 전에 허용되는 최대 재시도 횟수입니다.
- 로그인_시간 초과로그인 세션이 사용자 입력을 기다리는 최대 시간(초)입니다.
예를 들어, 조정하는 경우 로그인_재시도 비밀번호 3개 제한은 사용자가 한 번의 로그인 세션에서 비밀번호를 세 번만 입력할 수 있도록 하며, 세 번 초과하면 시스템에서 해당 시도를 종료하고 로그인 과정을 다시 시작하도록 합니다. 계정이 완전히 잠기는 것은 아니지만, 이러한 제한이 적용됩니다. 세션당 시도 횟수 제한.
같은 파일에서 로그인.defs 다음과 같은 기타 관련 보안 매개변수도 조정할 수 있습니다.
- PASS_MAX_DAYS비밀번호를 변경해야 하기 전까지 사용할 수 있는 최대 일수입니다.
- 패스_최소_일: 비밀번호 변경 간 최소 일수(일)는 지나치게 잦은 변경과 연쇄 변경을 방지하기 위한 것입니다.
- PASS_WARN_AGE비밀번호 만료 며칠 전에 미리 공지하여 사용자가 대응할 시간을 갖도록 합니다.
- 패스_최소_길이 y 패스_최대_길이최소 및 최대 비밀번호 길이.
- PASS_ALWAYS_WARN비밀번호가 특정 강도 기준을 충족하지 못할 경우 경고 메시지를 표시합니다.
- 패스_변경_시도새 비밀번호가 너무 단순하다고 판단될 경우, 비밀번호 변경 시도 횟수 제한이 있습니다.
- 암호화_메소드비밀번호에 사용할 해시 알고리즘 (오늘날 일반적으로 사용되는 것은 다음과 같습니다.) SHA-512로 표시됨 6 달러).
이러한 지침은 주로 다음과 같은 영향을 미칩니다. 신규 사용자 이러한 설정은 login.defs 파일을 조정한 후에 생성되므로, 조직 전체에 대한 기준 정책을 설정하는 편리한 방법입니다.
/etc/shadow 파일과 change 명령어를 사용하여 시도 횟수 및 만료 시간을 관리합니다.
파일 / etc / 그림자 이곳은 시스템이 로컬 사용자의 암호화된 암호와 모든 만료 정보를 저장하는 곳입니다. 암호는 매일 수동으로 변경되지는 않지만, 암호 구조를 이해하면 보안 정책을 감사하고 개선하는 데 큰 도움이 됩니다.
각 줄에서 / etc / 그림자 콜론으로 구분된 여러 항목이 나타납니다. 당사 정책과 가장 관련성이 높은 항목은 다음과 같습니다.
- 사용자 이름: 나머지 필드들이 속한 계정을 식별합니다.
- 암호화된 비밀번호: 다음과 같이 저장됩니다. $id$salt$해시됨, 어디서 $id$ 알고리즘을 나타냅니다(1달러 MD5, $2a$/$2y$ 복어, 5달러 SHA-256, 6달러 SHA-512그 다음으로 소금과 해시가 들어갑니다.
- 최근 비밀번호 변경: 1970년 1월 1일(기준일) 이후 마지막 수정일로부터 경과한 일수입니다.
- 최소 및 최대 사용일수그들은 비밀번호를 다시 변경할 수 있는 시점과 비밀번호가 만료되는 시점을 제어합니다.
- 만료 통지 기간만료일 며칠 전부터 사용자에게 알림을 보내기 시작하나요?
- 활동하지 않은 날비밀번호가 만료된 후 계정이 완전히 비활성화되기까지 얼마나 걸립니까?
- 절대 계정 만료일: 1970년 이후 일 단위로도 표시되며, 해당 사용자의 로그인이 더 이상 허용되지 않는 시점을 나타냅니다.
/etc/shadow 파일을 직접 수정하지 않고 이러한 매개변수를 관리하려면 다음 명령어를 사용합니다. CHAGE (나이 변화이 기능을 사용하면 특정 사용자에 대해 비밀번호와 계정 만료일을 조정할 수 있습니다.
몇 가지 일반적인 옵션은 다음과 같습니다. CHAGE 위치 :
- -d, –마지막 날마지막 비밀번호 변경일을 설정합니다(에포크 이후 경과 일수 형식 또는 읽기 쉬운 날짜 형식).
- -E, –만료일계정 만료일을 설정합니다.
- -I, -비활성비밀번호 만료 후 일정 기간이 지나면 계정을 비활성 상태로 표시합니다.
- -m, -mindays: 비밀번호 변경 간 최소 일수를 정의합니다.
- -M, –최대일: 비밀번호가 유효한 최대 일수를 나타냅니다.
- -W, -경보일만료일 며칠 전부터 알림을 시작할지 설정합니다.
- -l, –목록: 사용자의 현재 만료 상태를 보여줍니다.
예를 들어, 사용자의 만료 정보를 확인하려면 페페 실행 가능합니다:
chage -l pepe
출구가 표시될 것입니다 마지막 변경 날짜, 비밀번호 만료 여부, 비활성 상태, 최소 및 최대 일수...다른 데이터와 함께. 이 도구를 사용하면 정책을 개별적으로, 사용자별로 또는 전체 계정 그룹을 처리하는 스크립트로 적용할 수 있습니다.
pam_cracklib 및 pam_pwquality를 사용한 암호 복잡성 정책
비밀번호 시도 횟수를 제한하는 것은 좋지만, 비밀번호가 "123456"이나 "qwerty"처럼 단순하다면 큰 효과를 보기 어려울 겁니다. 바로 그 점 때문에 비밀번호 제한이 매우 중요한 것입니다. 강력한 비밀번호를 강제로 사용하세요 PAM 모듈 사용 팸_크랙라이브 그리고 최근 버전에서는, 팸_pwquality.
모듈 팸_pwquality cracklib의 진화된 버전이며, 다음과 같은 라이브러리와 통합됩니다. libpw품질 암호가 사전에 포함되어 있지 않은지, 너무 짧지 않은지, 간단한 패턴이나 사용자의 개인 정보를 반복하지 않는지 확인합니다. RHEL 기반 환경에 기본적으로 포함되어 있으며, Debian/Ubuntu에서는 다음과 같은 패키지를 사용하여 설치할 수 있습니다. libpam-cracklib y libpam-pwquality.
설치가 완료되면 주요 설정은 일반적으로 해당 파일에서 수행됩니다. /etc/security/pwquality.conf다음과 같은 복잡성 매개변수를 정의할 수 있습니다.
- 디포크: 이전 비밀번호와 달라야 하는 문자 수.
- Minlen새 비밀번호의 최소 허용 길이입니다.
- 신용 거래, 무신용, 신용, 그는 믿는다숫자, 대문자, 소문자 및 기타 문자를 포함해 주셔서 감사합니다.
- 최소 클래스최소 요구 문자 종류 수(소문자, 대문자, 숫자, 기호).
- 최대 반복연속해서 허용되는 최대 동일 문자 수입니다.
- 최대 클래스 반복: 동일 클래스의 연속 문자 최대 개수.
- 지오체크/etc/passwd 파일의 사용자 GECOS(주석) 필드에 있는 단어가 암호에 포함되어 있지 않은지 확인합니다.
- dictpath: 암호가 알려진 단어의 일부인지 확인하는 데 사용되는 사전의 경로입니다.
- 나쁜 말명시적으로 금지된 단어 목록입니다.
시스템 크레딧 특히 유연성이 뛰어납니다. 기본적으로 비밀번호에 다양한 문자가 포함될수록 점수가 올라가며, 이 점수로 비밀번호 길이가 약간 짧더라도 보완할 수 있습니다. 예를 들어, 민렌=10 y dcredit=2숫자 2개를 포함한 8자리 비밀번호는 추가 점수 2점을 받기 때문에 필터를 통과할 수 있습니다. 하지만 음수 점수를 설정하려면 최소 하나의 음수 문자(예: )가 포함되어야 합니다. dcredit=-1 (최소 한 자리 숫자가 필요하며, 예외는 없습니다.)
와 최소 클래스 비밀번호에 여러 가지 다른 조합을 포함하도록 요구할 수 있습니다. 예를 들어, 2라는 값은 문자와 숫자의 조합, 또는 문자와 기호의 조합 등을 요구합니다. minclass=4 이는 소문자, 대문자, 숫자 및 특수 문자를 동시에 사용해야 하는 것을 의미하며, 이는 까다로운 기업 정책에서 흔히 볼 수 있는 특징입니다.
같은 도구 pwscore 이 기능을 사용하면 정의된 정책에 따라 암호의 강도를 테스트할 수 있습니다. 암호가 이 과정을 통과할 때 pwscore이는 키가 요구 사항을 충족하는지 여부와, 충족하지 않는 경우 어떤 규칙을 위반하는지(길이 부족, 너무 단순함, 이전 키와 너무 유사함 등)를 알려줍니다.
pam_cracklib을 사용하여 Debian 및 Ubuntu에서 강력한 정책을 구성하세요.
데비안/우분투 시스템에서는 사용하는 것이 매우 일반적입니다. 팸_크랙라이브 (또는 PAM을 통한 pwquality를 사용하여) 암호 정책을 적용합니다. 핵심 파일은 다음과 같습니다. /etc/pam.d/common-password이는 시스템 사용자의 암호 변경 관리 방식을 정의합니다.
파일을 수정하기 전에 백업 복사본을 만들어 두는 것이 좋습니다.
sudo cp /etc/pam.d/common-password /root/
그런 다음 관리자 권한으로 원하는 텍스트 편집기(nano, vim 등)를 사용하여 편집할 수 있습니다. 편집된 내용 안에는 다음과 유사한 줄이 있을 것입니다.
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
여기서는 다음과 같은 매개변수가 정의됩니다.
- 다시 해 보다사용자가 비밀번호를 변경할 때, 변경이 실패하기 전에 허용되는 시도 횟수입니다.
- Minlen최소 비밀번호 길이.
- 디포크: 이전 비밀번호와 달라야 하는 문자 수.
- 무신용, 신용, 신용 거래, 그는 믿는다대문자, 소문자, 숫자 및 기타 문자에 대해 긍정적 또는 부정적인 점수를 부여합니다.
예를 들어, 상당히 까다로운 정책은 다음과 같을 수 있습니다.
password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-3 lcredit=-3 dcredit=-3 ocredit=-3
이 설정으로 새 비밀번호는 모두 최소 12자 이상이어야 합니다.비밀번호는 이전 비밀번호와 최소 3자 이상 달라야 하며, 대문자 3개, 소문자 3개, 숫자 3개, 특수 문자 3개 이상을 포함해야 합니다. 매우 엄격한 규칙이지만, 허술한 비밀번호를 막는 데 매우 효과적입니다.
정책을 변경한 후에는 다음 명령어를 사용하여 본인의 비밀번호를 변경해 테스트할 수 있습니다.
sudo passwd
비밀번호가 요구 사항을 충족하지 못하면 시스템은 비밀번호가 너무 짧거나, 사전 단어와 유사하거나, 문자가 과도하게 반복되는 등의 이유를 나타내는 메시지를 표시합니다. 비밀번호가 정책을 준수하면 문제없이 변경 사항이 적용됩니다.
새로운 변경 사항에 대한 정책을 강화하는 것 외에도, 데비안과 우분투는 다음과 같은 사항을 허용합니다. 기존 사용자에게 비밀번호 변경을 강제합니다 새로운 규칙에 적응하기 위해 다음 명령어를 사용하세요:
passwd -e USUARIO
해당 사용자의 비밀번호가 만료된 것으로 표시되며, 다음 로그인 시 현재 정책을 준수하는 새 비밀번호를 설정해야 합니다. 다음 기능을 사용하여 전체 비밀번호 만료를 관리할 수도 있습니다.
passwd -w 5 -x 30 USUARIO
donde -x 30 비밀번호의 최대 유효 기간을 30일로 설정합니다. -w 5 이렇게 하면 시스템에서 만료일 5일 전부터 알림을 보내기 시작합니다. 추가하면 -나는 1:
passwd -w 5 -x 30 -i 1 USUARIO
사용자가 비밀번호를 변경하지 않으면 계정은 비활성으로 표시됩니다. 만료일 하루 뒤이로 인해 관리자가 개입하여 다시 활성화해야 합니다.
비밀번호를 자주 변경하는 것은 오랫동안 권장되어 왔지만, 최신 보안 지침(예: NIST의 지침)에서는 이러한 관행에 대한 조건을 제시하고 있습니다. 길고 복잡한 비밀번호를 사용하고 이중 인증 시스템을 사용하는 것이 좋습니다.예측 가능한 키를 생성하는 지나치게 잦은 변경을 강요하는 것보다는 낫습니다.
PAM 모듈(pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) 및 주요 파일들을 신중하게 구성하십시오. /etc/pam.d/common-auth, /etc/pam.d/common-password, /etc/login.defs, / etc / ssh / sshd_config 그리고 그러한 결정이 어떻게 반영되는지 이해합니다. / etc / 그림자이는 "표준" 시스템과 무단 접근 및 무차별 대입 공격에 대해 진정으로 강화된 환경을 구분하는 기준이 됩니다.
