2022/03/15

수상한 접근을 하는 IP들 찾아내어 차단하기

엊그제 수상한 IP를 찾아 차단했데, 생각난 김에 다른 IP들은 없는지 access 기록을 찾아 보았다. lightsail bitnami 인스턴스에서 아파치 로그 파일은 /opt/bitnami/apache/logs 에 있다.

현재 로그파일과 지난 압축 파일을 홈 디렉토리에 복사한다.

 cp access* ~/logs/.

filezilla를 이용해서 ftp로 이 파일들을 내려받는다. 방법 : SFTP를 사용하여 Amazon Lightsail에서 Linux 또는 Unix 인스턴스에 연결

내려받은 파일들의 압축을 풀고 텍스트 편집기로 불러온다. textmate로 파일을 하나 불러오고 나머지 파일들도 드래그앤 드랍으로 던져 넣어 전체를 불러왔다. 약 45만줄 정도.

찾기 기능으로 /cgi-bin 을 찾아보았다. 이 블로그가 돌아가는 워드프레스의 디레토리 이름은 물론 서버내에 /cgi-bin 디렉토리는 없는데 이 경로가 포함된 URI를 접근해봤다는건 취약점이 있는 특정 파일들이 있는지 뒤져본 것으로 보인다.

cmd + A 로 전체를 선택하여 새 파일에 붙여넣는다. IP만 남기고 나머지 부분을 삭제했다. 갯수가 많으면 Keyboard Maestro를 이용할 수도 있겠지만 40여개라 수작업으로 정리했다. 나온 IP 목록은 중복을 제거하기 위해 구글 스프래드시트를에 붙여놓고 조건부 서식으로 중복값을 제거했다.

범위 지정 후 =countif(A:A,A:A)>1 맞춤수식 적용

이후 작업은 이전 게시물처럼 iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP 명령으로 넣어주고 리부팅해서 다시 적용할 수 있게 하려고 파일로 저장하였다.

해당 IP들이 다시 접근해올지 여부는 모르겠으나, 내 호스트에 대해 공격 기록이 있는 IP들은 차곡 차곡 막아줘야겠다.

2022/03/14

블로그에 가끔 접속 안되는 현상과 특정 IP차단

지난 주 한번에 이어 아까 낮에도 블로그에 접속이 되지 않는 현상이 있었다.

sudo /opt/bitnami/ctlscript.sh status 로 보니 서버 데몬들도 잘 떠 있었고, 일단 sudo /opt/bitnami/ctlscript.sh restart 데몬들을 재시작 시켰더니 정상적으로 잘 접속이 됐다.

혹시 눈에 띄는 점이 있나... access_log와 error_ log를 열어 보니 새벽 1시반 경에 의심스러운 기록이 보였다.

access_log 일부.

xxx.xxx.xxx.xxx - - [14/Mar/2022:01:33:39 +0900] "POST /cgi-bin/.%%32%65%%32%65/%%32%65%%32%

65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh HTTP/1.1" 400 226

이번엔 error_log 일부

[Mon Mar 14 01:33:39.964536 2022] [core:error] [pid 5629:tid 140256628164352] [client xxx.xxx.xxx.xxx:35132] AH10244: invalid URI path (/cgi-bin/.%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh)

아마 취약점을 찾기 위한 시도가 아닐까 싶은데, 이번 접속 장애가 이것 때문인지 다른 이유때문인지는 모르겠지만 일단 이러한 시도를 하는 IP는 차단하기로 하였다.

차단 방법은 Block A Suspicious IP Address 에 설명이 잘 되어 있다. 리부팅 해도 차단이 유지되도록 cron job에 등록해주었고. 인스턴스 이전할 때 기존에는 워드프레스만 백업받고 복원했는데 이젠 차단 아이피 주소 테이블도 같이 관리해줘야겠다.

[업데이트]@2022.3.15 14:30

차단할 아이피 추가하기

sudo su
iptables -A INPUT -s 1.2.3.4 -j DROP

차단한 아이피 목록 보기

iptables --list

차단한 아이피 삭제하기

sudo su
iptables -D INPUT -s 1.2.3.4 -j DROP

차단한 아이피를 파일로 저장하기

sudo su
iptables-save > /opt/bitnami/iptables-rules

부팅될 때마다 차단된 아이피 목록을 불러와서 적용하기

crontab -e

위 명령어로 cron 작업 목록 맨 끝에 아래 행 추가하기

@reboot /sbin/iptables-restore < /opt/bitnami/iptables-rules

2022/03/04

굿노트용 매일 날짜가 박힌 일간 다이어리 만들기

지난 주부터 아내가 아이패드미니에서 굿노트를 사용하기 시작했고, 아내 업무용으로 적합한 다이어리 속지를 만들기로 하였다. 기존에 쓰던 아날로그 다이어리가 무난했다고 하여 일단 기존 사용하던 다이어리를 참고하여 만들었는데. 크기는 세로형으로 1688*2157 pt (via )로 지정하였다.

맨 처음 만든 것은 월간 달력.

  1. 키노트에 표를 추가하여 월간 달력 모양으로 만든다. 첫번째 행은 요일을 적고 그 아래 5개 행을 추가하여 날짜를 적었다.
  2. 달력의 하단에는 작은 글상자를 두어 그 달의 주요 일정을 메모할 수 있도록 했다.
  3. 미리 날짜를 한번 적어보고 토요일과 일요일은 흐린 회색으로 글자색을 바꾸었다.
  4. 전체 셀을 선택해서 삭제. 숫자 삭제.
  5. Keyboard Maestro 로 1일부터 탭을 누르면서 (=월간 일정의 셀을 한칸씩 이동하면서) 하나씩 증가하는 숫자를 자동으로 입력하도록 하였다.
  6. 공휴일과 기념일등을 추가로 표시하였다.

그 다음에는 일간 속지를 만들어야 했는데, 처음에는 3월부터 12월까지 매일 날짜가 써진 페이지를 만들 자신이 없어서 월,화,수,목,금이 써 있는 5장짜리 1셋트를 만든 후 매주 이 양식을 복사해서 쓰라고 알려주었다. 월과 일은 직접 애플펜슬로 입력하게.

며칠을 이렇게 쓰도록 했는데 사실 마음이 편하진 않았다. 속된 말로 모양 빠지기도 헸고. 매일 날짜와 요일이 기록된 속지를 만들 궁리 시작.

날짜를 순서대로 입력하게 하는데는 역시 스프래드시트가 제격이다. 구글 스프래드시트에 2022-03-07 부터 몇개의 날짜를 입력한 후 서식 → 숫자에서 "연월일 요일" 형식으로 나오도록 지정했다. 2022년 3월 7일 월요일로 나온다. 입력한 영역을 블럭 지정한 후 귀퉁이를 잡아 끌어 12월 31일까지 날짜와 요일의 목록이 완성됐다. 그런데 업무용 다이어리다보니 토요일과 일요일은 쓸 일이 없다. 주말에 해당하는 날짜는 제거하기로 하였다.

Keyboard Maestro로 토요일 문자열을 찾은 후 그 셀이 포함된 행 전체를 삭제하도록 하였다. 다 지운후에는 토요일 문자열을 일요일로 바꿔서 다시 한번 삭제.

이제 주말을 뺀 평일의 날짜와 요일 목록이 됐다. 포맷과 데이타가 완성되면 이걸 텍스트 형식으로 지정하였다.

키노트에서는 기존에 만들었던 요소들을 모두 마스터 슬라이드로 보내고 날짜와 요일 문자열만 깔끔하게 입력하는 방법을 사용했다. 우선 마스터 슬라이드로 기존 요소를 보낸 후 날짜와 요일이 들어갈 부분에 텍스트 요소를 넣고 포맷 → 스타일 → [v] 텍'스트위치 지정자로 정의"를 선택했다. "표시" 항목은 "날짜 입력" 이라고 적어줬고.

대충 슬라이드 레이아웃이 완성됐으면 이걸 복제해서 여러 장을 만든다. 토일을 뺐으니 200여장 쯤 나왔다. 다시 Keyboard Maestro 를 사용할 때다. 스프래드시트에 준비된 날짜 목록을 하나씩 복사해다가 키노트쪽에 붙여넣는 작업을 자동화 하는 것. 붙일 때는 기존에 마스터 슬라이드에 지정된 스타일이 있으니 "붙여넣고 스타일 일치시키기 (opt+shift+cmd+v)"를 해야 한다.

한 화면 안에 스프래드 시트가 펼쳐진 브라우저와 키노트에서 낱장 페이지를 선택한 화면을 양쪽에 준비하여 cmd + tab 으로 왔다갔다 하도록 배치한다. 위에서 말했듯이 스프래드시트에서 날짜와 요일을 복사한 후 한칸 아래로 내려놓고 alt + tab 으로 키노트로 이동한 후 미리 준비해둔 텍스트 입력 영역에 붙여넣기를 한 후 키노트에서도 다음 슬라이드로 이동 시킨다. 이걸 한 셋트로 해서 계속 반복하면 되는데, 두개의 프로그램을 왔다갔다 해야하고 구글 스프래드 시트인 경우는 웹앱이다보니 지연이 있을 수 있다. 지연에 대한 대비로 0.2~3초씩 pause를 넣어주고 반복횟수도 3~5회 정도로 지정했다. 한 셋트씩 잘 진행되는지 보고 다시 매크로를 실행시켰다.

아마 맨손으로 했으면 지루한 작업이었을 뿐 아니라 중간에 날짜와 요일이 어긋나거나 누락이 생겼을 수 있었을 것이다. 스프래드시트와 Keyboard Maestro를 이용해서 빠른 시간 안에 깔끔하게 다이어리 속지를 만들 수 있었다. 올 연말에 미리 30분만 매크로 돌리면 또 다음 해 속지를 만들 수 있을 것이다.

2022/02/23

집안 IoT 입문 (조명 켜기 & 폰으로 문열기) feat. 스위치봇

야근을 하게 되거나 다른 일 때문에 늦게 귀가하게 되면 고양이 녀석이 깜깜한 집에서 혼자 기다리고 있는게 늘 마음에 걸렸다. 요즘 스마트 스위치들 나온게 많으니 이것저것 좀 찾아봤는데. 기존 쓰이는 스위치처럼 기계적으로 딸깍~ 껐다 켜는게 아니고 살짝씩 누르게 되어 있는 작은 버튼들이 달려 있었다. 생각해보니 스위치는 99.9% 필요에 따라 수동으로 사용할테고 아주 제한적으로 가끔 원격으로 제어만 하면 됐는데. 이렇게 드문 경우를 위해 자주 쓰는 동작을 불편하게 만들고 싶은 생각은 없었다. 아울러 아이폰용 앱이 없거나, 있다하더라도 앱 소개 페이지의 화면 캡춰들을 보면 조잡했다. 무성의하고 후져보이는 앱들. 일단 보류.

그러다가 발견한 것이 스위치봇이다. 계란 반개쯤 되는 크기의 작은 장치인데 옆구리에서 작은 부품이 튀어나와 물리적으로 기존 스위치들을 눌러주는 역할을 했다. 스위치봇 하나만으로는 스케쥴에 맞춰 껐다 켰다를 하거나 블루투스로 원격 제어가 가능했고, 와이파이를 받아 다시 신호를 전송해주는 허브를 추가하면 집 밖에서도 앱을 통해 원격으로 봇 제어가 가능했다. 스위치봇 + 허브를 구입해서 장착해보니 이거이거 훌륭하다. 예정에 없이 귀가가 늦을 때 집 밖에서 집안 조명을 켤 수 있게 되었다. 아침 일어나는 시간에 워치에서도 기상알림 진동이 오지만 같은 시간에 거실 전등이 켜지게 해 두었더니 이 또한 훌륭한 기상알림이 되었다.

어차피 허브는 구입했으니 내친 김에 스위치봇을 하나 더 구입했다. 아내가 집 문을 열고 들어올 때 늘 번호를 누르고 들어오는데 이유는 도어락 열쇠를 갖고 다니기 불편해서였다. 예전부터 그랬기 때문에 블루투스가 지원되는 스마트 도어락으로 바꿀까, 지문인식 도어락으로 바꿀까 고민을 많이 했었는데 이 또한 스위치봇으로 해결되었다. 집안에서 도어락을 여는 버튼에 부착했더니 집 밖에서 애플워치로 도어락을 열 수 있었다. 문앞 도착 3초전에 워치에서 스위치봇 앱으로 도어락 해제를 누르면 문앞에 도착하는 순간 도어락 잠금이 해제된다. 이로써 혹시 지나가는 사람이 도어락 번호보는지 걱정할 필요가 없어졌습니다. 전에는 손이나 몸으로 도어락을 가리고 눌렀고 허수기능으로 다른 숫자를 몇번 더 누르기도 했었다.

추가적으로 허브는 IR리모콘 신호를 복제 & 발신하는 기능이 있다. 잠자기전 티비를 끌 때 리모콘을 찾을 필요없이 이 또한 앱으로 끄거나 "시리야 티비꺼"로 간단히 끌 수 있게 되었다.

일단은 이렇게 설정해서 잘 사용하고 있고, 여름에 추가적으로 온도계를 구입해서 집안 온도를 모니터링한 다음 너무 더울 경우 외부에서 에어컨을 가동해도 될 것 같다.

2022/02/12

특이하게 데이터 용량 표시하는 앱

얼마전 알뜰폰 서비스를 이전하고 해당 업체가 제공하는 앱을 설치했다. 데이타/음성/문자 사용량 확인이 주 목적. 앱을 실행해보니 이번달 가입자라 일할 계산 된 할당량과 사용량이 표시되어 있었다.

통화와 문자는 문제가 없는데, 데이타 표시방식이 특이했다. 이번 달 사용가능한 용량이 "8G 585M"이고 그 중 "7G 423M"이 남았다고 나온다.

보통 이런 경우에 "8.5GB중 7.4GB 남음" 또는 "8585MB중 7423MB 남음" 정도로 표시한다. 하나의 값에 두가지 단위를 사용하니 앞의 값과 단위를 확인하고 다시 뒤의 값과 단위를 확인한 후 더해서 최종 값과 단위을 만들고 이해해야 하는 과정을 거처야 하니 번거롭고 불편하다. 내비게이션에서 "2km 345m 후 우회전 하세요"라든가 " 이 신발 혹시 20cm 75mm 있나요?" 라고 하면 어색한 것과 마찬가지다. 2.3km 후 우회전하라거나 신발 치수가 275mm (또는 27.5cm) 라고 표시하면 보는 사람이 편안하다.

게다가 휴대폰에서 데이타를 사용하는 앱들은 여러 포맷의 데이터를 보내고 받고 백그라운드에서도 새로고침을 하고 있으니 얼마의 데이타를 주고 받는지 사용자가 알기 어렵다. GB 이상의 데이타가 남아 있을 때 1MB단위로 표시할 이유가 딱히 없다. 보수적으로 보아 10 MB단위는 잘라내고 "8.5GB중 7.4GB 남음" 으로 표시하다가 1GB미만으로 남게 되면 그때 MB단위로 표시하면 적당하다.

누구도 사용하지 않는 이런 새로운 방식으로 수치를 보여주는 것이 고객에게 어떤 가치를 주기에 이렇게 표시하기로 했는지 궁금하다.

2022/02/03

2022.2 알뜰폰 번호이동 기록

지난 가을 알뜰폰 번호이동 이벤트 기간이 슬슬 끝나가길래 다른 알뜰폰 서비스로 번호이동 했다.

대략 어느정도 사용했는지 지난 가입기간동안 서비스 이용량을 찾아봤다.

2021.92021.102021.112021.122022.1
데이타 (GB)6.54.74.24.45.6
음성 (분)1131257412570
문자 (개)2568348

최대값이 데이타는 6.5기가, 음성은 125분, 문자는 34개 였으므로 이번 요금제는 10기가, 200분, 100개에 9900원으로 이동하였다. 이 알뜰폰 사업자는 같은 조건, 같은 금액으로 SKT향과 KT향 서비스를 나란히 제공하고 있었는데, mVoIP를 SKT향 요금제에서는 제공하지 않는다고 명시되어 있었고 KT향 요금제에서는 데이타 한도 안에서 제공한다고 명시되어 있었다. 이에, KT향 요금제를 선택.

11개월간 이벤트 요금 적용이니 연말쯤에 갈아탈 요금제 슬슬 찾아봐야겠다.

2022/01/28

2022.1.28 라이트세일 인스턴스 업데이트 기록

연말에 업데이트 했는데 한달도 안되어 다시 업데이트를 했다. 그저께 Let's Encrypt로부터 아래와 같은 메일이 왔는데.

Please immediately renew your TLS certificate(s) that were issued from
Let's Encrypt using the TLS-ALPN-01 validation method and the following
ACME registration (account) ID(s):

https 접속을 위해 Let's Encrypt 인증서를 설치하긴 했지만 "TLS-ALPN-01 validation method"에 해당하는지 여부는 모르겠다. 뭐 인증서 갱신하면 되겠지, 싶었는데 인증서 갱신 방법으로 많이 소개된 Certbot 을 이용하려 했으나 설치가 되어 있지 않았다. (또는 찾지 못하겠거나.)

bncert-tool 로 갱신되나 해봤더니 이미 키가 있으니 기존 키를 사용한다고 하고. 기존키를 수동으로 삭제하자니 아파치 설정도 수정해야 한다고 하여. 오히려 잘됐다 (링크 삭제됨. 하단 주석 참고) 싶어 인스턴스 새로 생성하고 워드프레스 복원하고 인증서 새로 받는 방법을 택했다.

리눅스 배포판ApachePHPDB
2019.12우분투 16.04.72.4.397.3.7MySQL 8.0.17
2021.2데비안 102.4.467.4.13MySQL 8.0.22
2021.12↑2.4.517.4.25MariaDB 10.3.32
2022.1↑2.4.527.4.27↑

[업데이트]@2022.2.2
본문중에 "오히려 잘됐다"는 링크는 원래 트위터로 향하는 링크였는데 지금은 계정 자체가 지워져버렸다. 다행이 당시 메신저로 공유했던 내용이 남아 있어 내용을 적어둔다. '스트레스 덜 받는 마법의 말투 1. 오히려 좋아 2. 그럴 수도 있지 3. 가보자고'

2022/01/25

맥 메뉴바 날씨앱 Meteorologist에서 iStat Menus 로 변경

몇년동안 잘 써오던 메뉴바 날씨 표시 앱을 Meteorologist에서 WeatherBug Forecast Bar iStat Menus로 갈아탔다. Meteorologist가 가끔 날씨를 못받아오고 현재 기온을 9999도씨로 표시할 떄가 있어서다.

아래 캡쳐에서 1과 구름 아이콘이 WeatherBug이고 9999도로 나오는게 Meteorologist .

Meteorologist가 에러날 때는 날씨 서비스를 바꿔봐도 뭘 해도 안되었다. 힐끔 현재 기온만 보는 용도로 써 왔는데 WeatherBug로 마음의 평안을 얻길 기대한다.

[업데이트]@2022.1.27 12:20

메뉴바의 웨더버그 항목을 누르면 열리는 위성사진이 너무 무거워서 Forecast Bar로 갈아탔다.

[업데이트]@2022.1.28 21:00

메뉴바에 시스템 상태를 알려주는 iStat Menus를 구입해서 사용하고 있던 중 메뉴 중 날씨 항목도 있다는걸 잊고 있었다. 아이폰에서 유용하게 잘 사용하고 있는 날씨 앱인 AccuWeather 에서 날씨 데이터를 받아올 수 있고 60분 간격으로 데이터를 새로 받아올 경우 연간 2.74달러이니 Forecast Bar의 같은 서비스 가격 4.99달러에 비해 절반 가격이라 냉큼 구입했다. 뭐 유료로 등록했으니 이제 방황은 끝났다. 열심히 잘 쓰는 일만 남았을 뿐.

고양이 화장실 들락거리며 소변 못보던 일...

한 보름쯤 된거 같다. 야옹이 녀석이 화장실에 갔다왔는데 소변을 잘 못보고 나오는 일이 있었다. 며칠 좀 지켜보자 했는데 점점 증상이 심해지더니 지난 주에는 5분동안 5번 화장실에 들어갔다가 일을 못보고 나왔다. 벤토나이트 모래를 사용하고 있기 때문에 소변을 보면 바로 뭉쳐지는데 소변 흔적이 아예 없거나, 옥수수알갱이 또는 강낭콩 정도 크기의 소변을 보고 나온 것.

화장실에서 나와서는 소변보는 부위가 불편했는지 한참을 그루밍을 한다. 하루하루 지날수록 붉게 허는게 눈에 보였고 결국엔 딱지까지 앉게 되었다.

쉬는 날 녀석을 데리고 병원 문여는 시간에 찾아가서 초음파 검사를 했다. 모니터에 나오는 방광을 보면서 검게 보이는건 소변이라고 했고요. 중간중간 뿌옇게 보이는건 이물질이란다. 원인은 아직 모르겠고 방광염이나 결석 초기일 수 있단다. 목덜미에 주사를 2대 맞았고 가루약을 3일치 받아왔다. 소변도 받아오라고 했는데 방법은 안 알려줬다. 전체적으로 무척 불친절한 병원이다.

아무튼 집에 데려와서 저녁부터 약을 먹이려는데 츄르에 섞어줘도 입도 안댄다. 손가락으로 살짝 찍어서 입술에 묻혀주니 이 녀석 헛구역질을 하면서 침을 엄청나게 게워냈다. 도저히 먹일 수 있는 상황이 아니었다. 사람 먹는 유산균 캡슐을 하나 뜯어서 내용물을 버리고 가루약을 채워보았으나 목구멍 넘기다가 일 날거 같아서 포기했고.

일단 주사는 맞았으니 경과를 지켜보고 다음 휴일에 다른 병원으로 데려가보기로 했다. 꼬꼬마 시절 첫 예방접종 받았던 병원으로.

그건 그렇고, 어떤 원인으로 갑자기 소변을 이렇게 못보게 되었는지 원인들을 곰곰히 생각해 보았다. 녀석한테 바뀐게 무엇이 있을까. 뭐가 안좋은 영향을 끼쳤을까... 인과관계는 명확하게 알 수 없는 일이지만 대략 혹시나...하게 추측가능한게 몇가지 떠올랐고 이렇게 고쳐보기로 했다.

1. 출근시간의 변화

오랫동안 재택근무를 하다가 1월부터 출근을 하게 됐다. 집에 있을 때는 놀아달라면 놀아주고 안아달라면 안아줬다. 오후쯤 되면 옆에서 야옹거리면서 의자 팔걸이를 짚고 일어서서 쳐다본다. 잠투정 같은건데, 이럴 떄는 얼른 방으로 가서 등받이를 하고 45도쯤 누우면 냉큼 가슴팍으로 뛰어 올라온다. 턱을 한참 핥아주고는 앞다리를 쭈욱 펴서 내 볼에 댄 후 낮잠을 잔다. 보통 20~30분 정도 자고나면 또 벌떡 일어나서 내려가고. 매일 이렇게 같이 놀아주던 덩치 큰 녀석이 갑자기 하루종일 사라져버리니 그 상실감과 스트레스가 원인일 수도 있겠다. 그렇지 않아도 출근시작하면서 녀석한테 '갑자기 하루종일 없어져서 어리둥절하지? 니가 이해할 순 없겠지만 미워하거나 싫어해서 없어진거 아니니까 그걸로 상처받지 말아~'하고 다독여주고 나오긴 했다...만 그걸로는 채울 수 없던 공허함이 있었을 수 있겠다.

출퇴근이야 어쩔 수 없는 노릇이니 집에 있는 시간동안 야옹이녀석과 더 많은 시간을 즐겁게 보내려한다. 캣닢 쿠션 장난감도 새로 사서 출근할 때 하나 안겨주고 나오기로 했고. 아내도 낚시대로 더 자주 놀아주기로 하고 잘 실천중이다.

2. 고양이 모래

지금 이 모래는 참 오랫동안 써 왔는데 구입 시기에 따라 품질 편차가 심했다. 예전엔 먼지가 없는 편이었으나 언제부터는 새로 구입한 모래를 부을때부터 버섯구름처럼 먼지가 피어 올랐다. 먼지 흡입이 아무래도 건강에 좋을리는 없었을거 같았고. 먼지가 적다는 모래로 교체했다. 아예 안날 수는 없겠지만 다소나마 줄어도 괜찮을 것 같다. 저번 모래도 그렇지만 같은 모래라도 사용자마다 평이 다 달랐다. 먼지가 적다, 많다, 잘 뭉쳐진다, 부서진다, 냄새를 잘 잡는다, 냄새를 못 잡는다 등등. 일단 기존 모래에서 나는 먼지를 그대로 봐줄 수는 없기에 여러 모래들로 시험을 해봐야겠다.

3. 정수기

세번째는 고양이 정수기인데, 물통에 물을 담아두면 펌프로 물을 끌어올려 윗쪽 수반에 물을 흘려주고 중간에 뚫린 구멍으로 물을 다시 물통으로 내려보내는 구조다. 물이 내려가는 구멍 아래쪽에는 필터가 있어서 물통으로 되돌아가는 물이 자연스럽게 걸러지게 되어 있고. 작년 연말에 구입하고 처음 보름이상은 적응하지 못하길래 중고로 내다 팔까... 고민까지 했었다. 그러다 어느날 보니 잘 먹고 있었다. 필터로 걸러주고 있으니 물은 3~4일에 한번씩 다 쏟아내고 새로 부어주었다. 그러다가 문득 든 생각이, 이 제품의 제조사는 스마트폰 주변기기로 유명한 회사인데 과연 정수필터도 잘 만들까? 정수필터의 품질은 검증이 된 것일까? 라는 의문이 들었다. 이중 필터를 장착하고 있지만 물 교환하면서 보면 물통에 고양이털이나 먼지들이 떠 다녔던 점도 필터의 성능을 의심케 하는 이유였다.

결국 필터를 제거했다. 정수기는 됐고 물 순환기로 사용하기로 한 것. 필터 믿고 사나흘만에 물 교체해주지 말고 필터 없이 매일 정수기를 세척하고 새 물로 갈아주기로 하였다. 전용 수세미와 세척솔도 마련했다.

대략 이 정도가 야옹이 녀석의 건강에 나쁜 영향을 주었을 가능성이 있을지도 모르는 대상들과 이에 대한 나름의 해결책들이다.

일주일 정도 지켜본 결과 다행이 상당히 상태가 좋아졌다. 거의 예전 상태를 회복한 것으로 보인다. 흔히 감자라고 표현하는, 모래로 뭉쳐진 소변덩어리도 큼직하게 원상복구 됐다. 위에서 말한 조치들을 시행한지 얼추 3일 정도 지나면서부터 좋아지기 시작했다. 모래는 기존 모래가 있어서 아직 새 모래 교체를 하지 않았고. 기존 모래 남은걸로 교체해서 쓰는 중이고 짧게 사용하고 버린 후 새 모래를 사용해볼 것이다.

여러 원인 중 아무래도 정수기가 이번 사달의 원인이 아니었을까... 하는 의심을 지울 수가 없다. 확신할 수 없는 필터를 믿고 게으름에 정당성을 부여하고, 물때가 생겼던 걸 간과했던 안일함에 대해 반성한다. . 무엇보다 잘 회복해 준 야옹이녀석에게 고마울 따름이다.

2022/01/02

워드프레스→구글드라이브→NAS 이중백업하기

워드프레스 백업 플러그인 중에 UpdraftPlus 라는 걸출한 프로그램이 있다. 원래 DB는 phpmyadmin (없으면 설치해서)으로 들어가서 백업받고 새 서버에 올려 복원하고 파일은 따로 ftp로 다운받아 업로드해왔는데 그럴 필요없이 한 플러그인으로 다 처리가 가능하다. 라이트세일에서 APM 업그레이드를 위해 새 인스턴스로 옮길 때마다 참 유용하게 사용하고 있기도 하고. 흔한 말로 영혼까지 백업,복원한다는 말이 딱 맞는다.

현재 무료버젼으로 1일 1회 백업을 하고 있다. 백업할 수 있는 파일을 다 백업해보면 DB, 업로드한 파일, 플러그인, 테마, 기타 이렇게 총 5개의 zip 으로 백업을 하게되고, 워드프레스만 공홈에서 설치한 후 UpdraftPlus 깔고 복원시키면 백업받았을 당시의 워드프레스가 고스란히 복원된다.

백업을 보니 이 5개 zip 파일이 약 350MB 정도를 차지하고 있다. 백업 목적지를 구글 드라이브로 지정해두었고 매일 백업이니까 구글 드라이브에 이 용량이 매일 쌓여 나간다. 여태까지는 최근 10개의 백업을 보관하도록 해 두었다. 약 3.5기가 정도 용량. 이번 인스턴스 변경 후에는 최근 3개까지로 변경했다. 구글 드라이브 용량 1기가 정도만 차지하게 되는 셈이다.

한가지 걱정은 불의의 사고로 DB나 파일에 문제가 생겼을 경우 그 사실을 알아차리지 못하고 3일이 지나버리면 망가져버린 DB와 업로드된 기존 파일들이 손실된 채로 그대로 백업되기 때문에 구글 드라이브의 백업 폴더에 가봐도 망가진 DB와 파일만 있을 가능성이 있었다. 사실 예전 10일간 백업 보관정책을 사용할 때에도 같은 문제가 있었겠지만 3일로 줄여버리면 불의의 사고 시에 복구할 수 있는 기한이 더 짧아지기 때문에 대책이 필요했다.

이에, 이미 갖고 있는 시놀로지 NAS의 클라우드 싱크 기능을 사용하니 간단히 해결책이 마련되었다. 무료버젼 UpdraftPlus 를 사용할 경우 원격 드라이브의 백업 폴더는 UpdraftPlus니까 이곳을 원격 경로로 지정하고 로컬 경로명을 적당하게 지정 또는 생성해준 후에 스케쥴을 지정해주면 된다.

구글 드라이브로 백업이 완료되면 NAS가 그 디렉토리를 보고 있다가 변동사항이 생긴걸 감지하고 바로 NAS로 내려받는다. 이 작업을 언제 실행할 것인지를 스케쥴 지정할 수 있긴하나 현재는 지정해두지 않았다. 개인용 NAS라 대부분의 시간은 한가하기 때문이다. 전송도 1분 이내에 끝난다.

백업 중 동기화 방향은 "원격 변경사항만 다운로드"로 지정했다. 원시 파일은 계속 구글 드라이브에 생성될테고 우린 그게 자동삭제되기 전에 NAS로 받기만 하면 된다. 여기서 중요한 옵션 하나는 "파일이 소스폴더에서 제거될 때 대상폴더에서 해당 파일을 제거하지 마십시오."를 꼭 켜야만 한다. 원격 서버에서 최근 3일치만 남기고 계속 오래된 백업을 자동으로 지워나가는 것에 대한 대비책으로 매일 백업분을 NAS로 다운받는 것인데, NAS에서도 원격서버를 따라 4일 이상된 백업 파일을 제거하게 되면 이 이중백업을 하는 의미가 없다.

이렇게 해두면 라이트세일에 설치한 워드프레스에서는 아침 08시30분에 UpdraftPlus가 구글 드라이브로 백업을 받고 최근 3일치만 남기고 계속 오래된 백업은 삭제하며, 그날 그날 백업이 구글드라이브에 저장되는 순간 NAS에는 계속 땡겨와서 2번째 백업을 저장한다.