본문 바로가기

리눅스 리뷰/Rocky Linux 8

Rocky Linux 8.10 계정 로그인 보안 설정 가이드

728x90
반응형

 

이 가이드는 Rocky Linux 8.10 서버에서 계정 로그인 보안을 강화하기 위한 주요 설정 단계를 안내합니다. 비밀번호 정책, SSH 보안, 계정 잠금, sudo 권한 관리 등을 다룹니다.

1. 비밀번호 정책 설정

강력한 비밀번호 정책을 설정하여 계정 보안을 강화합니다.

1.1 비밀번호 복잡도 설정

/etc/security/pwquality.conf 파일을 편집하여 비밀번호 복잡도를 설정합니다.

sudo vi /etc/security/pwquality.conf

다음과 같이 설정을 추가 또는 수정합니다:

minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1

설명:

  • minlen: 최소 비밀번호 길이(12자)
  • dcredit: 숫자 최소 1개 포함
  • ucredit: 대문자 최소 1개 포함
  • lcredit: 소문자 최소 1개 포함
  • ocredit: 특수문자 최소 1개 포함

1.2 비밀번호 만료 정책

/etc/login.defs 파일을 편집하여 비밀번호 만료 정책을 설정합니다.

sudo vi /etc/login.defs

다음과 같이 설정합니다:

PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

설명:

  • PASS_MAX_DAYS: 비밀번호 최대 사용 기간(90일)
  • PASS_MIN_DAYS: 비밀번호 변경 최소 간격(7일)
  • PASS_WARN_AGE: 만료 전 경고 기간(14일)

기존 사용자의 비밀번호 정책을 업데이트하려면:

sudo chage -M 90 -m 7 -W 14 <username>

2. SSH 보안 설정

SSH를 통해 원격으로 로그인하는 경우, 보안을 강화하기 위해 다음 단계를 수행합니다.

2.1 루트 로그인 비활성화

/etc/ssh/sshd_config 파일을 편집하여 루트 로그인을 비활성화합니다.

sudo vi /etc/ssh/sshd_config

다음 줄을 찾아 수정하거나 추가합니다:

PermitRootLogin no

SSH 서비스를 재시작합니다:

sudo systemctl restart sshd

2.2 비밀번호 인증 비활성화 및 SSH 키 사용

비밀번호 대신 SSH 키를 사용하여 인증합니다.

    1. 클라이언트에서 SSH 키 쌍 생성:
ssh-keygen -t ed25519 -C "your_email@example.com"
    1. 공개 키를 서버의 ~/.ssh/authorized_keys에 복사:
ssh-copy-id username@server_ip
    1. /etc/ssh/sshd_config에서 비밀번호 인증 비활성화:
PasswordAuthentication no
    1. SSH 서비스 재시작:
sudo systemctl restart sshd

2.3 SSH 포트 변경

기본 포트(22)를 다른 포트로 변경하여 보안을 강화합니다.

sudo vi /etc/ssh/sshd_config

다음 줄을 수정하거나 추가합니다:

Port 2222

SELinux 포트 설정 업데이트:

sudo semanage port -a -t ssh_port_t -p tcp 2222

방화벽 설정 업데이트:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

SSH 서비스 재시작:

sudo systemctl restart sshd

3. Fail2Ban 설치 및 설정

Fail2Ban을 설치하여 반복적인 실패한 로그인 시도를 차단합니다.

3.1 Fail2Ban 설치

sudo dnf install epel-release
sudo dnf install fail2ban

3.2 Fail2Ban 설정

/etc/fail2ban/jail.local 파일을 생성하여 사용자 정의 설정을 추가합니다.

sudo vi /etc/fail2ban/jail.local

다음 내용을 추가합니다:

[DEFAULT]
bantime = 30m
findtime = 5m
maxretry = 3

[sshd]
enabled = true
port = ssh,2222
filter = sshd
bantime = 30m
findtime = 5m
maxretry = 3

설명:

  • bantime: 차단 지속 시간(30분)
  • findtime: 실패 시도 감지 시간 창(5분)
  • maxretry: 최대 실패 횟수(3회)

Fail2Ban 서비스 시작 및 활성화:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

4. sudo 권한 관리

루트 계정 대신 일반 사용자 계정에 sudo 권한을 부여하여 보안을 강화합니다.

4.1 사용자 생성 및 wheel 그룹 추가

sudo adduser -m username
sudo passwd username
sudo usermod -aG wheel username

설명: wheel 그룹의 사용자는 sudo 명령어를 사용할 수 있습니다.

4.2 sudo 명령 로깅 활성화

/etc/sudoers 파일을 편집하여 sudo 명령 로깅을 활성화합니다.

sudo visudo

다음 줄을 추가합니다:

Defaults logfile=/var/log/sudo/sudo.log

로그 디렉토리 생성:

sudo mkdir /var/log/sudo
sudo touch /var/log/sudo/sudo.log
sudo chmod 600 /var/log/sudo/sudo.log

5. 계정 잠금 정책 설정

로그인 실패 시 계정을 잠금하여 무차별 대입 공격을 방지합니다.

5.1 PAM 설정

/etc/security/faillock.conf 파일을 편집하여 계정 잠금 정책을 설정합니다.

sudo vi /etc/security/faillock.conf

다음과 같이 설정합니다:

deny = 3
fail_interval = 300
unlock_time = 600

설명:

  • deny: 최대 실패 횟수(3회)
  • fail_interval: 실패 감지 시간 창(300초)
  • unlock_time: 계정 잠금 지속 시간(600초)

/etc/pam.d/system-auth/etc/pam.d/password-auth 파일에 다음 줄을 추가합니다:

auth required pam_faillock.so preauth silent deny=3 unlock_time=600 fail_interval=300
auth required pam_faillock.so authfail deny=3 unlock_time=600 fail_interval=300

6. 추가 보안 권장 사항

  • SELinux 유지: SELinux를 enforcing 모드로 유지하여 시스템 보안을 강화합니다.
  • 방화벽 설정: firewalld를 사용하여 불필요한 포트를 차단합니다.
  • 정기 업데이트: sudo dnf update를 주기적으로 실행하여 최신 보안 패치를 적용합니다.
  • 불필요한 계정 비활성화: 사용하지 않는 계정을 잠금 또는 삭제합니다.

결론

이 가이드에서는 Rocky Linux 8.10에서 계정 로그인 보안을 강화하기 위한 주요 단계를 다루었습니다. 비밀번호 정책, SSH 설정, Fail2Ban, sudo 권한 관리, 계정 잠금 정책을 통해 서버를 보다 안전하게 보호할 수 있습니다. 정기적인 모니터링과 업데이트를 통해 보안을 유지하세요.

반응형