IPtables 규칙에서 특정 포트의 트래픽을 허용하려면 어떻게 해야 합니까?

IPtables 규칙에서 특정 포트의 트래픽을 허용하려면 어떻게 해야 합니까?

2개의 가상 머신에서 centos7을 실행하고 있습니다. 방화벽은 두 가상 머신 모두에서 실행되고 있습니다. 응용 프로그램이 포트 5044를 사용하여 컴퓨터 A에서 실행되고 있다고 가정합니다. Machine B라는 다른 컴퓨터가 있고 이 컴퓨터는 포트 5044에서 이 컴퓨터에 텔넷을 시도하고 있습니다. 당시 텔넷은 예외를 통해 말했다.

Trying 192.168.115.141...
   telnet: connect to address 192.168.115.141: No route to host

하지만 방화벽을 끄고 나면 통신은 잘 됩니다. 하지만 방화벽을 비활성화하고 싶지 않습니다. 그렇다면 다른 머신 B가 머신 A와 통신하도록 어떻게 허용합니까? IP 테이블이나 방화벽 규칙 목록에 어떤 유형의 정책을 정의해야 하는지 알고 있나요?

어떤 도움이라도 대단히 감사하겠습니다.

답변1

Centos 7을 사용 중입니다.firewalld기본적으로. 현재는 커널이 제공하는 방화벽에 대한 더 높은 수준의 인터페이스입니다.iptables. 실제로 iptables사용 방법을 알 필요는 없지만 firewalld잘 이해하는 것이 확실히 도움이 됩니다. 제어를 위한 주요 인터페이스 firewalld는 다음과 같습니다.firewall-cmd주문하다. 이 명령을 함께 사용하면 --permanent구성에만 영향을 미치며 다시 로드, 서비스 다시 시작 또는 재부팅할 때까지 눈에 띄는 효과는 없습니다. 이 옵션이 없으면 즉시 눈에 보이는 효과만 있고 저장된 구성은 변경되지 않습니다. GUI와 같은 다른 인터페이스가 존재합니다.firewall-config.

firewalld등의 추상적인 개념이 많다.영역. 기본적으로 공개 영역이 사용 중이지만 많은 영역이 사전 정의되어 있습니다(trusted, work, dmz...). 각 영역에는 사용 역할이 있으며 일부 사전 정의된 설정이 포함되어 있습니다(예: 공개 SSH는 기본적으로 영역에서 허용됩니다. ). 특정 출처로만 서비스 액세스를 제한하려면 공개 영역보다 대체 영역을 우선적으로 사용해야 합니다. 미리 정의된 영역 중 하나를 선택해야 할 수도 있지만 어쨌든 새 영역을 만들고 소스(MachineB의 IP)에 바인딩하고 TCP 포트 5044를 허용하겠습니다. MachineB의 IP가 다음과 같다고 가정합니다 10.0.3.66(다른 유효한 소스는 예를 들어 All LAN을 소스로, 이 예에서는 LAN으로 변경됨 10.0.3.0/24).

# firewall-cmd --permanent --new-zone peervm
# firewall-cmd --permanent --zone peervm --add-source 10.0.3.66
# firewall-cmd --permanent --zone peervm --add-port 5044/tcp

효과는 구성에서 볼 수 있습니다. 예를 들면 다음과 같습니다.

# egrep -r '10.0.3.66|5044' /etc/firewalld
/etc/firewalld/zones/peervm.xml.old:  <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml:  <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml:  <port protocol="tcp" port="5044"/>

변경 사항을 활성화하려면 다음 명령을 사용하십시오.

# firewall-cmd --reload
success

이는 기본 규칙을 다시 설정하며 iptables그 효과는 다음과 같습니다.

# iptables-save |egrep '10.0.3.66|5044'
-A POSTROUTING_ZONES_SOURCE -d 10.0.3.66/32 -g POST_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A FORWARD_IN_ZONES_SOURCE -s 10.0.3.66/32 -g FWDI_peervm
-A FORWARD_OUT_ZONES_SOURCE -d 10.0.3.66/32 -g FWDO_peervm
-A INPUT_ZONES_SOURCE -s 10.0.3.66/32 -g IN_peervm
-A IN_peervm_allow -p tcp -m tcp --dport 5044 -m conntrack --ctstate NEW -j ACCEPT

추상화 레이어를 사용하면 위와 같은 많은 상용구 규칙을 생성할 수 있습니다. 기본적으로 iptables단 하나의 규칙으로 이를 수행합니다(여기에 표시되지 않은 일부 표준 규칙을 적용).

# iptables -I INPUT -s 10.0.3.66/32 -p tcp --dport 5044 -j ACCEPT

따라서 능숙하게 사용할 경우 가장 간단한 경우에는 직접 규칙과 저장된 다른 구성 도구 세트를 사용하고, CentOS와 같이 iptables도구로 쉽게 처리할 수 없는 매우 복잡한 경우에는 스펙트럼의 반대쪽 끝에서 사용하는 것을 firewalld고려해야 합니다 . iptables사용iptables-services바꾸다 firewalld.

관련 정보