IT 이야기/리눅스 Tip

CentOS 7, 'Firewalld'설정방법과 'iptables'과의 차이 中 - 일본서버호스팅 제이피서버

KDSVPN 2017. 9. 9. 10:52
반응형

 

 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

"firewall-cmd"를 이용한 패킷 필터링 설정 방법 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

이제부터 Firewalld 규칙 설정을 위한 대표적인 명령어 및 출력 결과의 예를 설명하겠습니다.

규칙 설정은 "firewall-cmd"명령을 사용합니다. 일본서버호스팅

 일본서버호스팅

덧붙여서, "firewall-cmd --get-services"이외의 명령에 공통되는 명령으로 "-zone"옵션을 생략하면

기본적으로 public 영역이 대상이됩니다.  일본서버호스팅

또한 시작시 설정 대상 영역을 변경하려면 "--permanent"에서 옵션을 추가합니다.

 일본서버호스팅

그럼 "public" zone의 규칙을 설정해 봅시다. 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

정의된 서비스의 목록을 보기 일본서버호스팅

 일본서버호스팅

# firewall-cmd --get-services

 일본서버호스팅

# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https

 일본서버호스팅

이렇게 등록된 서비스 목록이 표시됩니다.  일본서버호스팅

위는 CentOS 7.2을 설치했을때 설정되어 있는 서비스 목록입니다. 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

허용되있는 서비스 보기 일본서버호스팅

  일본서버호스팅

# firewall-cmd --get-services

  일본서버호스팅

# firewall-cmd --list-services --zone=public
dhcpv6-client ssh

 일본서버호스팅

"public" zone의 INPUT 통신은 "dhcpv6-client"와 "ssh"의 두 가지가 허용되어 있는것을 알 수 있습니다.

 일본서버호스팅

 일본서버호스팅

허용할 서비스를 추가하기 일본서버호스팅

  일본서버호스팅

# firewall-cmd --add-service=http --zone=public

  일본서버호스팅

# firewall-cmd --add-service=http --zone=public
success

  일본서버호스팅

위는 "public" zone에 "http"서비스를 추가한 예입니다.  일본서버호스팅

설정에 성공하면 "success"로 표시됩니다. 일본서버호스팅

 일본서버호스팅

참고로 같은 작업을 iptables로 할 때의 명령과 비교해 봅시다.  일본서버호스팅

여기에서는 차이를 알기 쉽도록 "ssh 연결을 수락하기"로 예를 들겠습니다.

 일본서버호스팅

# firewall-cmd --add-service=ssh --zone=public

Firewalld의 경우 일본서버호스팅

 일본서버호스팅

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

iptalbles의 경우 일본서버호스팅

 일본서버호스팅

Firewalld에서는 허용할 서비스를 어느 zone에 추가할지만 자연스레 기술하면 됩니다.

한편, iptables 명령은 익숙하지 않으면 무엇을 하려는지도 이해할 수 없습니다.

세션 처리와 프로토콜, 포트 번호를 파악한 다음에 구체적으로 기술할 필요가 있기 때문입니다.

"TCP/IP 구조를 이해하지 않으면 어렵다" "명령 옵션이 복잡하다" 등의 iptables의 여러 문제는

Firewalld가 해소하는 것을 알 수 있습니다. 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

지정된 서비스가 허용되고 있는지 확인하기 일본서버호스팅

 일본서버호스팅 

# firewall-cmd --query-service=http --zone=public

 일본서버호스팅

# firewall-cmd --query-service=http --zone=public
yes

 일본서버호스팅

추가한 "http"가 제대로 규칙에 설정되었는지를 이 명령에서 확인할 수 있습니다.

허용됐다면 "yes"로 표시됩니다. 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

허용할 서비스를 삭제하기 일본서버호스팅

 일본서버호스팅

# firewall-cmd --remove-service=http --zone=public

 일본서버호스팅

# firewall-cmd --remove-service=http --zone=public
success 

 일본서버호스팅

"http"를 "public" zone의 허용 규칙에서 삭제했습니다.  일본서버호스팅

설정에 성공하면 "success"로 표시됩니다. 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

인터페이스의 "zone"을 변경하여 설정하기 일본서버호스팅

 일본서버호스팅

"public" zone 이외의 영역을 지정하여 설정할 수 있습니다. 일본서버호스팅

 일본서버호스팅

# nmcli con mod [인터페이스] connection.zone [zone]

 일본서버호스팅

예를 들어, NIC "enp3s0"을 "internal"영역에 설정하려면 다음과 같이 설정합니다.

 일본서버호스팅

# nmcli con mod enp3s0 connection.zone internal

 일본서버호스팅

명령을 실행하고 정상적으로 종료한 경우, 아무것도 표시되지 않습니다.

그 후 설정이 제대로 반영되었는지 다음 명령으로 확인합니다.

 일본서버호스팅

# firewall-cmd --get-zone-of-interface=enp3s0
internal

 일본서버호스팅

enp3s0는 "Internal" zone으로 변경되어 있는 것을 확인할 수 있습니다.

 일본서버호스팅

원포인트 팁!  일본서버호스팅

zone은 firewall-cmd 명령으로 변경할 수 있지만, zone의 변경에 대해서만,

앞서말한 --permanent 옵션을 부여해도 영구 설정되지 않습니다.

따라서 영구 설정하려면 nmcli 명령을 사용하여 변경합니다.

 일본서버호스팅

 일본서버호스팅

개별 "zone" 만들기 일본서버호스팅

 일본서버호스팅

앞서말했듯이 Firewalld에는 9가지 zone이 포함되어 있지만, 개별적인 zone을 만들고 그것을

정의할 수 있습니다. 일본서버호스팅

 일본서버호스팅

예를들면, "개별인 접근 IP 주소를 제한하고 싶다"라는 경우에 유효합니다.

이미있는 영역을 대상으로 설정을 변경해도 상관없지만 다른 영역을 제공하여 시스템 관리자가

사용자 지정된 것을 명시 할 수 있습니다.  일본서버호스팅

향후 관리가 쉬워지리라 생각됩니다. 일본서버호스팅

 일본서버호스팅

그럼 추가 zone "custom"을 만들어 봅시다. 일본서버호스팅

 일본서버호스팅

1. public 영역의 내용을 복사하여, "custom"영역으로 사용하기 위한 형식을 작성합니다.

 일본서버호스팅

# cp /usr/lib/firewalld/zones/public.xml /etc/firewalld/zones/custom.xml

 일본서버호스팅

2. 작성한 zone 파일을 명령어로 사용할 수 있도록하기 위해 리로드합니다.

 일본서버호스팅

# firewall-cmd --reload

 일본서버호스팅

3. 작성된 "custom" zone에 특정 IP 주소에만 "http"를 허용하도록 규칙을 추가합니다.

 일본서버호스팅

# firewall-cmd --permanent --add-source=192.168.0.0/24 --zone=custom
# firewall-cmd --permanent --add-service=http --zone=custom
# firewall-cmd --reload

 일본서버호스팅

zone 과 인터페이스의 정의는 앞서말한 바와 같이 "nmcli" 로 실행합니다.

 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

 일본서버호스팅

 

 

 

반응형