인터넷상의 모든 사람들은 루트 로그인을 비활성화하는 것을 권장합니다.SSH이는 시스템의 나쁜 습관이자 보안 허점이기 때문입니다. 하지만 왜 이런 일이 발생하는지 아무도 설명하지 않습니다.
루트 로그인 활성화(특히 비밀번호 로그인 비활성화)의 위험은 무엇입니까?
비밀번호 인증이 허용되는 경우 보안 관점에서 X 표기법 사용자 이름과 Y 표기법 비밀번호 또는 루트 사용자 이름과 X+Y 표기법 비밀번호의 차이점은 무엇입니까?
답변1
SSH를 통한 루팅이 나쁜 이유
SSH를 통해 컴퓨터에 로그인을 시도하는 봇이 많이 있습니다. 이 로봇이 작동하는 방식은 다음과 같습니다.
유사한 작업을 수행 ssh root@$IP
한 다음 "root" 또는 "password123"과 같은 표준 비밀번호를 시도합니다. 올바른 비밀번호를 찾을 때까지 가능한 한 오랫동안 이 작업을 수행합니다. 전역적으로 액세스 가능한 서버에서는 로그 파일에서 많은 수의 로그 항목을 볼 수 있습니다. 분당 최대 20개 이상을 얻을 수 있습니다.
공격자가 운이 좋아서(또는 시간이 충분하여) 비밀번호를 찾으면 루트 액세스 권한을 갖게 되며 이는 문제에 직면하게 된다는 것을 의미합니다.
그러나 SSH를 통해 루트 로그인을 비활성화하면 봇은 먼저 사용자 이름을 추측한 다음 일치하는 비밀번호를 추측해야 합니다. 따라서 합리적인 비밀번호 목록에는 N
항목이 있고 합리적인 사용자 목록에는 M
많은 항목이 있다고 가정합니다. 봇에는 테스트할 항목 세트가 있으므로 N*M
크기 세트만 있는 기본 사례보다 봇이 조금 더 어려워집니다 N
.
M
어떤 사람들은 이 추가 기능이 실제로는 보안상 이점이 아니라고 말합니다 . 저는 이것이 단지 작은 보안 향상일 뿐이라는 데 동의합니다. 하지만 저는 본질적으로 안전하지는 않지만 많은 사람들이 쉽게 들어갈 수 없도록 하는 작은 자물쇠라고 생각합니다. 물론 이것은 컴퓨터에 다른 표준 사용자 이름(예: tor 또는 apache)이 없는 경우에만 작동합니다.
루트를 허용하지 않는 더 좋은 이유는 루트가 일반 사용자보다 컴퓨터에 더 많은 피해를 줄 수 있다는 것입니다. 따라서 운이 좋게도 비밀번호를 찾으면 전체 시스템이 손실되고 표준 사용자 계정을 사용하면 해당 사용자의 파일만 조작할 수 있습니다(여전히 형편없습니다).
sudo
일반 사용자에게도 접근 권한이 있으며 , 사용자의 비밀번호가 추측되면 시스템이 완전히 손실된다는 의견이 있었습니다 .
요약하자면 공격자가 어떤 사용자의 비밀번호를 알아냈는지는 중요하지 않다고 말하고 싶습니다. 그들이 비밀번호를 추측하면 더 이상 시스템을 신뢰할 수 없습니다. 공격자는 사용자의 권한을 사용하여 명령을 실행할 수도 sudo
있고 시스템의 약점을 악용하여 루트 권한을 얻을 수도 있습니다. 공격자가 시스템에 접근할 수 있다면 더 이상 시스템을 신뢰할 수 없습니다.
여기서 기억해야 할 점은 SSH를 통해 로그인이 허용된 시스템의 모든 사용자는 추가적인 취약성이라는 것입니다. 루트를 비활성화하면 명백한 약점이 제거됩니다.
SSH에서 비밀번호가 왜 나쁜가요?
비밀번호를 비활성화하는 이유는 매우 간단합니다.
- 사용자가 잘못된 비밀번호를 선택했습니다!
비밀번호를 시도한다는 전체적인 아이디어는 비밀번호를 추측할 수 있는 경우에만 작동합니다. 따라서 사용자가 "pw123"이라는 비밀번호를 가지고 있으면 시스템이 안전하지 않게 됩니다. 사람들이 선택하는 비밀번호의 또 다른 문제점은 비밀번호가 기억하기 어렵기 때문에 결코 무작위가 아니라는 것입니다.
또한 사용자는 자신의 비밀번호를 재사용하여 Facebook이나 Gmail 계정 및 서버에 로그인하는 경향이 있습니다. 따라서 해커가 사용자의 Facebook 계정 비밀번호를 알아내면 해당 사용자의 서버에 액세스할 수 있게 됩니다. 사용자는 피싱을 통해 쉽게 정보를 잃거나 Facebook 서버가 해킹될 수 있습니다.
그러나 인증서를 사용하여 로그인하면 사용자는 자신의 비밀번호를 선택하지 않습니다. 인증서는 1024~4096비트(대략 128~512자 비밀번호)의 매우 긴 임의 문자열을 기반으로 합니다. 또한 이 인증서는 외부 서비스가 아닌 서버에 로그인하는 데에만 사용됩니다.
루트 액세스 모니터링
님의 댓글@필립쿨린대답은 다음과 같습니다.
관리상의 이유로 루트가 비활성화되었습니다. 상업용 서버에서는 항상 사람들의 액세스를 제어하고 싶습니다. 루트는 결코 사람이 아닙니다. 일부 사용자에게 루트 액세스 권한을 허용하더라도 해당 사용자가 자신의 사용자를 통해 로그인하도록 강제한 다음 su - 또는 sudo -i를 사용하여 실제 로그인이 기록되도록 해야 합니다. 이렇게 하면 개인에 대한 모든 액세스 권한을 더 쉽게 취소할 수 있으므로 루트 비밀번호가 있더라도 이를 사용하여 아무 것도 할 수 없습니다. ——필립 쿨린
또한 팀이 이를 시행할 수 있다고 덧붙이고 싶습니다.최소 권한의 원칙, 올바른 sudo 구성을 사용합니다(그러나 작성하는 것이 더 쉬울 것 같습니다). 이를 통해 팀은 성의 열쇠를 넘겨주지 않고도 임무를 무비판적으로 더 효과적으로 분배할 수 있습니다.
링크
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
이 게시물은 댓글에서 나온 것이며 SSH를 통해 로그인을 시도하는 봇넷 문제, 그 수행 방법, 로그 파일의 모양 및 사람들이 할 수 있는 작업에 대해 더 깊이 다루기 때문에 더 눈에 띄는 위치를 제공하고 싶었습니다. 그들을 막기 위해 그렇게 하세요. 저자는 Peter Hansteen입니다.
답변2
이는 직접 루트 로그인이 허용되지 않는 몇 가지 이유일 수 있습니다.
- 폭력 시도. 직접 루트 로그인은 성공적인 무차별 대입 공격에 더 많은 피해를 줄 수 있습니다.
- "암호 없는" SSH 키(사람의 실수가 발생하는 경우)를 잘못 구성하면 컴퓨터가 인터넷에 노출될 수 있습니다.
그러나 이것은 빙산의 일각에 불과합니다. 다음과 같은 추가 제한 사항 및 구성을 구성해야 합니다.
- 기본 포트 변경(22)
- 강력한 비밀번호 및 암호 문구
- 호스트 기반 인증 비활성화
- 허용된 사용자 목록 만들기
- 유휴 시간 제한 구성
- 강제 SSHv2 프로토콜
- 빈 비밀번호 비활성화
- 무차별 대입 공격에 대한 대응책으로 Fail2ban 사용
- 모든 것을 녹음하다
- SSH 키를 구성하고 .ssh/authorized_keys의 공개 키만 신뢰하십시오.
답변3
맞습니다. 루트 사용자 이름과 X+Y 표기법 비밀번호는 암호화 방식으로 최소한 X 표기법 사용자 이름 + Y 표기법 비밀번호만큼 안전합니다. 실제로 사람들의 이름은 추측하기 쉽기 때문에 훨씬 더 안전합니다. (봇은 John, Mike, Bill 등을 시도할 수도 있습니다. 그런데: 많은 사람들이 루트를 시도하는 대신 그렇게 합니다.) 누군가가 회사의 서버를 손상시키려는 경우 시스템 관리자의 이름(닉네임)을 알아내는 것은 문제가 되지 않기 때문에 표적 공격인 경우 특히 운이 좋지 않습니다.
공격자가 시스템 관리자가 SSH 로그인에 사용하는 계정에 액세스할 수 있게 되면(그리고 자신의 작업을 사용하거나 su
수행 sudo
하는) 시스템 관리자가 다음을 입력할 때 공격자의 비밀번호를 실행하는 프로그램으로 해당 사용자의 세션을 감염시킬 수 있습니다. 다음 명령을 보내거나 루트 비밀번호 시간을 보내십시오.
그것은어느보안 관점에서 볼 때 이는 루트 로그인 유형에 대한 나쁜 습관으로 간주됩니다. "일반" 사용자 로그인 -> su/sudo 체인에 대한 감사 추적이 추가되었습니다. 일반 영어로 말하면 누가 무엇을 했는지 알아냅니다.
단 한 사람만 루트 액세스 권한을 갖는 경우는 특별한 경우일 수 있습니다. 이 경우 "일반" 사용자를 추가로 사용해도 큰 가치가 추가되지 않습니다(적어도 나는 그 가치를 전혀 볼 수 없습니다). 그러나 어쨌든 - 시스템에 간단한 사용자가 있어야 합니다(비관리 작업의 경우 wget 실행 등;-)).
답변4
안전 예방 조치를 취하는 한 이는 완전히 나쁜 것은 아닙니다. 예를 들어, CSF(구성 서버 방화벽)를 설치하고 이를 허용된 시도 실패 횟수로 설정할 수 있으므로 누군가 시도하면(5번 이상 시도 실패 가정) 자동으로 차단됩니다. 따라서 최고의 답변자의 첫 번째 부분 전체는 전혀 문제가 되지 않습니다. 이런 일이 여러 번 발생했는데 다행히 모든 추천인이 영구적으로 차단되었습니다. 서버의 경우 서버를 관리하는 유일한 사람이라면 큰 문제는 아니지만 물론 시스템 관리자가 많거나 조직에서 작업하는 경우 당연히 root 를 사용하지 마십시오. 또한 데스크톱의 경우 소프트웨어를 많이 사용하기 때문에 보안 위험이 있으므로 다른 계정을 사용하는 것이 더 나을 것 같습니다. 그러나 서버에는 신뢰하지 않는 임의의 소프트웨어가 없으므로 반드시 보관해야 합니다. 가능한 한 낮게. 그래서 결론은 '아니요, 서버를 제대로 관리하는 방법만 알면 나쁠 것이 없다' 입니다.