반응형

django can't find new sqlite version? (SQLite 3.8.3 or later is required (found 3.7.17))


centos에서 yum 으로 설치하고 업그레이드 명령을 해봐도 안됩니다.


알고보니 centos yum repo 에 3.7.17 버전까지 밖에 업로드 안되어 있다네요..

다른 repo를 추가하면 되나? -_-?;;


결국은 그냥 sqlite 사이트가서 직접 설치하면 됩니다.


cd /opt

wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz tar -xzf sqlite-autoconf-3280000.tar.gz
cd sqlite-autoconf-3280000 ./configure make sudo make install


그랬는데도 자꾸 yum에서 3.7.17이 설치되어 있어서 그런지 자꾸 3.7.17이 설치되어 있다고 떠서 아래 방법으로 다시 함


반응형
반응형

Install: rjsmin.c fatal error: Python.h: No such file or directory


결과적으로보면 Python.h 를 찾을 수 없다는 건데

검색해보면 죄다 python-dev 나 python3-dev를 설치하라고만 나옵니다.


계속 했는데 안되네...?


계속 검색...


그리고 찾은 해답은

yum install python3-devel 

입니다.


왜 centos만 dev가 아니고 devel 이라 이 난리인지 ㅠ

반응형
반응형

npm이 뭔지도 모르는 보안쟁이가 요즘 개발한다고 이것저것 해보고 있습니다

사실 개발이라기보단 오픈소스 설치하고 그 위에 플러그인 덕지덕지 붙여서 api 연동하고 alert 주는 거지만..

(slack 설치형 버전 mattermost)


그래서 설치는 다 끝냈고

이제 유용하게 쓰기위해 plugin 이라 불리는 것들을 하나하나 덕지덕지 붙여가며 테스트해보고 있는 도중..

todo 를 설치해서 일정관리까지 되도록 해보려고 하는데

설치하는데 난관에 부딛혔습니다


분명히 github에서 설치할때 

npm install --save mattermoster-todo-plugin

하면 된다고 되어 있엇는데 안됩니다... 된장

npm errnpm install err

그래서 잠시 멀어졌던 구글링과 친해지는 과정을 거치던 도중..

npm에도 지역패키지(local package)와 전역패키지(global package)가 있는것을 알게 되었습니다.


결론은.. 그냥 설치하려고 했더니 발생했던 아래 에러..

255 error Linux 3.10.0-1062.12.1.el7.x86_64

256 error argv "/usr/bin/node" "/bin/npm" "install"

257 error node v6.17.1

258 error npm  v3.10.10

259 error code ETARGET

260 error notarget No compatible version found: mattermoster@^1.1.0

260 error notarget Valid install targets:

260 error notarget 1.0.0

261 error notarget This is most likely not a problem with npm itself.

261 error notarget In most cases you or one of your dependencies are requesting

261 error notarget a package version that doesn't exist.

261 error notarget

261 error notarget It was specified as a dependency of 'mattermoster-todo-plugin'

262 verbose exit [ 1, true ]

이게 지역패키지 설치여서 그랬던 겁니다..


사실 npm에서 지역으로 설치하나 전역으로 설치하나.. 그 차이를 모르겠습니다.

어짜피 얘가 그냥 모듈형(패키지)로 쓰이는 거고 데이터는 각각의 내부 동작에 의해 발생하는거 아닌가...? 싶은데..


아무튼 결론은 전역설치를 통해 해결했습니다.

전역으로 설치하니 그냥 되네요.


설치 방법은 기존 설치명령어에 -g 옵션을 붙이는 겁니다.

npm install --save mattermoster-todo-plugin -g


반응형
반응형

아래와 같이 에러가 발생한다면.. 

{"level":"error","ts":1583849867.0578396,"caller":"app/plugin.go:160","msg":"Failed to start up plugins","error":"mkdir ./client/plugins: no such file or directory"}
{"level":"error","ts":1583849870.5054815,"caller":"mlog/log.go:175","msg":"Plugins have been disabled. Please check your logs for details.","path":"/api/v4/plugins","request_id":"t5ra71kjqtgabk164a3kuptm6y","ip_addr":"180.83.200.174","user_id":"frrwwzy1yffff8x9p5zk3g6s9o","method":"POST","err_where":"installPluginLocally","http_code":501,"err_details":""}
{"level":"error","ts":1583850002.7731516,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:10484: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850002.8195038,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:42472: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850002.822119,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:44706: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850002.8269546,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:64101: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850002.831928,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:63261: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850029.6849406,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:2546: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850029.7084942,"caller":"http/server.go:3053","msg":"http: TLS handshake error from 111.111.111.111:13408: acme/autocert: missing server name","source":"httpserver"}
{"level":"error","ts":1583850254.3201606,"caller":"mlog/log.go:175","msg":"Plugins have been disabled. Please check your logs for details.","path":"/api/v4/plugins/webapp","request_id":"juwm3get8bgatyzq3kty1yi3kc","ip_addr":"180.83.200.174","user_id":"frrwwzy1yffff8x9p5zk3g6s9o","method":"GET","err_where":"GetActivePluginManifests","http_code":501,"err_details"


marketplace가 열리지 않을 것이고 에러가 발생할 것입니다

mattermost plugins have been disabled. please check your logs for details


에러를 확인하는 방법은 서버로그를 직접 보거나


systemctl status mattermost -l

을 입력하면 됩니다


분명히 plugin을 enable 했는데 왜 disable 되었다고 하면서 mkdir ./client/plugins 할 수 없다고 할까요..?


수 많은 검색을 통해 드디어 해결방법을 찾았습니다

삽질/검색은 3시간 넘게 했는데 의외로 간단하게 해결되었네요..


방법은 mattermost,service 를 찾아서 그 안에 있는 WorkingDirectory의 값을 변경해주면 됩니다

asis : WorkingDirectory=/opt/mattermost/bin/

tobe : WorkingDirectory=/opt/mattermost/


근데 이걸 진작에 적용해봤는데 안됐었는데...... 이상해서 다시 적용하니 됩니다..ㅠㅠ

알면서도 제가 당한 이유는..

mattermost.service 파일이 한개가 아니였어요..

물론 리눅스에 대한 이해도가 조금 떨어져서 그런것일 수도 있습니다..


제 서버에는 

[root@VCDCO-SECMONDEV mattermost-plugin-analytics]# find / -name mattermost.service              

/sys/fs/cgroup/systemd/system.slice/mattermost.service

/etc/systemd/system/multi-user.target.wants/mattermost.service

/etc/systemd/system/mattermost.service

/usr/lib/systemd/system/mattermost.service

이렇게 4개나 있었고

처음에 /usr/lib/systemd/system/mattermost.service 를 수정했었는데 안됐었어요.. ㅠㅠ

usr에 있는걸 왜 고친건지....


/etc/systemd/system/mattermost.service 파일을 수정하니 정상적으로 marketplace가 열립니다!! 

혹시라도 고생하실 분들을 위해 공유 합니다.. ㅠㅠ

marketplacemattermost plugin marketplace


이제 저는 plugin 설치하러.. :P

반응형
반응형

permission deniedpermission denied

프로그램을 실행할때 이렇게 특정 포트 listen 상태를 못만들고

permission denied 라고 에러가 발생하는 경우가 있네요...


80 포트를 왜 권한이 없어서 못여는 거야?

라고 생각하고 검색을 조금 해보니 1024 포트 이하를 사용하고 싶으면 setcap 이라는 명령어를 써야 되는거였어요


아마 보안을 위해 웰논(well known)포트는 제한을 걸어놓은게 아닐까 싶네요

근데 이게 무슨 효과가 있나.. 싶은 느낌..?

자주 쓰는 웰논포트 막아놓는다고 보안성이 강화되는건 아닐텐데.. 아님 프로그램 충돌 방지를 위한건가..


아무튼.. 주저리 주저리 길었는데


setcap cap_net_bind_service=+ep 경로(ex, /bin/mattermost/bin/mattermost)

반응형
반응형

mattermost 설치 이후 컴퓨터 웹브라우저를 통하면 접속이 잘 되는데

핸드폰에서 APP(앱)을 통해 접속하면 접속이 안되더라고요


에러 메시지가 정확히 기억이안나는데.. (이미 해결해버려서 ㅠㅠ)

서버에 연결할 수 없다고 뜨고

패킷캡쳐해보면 400 bad gateway 가 떴어요


뭔가 이상하다.. 이상하다.. 생각하면서 2시간의 삽질끝에 알아냈습니다.


1. mattermost 앱이 2개다.

   - 5.대 버전의 mattermost 서버에 접속할때 쓰는 앱을 다운로드 받아서 사용했던게 문제였습니다.

   - 3.대 버전의 mattermost 서버에 접속하는 경우 playstore 에서 mattermost clasic 을 다운로드 받아서 접속하셔야 합니다.

2. 그렇다면 내가 설치한 mattermost 버전을 확인해야 한다.

   - mattermost 버전확인하는 방법은 어제 글을 별도로 썼습니다.

     mattermost version check 방법[여기 클릭!!]


버전을 확인했는데 3.0.0 이면 3.0.3으로 먼저 업그레이드를 하고 그 뒤로는 한번에 올리셔도 된다고 합니다.

저는 확인해보니 3.6.0이여서 한번에 바로 올렸어요~

mattermost 5.20.1 버전mattermost 5.20.1 버전


version upgrade 방법은 별도로 포스팅 하겠습니다


그렇게 버전을 5.20.1로 업그레이드 했더니 핸드폰에 설치했던 mattermost 앱에서 정상 접속 됩니다!!


혹시라도 핸드폰 어플에서 접속이 안되시는 분들은 mattermost 서버 버전을 확인해보시기 바랍니다

서버 버전을 upgrade 하면 mattermost clasic 어플에서는 더 이상 로그인이 안되고 팅깁니다.



반응형
반응형

mattermost version 확인방법 찾아보는데 잘 안나오네요


mattermost 앱에 들어가시면 확인할 수 있는 부분이 있다고 합니다


mattermost versionmattermost version


좌측 메뉴는 경우에 따라 조금씩 다르지만 제일 상단쪽에 log 관련 메뉴를 찾으면 됩니다.

사진은 5.대 버전이고 3.대에서는 그냥 logs 라고 되어 있던걸로 기억합니다.

(방금전인데 기억이 안나는...)


보시면 3.6.0이라고 버전이 나오네요.


웹사이트에 올라온 글 보고 설치하셨으면 대부분 3.대 버전으로 설치되셨을꺼예요

(제가 그랬듯이.. ㅠㅠ)


꼭!! 공식 사이트에 가셔서 다운로드 받으시거나 github 가셔서 다운 받으세요!!


5.대로 올리셔야 됩니다.. 꼬옥...

지금 글쓰는 시간 기준, 최신버전은 5.20.1 입니다~



추가

명령어가 있었네요.. 바보 같군요

/opt/mattermost/bin/mattermost version

반응형
반응형

O365 및 AWS와 같이 클라우드 기반으로 동적IP가 할당되고 수시로 변경되는 경우, 방화벽에서 IP만 가지고 차단하는것은 불가능합니다.

하물며 도메인도 여러가지로 변경이 되는 것은 더 큰 문제!!


기존 방화벽 기반으로 처리를 하던 기존 수 많은 담당자들은

Maybe.. 

그냥 Any Open일 거예요. 100%!!


매번 변경되는 IP를 쉽게 크롤링(수집)하고 수집된 정보를 적용(활용)할 수는 없을까..?

라는 고민으로

방화벽 자동화의 첫번째 발걸음!

그 시작을 크롤링으로 시작합니다.


minemeld를 선택한 이유.

팔로알토에서 제공하는 오픈소스입니다. 믿을만하죠?


팔로알토에서 Autofocus 라는 서비스를 유료로 제공하는데 그 서비스의 일부로 minemeld를 넣어서 제공할 만큼 minemeld를 활용하고자 하는 것 같습니다.


자.. 그럼 이 minemeld라는 녀석을 어떻게 활용할 수 있을까요?

팔로알토는 친절하게도 사용할 수 있는 상황(CASE)에 대해 정리하고 있네요.

저 중에서 다양한 용도로 사용할 예정입니다.


자 그럼.. 이 minemeld를 어떻게 설치하느냐?

MineMeld Github 사이트 링크 [클릭]


위 github에서 다운로드 받아서 설치하거나 팔로알토에서 제공하는 이미지파일을 받아 VM 환경에 올리면 됩니다.

install minemeld설치방법

4가지 설치방안을 제공하고 있으니 아래 링크 클릭해서 각자 원하는 설치방법으로 설치!!

MineMeld 설치 링크 [클릭]


설치하는 방법은 위에 링크에 잘 나와있으니 별다른 말을 첨언할게 없어요~ 따라만 하시면 됩니다.

이렇게 설치가 완료되면 웹데몬이 떠서 웹서비스 형태로 동작하게 됩니다.

바로 이렇게!!

logiin minemeldlogiin minemeld

ID/PASS는 default로 admin / minemeld 로 되어 있으니 참고~!!

로그인하면 대시보드를 확인 할 수 있습니다.

minemeld dashboardminemeld dashboard

이미 꽤 오래전부터 운영하고 있었기 때문에 수집되고 있는 IP가 꽤 많습니다.


설치하면 기본적으로 수집하는 IP들도 있고 원하는 것들은 추가해서 볼 수 있고

크롤링하는 inteval은 각각 지정할 수 있는데 대부분 1~20초, 600초, 3600초 정도로 설정되어 있는데 이 값은 바꾸면 되지만 굳이 바꿀 이유를 찾지 못해 그냥 쓰고 있습니다.

minemeld nodeminemeld node

이건 하나의 예시입니다.

AWS IP는 인터넷에 공개되어 있어요

AWS IP Range(범위) [클릭]


하.지.만. JSON 형태로 되어 있어 쓰려면 가공이 필요합니다.

minemeld는 수집과 가공을 동시에 제공하는데, 다른 솔루션을 통해서도 할 수 있지만 처음부터 minemeld를 써서 그런가..

이게 굉장히 편하더라고요.


위에 사진에서도 있지만

1. 제일 첫번째 녹색은 miner. 수집하는 노드

2. 두번째 가운데 있는 분홍색은 processor. 가공하는 노드

3. 제일 마지막으로 오른쪽에 있는 노란색은 output. 결과물을 출력해주는 노드


외부 인터넷에 있는 IP들을 수집하고, 가공(분류)하고 출력(웹형태)해주는 기능을 하는게 바로 이 minemeld의 정체!


저런식으로 AWS의 서비스와 리전을 기반으로 모든 IP들을 구분하고 사용하고 있습니다.

방화벽 설정을 할때 ANY를 안쓰기 위한 방법 중 하나라고 할까요..?

AWS IP RANGEAWS S3 US-EAST-2 IP RANGE

minemeld에서는 이렇게 출력을 해줍니다.


팔로알토에서 제공해주는 오픈소스이기 때문에 팔로알토 방화벽에서 바로 적용이 가능하며 Objects > External Dynamic Lists 에서 객체화 시킬 수 있습니다.

paloalto aws ip 적용방법external dynamic lists 활용

국내 팔로알토 엔지니어들(코리아 제외)은 이 기능(External Dynamic Lists)을 "차단"을 하는 기능이라고 말하더라고요

굉장히.. "차단", "Deny"에 국한해서 이야기를 합니다. 왜 그런 이야기를 하는지는 모르겠어요. 누가 그렇게 가르쳐주나?


실제로 화면상에도 보면 알겠지만 malicous ip, high risk ip 들을 별도로 정의 해줍니다.

하지만 나는 blacklist가 아닌 whitelist 기반으로 쓸거예요!!

firewall policy방화벽 정책

이렇게 적용할 수 있습니다.

물론 일부는 IP는 ANY로 두고 URL Category만 지정해서 하면 되지 않느냐~ 라고 하실 수 있지만

제 개인적인 생각은 이렇습니다.


1. ANY 객체를 쓰고 싶지 않다.

   - ANY 객체를 쓰면 정책 최적화 과정에서도 굉장히 불편합니다.

2. URL Category만 쓸 경우 오류가 있다.

   - URL까지 확인되기 위해 3-way handshake가 발생합니다. 웹인지 확인해야되니까요. 즉, 통신은 이루어 집니다.

   - 환경에 따라 일부 트래픽들이 URL Category로 식별되지 않아 차단되기도 합니다.


minemeld prototypeminemeld prototype

추가로 악성도메인이나 IP, URL 정보를 수집할 수 있는 프로토타입들이 있으니 참고하셔도 좋을 것 같습니다.

아니면 저처럼 프로토타입을 추가해서 사용하는 것도 좋습니다. :)


이렇게 IP크롤링 시스템 구축이 끝!

적용까지 완료!!


다음엔 다른걸 자동화 해봅시다. 하나하나 자동화하여 업무의 80%가 자동화 되는 그날까지!!


#보안, #security, #자동화, #automatic, #방화벽, #크롤링, #팔로알토, #Minemeld, #externaldynimiclists

반응형
반응형

문득.. 네이버에서 내 블로그를 검색해보니 아래와 같이 나오더라고요

 

한가지 눈에 밟히는 것이 있었는데..

 

모든 글 제목이..

 - 블로그명 :: 글제목

이런 식으로 나오더라고요..?

 

길게 나오다보니 정작 중요한 글 제목이 짤리는 경우도 있고

아무래도 안좋을 것 같더라고요

 

그래서 최적화를 위해 앞에 블로그명이 나오는 부분을 지워보고자 합니다.

 

일단 관리자페이지에 들어가서 좌측 메뉴에 있는 꾸미기 -> 스킨 편집을 선택 합니다.

그 다음 좌측 상단에 있는 부분을 클릭하시고 "글"을 선택 합니다.

그리고 우측 상단에 html편집을 클릭!!

 

그리고 "컨트롤 + F"를 눌러서 :: 을 찾습니다.

그러면 조~기 보이네요? ㅎㅎ

<title>보안쟁이-회사원의 일상 :: '작업공간' 카테고리의 글 목록 (2 Page)</title> 이 보이실꺼예요

 

대부분 윗부분에 있으니 찾기 쉬우실 겁니다.

여기서 보안쟁이-회사원의 일상 ::을 지워주면 됩니다.

 

<title>'작업공간' 카테고리의 글 목록 (2 Page)</title>

 

이렇게~ 수정하시면 됩니다. ㅎㅎ

그리고 우측 상단에 있는 적용 클릭~

 

그러면 이제 적용이 끝났습니다~

이제 블로그에 가서 보면

짜잔~

이제 글 제목만 나오게 되네요~!!! 굿굿

 

 

 

반응형
반응형

우연히 알아낸 에러코드 노출 취약점..


정보들 다 긁어낼 수 있을지는 확인해봐야되는데..

잠을 자고 싶으니 PASS~~


물론.. 담당자에겐 연락했으니 조치가 취해지겠지요..


개인정보 조심해야되는데.. ^^;;




반응형

+ Recent posts