"SSH 배너" 라는 말은 서로 다른 세 가지를 가리킨다. 감사 대응으로 경고문을 넣으라는 요구가 들어왔을 때 어느 것을 말하는지 먼저 갈라야 한다.
| 구분 | 표시 시점 | 설정 위치 |
|---|---|---|
| 인증 전 배너 | 비밀번호를 묻기 전 | sshd_config 의 Banner |
| MOTD | 로그인 성공 후 | /etc/motd, /etc/update-motd.d/ |
| 프로토콜 버전 문자열 | TCP 연결 직후 | 없음. 제거 불가 |
법적 고지와 접근 경고는 여기에 넣는다. 인증에 성공하지 않은 상대에게도 보이므로 "허가받지 않은 접근을 금지하며 모든 활동이 기록된다" 는 문구를 두는 목적에 맞는다.
sudo tee /etc/issue.net > /dev/null << 'TXT'
WARNING: Unauthorized access to this system is prohibited.
All activity is monitored and logged.
TXT
sshd_config 에 경로를 지정한다.
Banner /etc/issue.net
sudo sshd -t
sudo systemctl restart sshd
/etc/issue 는 콘솔 로그인용이고 /etc/issue.net 은 네트워크 로그인용이다. SSH 는 둘 중 어느 것도 자동으로 쓰지 않으며 Banner 로 지정한 파일만 읽는다. 파일 이름은 관례일 뿐이므로 다른 경로를 써도 된다.
로그인에 성공한 뒤 나오는 안내다. 점검 창 공지나 시스템 용도 표시처럼 운영 정보를 둔다. 법적 경고를 여기에만 두면 인증을 통과한 사람에게만 보이므로 목적을 못 채운다.
sudo vi /etc/motd
Ubuntu 는 /etc/motd 대신 /etc/update-motd.d/ 의 스크립트를 순서대로 실행해 결과를 이어 붙인다. 파일을 고쳐도 반영되지 않는다면 이쪽을 본다. 표시 자체를 끄려면 sshd_config 에서 PrintMotd no 를 준다. 다만 배포판에 따라 PAM 의 pam_motd 가 별도로 출력하므로 PrintMotd no 만으로는 사라지지 않을 수 있다.
연결하자마자 서버가 보내는 한 줄이다.
SSH-2.0-OpenSSH_9.6
프로토콜 협상에 쓰이므로 없앨 수 없다. 버전 노출이 감사 지적 사항으로 올라오는 경우가 있는데, 이 값을 바꾸려면 소스를 고쳐 다시 빌드해야 하고 그렇게 해도 실제 취약점이 사라지지 않는다. 배너 문구에 OS 이름과 버전을 넣지 않는 것 정도가 현실적인 대응이다.
이 문자열은 진단에도 쓴다. 22번 포트에 붙었을 때 이 줄이 나오면 SSH 데몬은 살아 있다는 뜻이다.
nc -v 192.168.0.10 22