Middleware
이 글은 mongoose middleware를 한글로 요약 정리한 것이다. 실제 본문을 요약하여 번역해 정리했으므로 이해가 안되는 부분은 위 링크의 내용을 참조하기 바란다.
이 글은 mongoose middleware를 한글로 요약 정리한 것이다. 실제 본문을 요약하여 번역해 정리했으므로 이해가 안되는 부분은 위 링크의 내용을 참조하기 바란다.
iptables Firewall on Ubuntu/Debian
일반적인 리눅스 배포본의 기본 방화벽인 iptables를 쉽게 사용할 수 있는 ufw 를 사용해서 리눅스에 방화벽을 구축하는 방법을 기술하고 있다.
iptables로 당연히 방화벽을 관리할 수 있다.
iptables -L 플래그방화벽 룰, 액션에 대해 INPUT, OUTPUT, FORWARD 정보를 볼 수 있다.
1 | $ sudo iptables -L |
우리 대신 사용 하 여 각 규칙 및 정책을 사용 하는 데 필요한 명령을 반영 하는 형식으로 출력을 볼 수 있는
1 | $ sudo iptables -S |
규칙을 모두 리플레시 할 수 있다
1 | sudo iptables -F |
모든 규칙은 DENY -> 일부 허용 순서로 한다. 그래서 TCP 로 1번부터 65526번 포트까지 다 막는 방법이다. 만약 UDP도 막고싶다면,
1 | sudo iptables -A INPUT -p tcp --dport 1:65526 -j DROP |
1 | sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT |
혹은 ip address 를 기반으로 설정할 수 있다.
1 | iptables -I INPUT -p tcp --dport 22 -s 222.222.222.222 -j ACCEPT |
8080번으로 들어오는 포트를 80 번으로 바꾸기
1 | sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT |
iptables정보를 저장하고 재부팅 이후에도 동작하도록 설정함. <= vi 로 열어서 맨 마지막에 추가함.
1 | sudo sh -c "iptables-save > /backup/iptables.rules" |
기본 httpd 사용을 위한 80번 포트 개방과, node.js, python 등 실습을 위한 8080번 포트를 열어 주기 위해서 /etc/sysconfig/iptables 에 아래와 같이 입력한다.
1 | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT |
iptables 규칙을 만들 때는 순서가 매우 중요하다.
이 때 주의해야 할 것은 위의 4개 코드가 빨간 색의 코드보다 반드시 위에 적혀 있어야 한다.
예를 들어 만일 chain에서 로컬 192.168.100.0/24 서브넷에서 들어오는 모든 패킷을 drop하도록 지정한 후 (drop 하도록 지정된 서브넷에 포함되는) 192.168.100.13에서 들어오는 패킷을 모드 허용하는 chain (-A)을 그 후에 추가하면 뒤에 추가된 추가 규칙이 무시된다.
먼저 192.168.100.13를 허용하는 규칙을 설정한 후 서브넷을 drop하는 규칙을 설정해야한다.
이후에
service iptables restart
명령어를 실행해주면 2개의 포트가 열러서 정상적으로 외부접속이 가능해지는 것을 확인할 수 있다.
로그에 있는 IP 목록을 출력
1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u |
iptables 명령으로 막혀있는 ip address를 출력해 보자. [^3]
1 | $ sudo iptables -L -n --line |
1 | $ sudo iptables -L INPUT -v -n |
로그를 검사해 의심스런 IP 를 찾아 Firewall rule을 관리하기 어렵다 Fail2ban은 정규표현식을 사용해서 로그에서 의심스런 IP를 찾아 Firewall 등록할 수 있도록 해준다.
로그를 검사해 의심스런 IP 를 찾아 Firewall rule에 등록해 관리하는 것은 어려운 과정이다. Fail2ban은 정규표현식을 사용해서 로그에서 의심스런 IP를 찾아 Firewall 등록 할 수 있도록 해준다.
fail2ban 은 iptables 패키지와 함께 설치한다.
1 | $ sudo apt install iptables fail2ban |
그리고 systemctl 로 재대로 서비스가 시작되는지 확인해 본다.
1 | $ sudo systemctl restart fail2ban.service # 재시작 |
설정을 위해서 fail2ban 설정 파일인 fail2ban.conf, 그리고 jail 파일 jail.conf 파일을 .local 파일로 복사한 사용자 정의 파일에서 사용한다.
1 | $ cd /etc/fail2ban |
설치된 후 관련된 설정 파일은 /etc/fail2ban 디렉토리에 저장됩니다. 관련한 로그 기록은 /etc/logratate.d/fail2ban에 정의되어 /var/log/fail2ban.log 로 저장됩니다.
다음은 설정 디렉토리 구조
1 | $ tree -L 2 fail2ban/ |
jail 이라 불리는 모니터링할 대상에 대한 기본 옵션과 행위를 선언한다.fail2ban 주요 설정 파일fail2ban은 jail 을 구성하고 jail의 filter 그리고 action으로 나뉘어 있다.
fail2ban.conf는 기본 구성 변수로 loggin, socket 그리고 PID 파일 등등이 설정된다. 별도의 파일로 Jail을 구성할 때 fail2ban.local 같은 이름을 사용하고 새로 설정되는 값은 기본 설정 값을 재정의 하게 된다.
단 같은 [default] 섹션이 존재하면 구성된 내용 적용이 잘 안된다.
다음 스크립을 사용하면 모둔 변수를 주석 처리하고 수정할 옵션만 복사해 준다.
1 | sed 's/\(^[[:alpha:]]\)/# \1/' fail2ban.conf | sudo tee fail2ban.local 1&> /dev/null |
fail2ban.local 파일은 다음과 같은 내용을 담을 것이다.
/etc/fail2ban/jail.conf 는 데몬, 서비스에 대한 jail을 구성한다. jail은 log를 읽어 불필요한 것을 찾아 낸다.
다음은 jail.conf에서 주석이 달린 jail.local을 생성해 준다.
1 | sed 's/\(^[[:alpha:]]\)/# \1/' jail.conf | sudo tee jail.local 1&> /dev/null |
If using CentOS or Fedora open jail.local and set the backend to systemd. This is not necessary on Debian 8, even though it is a SystemD system.
/etc/fail2ban/jail.local
1 | backend = systemd |
먼저 검출된 IP 중에 무시할 영역, 화이트리스트를 선언해 줍니다. 리스트는 ‘,’로 구분하고 서브넷 혹은 IP주소를 입력한다.
1 | [DEFAULT] |
bantime, findtime, maxretry 은 차단 시간에 대한 구성이다.
1 | bantime = 2592000 |
-1 이면 영속적으로 밴 된다.https://arno0x0x.wordpress.com/2015/12/30/fail2ban-permanent-persistent-bans/
로컬 시스템의 이메일 주소를 sendmail -t user@email.com, replacing user@email.com with your email address.
fail2ban에 검출되는 jail이 있으면 이메일 설정에 따라 메일로 경고를 받을 수 있다.
그리고 action 설정을 조절할 필요가 있다, 이것은 ban 상황이 기준점에 닿으면 발생한다. 기본 액션 %(action_)s은 사용자만 ban 한다. action_mw 액션은 ban을 실행하고 WhoIS 리포트로 메일을 보내준다. action_mwl은 모든 로그까지 함께 보내준다.
You will also need to adjudst the action setting, which defines what actions occur when the threshold for ban is met. The default, %(action_)s, only bans the user. action_mw will ban and send an email with a WhoIs report; while action_mwl will ban and send an email with the WhoIs report and all relevant lines in the log file. This can also be changed on a jail-specific basis.
1 | action = %(action_)s |
1 | $ sudo service fail2ban restart |
필터를 이용해 Jail을 만들어 의심스런 접근을 막아 보자. 앞서 복사한 jail.local 파일에는 주요 서비스가 모두 선언되어 있고 sshd 만 활성화 되어 있다.
Jail은 다음 같이 구성된다.
1 | [ssh] |
각 서비스에 대한 jail은
jail.d에 설정 파일을 구성해도 된다.
(1) sshd
Brute-force Attack과 같은 접근을 차단하는 필터로 로그에 아래와 유사한 패턴이 나오면 IP를 검출한다.
Jul 22 06:56:50 foo sshd[14984]: Failed password for invalid user a from xxx.xxx.xxx.xxx port 55452 ssh2
jail.config 혹은 jail.local 에서 기본으로 활성화 되어 있다.
(2) ssh-ddos
sshd-ddos Filter를 사용해 SSH Service를 Scanning하거나 telnet으로 접속할 떄 발생하는 Message를 검사하여 해당 IP의 접근을 차단할 수 있습니다.
이 Filter로 검출되는 /var/log/auth.log의 Message는 다음과 같습니다.
Jul 23 13:16:25 foo sshd[21989]: Did not receive identification string from xxx.xxx.xxx.xxx
Jail 설정을 위해서 다음과 같이 입력합니다.
1 | [sshd-ddos] |
혹은 $ sudo vi /etc/fail2ban/jail.d/sshd-ddos.conf
1 | $ sudo service fail2ban restart |
다양한 필터를 사용할 수있다. 의심스런 동작을 Filter로 선언해서 사용하는데 해당 필터를 점검해야할 필요가 있다. 다음
1 | $ sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf |
이 필터를 사용자가 작성할 수 있는데 파이썬의 정규식을 사용해서 사용자 지정 필터를 작성한다.
nginx 로그를 대상으로 200 에러를 검출해 보자
1 | 91.134.232.57 - - [28/Nov/2016:07:30:23 +0900] "GET / HTTP/1.1" 200 1125 "http://hundej |
123.143.201.75 - - [28/Nov/2016:17:29:18 +0900] “HEAD / HTTP/1.1” 200 0 “-“ “python-requests/2.10.0”
fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-test.conf
fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
Use iptables -L -n to find the rule name…
…then use fail2ban-client status to get the actual jail names.
룰 이름이 표시된다 f2b- 으로 시작하는 룰을 찾는다
그리고 fail2ban-status 는
fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
1 | sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf |
1 | sudo iptables -L --line-numbers |
기본으로 /etc/fail2ban/jail.conf 에 [nginx-http-auth] jail이 하나 선언되어 있다.
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
웹 사이트에서 실행되고 침투할 수 있는 코드를 찾아 준다. php 등이 웹 사이트와 연동되지 않았다면 아래 제일을 추가해서 이런 임의의 실행코드 형식 실행을 방지할 수 있다
1 | [nginx-noscript] |
웹 요청에 악의적인 봇을 호출하는 것을 방지한다.
1 | [nginx-badbots] |
추가한 jail 이 동작할 필터를 작업해 주어야 한다. 필터는 /etc/fail2ban/filter.d 디렉토리에 있다.
기본으로 제공하는 nginx-http-auth.conf 필터에 하나를 더 추가해 준다. 아래는 사용자가 아이디와 비밀번호를 입력하지 않는 경우에 대해 필터한다. 아래의 no user/password 패턴을 추가한다.
1 | [Definition] |
1 | sudo cp apache-badbots.conf nginx-badbots.conf |
[nginx-noscript] jail 은 다음 내용을 입력한다:
1 | [Definition] |
1 | [Definition] |
1 | [Definition] |
1 | $ sudo fail2ban-client status |
그리고 iptable의 서비스로 방화벽 규칙에 fail2ban 규칙이 동작중인지 확인한다.
1 | $ sudo iptables -S |
그리고 fail2ban 의 jail 실행 상태를 자세히 보고 싶므면 status 뒤에 jail 이름을 주면 된다.
1 | $ sudo fail2ban-client status nginx-badbots |
의심스런 동작을 Filter로 선언해서 사용하는데 해당 필터를 점검해야할 필요가 있다. 다음
1 | $ sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf |
nginx 인증 요구시 잘못된 인증을 시도하면 fail2ban 규칙에 따라 접근이 금지당한다. 그리고 jail 규칙이 잘 적용 됐는지 결과를 다음 같이 확인할 수 있다:
1 | $ sudo fail2ban-client status nginx-http-auth |
인증 규칙에 어긋나는 접근을 시도한 IP인 111.111.111.111을 확인 할 수 잇다.
금지된 IP는 해당 jail을 이용해 다음 같이 해제할 수 있다.
1 | $ sudo fail2ban-client set nginx-http-auth unbanip 111.111.111.111 |
http://blog.ricardomacas.com/index.php?controller=post&action=view&id_post=3
https://supine.com/posts/2012/08/fail2ban-monitoring-itself-recursively/
sudo service fail2ban stop
sudo truncate -s 0 /var/log/fail2ban.log
sudo truncate -s 0 /etc/fail2ban/ip.blacklist
sudo rm /var/lib/fail2ban/fail2ban.sqlite3
sudo service fail2ban restart
https://ubuntu101.co.za/security/fail2ban/fail2ban-persistent-bans-ubuntu/
fail2ban.conf file, I found the following:
1 | dbfile = /var/lib/fail2ban/fail2ban.sqlite3 |
So, I did a little research to try to find out how access the database.
To open or connect to the database:
1 | $ sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 |
To list all the tables in the database:
1 | sqlite> .tables |
To query a table:
1 | sqlite> SELECT * FROM logs; |
Another table:
sqlite> SELECT * FROM bans;
To disconnect from the database:
sqlite> .quit
참조: https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-debian-7
Electroencepharogram, EEG는 머리에 부착한 적극등에 의해 뇌의 활동 상태를 측정하는 기술이다.
머리의 대뇌피질에 전극을 연결해 뇌파를 측정하면 델타 -δ파(0.2 ~ 3.99 Hz), 쎄타 -θ파(4 ~ 7.99 Hz), 알파 -α파(8 ~ 12.99 Hz), 베타 -β파(13 ~ 29.99 Hz), 감마- g파(30~50 Hz) 파동으로 구분할 수 있다.
Raspberry Pi에서 EEG를 시현한 사례도 많이 제공되고 있다.
100€ 선에서 Neurosky Mindwave 제품같은 저렴한 EEG 헤드셋을 이용할 수 있다.

그림. Nerosky Mindwave EEG
다음은 유튜브에 공개된 Neurosky Mindwave를 사용한 시연 동영상이다:
헤드셋과 Bluetooth dongle로 구성되어 있어서, 라즈베리파이에서 USB 장치 연결을 하고 dmesg로 장치 인식을 확인할 수 있다.
그리고 Mindwave용 Python라이브러리를 사용해 EEG 신호를 측정할 수 있다.
파이썬 Mindwave 라이브러리를 사용할 수 있다.
EEG 세트를 자작으로 구현해 볼 수 있다.
2017-07-10: tmux-continum 추가
{:.right-history}
Tmux는 terminal multiplexer로 서버에 여러 프로그램을 세션에 저장하고, 다른 작업 혹은 연결을 끊었다 다시 접속해서 세션을 열어 작업을 이어갈 수 있다.

[그림. Tmux 실행 모습 (tmux.github.io)]
여기서는 tmux 2.x 이상을 사용한다.
brew 를 사용한다.이전 Ubuntu 14.04, Raspbian 등에서 tmux가 1.8, 1.9 버전이 제공되는데 package manager 같은 기능을 사용할 수 없다. 소스로 빌드해서 사용할 수 있다.
Ubuntu 14.04 desktop, orangepi plus, raspberry pi jessie 초기 버전에서 빌드
혹시 모르니 기존 낮은 버전의 tmux를 삭제하고 시작해 보자.
1 | $ sudo apt remove --purge tmux |
소스를 https://github.com/tmux/tmux/releases/ 에서 최신 버전으로 다운로드 하고 빌드한다.
1 | sudo apt update |
단, libtinfo5 6.x 설치시 의존성 라이브러리 문제로 패키지 삭제 문제 발생!!!
https://launchpad.net/ubuntu/yakkety/amd64/tmux/2.2-3 에 빌드되어 있는 바이너리를 Ubuntu 14.04 설치하기 위해서 다음 패키지 버전이 필요하다.
Depends on:
기본 설치후 업그레이드를 했다면 libc6 버전은 문제가 없는듯.
1 | $ sudo apt-cache show libc6 |
Ubuntu14.04.4 LTS 버전의 libtinfo5는 5.9로 다음 같이 설치해 준다.
1 | $ wget http://launchpadlibrarian.net/271601076/libtinfo5_6.0+20160625-1ubuntu1_amd64.deb |
그리고 tmux 2.2 버전의 deb 를 다운로드한다.
1 | $ wget http://launchpadlibrarian.net/263289132/tmux_2.2-3_amd64.deb |
설치
1 | $ sudo dpkb -i libtinfo5_6.0+20160625-1ubuntu1_amd64.deb |
이제 tmux 명령으로 다중 터미널 명령을 사용할 수 있다.
homebrew를 사용해서 tmux를 설치한다. 2017년 현재 2.4 버전이 설치된다.
1 | $ brew install tmux |
이제 tmux 명령으로 시작할 수 있다.
tmux 를 시작하면 하나의 세션에 하나의 윈도우가 만들어 진다.
1 | $ tmux # 세션을 시작하고 참가한다. |
세션에 참가하면 하나 혹은 그 이상의 윈도우에서 Pane을 배치해 사용할 수 있다.

[그림. Tmux window layout]
Tmux 세션 참가후 Window에서는 Prefix key로 Session, Window, Pane 관련 명령을 키로 조합해 사용한다. 기본 Prefix key는 Control+b key고 옵션으로 사용하는 Meta key는 Alt 키 이다.
여기서 Prefix key는 C와 조합으로 표기하고, Meta key인 Alt는 M으로 표기한다.
윈도우 명령 control, meta 키 조합과 병행해 윈도우에서 명령모드를 사용할 수 있다. 명령모드는 C-: 키로 시작하고, 명령모드에서 명령 자동 완성을 지원한다.

[그림. Window command mode]
윈도우는 수직/수평으로 구획을 나눌수 있다. C-“ 키로 현재 Pane 아래에 수평으로 새 Pane을 나눈다. 그리고 **C-%**키로 수직으로 새 Pane을 나눌 수 있다.

[그림. Tmux Window Pane]
Pane을 지우려면 터미널 exit 명령 혹은 C-x 키로 빠져 나올 수 있다.
윈도우는 명령모드에서 new-window 혹은 C-c 키로 새 윈도우를 추가할 수 있다.

[그림. new Window ]
윈도우 사이의 이동은 윈도우 번호에 따라 단축키 C-0,1,2…9를 사용하거나 C-w로 윈도우 목록에서 선택해 이동할 수 있다.
세션 사용중에 세션을 빠져 나오려면 C-d 로 detach 하거나, 명령모드 C-:에서 detach 명령을 준다.
Tmux 화면 버퍼는 한 화면분 밖에 안되서, 이전 화면 내용을 보려면 스크롤 기능을 켜야 한다. C+[ 키는 스크롤 키고, 우측상단에 페이지 표시가 나타난다. 키보드 방향키나 Page Up/Down키로 스크롤이 가능하다.

세션은 하나 혹은 그 이상 만들고 attach 명령으로 세션에 참가할 수 있다.
1 | $ tmux new -s foo -d # 세션 foo를 시작하고 빠져나온다. |
터미널에서 세션에 참가하려면 attach 명령과 대상 세션을 지정해 준다. 대상 세션은 tmux ls 명령에 표시되는 세션번호 혹은 세션이름을 지정한다.
1 | $ tmux attach |
세션을 완전히 종료 시키려면, tmux 세션에서 명령모드 C-: 에서 kill-session 명령을 실행한다.
혹은 다른 터미널에서 세션번호 혹은 세션 이름으로 종료한다.
1 | $ tmux kill-session -t 3 # 세션번호 3을 종료한다. |
사용자 홈디렉토리에 .tmux.conf 파일에 tmux에 대한 설정을 명시할 수 있다.
Capslock키를 Control 키로 대체해 사용하면, Control+a 키 조합이 편하다. .tmux.conf 에 키 조합을 변경한다.
1 | #Control+a에 'prefix' 연결 |
위에서 prefix는 C-a 로 재배치된다.
1 | # Toggle mouse on with META m |
Tmux Pluin Manager 를 설치하고, tmux 기능을 확장할 수 있다.
먼저 사용자 홈 디렉토리에 저장한다.
1 | $ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm |
다음 설정을 tmux.conf 에 저장한다.
1 | # List of plugins |
플러그인 설치를 위해서 C-I (대문자) 를 실행
플러그인 업그레이드를 위해서 C-U 를 실행
tmux-resurrect{:.keyword}는 tmux 세션을 백업/복구 할 수 있는 플러그인이다. tmux.conf에 다음을 추가
1 | set -g @plugin 'tmux-plugins/tmux-resurrect' |
플러그인 설치를 위해서 C-I 를 실행하면 설치를 시작한다.
Resurrection 플러그인으로 백업/복구하는 키는 다음 같이 지정되어 있다:
tmux-resurrect{:.keyword} 에서 저장한 환경을 자동으로 저장/복구할 수 있는 플러그인이다.
tmux-continuum{:.keyword} 의 주요 기능은:
.tmux.conf 파일에 아래 플러그인을 추가:
1 | set -g @plugin 'tmux-plugins/tmux-resurrect' |
tmux 에서 플러그인 설치를 위해서 C-I (대문자) 를 실행
그리고 .tmux.conf 파일에 continuum-restore 을 on으로 해준다.
1 | set -g @continuum-restore 'on' |
tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.
이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.
tmux-continuum 의 상태를 tmux status line에 표시할 수 있다.
1 | set -g status-right 'Continuum status: #{continuum_status}' |
tmux-continuum 은 Linux systemd, macOS 에서 자동 시작을 지원한다.
Linux는 .tmux.conf 파일에 다음 부트 옵션을 추가한다.
1 | set -g @continuum-boot 'on' |
그리고 현재 실행중인 세션에 변경한 설정을 적용하려면
1 | $ tmux source-file ~/.tmux.conf |
.tmux.conf 파일에 다음 부트 옵션을 추가한다.
1 | set -g @continuum-boot 'on' |
그리고 현재 실행중인 세션에 변경한 설정을 적용한다.
1 | $ tmux source-file ~/.tmux.conf |
맥이 재시작 하면 자동으로 Terminal.app 이 실행된다. 터미널 크기는 다음 옵션으로 지정한다:
1 | set -g @continuum-boot-options 'fullscreen' # terminal window will go fullscreen |
tmux 로 서버를 하나 시작하고, tmux -S /tmp/foo 같이 다른 소켓을 사용했다고 자동 저장/복구가 별도로 진행되지 않는다. [^10]
여기까지 설정한 내용은 qkboo/tmux.conf gist 에서 확인 가능.
tmux 설정을 위힌 default 파일이 존재하지 않는다는 점이다. 그래서 tmux 기본 설정을 어딘가 추출해서 보관해두면 다시 돌아오는데 편리하다. 현재 tmux에 설정된 값은 다음 명령어로 추출할 수 있다.
1 | $ tmux show -g | sed 's/^/set-option -g /' > ~/.tmux.current.conf |
tmux.conf를 적용하는 명령은 source-file이다.
1 | $ tmux source-file ~/.tmux.current.conf |
mongoDB는
mongoDB는 Collection 이 데이터베이스 테이블과 같은 개념이다. 아래 테이블은 관계형 데이터베이스 MySQL과 MongoDB의 개념을 비교해 주고 있다. [^1]
| MySQL | MongoDB |
|---|---|
| Table | Collection |
| Row | Document |
| Column | Field |
| Joins | Embedded documents, linking |
MongoDB - Database와 User Authentication
2018-06-21 설치 링크로 대체
{:.right-history}
MongoDB 설치후 데이터베이스 위치, 로그, 인증 등에 관련한 서버 구성과 설정을 정리한다.
MongoDB 2.6 과 MongoDB Community Edition 3.x 버전을 사용했다.
mongoDB 는 설치과정 중에 인증과 관련해 설정하는 부분이 없어서 설치 후 누구나 DB에 접속 할 수 있다. 인증을 추가해 데이터베이스 관리자와 데이터베이스 사용자로 구분해서 이용하고, 각 데이터베이스의 사용자는 허가된 역할(Role)을 가지고 데이터베이스에 접근 가능하도록 구성한다.
2018-06-22 내용 정리, User auth 링크
{:.right-history}
이 문서는 MongoDB Community Edition 3.4 버전을 64bit OS인 Amd64, Arm64 지원 OS에 설치해 사용하기 위해서 Install MongoDB Community Edition, on-ubuntu를 따라서 진행했다.
여기서는 Arm을 사용하는 SBC[^2] 컴퓨터에 mongodb 3.4 버전을, Hardkernel Odroid C2를 사용해서 설치를 진행했다.
Ubuntu/Debian ARM Cross compile 환경
이 글은 우분투, 리눅스 박스에서 GNU ARM Cross compiler 를 설치하고 관리하는 방법을 다루고 있다.
2018-05-17: sidebar.nav/linux 사용
{: .right-history}
우분투/데비안 리눅스에서 제공하는 ARM Toolchain 환경은 Linaro 툴체인을 바탕으로 만들어져 있어서 두가지 버전으로 제공된다. Hard Float을 지원하는 버전과 그렇지 않은 버전이다.[^1]
Nginx - HTTPS and Certificate SSL
Nginx를 HTTPS를 사용할 수 있도록 사설 인증서와 그리고 공인 인증서를 이용해 SSL을 활성화 하는 과정을 정리했다.
Nginx 설치와 서버, 프락시 등의 사용 방법에 대해서는 Nginx on Ubuntu/Debian 문서를 참조한다.