티스토리 뷰

사물인터넷(IoT)이 널리 보급됨에 따라 아두이노와 라즈베리 파이가 인기를 얻어 시장이 많이 성장해 있다.
이 글은 라즈비안 서버 초기 설정을 설명한다. $35 정도의 저렴한 서버를 꾸미는 기초 단계인 것이다.

 

1. 라즈베리 파이 설치.


라즈베리 파이는 다운로드 받은 img 파일을 SD 카드에 써넣는 것으로 설치가 완료된다.

1) 이미지 다운로드.
https://www.raspberrypi.org/downloads
에서 다운.
이 글에서 설명할 것은 Raspbian.

2) 이미지를 (micro)SD 카드에 복제.
각 OS에서 이미지를 복제하는 방법은
https://www.raspberrypi.org/documentation/installation/installing-images/README.md
를 참고.

맥 이용자라면 (micro)SD 카드를 리더기 등으로 연결한 다음 diskutil 명령어로 디스크 번호를 알아낸다.
/dev/disk[N] 으로 각 PC마다 다를 수 있으니 반드시 확인하고 진행해야 한다.
가급적 중요한 드라이브는 연결 해제하고 진행하자.

$ diskutil list
/dev/disk4
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.9 GB     disk4
   1:               Windows_NTFS 8GB                     7.9 GB     disk4s1

(micro)SD 카드가 /dev/disk4인 것을 확인할 수 있다.
disk4 마운트 해제.

$ diskutil unmountDisk /dev/disk4

dd 명령어로 이미지를 (micro)SD 카드에 쓰기.
if는 입력, of는 출력, bs는 한번에 복사할 데이터 크기인데 마음대로 해도 된다.
여기서는 1MB씩 bs=1m로 입력했으며, 모든 용량이 복사될 때까지 1MB씩 진행된다.

$ sudo dd if=/path/to/image/2015-05-05-raspbian-wheezy.img of=/dev/disk4 bs=1m

먹통인 것처럼 아무 반응이 없어야 제대로 진행되고 있는 것이다.
한참의 복사가 완료되면 에러가 없다는 리포트와 함께 다시 프롬프트를 볼 수 있을 것이다.
이걸로 설치 완료.

 

2. 부팅 및 raspi-config.

1) 부팅.
(micro)SD 카드를 라즈베리 파이에 꼽고 전원을 인가하면 부팅이 되며, 로그인 하면 raspi-config를 실행하라는 메세지를 표시한다.
최초 로그인 계정 : pi, 비밀번호 : raspberry
NOTICE: the software on this Raspberry Pi has not been fully configured. Please run ‘sudo raspi-config’

2) raspi-config

$ sudo raspi-config

RCezD
– 1 Expand Filesystem : 메모리 카드 전체 용량을 사용하도록 파티션 크기 재조정.
– 2 Change User Password : pi 계정의 비밀번호 재설정.
– 3 Enable Boot to Desktop/Scratch : X-Window 환경으로 부팅하도록 설정.
– 4 Internationalisation Options : 언어, 기준시간, 키보드 레이아웃 설정.
– 5 Enable Camera : 라즈베리 파이 카메라 단자 켜기/끄기 설정.
– 6 Add to Rastrack : Rastrack 서버서 이 라즈베리 파이 추가.
– 7 Overclock : 오버클럭 설정.
– 8 Advanced Options : 추가 설정.
– 9 About raspi-config : 이 설정에 대해.

최초설치 후 파티션이 2.9GB 정도로 설정되어 있으며, 아무리 큰 용량의 (micro)SD 카드를 사용할지라도 이외의 용량은 사용할 수 없다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          2.9G  2.4G  334M  89% /
/dev/root       2.9G  2.4G  334M  89% /
devtmpfs        214M     0  214M   0% /dev
tmpfs            44M  224K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            88M     0   88M   0% /run/shm
/dev/mmcblk0p1   56M   19M   37M  34% /boot

이걸 재조정 해주어야 하는데, 32GB 이하의 (micro)SD 카드라면 전체 용량을 사용하도록 설정하자.
그게 위의 1 Expand Filesystem이다. 전체 용량을 사용하도록 설정하는 것.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.3G  2.6G  4.4G  38% /
devtmpfs        214M     0  214M   0% /dev
tmpfs            44M  224K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            87M     0   87M   0% /run/shm
/dev/mmcblk0p1   56M   20M   37M  36% /boot
$ sudo reboot

64GB 이상이라면 직접 파티션을 여러개로 나눠 운용하길 추천한다.

 

3. 업데이트.

1) 펌웨어 업데이트.
현재 버전을 알아보자.

$ uname -a
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l GNU/Linux

펌웨어 업데이트.

$ sudo rpi-update
...
$ sudo reboot

업데이트 된 버전 확인.

$ uname -a
Linux raspberrypi 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l GNU/Linux

2) 패키지 저장소 리스트 업데이트, 패키지 업그레이드.

$ sudo apt-get update
...
$ sudo apt-get upgrade
...
$ sudo reboot

여기까지가 Raspbian 최신 버전을 설치하는 과정이다.

 

4. 비밀번호 설정.


최초 root 비밀번호가 설정되어 있지 않으므로 설정해 준다.

$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

pi 계정의 최초 비밀번호는 raspberry로 모두 같으므로 보안을 위해 바꿔주자.

$ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

 

5. SSH 설정.


SSH 기본 포트를 22번으로 사용하면서 외부접속을 허용하면 root 비밀번호를 알아내려는 시도가 많다.
최소한 22번을 다른 번호로 바꾸고 root로 접속하지 못하도록 하자.

$ sudo vi /etc/ssh/sshd_config
항목 중
Port 1024
PermitRootLogin no
저장하고 SSH 재시작
$ sudo service ssh restart

 

6. iptables 설정.


최초 iptables 정책을 확인해 보면 모두 열려져 있으므로 보안을 위해 접속을 제한할 필요가 있다.

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables 정책을 파일로 얻기.

$ sudo iptables-save > iptables_rules
$ cat iptables_rules
# Generated by iptables-save v1.4.14 on Sun Sep  6 22:44:51 2015
*filter
:INPUT ACCEPT [353:26718]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [181:18458]
COMMIT
# Completed on Sun Sep  6 22:44:51 2015

정책 파일 수정.

$ vi iptables_rules
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# Allow ICMP packets necessary for MTU path discovery
#-A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
# Allow echo request
#-A INPUT -p icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
COMMIT

iptables 정책 적용.

sudo iptables-restore < iptables_rules [/code]

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함