라즈베리파이 O/S를 설치하고 기본 비밀번호를 쓰시는 분은 없을 것으로 생각됩니다. 만약 외부에서 ssh로 라즈베리파이를 접속할 수 있는 상태를 만드셨다면 이번 포스팅을 통해 반드시 ssh의 기본포트 변경하시어 해킹공격에 대비하시기 바랍니다.
라즈베리파이를 외부에서 22번 포트로 ssh 접속에 이용하고 계시다면 아래 명령어를 통해 해킹 이력을 살펴보시기 바랍니다.
먼저 netstat | more 를 입력하여 현재 라즈베리파이의 네트워크 접속 상태를 확인합니다.
위 사진을 보시면 제 라즈베리파이(IP:192.168.0.251:ssh)에 abts-north-static:48774가 접속한 것을 확인 할 수 있습니다. 접속은 했지만 비밀번호 로그인까지 해서 쉘까지 들어왔는지, 아니면 비밀번호를 틀렸는지는 아래 명령어로 확인을 해야 합니다.
먼저 로그인을 못하고 실패한 이력을 살펴 보겠습니다. 아래 명령어를 쉘에 입력합니다. ($ sudo last -f /var/log/btmp)
제가 알지도 못하는 아이피에서 정말 여러번의 로그인 실패가 이뤄진 것이 확인됩니다. IP 하나를 https://whois.kisa.or.kr 사이트에서 확인해보겠습니다. 어느나라 놈인지...
이제는 로그인까지 성공해서 쉘까지 접속한 이력을 확인해보겠습니다. 아래 명령어를 입력합니다. ($ last)
다행이 쉘까지 로그인한 이력에는 같은 공유기에 붙어 있는 192.168.0.XXX 대역과, SKT텔레콤 아이피인것으로 보아 제가 외부에서 스마트폰으로 쉘에 접속한 기록인것 같습니다. (비밀번호 꼭 복잡하게 만드세요.)
이제 저는 해킹을 피하기 위해서 먼저 ssh의 기본포트를 변경하겠습니다. 해야할 작업은 3가지 입니다.
/etc/ssh/sshd_config 파일에 Port (원하는 포트숫자) 입력. 저는 1922포트로 변경 하겠습니다.
sshd 재시작
(공유기 사용시) 공유기 포트포워딩 ssh포트 변경
먼저 sudo vi /etc/ssh/sshd_config 명령어를 입력하고 내용에 Port 1922를 입력합니다. (주석처리된 Port 부분을 수정 또는 빈공간에 추가)
다음은 sudo systemctl restart sshd 명령어로 ssh를 재시작합니다.
마지막으로 공유기를 사용하시는 분들은 공유기의 포트포워딩 주소를 변경해줍니다. 저는 외부에서 공유기 1922포트로 접속하면 -> 라즈베리파이 1922포트로 포워딩 하도록 하겠습니다.
(또는 간단한 아파치 명령어인 sudo a2ensite default-ssl.conf 로도 심볼링크가 생성됩니다. sudo a2dissite default-ssl.conf 명령어는 반대로 심볼링크를 삭제합니다.)
이제 vi 편집기로 default-ssl.conf 파일에 들어가면 VirtualHost 443 이라고 되어 있는 https 포트 설정을 합니다. sudo vi default-ssl.conf
DocumentRoot 웹문서가 들어있는 폴더 위치
SSLEngine on
SSLCertificateFile fullchain.pem 위치
SSLCertificateKeyFile privkey.pem 위치
다음은 ssl을 활성화 합니다. sudo a2enmod ssl
(참고로 "sudoa2enmod 모둘명" 명령은 아파치폴더 내에 있는 mods-available 폴더에 모듈을 mods-enabled 폴더로 심볼링크 해주는 명령어입니다. 반대로 비활성화 할 경우는 "sudo a2dismod 모듈명" 명령어로 합니다. 심볼링크가 삭제됩니다.)
이제 아파치를 다시 시작합니다. sudo systemctl start apache2.service
마지막으로 공유기를 통해 라즈베리파이를 사용하고 있다면 이전 포스팅을 참고하여 포트포워딩을 해줘야 합니다.
(https:도메인주소 입력으로 -> 공유기 443포트로 들어오는 패킷을 -> 라즈베리파이 443포트로 포트 포워딩)
포트포워딩까지 완료 되었다면 이제 브라우저를 통해 접속해 봅니다. 앞에 열쇠모양이 생겼을 겁니다.
certbot으로 발급받은 인증서는 유효기간이 90일 입니다.
인증서를 갱신하고 싶다면 아파치를 종료하고, sudo certbot renew 명령어를 입력하고, 다시 아파치를 시작하면됩니다.
다만 갱신은 만료 2주전부터 가능하다고 합니다.(혹자는 1달전부터 가능했다고 합니다.)
만료가 다가오면 위에서 certbot으로 키 생성시 입력한 메일 주소로 갱신안내 메일이 옵니다.
만약 기한이 많이 남아있는데도 갱신을 할 경우 아래와 같은 에러가 날 수 있습니다.
저는 2달마다 자동으로 인증서를 강제로(--force-renew) 재발급 받기 위해 크론탭을 이용하겠습니다.
먼저 su -명령어로 루트로 진입합니다. (root 비밀번호를 지정하지 않으신분은 이번기회에 지정해주세요)
그리고 crontab -e 명령어로 root의 크론탭에 진입합니다.
그후 0 5 1 */2 * /usr/bin/certbot renew --force-renew --pre-hook "/bin/systemctl stop apache2.service" --post-hook "/bin/systemctl start apache2.service" 를 제일 아래라인에 추가해줍니다. (짧은 기간동안 너무 자주 재발급받으면 에러가납니다.)
추가로, http://도메인 접속시 https://도메인주소로 리다이렉트를 시키고 싶으시다면 아래와 같이 진행해야합니다.
rewrite 모듈을 사용하기 위해 sudo a2enmod rewrite 명령어를 실행합니다.
다음은 /etc/apache2/sites-enabled 폴더로 이동한 후 접속시 리다이렉트 시키고 싶은 주소의 conf 파일을 vi로 아래와 같아 수정합니다.
(저는 001-test.conf에 있는 80포트(http) ServerName주소로 들어오는 요청을 https로 리다이렉트 시키겠습니다.)
이제 아파치를 다시 시작합니다. sudo systemctl start apache2.service
2020년 11월 2일 라즈베리파이 홈페이지에 신제품 라즈베리파이(Raspberry Pi) 400 제품에 대한 내용이 올라왔습니다.
사진으로 보시는 바와 같이 라즈베리파이를 기존에 컴팩트 기기 하우징에서 벗어나 키보드 내부에 탑재한 제품으로 출시를 하였습니다.
제품명은 Raspberry Pi 400으로 출시하였습니다. 램은 4G로 발매되었습니다.
이 제품은 자체 기기 가겨은 70달러로 책정 되었으며, 부가 장치를 포함한 키트의 경우 가격을 100달로 책정하였습니다.
키트구성품
Raspberry Pi 400 기기
공식 USB 마우스
공식 USB-C 전원 공급 장치
Raspberry Pi OS가 설치되어 있는 SD카드
micro HDMI to HDMI 케이블
공식 Raspberry Pi 초보자 가이드
라즈베리파이 400의 하우징 내부 보드는 기본적으로 라즈베리파이 4 장치이지만 새로운 하우징에 맞춰 PCB 디자인을 가로로 길게 만들어졌습니다. 라즈베리파이4와 마찬가지로 USB 및 이더넷 포트가 제공되지만 USB2.0 포트중 하나는 키보드 전용으로 사용됩니다.
PCB보드에서 보이는것과 같이 USB 포트와 이더넷 포트는 좌측에 모여있습니다. 유선 마우스를 사용하시는 분들께서는 아무래도 마우스 사용시 파워선, HDMI선, 파워선등을 가로 질러 우측에 배치해야 되는 상황이 발생합니다. 가능하면 무선 USB 사용이 선관리에 깔끔할 것 같습니다.
GPIO 커넥터는 이번 라즈베리파이400 제품에서도 유지가 되었습니다.
라즈베리파이 400은 회로 레이아웃이 라즈베리파이4와 동일하지만 CPU 클럭이 1.8GHz까지 사용 가능해졌습니다.
라즈베리파이 400에는 기기 전면과 후면에 열을 발산하는 열 분산기가 포함되어 있어 가능했다고 합니다.
또한 이전 라즈베리파이 기기에는 없었던 전원 on/off 버튼이 생겼습니다.
Fn + F10을 2초 동안 누르면 전원이 꺼집니다. 이렇게 꺼도 Linux 소프트웨어에서 전원을 종료시키는 컨트롤을 이용하여 종료하는 것이기에 메모리카드나 USB 드라이브를 손상시키지 않습니다.