내용으로 건너뛰기

Amazon EC2 Linux 인스턴스로의 트래픽을 허용하도록 iptables 또는 nftables를 구성하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 실행 중인 애플리케이션 또는 인스턴스에 트래픽을 허용하도록 iptables 또는 nftables를 구성하려고 합니다.

간략한 설명

Amazon EC2 Linux 인스턴스를 포함한 Linux 시스템의 네트워크 트래픽을 관리하려면 iptables 및 nftables를 사용하세요. 새 배포에는 nftables를 선택하고 레거시 환경에서는 iptables를 사용하세요. iptables에 대한 자세한 내용은 우분투 웹사이트의 iptablesHowTo를 참조하세요.

해결 방법

iptables 구성

iptables 서비스를 설치하고 활성화하려면 다음 명령을 실행합니다

sudo yum install iptables-services -y
sudo systemctl enable iptables
sudo systemctl start iptables

**참고:**미리 구성된 규칙으로 iptables를 설치한 경우에는 이러한 규칙을 지우고 새 규칙을 구성하세요. 규칙을 나열하려면 다음 명령을 실행합니다:

sudo iptables -L

모든 규칙을 플러시하려면 다음 명령을 실행하세요:

sudo iptables -F

특정 포트를 열려면 다음 명령을 실행하세요:

sudo iptables -A INPUT -p tcp --dport example_port -j ACCEPT

참고:****예제_port를 포트 번호로 바꿉니다.

특정 포트에서 특정 IP 주소 또는 서브넷으로 인바운드 트래픽을 허용하려면 다음 명령을 실행하세요:

sudo iptables -A INPUT -p tcp -s your_server_ip --dport example_port -j ACCEPT

참고: your_server_ip를 IP 주소 또는 서브넷으로, example_port를 포트로 바꾸세요.

사용 사례에 따라 포트와 프로토콜을 변경하세요. ㅊ다음은 일반적으로 사용되는 포트와 프로토콜입니다:

  • TCP 포트 80 --HTTP 서버
  • TCP 포트 443 --HTTPS 서버
  • TCP 포트 25 - 메일 서버
  • TCP 포트 22 --오픈SSH(원격) 보안 셸 서버
  • TCP 포트 110 --POP3(우편 프로토콜 v3) 서버
  • TCP 포트 143 --인터넷 메시지 액세스 프로토콜(IMAP) -- 이메일 메시지 관리
  • TCP/UDP 포트 53 --DNS(도메인 이름 시스템)

iptables 규칙을 나열하려면 다음 명령을 실행합니다:

sudo iptables -L

체인 및 번호별로 iptables 규칙을 삭제하려면 다음 단계를 완료하세요:

  1. 줄 번호가 있는 규칙을 나열하려면 다음 명령을 실행합니다:

    sudo iptables -L --line-numbers
  2. 규칙을 삭제하려면 다음 명령을 실행합니다:

    sudo iptables -D example_chain example_number

    **참고:**예제_체인예제_번호를 체인 이름과 규칙 번호로 바꿉니다.

  3. iptables 규칙을 저장하려면 다음 명령을 실행합니다.

    sudo service iptables save

규칙 집합은 /etc/sysconfig/iptables에 자동으로 저장되며 부팅할 때마다 복원됩니다.

nftables 구성

nft 명령은 테이블과 체인을 자동으로 생성하지 않습니다. 테이블과 체인을 수동으로 생성해야 합니다. nftables에 대한 자세한 내용은 레드햇 엔터프라이즈 리눅스(RHEL) 웹사이트에서 nftables 시작하기를 참조하세요.

nftables를 설치하고 활성화하려면 다음 명령을 실행합니다.

sudo yum install nftables -y
sudo systemctl enable nftables
sudo systemctl start nftables

nft 명령을 사용하여 테이블, 체인 또는 규칙 관리하기

**사전 요구 사항:**다음 작업을 수행하려면 sudo 권한이 있거나 루트 사용자이어야 합니다.

각 테이블에 주소 패밀리를 할당해야 합니다. 주소 패밀리는 테이블이 처리하는 패킷 유형을 정의합니다.

다음은 주소 패밀리와 해당 패킷이 일치하는 주소입니다:

  • ip: IPv4 패킷만 일치시킵니다.
    **참고:**주소 패밀리를 지정하지 않으면 기본값은 IP입니다.
  • IP6: IPv6 패킷만 일치시킵니다.
  • inet: ㅊIPv4 및 IPv6 패킷을 일치시킵니다.
  • arp: IPv4 주소 확인 프로토콜(ARP) 패킷을 일치시킵니다.
  • 다리: 브리지 장치를 통과하는 패킷을 일치시킵니다.
  • netdev: 유입된 패킷을 일치시킵니다.

테이블이 IPv4 및 IPv6 패킷을 모두 처리할 수 있도록 inet 주소 패밀리가 있는 테이블을 만들려면 먼저 test_rules라는 이름의 테이블을 만듭니다. 그리고 나서 다음 명령을 실행합니다.

sudo nft add table inet test_rules

들어오는 네트워크 트래픽을 처리하는 INPUT이라는 이름의 기본 체인을 추가하려면 다음 명령을 실행합니다:

sudo nft add chain inet test_rules INPUT '{ type filter hook input priority 0 ; policy accept ; }'

TCP 포트 443, 22, 80을 허용하는 규칙을 INPUT 체인에 추가하려면 다음 명령을 순서대로 실행하여 nft가 규칙을 추가하도록 합니다:

sudo nft add rule inet test_rules INPUT tcp dport 443 accept
sudo nft add rule inet test_rules INPUT tcp dport 22 accept
sudo nft add rule inet test_rules INPUT tcp dport 80 accept

**참고:**TCP 포트 443, 22, 80을 포트 번호로 바꿉니다.

현재 규칙을 표시하려면 다음 명령을 실행합니다:

sudo nft -a list table inet test_rules

핸들 2를 사용하여 기존 규칙 앞에 규칙을 삽입하려면 다음 명령을 실행합니다:

sudo nft insert rule inet test_rules INPUT position 2 tcp dport 8080 accept

참고:****2를 내 위치로, 8080을 포트 번호로 바꿉니다.

기존 규칙 뒤에 핸들 2를 사용하여 규칙을 추가하려면 다음 명령을 실행합니다:

sudo nft add rule inet test_rules INPUT position 2 tcp dport 621 accept

참고:****2를 자신의 위치로, 621을 포트 번호로 바꿉니다.

핸들 3이 있는 규칙을 제거하려면 다음 명령을 실행합니다:

sudo nft delete rule inet test_rules INPUT handle 3

참고:****3을 자신의 포지션 번호로 바꿉니다.

모든 규칙을 제거하려면 다음 명령을 실행합니다:

sudo nft flush chain inet test_rules INPUT

규칙 집합을 저장하려면 다음 명령을 실행합니다:

sudo bash -c "nft list ruleset > /etc/sysconfig/nftables.conf"

관련 정보

RHEL 웹사이트의 일반적인 iptables 및 nftables 명령 비교

Amazon EC2 Linux 인스턴스 연결 문제 해결

AWS 공식업데이트됨 2년 전