컴퓨터 / Computer

CentOS 7에서 특정 ip와 특정 포트만 허용하기

공유지기 0 3,263 2017.12.20 23:54

CentOS 7에서 일부 ip는 허용을 하고 또 일부 ip는 블럭을 할 수 있는데, 특정 ip와 특정 포트 외에는 접속하지 못하게 막고자 할때는 좀 특별한 방법을 써야 한다.

iptables 방식의 방화벽이 CentOS 7로 가니 firewalld 방식으로 바뀌었다. 그런데 처음 써 보는 방식이라 익숙해 지는데 시간이 걸렸다. 그래서 혹시나 hosts.allow와 hosts.deny로 하면 어떨까 싶어서 아래와 같이 시도를 해 보았다.

 

1. hosts.allow 와 hosts.deny를 이용한 방법

 

hosts.allow

 ALL: ip1,  ip2,  ip3,  ip4

sshd: ip5

 

 

hosts.deny

 

 ALL: ALL

 

위와 같이 하면 일단 hosts.deny 에서는 모든 포트와 프로토콜을 다 막고 hosts.allow에서 4개 ip에 대해서는 전면 허용하고 ip5에 대해서는 sshd만 허용하는 식이다.

 

그런데 이렇게 하니 뭔가 부족했다.

 

2. firewalld를 이용한 방법

 

어느 분의 블로그 글(http://bbangpower-blog.blogspot.kr/2017/11/centos-7-firewalld-ipset-ip.html)에 보니 whitelist를 만들어 그 목록 외에는 모두 접속을 끊어버리는 방법이 있었다. 이 분은 ipset 명령어을 통해서 하라는데 잘 되지 않았다. 그래서 궁리끝에 방법을 찾아 내어 아래와 같이 적는다.

(firewalld 의 실행 방법은 적지 않는다. 그건 다른 문서들을 찾아 보심이.)

 

일단 whitelist 라는 ipset을 아래와 같이 만든다. 만약 특정 ip가 아니고 대역대라면 hash:ip 대신에 hash:net 으로.

 

 firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip

 

이제 whitelist 라는 ipset을 만들었으니 허용할 ip를 아래와 같이 넣는다. 

 

 firewall-cmd --permanent --ipset=whitelist --add-entry=ip1

 firewall-cmd --permanent --ipset=whitelist --add-entry=ip2 

 firewall-cmd --permanent --ipset=whitelist --add-entry=ip3 

 firewall-cmd --permanent --ipset=whitelist --add-entry=ip4 

 firewall-cmd --permanent --ipset=whitelist --add-entry=ip5 

 

그리고 위 whitelist 외에는 접속을 허용하지 않도록 아래와 같이 입력한다.

 

 firewall-cmd --zone=public --add-rich-rule="rule source NOT ipset=whitelist drop"

 

이제 적용을 한다.

 

 firewall-cmd --reload

 

특정 ip에서 80포트만 접속할 수 있게 설정한 public.xml 예제이다.

 

 <?xml version="1.0" encoding="utf-8"?>

<zone>

  <short>Public</short>

  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming con

nections are accepted.</description>

  <service name="ssh"/>

  <service name="dhcpv6-client"/>

  <service name="mysql"/>

  <port protocol="tcp" port="80"/>

  <rule>

    <source ipset="whitelist" invert="True"/>

    <drop/>

  </rule>

</zone>


 

 

 

 

 

 

 

참고

 - https://conory.com/blog/42477 : 방화벽 설정하는 법이 나와 있음

 - http://bbangpower-blog.blogspot.kr/2017/11/centos-7-firewalld-ipset-ip.html : 이 글을 쓰는데 매우 크게 도움이 됨

 - http://www.firewalld.org/2015/12/ipset-support : 바로 윗 글만으로 부족해서 이 글을 참고함. 역시 도움이 크게 되었음.

Comments

번호 제목 글쓴이 날짜 조회 추천 비추
55 게임 Tie Fighter 코드 공유지기 09.30 82 0 0
54 온라인 무료 PDF 변환 사이트 공유지기 09.14 192 0 0
53 SFTP Net Drive 공유지기 09.02 1624 0 0
52 이메일 클라이언트 천둥새(Thunderbird) 다중 프로필 설정하기 공유지기 08.30 2447 0 0
51 이메일로 오는 피싱 사례 댓글+1 공유지기 08.25 3645 0 0
50 이메일 서버 ip block 해제하기 공유지기 08.23 3538 0 0
49 Gmail 에서 imap 이용시 공유지기 08.20 3549 0 0
48 슬로우 쿼리 로그 설정 댓글+1 공유지기 08.16 4118 0 0
47 NetDrive 3 공유지기 08.12 3397 0 0
46 Document Reader in JavaScript 공유지기 08.12 3404 0 0
45 Weblate 공유지기 08.12 3272 0 0
44 RaiDrive 공유지기 07.28 3059 0 0
43 open-source music and video player 공유지기 07.15 3182 0 0
42 Convert DVD to AVI (Freeware) 댓글+1 공유지기 07.15 3154 0 0
41 Miro Video Converter 공유지기 07.08 3258 0 0
40 Free CD to MP3 Converter 공유지기 06.15 3232 0 0
39 DNS에서 이메일 서버 등록하는 법 공유지기 06.13 3164 0 0
38 파티션 조정 프로그램 - mini tool 공유지기 05.28 3295 0 0
37 XP 성능 향상 시키는 방법 공유지기 05.28 3317 0 0
36 XP 속도 올리기 공유지기 05.28 3428 0 0


Category
State
  • 현재 접속자 133 명
  • 오늘 방문자 2,611 명
  • 어제 방문자 2,781 명
  • 최대 방문자 6,204 명
  • 전체 방문자 1,953,366 명
  • 전체 게시물 26,065 개
  • 전체 댓글수 7,221 개
  • 전체 회원수 2,340 명
Facebook Twitter GooglePlus KakaoStory NaverBand
광고 / ad