NAS DIY : 보안

현재 사용하는 firewall은 firewalld다. 먼 옛날에는 ipchains 였다가 iptables로 변경되었었고, 이제는 firewalld 인가보다. 이전에는 firewall 설정을 변경한 후 restart를 해야 했는데 firewalld는 그렇게 하지 않아도 된다고 한다. firewall을 사용해 본 적이 없어서 이게 뭔 장점인지 잘 모르겠다… 보통 설정바꾸면 데몬을 다시 시작하는게 보통아닌지… 근데 그걸 안 하게 했다는 것이 큰 장점인가? 그리고 설정바꾸고 reload를 하게 되는데 이게 restart하고 크게 다른 건가? 귀찮은 건 마찬가지인 것 같은데… 기존의 connection을 그대로 유지할 수 있느냐 아니냐의 차이인지…

아무튼 iptables보다 유연하다고 하니까 이걸로 firewall을 사용하기로 했다. 일단 지금은 설치한 서버를 외부에서도 접근할 수 있도록 해당 포트만 열어둔 상태이다. 하지만 이걸로는 부족하다. 보통 중국 쪽에서 악의적인 접근이 많은 편이고 이 서버는 한국에서만 사용할 거니까… 국내 IP 대역 외의 나머지 대역은 모두 drop 시켜야 한다.

검색질을 해보니 iptables는 자료가 풍부하다. case 별로 command를 정리한 페이지도 있고… 그런데 firewalld는 어째 거의 없는 듯. reference나 documentation도 보긴 했는데 ip에 대한 차단은 따로 언급 된 것은 찾지 못했다. 찾다 찾다 도움이 된 페이지를 하나 찾았다. firewalld 기반의 접근 제어

–add-rich-rule을 이용해서 ip를 지정하고 accept 할지 drop 할지 지정할 수 있다. 참고 페이지에서는 특정 IP만 지정했는데, documentation을 찾아보니 대역도 가능한듯 하다.

방법은 찾았고, 이제 IP 대역만 알면 된다. 나라별 IP 대역은 krnic에서 제공하고 있었다. 또 하나 http://geolite.maxmind.com 라는 곳에서도 제공하고 있었는데, csv 상에 prefix(?) 라는 게 없어서 그냥 krnic에서 csv 다운받아서 하는 걸로…

prefix라는게 뭔가 IP 대역하고 관련된 부분인거 같은데… 잘 모르겠다…

추가 : 링크의 내용 중 192.168.0.0/255.255.255.0 대역을 허용하는 부분을 보면 firewall-cmd에서192.168.0.0/24로 command를 먹이는 부분이 있다. 255.255.255.0이 24로 표현된다는 거 같은데… 8비트가 3개라서 24인가??

#!/bin/csh -f

rm -rf ipv4.csv*

wget http://www.krnic.or.kr/destFile/ipv4.csv
sed ‘1d’ ipv4.csv | grep -v ‘,KR,’ | grep ‘,CN,’ > firewalld-ip-drop.sh
egrep ‘^[0-9]{8},([A-Z]{2}),([0-9\.]+),[0-9\.]+,(/[0-9]+),[0-9]{8}$’ firewalld-ip-drop.sh > asdf
mv asdf firewalld-ip-drop.sh

perl -i -p -e ‘s:[0-9]{8},([A-Z]{2}),([0-9\.]+),[0-9\.]+,(/[0-9]+),[0-9]{8}:firewall-cmd –permanent –add-rich-rule='”‘”‘rule family=”ipv4″ source address=\2\3 drop'”‘”‘:’ firewalld-ip-drop.sh
sort -u firewalld-ip-drop.sh > asdf ; mv asdf firewalld-ip-drop.sh

chmod 700 firewalld-ip-drop.sh

 

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중