컴퓨터 / Computer

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

공유지기 3 19,871 2017.12.20 23:54

0_fivEmSUN_cafc0046fceae53820e6e11ed19a3a0d3034ec3c.jpg 


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

이야기꾼 2022.03.17 16:50
https://realforce111.tistory.com/87 이런 내용도 참고.
이야기꾼 2022.03.17 16:59
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=0.0.0.0 port port="873" protocol="tcp" accept'
아프로디테 트리트먼트 은 오일 1000ml
PARIS 야구모자 캡모자 볼캡모자 커플모자 7color
메탈 진주큐빅 나비 태슬장식 헤어핀 올림머리 비녀
크로커다일 패턴 숄더백 핸드백 HH-G73
지문방지 폴더블 폰 전용 이지 우레탄 필름 플립7
갤럭시 S23울트라 3D 풀커버 강화유리필름 S918 3매
AONE CRUISE GP-785 게이밍 장패드 블랙
핸드폰 스마트폰링 거치대 휴대용 휴대폰스탠드 테블릿
해바라기 크롬 미용실 샴푸대 샤워기 교체 머리 헤드
유진 9069 BSN 블랙실버 목문 방문손잡이 욕실용
바퀴형 이동식 사이드 테이블 다용도 이동식 보조 테이블 협탁 틈새
올크롬 샤워기 중 메탈호스세트 1.5m/샤워꼭지 레인 샤워줄 목욕탕 욕실 샤워헤드 교체 부속품 호수 화장실
수박 보관통 야채 밀폐 용기 냉장고 용기 수박통 6L
Lycra 스판덱스 프리미엄 발목보호대
멀티 넥쿨러 스카프 쿨넥밴드 쿨링마스크 넥아이스
아이스 넥쿨러 커브 쿨링 넥밴드

(싸더라) 흡착형 자석 핸드폰 거치대 차량용 다용도 흡착 스마트폰 홀더 360도 회전
칠성상회
동아 유성매직(2.0mm 청색 12EA 다스)
칠성상회

맨위로↑