12월, 2017의 게시물 표시

CentOS 7 Firewalld 에서 특정 소스에서만 접근 가능하게 설정해보기

CentOS 7 Firewalld 를 설치하면 기본 영역이 'public' 으로 되어 있는데, 이 영역은 기본적으로 포트나 서비스등 룰을 추가할 경우 특정하지 않는 경우 모든 소스에 대해 허용하는 설정이므로, 특정한 소스에 대해서만 접근 가능하게 하는 설정을 기본적으로 할 수 없다. 방화벽을 운영하다 보면 들어오는 것에 대해 모두 막은 다음, 특정한 소스(source)에 대해 목적지(destination)로 가는 서비스 또는 포트를 허용(accept) 하는 것으로 보통 설정한다. 이것을 규칙(rule) 이라고도 하는데, 이러한 규칙은 규칙의 순서, 즉, 먼저 만들어진 규칙을 적용받은 후 다음 규칙을 적용받는 형식이다. 예를들면,  소스 A(192.168.3.4/32)에서 목적지 B로 80(http) 을 허용하는 규칙이 먼저 만들어진 상황에서 소스 A가 속한 네트워크 AA(192.168.3.0/24)에서 목적지 B로 80(http) 을 거부(reject) 하는 규칙이 만들어진 경우, 소스 A 는 목적지로 접근이 가능하고, 나머지 소스 A가 속한 네트워크의 다른 소스는 접근이 거부된다. 사실 이 두번째 규칙은 의미가 없다. 소스 A를 제외하곤 이미 모든 소스에 대해 막혀 있기 때문이다. CentOS 7 firewalld 에서 특정 소스에서만 접근 가능하게 설정하려면, 기본 영역(zone)을 차단(block) 영역으로 변경한 후 설정하면 가능하다. 운영하는 웹서버로 사내의 모든 네트워크 대역의 특정 IP 에서만 http(80) 로 접근이 가능하게 설정하려면 아래와 같이 설정이 가능하다. 방화벽 설정 변경에는 관리자 권한이 필요하다. 예에서는 root 사용자로 CLI 를 이용하여 설정하는 과정이다. 우선 firewalld 의 영역(zone)을 확인할 수 있는데, [root@localhost ~]# firewall-cmd --get-zones block dmz drop external home in