글쓰기 메뉴

UFW 방화벽 사용하기 - 우분투 14.04

UFW 는 iptables 의 설정 도구로 Uncomplicated Firewall 이란 뜻이며 문자 그대로 복잡하지 않은 방화벽 설정을 위해 사용된다.


서버는 어떤 목적이든, 공인 IP가 있든 없든 외부에서 접근이 가능하다면 보안 위험에 노출될 수 밖에 없다. IDC 레벨이나 네트워크 구성에서 하드웨어/소프트웨어 방화벽이 이미 사용되고 있을 수 있지만 그런 경우에도 각 서버의 방화벽 설정은 매우 유용하다(고 생각한다)


이런 목적으로 사용하기에 iptables 가 매우 적합하나 설정과 관리가 꽤나 복잡하여 나 같은 사람은 필요할 때 검색으로 룰을 설정했다가 어느 순간 뭔가 동작이 이상하면 iptables 전체를 내려버리는 괴상한 방식으로 운영하게되니 계륵이 아닐수가...


그런 의미로 UFW는 신세계! 방화벽이 미적용된 서버가 있다면 당장 UFW를 올려보자!


설치

$ sudo apt-get install ufw


기본 정책 설정 (들어오는 패킷은 차단, 나가는 패킷은 허용)

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing


ssh, http, https 허용 (ssh 포트를 변경해서 사용한다면 반드시 직접 포트를 입력하자)

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https


포트를 변경해 사용하거나 특정 포트를 허용

$ sudo ufw allow 8080


방화벽 ON!

$ sudo ufw enable

위의 명령을 실행하면 "현재 ssh 연결에 문제가 생길 수 있습니다. 적용하시겠습니까?" 뭐 이런 질문이 나온다. ssh 포트는 허용으로 변경했으니 "y" 를 입력해 진행할 수 있다.


확인

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)


ufw 가 실행되고 있지 않다면 아래와 같은 결과가 리턴된다.

$ sudo ufw status verbose
Status: inactive


방화벽을 끌 때는 아래와 같은 명령어를 입력한다

$ sudo ufw disable




등록된 규칙을 삭제할 때는 2가지 방법이 있다.

첫번째는 등록 시 사용한 규칙을 그대로 입력하는 방법

$ sudo ufw delete allow ssh
$ sudo ufw delete allow 8080


두번째는 각 규칙의 번호를 확인하고 번호로 지우는 방법

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 22 (v6)                    ALLOW IN    Anywhere (v6)
[ 5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

등록된 규칙의 번호는 줄 맨앞에 있는 [숫자]


2번 규칙 80/tcp 를 지우려면

$ sudo ufw delete 2


새로운 규칙의 추가는 동일한 방식으로 가능하다

$ sudo ufw allow 21


포트 뒤에 tcp 나 udp 를 지정할 수 있고 지정하지 않는다면 모두 적용된다

$ sudo ufw allow 21/tcp


새로운 설정을 적용하려면 disable > enable 해도 좋고 아래와 같이 reload 가 가능하다

$ sudo ufw reload




특정 IP만 허용할 경우 

$ sudo ufw allow from 192.168.0.101


특정 IP에게 특정 포트만 허용할 경우

$ sudo ufw allow from 192.168.0.101 to any port 8080


포트의 범위를 규칙으로 사용할 경우

$ sudo ufw allow 9200:9300/tcp


특정 아이피에만 일정 범위의 포트를 tcp 패킷만 허용할 경우

$ sudo ufw allow from 192.168.0.101 to any port 9200:9300 proto tcp


서브넷을 특정 포트에 허용할 경우

$ sudo ufw allow from 192.168.0.0/24 to any port 8080


이 정도면 내가 써봤던 명령어는 다 정리한 것 같다.



어디서 왔지?
[["www.google.co.kr", 1490], ["mail.naver.com", 1], ["www.google.com", 51], ["adguard.com", 1], ["www.google.hr", 1], ["duckduckgo.com", 1], ["yandex.ru", 8], ["collabo.beatthemarket.co.kr", 1], ["blog.naver.com", 5], ["www.google.com.mm", 1], ["ljj9812.synology.me", 1], ["synd.kr", 22], ["www.google.com.kh", 1], ["search.naver.com", 2], ["www.google.com.ar", 1], ["www.google.com.py", 2], ["www.google.com.br", 1], ["itrepreneur.tistory.com", 2], ["www.naver.com", 2], ["www.google.com.ph", 5], ["search.daum.net", 2], ["www.google.co.jp", 6], ["unknown", 3356], ["www.google.ca", 3], ["www.google.co.uk", 1], ["www.google.de", 2], ["www.google.co.nz", 1], ["cafe.naver.com", 1], ["getpocket.com", 1], ["com.google.android.googlequicksearchbox", 1], ["www.google.com.hk", 1], ["www.google.by", 1], ["www.yalleemate.com", 10], ["www.bing.com", 1]]
다른 글들
0 0

Ubuntu 14.04 - Apache Tika 설치

아파치 티카는 PPT, XLS, PDF 등 수천종의 파일에서 텍스트와 메타정보를 추출하는 툴킷이다.
아파치 소프트웨어 재단의 프로젝트이며 아파치 루씬의 서브프로젝트로 시작됐고 현재는 독립되었다.
티카는 Apache Maven2로 빌드가 가능하나 여기서는 바이너리를 사용한다.
소스나 바이너리 다운로드 URL은 다운로드 페이지에서 확인하자
tika-app
콘솔에서도 유틸리티처럼 사용이 가능하고 --server 옵션으로 서버모드로도 사용이 가능하다. NetCat 등의 커맨드를 사용해 처리결과를 받을 수 있다.
tika-server
보다 서버스러운(!) 서버모드로 RESTful API 를 제공한다.
구동
JRE 는 당연히 설치되어 있어야하고 -jar 옵션으로 간단하게 구동된다. 기본 포트는 9998
구동 확인
브라우저에서 9998 포트로 접속하면 URL 정보가 출력된다.

tika-server 는 PUT 메쏘드만 받으며 리퀘스트 body 로 파일만을 받는다.
Meta 
Text
HTML
추가로, 내가 쓰는 Typhoeus 에서는 아래와 같이 사용할 수 있다.
Apache Tika : http://tika.apache.org/
TiakJAXRS Wiki : http://wiki.apache.org/tika/TikaJAXRS
0 0

Rails 모든 연결 SSL 로 변경하기 + Nginx Redirect

Let's encrypt 와 EFF 그리고 여러 스폰서들과 개인기부자들 덕분에 간단하게 SSL 을 적용했으니 이제 모든 http 연결을 ssl 로 돌려보자.
Rails 에서는 Controller 단위에서 force_ssl 을 사용할 수도 있고 보다 와이드하게 전체 설정에서 다룰 수도 있다.
씬디는 https 변경에 다른 별 이슈가 없기때문에 config/environments/production.rb 에 force_ssl 을 설정했다.
이렇게 설정하면 route 룰을 포함해 모두 ssl 연결로 변경된다.
NginX 나 Apache 등을 리버스 프락시로 구성하여 백단에 서버들에게 넘겨준다면 다음의 헤더를 반드시 포함시켜야한다.
Rack 서버는 1) 443 포트로 연결되었는지 2) ENV['HTTPS'] 값이 "on" 인지 3) X-Forwarded-Proto 헤더가 "HTTPS" 인지 3 가지를 보고 판단하기 때문에 리버스 프락시 뒤에 있는 puma 나 unicorn 등은 443 포트가 아닌 다른 포트나 유닉스소켓으로 통신하기 때문에 HTTPS 연결인지 확인하지 못하고 계속 리디렉션 시키게 된다.
NginX 나 Apache 단에서 301 리디렉션으로 연결 프로토콜을 변경할 수도 있겠다.
80 포트를 수신하는 서버 설정을 넣고 해당 설정에서는 http 를 https 로 변경하여 리디렉션시키면 443 을 리스닝하고 있는 아래의 설정이 요청을 수신하게 된다. 
끝.
1 2

삼성 9, 엘지 그램, MS 서피스 프로 4
어떤 노트북을 살까!

1) 애플의 맥북을 사지 않는 이유가 있고
2) 작업용 메인 노트북이지만 휴대가 필요하고
3) CPU 기준으로 i7 정도를 알아보고 있다면
현 시점에서 대부분 아래 3가지 모델로 압축되는 것 같다.
그리고 머리 쥐나게 고민하겠지.
오늘 특별히 형이 셋 중 무엇을 골라야할지 알려주겠다!
스펙빠 : MS 서피스 프로 4
가성비 : 엘지 그램
어중간 : 삼성 9
특별히 설명도 해주겠어.
서피스가 셋 중에 유일하게 6세대 i7 (그램과 나인은 5세대)
서피스가 셋 중에 유일하게 메모리 16GB 모델이 있음 (235만원)
서피스가 셋 중에 가장 가벼움 - 786g
서피스는 OS 가 Windows 10 Professional
필기감 괜츈하고 노트와 메모 용도로 아주 적합한 펜 있음
전원 어댑터에 충전용으로 사용할 수 있는 USB 포트 하나 있음 
But...

본체에 USB 포트가 단 하나
OS 미포함 구매가 가능함
OS 포함해도 온라인으로 150만원 정도면 OK. 
그냥 쌈.
개무난
스펙만큼 성능나옴
디자인과 마감 무난함
셋 중에선 제일 무겁지만 휴대하기 무난한 무게 (1.2~1.3)
서비스센터 좋음
4 0

피들리

최근 봐야할 사이트가 많아서 피들리를 처음 써봤는데 정말 편하고 좋다.
(피들리는 rss서비스라고 하네요. )
분류도 쉽고 효율성도 올라가고 피들리를 쓰고나서 플립보드 앱은 바로 지웠다. 설치하고 사용을 거의 안했는데 
피들리는 많이 쓸거 같은 느낌.
feedly.com

인터넷 검색 많이 하시는 분은 한번 사용해보세요.
저는 인터넷 하면 창에 기본탭이 10개 이상입니다. ㅋㅋ 중독인가봐여
0 0

Rails4, Elasticsearch
관계 모델 및 Method 인덱싱

searchkick 이나 tire(retire) 등을 사용하지 않고 elasticsearch-model 을 사용하는 경우 mapping 을 사용해 인덱스를 설정할 수 있다.
내 경우엔 다국어 사용을 위한 store 컬럼들과 관계모델의 컬럼들, 그리고 일부 메쏘드를 인덱스에 포함시켜야했다. - 아마 모두가 비슷하겠지.
간단하게 as_indexed_json 을 오버라이드하고 인덱스 재성성 ㄱㄱ
해시와 배열이 뒤섞여 있어 좀 거지같아 보이지만 직접 해보면 이해가 쉽다.
1 3

가방

가방 들고 다니는거 너무 귀찮다.
옛날 커피숍 "보디가드"에 있던 하이텔 단말기처럼 아무데서나 사용할 수 있는 디바이스들이 있으면 좋겠다.
음.. 환경설정이 너무 오래걸리려나?
음.. 그냥 스마트폰 성능이 좋아지면 끝인가?
으음.. 당분간은 그냥 가방을 들고 다녀야겠군.
으으음.. 나 초딩같다 ㅋㅋㅋ
0 0

잠시 잊고 있던 씬디에 왔다.

예전에 올려놨던 신해철의 "아버지와 나"를 다시 한번 들어본다.
어떤 서비스던 많은 사람들이 쉽고 편안하게 또는 자주 사용 할 수 있게 만드는것은 참 어려운일이다.
그 제품, 서비스가 무엇이든 좋은 이야기로 만들어 회자되고 그 쓰임 그대로 쓰일수 있게 한다는거
그런 의미에서 씬디는?
2 2
Square

넘나 성실한 스팸알바생

기본적으로 손님 글 등록은 구글 캡챠를 사용하기 때문에 수동작업이 필수인데 꾸준히 할당량(?)을 채우고 있고 오늘은 심지어 커버까지 등록하는 인간적인 모습을 보여주네.
참.. 열심히 사시는구나. 나도 본받아야지.
1 0

파비콘 만들기

파비콘 관련해서는 소프트웨어도 많고 웹서비스도 엄청 많아서 대충 골라도 무난하게 작업되긴하더라.
그래도 근래에 몇번 유용하게 사용한 파비콘(및 아이콘) 제작 웹서비스라 Donate 는 힘들더라도 링크를 거는것으로 마음의 짐을 덜어보자.
"파비코메틱" - http://www.favicomatic.com/
0 2

스팸 및 댓글에 대한
의견을 구합니다.

안녕하세요.
광고글과 광고댓글로 몸살이었던적이 있었죠.
제 관리나 기능으로 해결하지 못하고 지저분함에 사용자들이 떨어져나가자 효과없음을 느낀 스패머가 더 이상 활동하지 않았던건죠.
다른 공격적인 사용자라면 음담패설이나 모욕적인 댓글을 남기는 사용자가 있었구요.
아무튼 해결해야 하는 문제임은 분명하죠.
아래의 옵션 중에 투표를 해주시거나 다른 방안을 댓글로 알로주시면 작업 기일을 공표하고 진행토록하겠습니다.
1) 신고 기능
댓글이나 글이 특정횟수 이상 신고 될 경우 블라인드처리되거나 삭제되도록
2) 자신이 작성한 글 (손님글은 제외) 에 달리는 댓글은 적성자가 블라인드(삭제아님) 처리할 수 있는 권한 부여
3) 관리자가 24/7, 365모니터링 ㅋㅋㅋ
기타 의견이나 아이디어 있으시면 댓글 남겨주세요!
3 2

여친 쇼핑몰 한다는데 맥프레삼.

맥도 써본적 없음
사용용도 쇼핑몰 운영
근데 OS는 윈도우설치
아니 도대체 왜..
그렇게 얘기해줬것만..
조언을 여기저기 구하지만, 결국 지 하고싶은데로 함.
그 말인즉슨 조언을 구하는게 아니라, 자기 의견이랑 같은 사람을 찾아서 자위하는것일뿐.
1 1
Square

[3분 복붙] 기사면 랜딩 PV 2배로 올리기.
브라우저 뒤로가기 제어.
이딴거 만들지 말자.

대부분의 서비스가 보다 많은 활동 사용자를 목표로 함은 분명하다.
하지만 얼마나 많은 활동 사용자가 있는지를 가늠할 수 있는 지표에 대한 목표설정은 좀 다른 얘기라고 생각한다.
심지어 그 목표의 달성을 위한 실현 과정이 사용자들을 열받게 만든다면 이 얼마나 근시안적 추태인지...
PV (Page View, 페이지 조회수) 에 대해 강한 집착을 보이는 국내 언론사들이 근래 "뒤로가기"가 실행되는 경우 이전 페이지로 보내지 않고 메인페이지로 이동되도록 하는 기능을 속속 도입하고 있더라. (좀 됐지.. 내가 잠수였던거지..)
사용자 입장에선 개빡치는 UX. 
그렇지만 남들이 한다니까 자기들도 해달라는 클라이언트의 등장은 당연지사.
해당 기능을 도입한 사이트들을 둘러보니 대부분 광고대행사 등이 제공한 스크립트를 사용하는 것 같더라.
메인페이지를 거치는 것도 짜증나는데 그 중간에 광고까지 껴있으니 개짜증..
이딴거 누가 안만들면 좋겠는데 일개 개발자가 뭘 할 수 있겠냐 고민하다가...
클라이언트에게 만들어준 간단한 스크립트를 모두에게 제공하고 너도나도 다들 도입해서 더 많은 사용자들이 더 빠르게 빡돌게 만들면 슬슬 이딴 쓰레기 같은 기능을 버리지 않을까라는 골때리는 결론에 도달했다.
0.
jQuery 를 사용하고 있다고 가정한다.
1.
아래의 코드를 기사 페이지 등 기능이 동작될 페이지에서 로드되는 js 파일에 추가한다.
3번 라인 정규식 패턴안의 synd\.kr 부분은 자신의 도메인으로 변경한다.
2.
기능이 동작될 페이지 HTML 코드 사이에 아래의 코드를 삽입한다.
완성!
코드는 단순해서 쉽게 이해할 수 있겠지만 몇몇 부분을 설명해보자면...
1. pushState 이후에 replaceState 를 다시 콜하는 이유.
pushState 만으로 history 를 조작할 경우 firefox 에서 백버튼이 골때리게 반복된다.
external > page > main > page > main > external
replaceState 를 다시 콜하면 아래와 같이 의도한대로 동작된다.
external > page > main > external
2. popState 이벤트를 사용하지 않고 hashChange 를 사용하는 이유
페이스북 앱 등 in app browser 를 사용할 때 해쉬가 없는 경우 뒤로가기 실행시 popState 이벤트가 발생되지 않음
해쉬를 추가해야 뒤로가기 실행 시 기존 URL (해쉬없는) 로 페이지 변화없는 이동이 발생하고 이 타이밍에 hashChange 가 콜 됨.
또한, Safari 9버전 이하에서 popState 가 지멋대로 fire 됨.
3. 이건 좀 쓸데없는 설명이지만 location.href 는 history 에 기록되고 location.replace 는 history 에 남지 않기 때문에 replace 를 사용해야함.
지원브라우저
웹이고 모바일이고 html5 history api 를 지원하는 브라우저 (http://caniuse.com/#search=history) 에선 기본적으로 모두 동작된다고 기대할 수 있으나 아이폰 크롬에서 동작안됨.
그 외 페이스북 앱 등 인앱에서 웹뷰를 사용하는 경우도 정상 동작.
Tested.
Microsoft Edge.
Microsoft IE 11.
Firefox 52.x (Windows)
Firefox 47.x (Linux)
Firefox 52.x (Mac)

Firefox 52.x (Android)
Firefox 6.x (iOS)
Chrome 57.x (Windows)

Chrome 48.x (Linux)
Chrome 56.x (Mac)

Chrome 57.x (Android)
Chrome 57.x (iOS) *동작안됨
Safari 10.x (Mac)
Safari 10.x (iOS)
Android 6 browser 4.x
Facebook App
자 이제 자리에서 일어나서 팀장이든 부장이든 상사에게 "저희 PV 를 2배로 올리겠습니다!" 라고 보고하고 보다 많은 사용자들의 빡을 돌려(?) 주삼.