웹사이트 검색

CentOS 7에서 FirewallD에서 Iptables로 마이그레이션하는 방법


소개

대부분의 다른 Linux 배포판과 마찬가지로 CentOS 7은 네트워크 스택을 통과하는 패킷에 액세스하기 위해 Linux 커널 내부의 netfilter 프레임워크를 사용합니다. 이것은 방화벽 시스템을 구현하기 위해 패킷을 검사하고 조작하는 데 필요한 인터페이스를 제공합니다.

대부분의 배포판은 netfilter 후크를 사용하여 방화벽 규칙을 시행하는 iptables 방화벽을 사용합니다. CentOS 7에는 동일한 목적을 수행하는 firewalld라는 대체 서비스가 함께 제공됩니다.

firewalld는 뛰어난 기능을 갖춘 유능한 방화벽 솔루션이지만 일부 사용자는 구문에 익숙하고 동작에 만족한다면 iptables를 사용하는 것이 더 쉬울 수 있습니다. 성능. iptables command는 실제로 firewalld 자체에서 사용되지만 iptables service는 기본적으로 CentOS 7에는 설치되지 않습니다. 이 가이드에서는 CentOS 7에 iptables 서비스를 설치하고 방화벽을 firewalld에서 iptables로 마이그레이션하는 방법을 보여줍니다(이 문서를 확인하십시오. 대신 FirewallD를 사용하는 방법을 배우려면 가이드를 참조하세요).

현재 방화벽 규칙 저장(선택 사항)

서버의 방화벽 솔루션으로 iptables로 전환하기 전에 firewalld가 시행 중인 현재 규칙을 저장하는 것이 좋습니다. firewalld 데몬은 실제로 iptables 명령을 활용하여 netfilter 커널 후크와 통신한다고 위에서 언급했습니다. 이 때문에 iptables 명령을 사용하여 현재 규칙을 덤프할 수 있습니다.

다음을 입력하여 현재 규칙 세트를 표준 출력과 firewalld_iptables_rules라는 홈 디렉토리의 파일로 덤프합니다.

  1. sudo iptables -S | tee ~/firewalld_iptables_rules

ip6tables에 대해 동일한 작업을 수행합니다.

  1. sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

활성화된 firewalld 영역, 활성화된 서비스 및 firewall-cmd에서 직접 iptables로 전달된 규칙에 따라 덤프된 규칙 세트는 상당히 광범위할 수 있습니다.

firewalld 서비스는 일반 iptables 규칙을 사용하여 방화벽 정책을 구현합니다. 이는 iptables 체인을 사용하여 관리 프레임워크를 구축하여 이를 수행합니다. 대부분의 규칙은 이러한 관리 체인을 생성하고 이러한 구조 안팎으로 트래픽 흐름을 지시하는 데 사용됩니다.

결국 iptables 서비스로 이동하는 방화벽 규칙은 firewalld가 의존하는 관리 프레임워크를 다시 생성할 필요가 없습니다. 이 때문에 결국 구현하게 될 규칙 세트는 훨씬 더 간단할 것입니다. 가능한 한 많은 원시 데이터를 그대로 유지하기 위해 여기에 전체 세트를 저장하고 있습니다.

다음과 같이 입력하면 다시 만들어야 하는 정책에 대한 아이디어를 얻을 수 있는 더 중요한 줄을 볼 수 있습니다.

  1. grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

이것은 대부분 최종 결정을 내리는 규칙을 표시합니다. 사용자가 만든 체인으로만 이동하는 규칙은 표시되지 않습니다.

Iptables 서비스 다운로드 및 설치

서버 전환을 시작하려면 CentOS 저장소에서 iptables-service 패키지를 다운로드하여 설치해야 합니다.

다음을 입력하여 서비스 파일을 다운로드하고 설치합니다.

  1. sudo yum install iptables-services

iptables 서비스를 관리하는 데 사용되는 systemd 스크립트를 다운로드하고 설치합니다. 또한 일부 기본 iptablesip6tables 구성 파일을 /etc/sysconfig 디렉토리에 씁니다.

Iptables 방화벽 규칙 구성

다음으로 /etc/sysconfig/iptables/etc/sysconfig/ip6tables 파일을 수정하여 iptables 방화벽 규칙을 구성해야 합니다. 이 파일에는 iptables 서비스를 시작할 때 읽고 적용할 규칙이 있습니다.

방화벽 규칙을 구성하는 방법은 system-config-firewall 프로세스가 설치되어 있고 이러한 파일을 관리하는 데 사용되고 있는지 여부에 따라 다릅니다. /etc/sysconfig/iptables 파일의 상단을 확인하여 수동 편집을 권장하는지 여부를 확인하십시오.

  1. sudo head -2 /etc/sysconfig/iptables

출력이 다음과 같으면 /etc/sysconfig/iptables/etc/sysconfig/ip6tables 파일을 수동으로 편집하여 에 대한 정책을 구현하십시오. iptables 방화벽:

output
# sample configuration for iptables service # you can edit this manually or use system-config-firewall

sudo 권한으로 파일을 열고 편집하여 규칙을 추가합니다.

  1. sudo nano /etc/sysconfig/iptables
  2. sudo nano /etc/sysconfig/ip6tables

규칙을 만든 후 다음 명령을 사용하여 IPv4 및 IPv6 규칙을 테스트할 수 있습니다.

  1. sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
  2. sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

반면에 /etc/sysconfig/iptables 파일 검사 결과가 다음과 같으면 파일을 수동으로 편집하면 안 됩니다.

output
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended.

이는 system-config-firewall 관리 도구가 설치되어 이 파일을 관리하는 데 사용되고 있음을 의미합니다. 모든 수동 변경 사항은 도구에서 덮어씁니다. 이 메시지가 표시되면 관련 도구 중 하나를 사용하여 방화벽을 변경해야 합니다. 텍스트 UI에 다음을 입력합니다.

  1. sudo system-config-firewall-tui

그래픽 UI가 설치되어 있는 경우 다음을 입력하여 실행할 수 있습니다.

  1. sudo system-config-firewall

iptables 규칙 및 구문에 대해 학습하는 데 도움이 필요한 경우 다음 가이드가 주로 Ubuntu 시스템을 대상으로 하지만 도움이 될 수 있습니다.

  • Ubuntu 14.04에서 Iptables를 사용하여 방화벽을 설정하는 방법
  • Iptables Essentials: 일반 방화벽 규칙 및 명령
  • Ubuntu 14.04에서 Iptables로 기본 방화벽 템플릿을 구현하는 방법

FirewallD 서비스 중지 및 Iptables 서비스 시작

다음으로 현재 firewalld 방화벽을 중지하고 iptables 서비스를 불러와야 합니다. firewalld 서비스가 성공적으로 종료되는 즉시 && 구성을 사용하여 새 방화벽 서비스를 시작합니다.

  1. sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

다음을 입력하여 firewalld가 실행되고 있지 않은지 확인할 수 있습니다.

  1. sudo firewall-cmd --state

다음을 입력하여 /etc/sysconfig 디렉토리에 설정한 규칙이 로드되고 적용되었음을 확인할 수도 있습니다.

  1. sudo iptables -S
  2. sudo ip6tables -S

이 시점에서 iptablesip6tables 서비스는 현재 세션에 대해 활성화됩니다. 그러나 현재 firewalld 서비스는 여전히 서버가 재부팅될 때 자동으로 시작되는 서비스입니다.

문제가 있는 경우 서버를 다시 시작하여 이전 방화벽으로 되돌릴 수 있으므로 필요한 액세스 수준이 있는지 확인하기 위해 방화벽 정책을 테스트하기에 가장 좋은 시기입니다.

FirewallD 서비스 비활성화 및 Iptables 서비스 활성화

방화벽 규칙을 테스트하여 정책이 올바르게 시행되고 있는지 확인한 후 다음을 입력하여 firewalld 서비스를 비활성화할 수 있습니다.

  1. sudo systemctl disable firewalld

이렇게 하면 부팅 시 서비스가 자동으로 시작되지 않습니다. firewalld 서비스는 iptables 서비스가 실행되는 동안 수동으로 시작하면 안 되므로 서비스를 마스킹하여 추가 단계를 수행할 수 있습니다. 이렇게 하면 firewalld 서비스도 수동으로 시작되지 않습니다.

  1. sudo systemctl mask firewalld

이제 iptablesip6tables 서비스를 활성화하여 부팅 시 자동으로 시작되도록 할 수 있습니다.

  1. sudo systemctl enable iptables
  2. sudo systemctl enable ip6tables

이렇게 하면 방화벽 전환이 완료됩니다.

결론

방화벽 구현은 서버를 안전하게 유지하기 위한 필수 단계입니다. firewalld는 훌륭한 방화벽 솔루션이지만 때때로 가장 친숙한 도구를 사용하거나 보다 다양한 인프라에서 동일한 시스템을 사용하는 것이 가장 적합합니다.