그저 내가 되었고

👩🏻‍💻SSH:: Brute Force(무차별 대입 공격) 대응 방법 본문

개발/Linux

👩🏻‍💻SSH:: Brute Force(무차별 대입 공격) 대응 방법

hyuunii 2023. 7. 20. 11:26

지난번에는 mySQL 서버에 브루트 포스 공격이 들어왔었는데, ssh 서버도 공격이 들어왔다.

 

공격 당하는 것 자체야 뭐.. 자행하는 저거들 마음이니 어쩔 수 없다.

단지 대응/대비책을 마련하는게 최선일것이라 생각한다.

 

 

SSH Brute Force 대응 방법

SSH 보안 설정

🔥SSH 서버를 안전하게 구성하기 위해서는 리눅스 설정 파일인 /etc/ssh/sshd_config을 잘 활용해야 한다.

 

⬇️아래와 같이 vim 명령어로 파일을 열고 편집을 하자.

vim /etc/ssh/sshd_config

 

 

1] #LoginGraceTime 2m ➡️ LoginGraceTime 60

: 제한 시간(기본값은 2분, 여기서는 60초로 수정 설정) 안에 로그인 하지 않으면 서버와의 연결이 끊김.

 

 

 

2] #MaxAuthTries 6 ➡️ MaxAuthTries 5

: ssh 클라이언트 프로그램으로 로그인을 시도할 때, 암호 입력 횟수를 의미.

지정한 횟수(기본값은 6회, 여기서는 5회로 수정 설정) 이상 실패시 로그인 못함.

 

 

 

3] #PermitRootLogin yes ➡️ PermitRootLogin no

: root 계정을 사용한 로그인 허용 여부 설정.

no로 수정해서 주석 해제할 경우 최초 로그인 시 root 계정으로의 시도 자체가 불가능해짐.

보통 root 등의 잘 알려진 계정 이름으로 공격을 시도하므로 root로의 접근은 필히 막도록 하자.

 

이 설정은 다소간 초기 설정이 필요하므로 함께 설명한다. 왜?

향후 root 대신 어떤 계정으로 로그인 할 지 미리 설정을 해두어야 하기 때문.

 

그러므로

1) 지금 있는 사용자 목록 체크

2) 로그인용 계정 추가

3) ssh 설정에서 root 로그인 잠금

까지의 일련의 큰 흐름을 따라 설명한다.

 

 

1) 리눅스 사용자 목록 확인(Linux User List)

전체 목록 확인⬇️

cat /etc/passwd

 

아이디만 잘라서 확인⬇️

cut -f1 -d: /etc/passwd

 

 

추가) ADDUSER 를 통해 등록된 계정만 보기⬇️

grep /bin/bash /etc/passwd

 

아이디만 잘라서 확인⬇️

grep /bin/bash /etc/passwd | cut -f1 -d:

 

 

 

2) 로그인용 계정 추가

일반 사용자 계정을 추가해야 하므로 root계정으로 로그인한 후 다음과 같이 새로 운 계정(ucloud)을 추가(adduser)하고 암호(passwd)를 설정한다.

 

 

3) ssh 설정에서 root 로그인 잠금

3-1. ⬇️아래의 명령어로 sshd_config 파일을 편집하기로 연 후

 vim /etc/ssh/sshd_config

 

3-2. #PermitRootLogin yes 항목을 찾고

 

3-3. i를 눌러 에디터를 편집 가능하도록 전환 후 PermitRootLogin no 로 수정한다. 이후 esc를 누르고 :wq로 저장하여 vi를 빠져나온다.

 

 

4) service sshd restart로 수정한 sshd demon을 다시 시작한다.

다시 시작해야 수정된 설정대로 적용되며, 일반적으로 SSH 데몬을 재시작해도 SSH 접속은 끊어지지 않으니 안심하자.

 

 

5) root 계정으로 로그인을 시도하면 Access denied란 메시지가 뜨면서 접속이 제한된다.

 

 

6) root 계정 접속이 제한되었으므로, 새로 생성했던 ucloud계정으로 로그인인한다.

 

7) root 계정의 권한이 필요할 경우 su – 명령으로 root 계정에 로그인하여 권한을 획득한다.

 

추가) 특정 사용자 계정에게만 su 명령어를 사용하도록 설정할 수도 있다.

1. root 계정으로 로그인 한 후 vi /etc/pam.d/su 실행

2. #auth required pam_wheel.so use_uid 항목의 주석(#) 제거

3. vi /etc/group 를 실행하여 wheel:x:10:root,ucloud를 입력해주어“whee”그룹에 “su –“명령 사용가능한 ucloud 계정 추가

4. "wheel" 그룹에 추가된 계정들만 "su"명령어 사용 가능

 

 

그 외 방법

22번이 아닌 포트 사용

SSH의 기본 포트는 22번이 맞다.

하지만 외부에서 22번 포트가 오픈중인지 스캔 후, 열려있다면 브루트 포스 어택을 시도할 수 있다.

공용으로 SSH 를 오픈해야 한다면 기본 포트를 변경하는 게 좋다.

# Port 22
Port 22000