티스토리 뷰

 INTRO

Raspberry PI default user/passwd = pi/raspberry라 외부접속 보안을 위해서 새로운 게정이 필요하다.

먼저 root 계정 비밀번호를 변경(부여) 하자.

# root passwd 변경
$ sudo passwd root

# 신규 계정 생성
$ sudo adduser [newID]

# 신규 계정 sudo group에 넣기
$ sudo addgroup [newID] sudo
 
# default user pi 삭제 : 뭐가 아주 많은 것들이 지워진다.
$ sudo deluser --remove-all pi

% ssh로 재접속 시 pi@로도 접속이 가능하다. root 환경으로 접속된 느낌이었다.

    다음 명령을 수행하면 default user pi가 제거되어 ssh 접속이 안되는 걸 확인할 수 있다.

$ sudo deluser -remove-home pi

 

SSH port 변경 : 기본값 22로 port변경 후 macOS에서 접속 시 ssh 명령 시 -p [Port]를 입력해야 접속할 수 있다.

 - ssh Port 변경 및 위에서 생성된 [newID] 허용과 default user pi 거부 설정

$ sudo nano /etc/ssh/sshd_config

--nanoEditor
....
#Port 22
Port XXXX
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
....

AllowUsers NewID
DenyUsers pi

 - ssh Port/tcp 수정 반영

$ sudo nano /etc/services

--nanoEditor
....
ftp-data        20/tcp
ftp             21/tcp
fsp             21/udp          fspd
ssh             XXXX/tcp                                # SSH Remote Login Pr$
telnet          23/tcp
smtp            25/tcp          mail
....

....
mysql           3306/tcp
mysql           3306/udp
....

openssh-server 최신 보안 패치 적용

crontable 최초 설정 : list 확인은 crontab -l

$ crontab -e

--nanoEditor
....

0 0 * * * apt install openssh-server

 

 

- ssh service 재시작

$ sudo systemctl restart ssh

 

 [참고] hots.deny, hosts.allow는 외부 접속 시 보안을 위해 설정하는 것이 좋다. 여기서는 생략한다.

$ sudo nano /etc/hosts.deny
--nanoEditor
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#                  See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
#
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID
$ sudo nano /etc/hosts.allow

--nanoEditor
# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#

 

1. wi-fi 고정 inet(ip) 설정

$ netstat -nr

출력되는 routing 정보에서 netmask=255.255.255.0, Gateway 192.X.X.1을 DHCP 설정에 사용된다.

"X"로 표시된 곳은 사용하는 공유기나 환경에 따라 다르게 나타난다.

 

mac 터미널 두개를 열어 둘다 ssh로 라즈베리파이에 접속해 놓는다. nano editor를 실행하면 커널 내용을 볼 수 없기 때문이다.

DHCP 환경설정 파일을 여러 마지막 행부터 다음 코딩을 추가하고 재부팅한다.

$ sudo nano /etc/dhcpcd.conf

--nanoEditor
.....

interface wlan0
static ip_address=192.X.X.X(선택)
static routers=192.X.X.1
static domain_name_servers=192.X.X.1


# Editor를 저장하고 나오면 재부팅
$ sudo reboot

/etc/dhcpcd.conf 주석에 eth0(ethernet, 유선) 예제가 잘 적혀있으니 참고하면 된다.

Debian7 계열은 /etc/network/interfaces, Debian8 계열은 /etc/dhcpcd.conf를 수정한다.

 

고정 ip를 결정하고나면 PSK가 변경되었으니 확인 후 재설정하고 재부팅한다.

$ wpa_passphrase yourSSID SSIDpassword

network={
	ssid="yourSSID"
	#psk="yourpassword"
	psk=new_yourkey
}


$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

--nanoEditor
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
        ssid="yourSSID"
        #psk="SSIDpasswd"
        psk=new_yourkey
}


$ sudo reboot

 

부팅되었다 싶을 때 변경한 newID@new-ip -p [Port] 명령을 통해 ssh 접속을 확인한다.

[참고] macOS terminal에서 ping [your hostname].local을 입력하면 raspberrypi의 ip를 확인할 수 있다. 어차피 고정ip를 얻었으니 설정값을 입력하면 된다.

(macOS)$ ssh newID@new-inet-address -p XXXX

 

 

2. 외부접속 설정

시스템의 네트워크 연결상태 확인

 - Active Internet connections (servers and established) 

  : LISTEN 사용가능 상태, ESTABLISHED는 ssh XXXX port에 연결된 상태를 표시해준다.

    Local Address는 raspberrypi-inet, Foreign Address는 macOS ip 연결된 상태를 보여준다.

    127.0.0.1:3306은 mysql port로 다음 포스트에서 mariaDB를 설치 후 접속 시 사용되는 port이다.

    0.0.0.0:80은 nginx 설치 후 web-server 접속 시 사용되는 port이다.

$ sudo netstat -atnlp

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:XXXX            0.0.0.0:*               LISTEN      501/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      543/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      557/nginx: master p
tcp        0    196 192.X.X.X:XXXX        192.X.X.X:50148        ESTABLISHED 10177/sshd: Your-ID
tcp6       0      0 :::XXXX                 :::*                    LISTEN      501/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      557/nginx: master p

 

 - 공유기 Port Forwarding 설정 

Browser 주소창에 192.X.X.1을 입력하면 Web Management로 접속이 되고 초기 비밀번호는 공유기 메이커 별로 다르니 찾아서 접속한다. 아파트 공용 공유기라 처음보는 모델인데 NST NAP-11NR(천장 매립형 무선 AP, http://www.nstco.co.kr/index.php)은 좌측 Port Fowarding에서 우측 메뉴 Address에 고정아이피를 넣고 Protocol을 TCP로 설정하였다. Port는 webserver용으로 80으로 하고 ssh용은 위에서 설정한 Port XXXX를 넣고 우측메뉴 하단 reboot를 하면 65초를 기다리면 저장된다. 공인아이피 주소를 확인하는 방법은 browser 주소창에 "내 아이피 확인"으로 찾아가면 간단하게 확인할 수 있다. 외부접속을 확인하는 가장 쉬운 방법은 스마트폰 와이파이를 끄고 termius나 iterminal로 접속해보면 ssh 접속을 확인할 수 있고 스마트폰 browser 주소창에 공인아이피 주소를 입력하면 nginx welcome massage(https://jinozblog.tistory.com/21 nginx 활성화는 포스트 참고)를 만날 수 있다. 와이파이를 사용하고 있는 노트북 browser 주소창에서 공인아이피를 입력하면 접속되지 않는다. 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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 31
글 보관함