NTP가 UDP 포트 123에 양방향 방화벽 액세스가 필요한 이유는 무엇입니까?


17

에서 허가 NTP에의 iptables 규칙은 무엇입니까? :

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

또한 NTP 웹 사이트에서 :

... ntpd를 사용하려면 권한있는 UDP 포트 123에 대한 양방향 액세스가 필요합니다. ...

내 질문은 왜? NTP에 익숙하지 않은 사람에게는 이것이 잠재적 인 보안 허점 인 것처럼 보입니다. 특히 내 서버에서 시간을 동기화 할 수 있도록 방화벽에서 해당 포트를 열도록 클라이언트에 요청할 때 특히 그렇습니다. 방화벽에서이 액세스가 필요하다는 것을 고객에게 확신시키기 위해 클라이언트에게 제공 할만한 정당한 사람이 있습니까? 도와주세요! :)


2
"관련 / 설립 허용"에 대한 부분을 읽었습니까? 이 규칙이 있으면 UDP 포트 123에 대한 일반적인 입력 규칙이 필요하지 않습니다.
VMai

1
이것이 실제로 잠재적 인 보안 허점입니까? 이것은 종종 무의미하다고 생각되는 반복 문구입니다. 2014 년, 1024 미만의 포트에 특수 속성을 부여하지 않고 명시 적으로 필요하지 않은 모든 트래픽을 차단할 시간입니다. 인터넷의 특정 호스트에서 하나의 포트를 하나의 시스템으로 열어 놓고 있습니다.
dfc

나는 이것이 잠재적 인 보안 허점이 아니라는 점에 동의하지만 금융 업계에서 일하고 있으며 사람들은 "무엇이 통과"할 경우 항상 방화벽을 여는 것에 대해 긴장하고 있습니다. 항상 좋은 정당성을 가질 가치가 있으며, 스스로 대답에 대해 궁금합니다. 시간 서버의 ntpd는 실제로 시간 업데이트를 보내기 위해 클라이언트에 나가는 연결을합니까? 이상하게 들리고 특별히 확장 할 수 없습니다.
DuffJ

나는 며칠 전에 이것을 봤는데, 들어오는 연결없이 관리 할 수 ​​있습니다.
barlop

@VMai는 superuser.com/questions/141772/…에서 아무 예도 제시하지 않았다고 말했지만 그 사람은 나가는 연결, 그 안에 들어 오는 패킷을 사용할 수 있다고 생각했습니다. 이는 "ntpd가 권한있는 UDP 포트 123에 대한 양방향 액세스를 필요로합니다."라는 개념과 다릅니다. 이는 들어오는 연결처럼 들립니다. 그가 관련 / 설립을 사용하여 들어오고 나가는 것을 허용하려면 4 가지 규칙이 필요합니다. 들어오는 연결의 경우 2, 나가는 연결의 경우 2
barlop

답변:


10

서버 역할을하는 경우 들어오는 트래픽 NTP의 포트만 허용하면 클라이언트가 귀하와 동기화 할 수 있습니다.

그렇지 않으면 NTP 상태의 존재는 들어오는 NTP 패킷이 우리가 시작한 기존 방화벽 상태에 의해 차단되는지 또는 허용되는지를 자동으로 결정합니다.

iptables -A OUTPUT -p udp --sport 123 --dport 123 -j ACCEPT

iptables-입력 -m 상태-상태 설정, 관련 -j 수락

iptables 규칙이 올바른지 알려주십시오. iptables에 대한 경험이 없습니다. pfSense는 상태 저장 방화벽이므로 NTP 클라이언트는 나가는 허용 규칙만으로 pfSense 라우터에서 동기화 상태를 유지합니다.


1
이것은 합리적으로 보입니다! 불행히도 나는 더 이상 당신의 대답의 정확성을 확인할 수있는 위치에 있지 않습니다. 그러나 논리적으로 보이므로 받아들입니다. 많은 감사합니다!
DuffJ

1

NTP RFC 는 클라이언트의 소스 포트와 관련하여 다음을 지정 하므로 NTP 는 포트 123에서 양방향 액세스가 필요합니다 .

대칭 모드 (1 및 2)에서 작동하는 경우이 필드에는 IANA가 할당 한 NTP 포트 번호 PORT (123)가 포함되어야합니다.

클라이언트의 소스 포트는 123이므로 서버가 응답을 다시 보내면 포트 123으로 보냅니다. 당연히이 응답을 수신하려면 클라이언트가 포트 123에서 들어오는 응답을 허용해야합니다. 일반적으로 응답은 되돌아옵니다. 일부에 임시 포트 범위.

벤 쿡은 위에서 언급 한 스테이트 풀 방화벽이 응답이 명시 적으로 규정하지 않고 돌아올 수 있도록 것 같은 상태 비 저장 방화벽 처리 할 때,이에만 필요합니다.


0

최선의 해결책은 서버에 ntp 신호를 줄 것으로 예상되는 IP 주소에 대해서만 포트 123을 입력으로 활성화하는 것입니다.
ntp 구성 파일 /etc/ntp.conf에는 서버가 가리키는 여러 ntp 서버의 주소가 있습니다. lookup 명령을 사용하여 각 주소에 해당하는 ip를 찾을 수 있습니다.

host -t a 0.debian.pool.ntp.org

그런 다음 서버 방화벽에 규칙을 추가 할 수 있습니다

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

.
악의적 인 사용자가 서버를 손상시키지 못하게 할 수 있습니다.
출력을 제한하는 것은 쓸모가 없다고 생각합니다.


-1

ntp 서버 간 통신은 소스 및 대상 포트 123입니다. 적어도 ntp 서비스를 실행중인 호스트에 명시 적으로 허용하는 것이 가장 편리합니다.

외부 소스에서 시간을 얻기 위해 외부 호스트 만 인터넷에 노출시키는 것을 고려할 수 있습니다. 이것과 동기화되는 내부 ntp 서비스는 모든 장치의 소스가 될 수 있습니다. 이러한 호스트가 목적에 전용 인 경우 가능한 노출이 제한됩니다. 호스트는 ntp 트래픽 만 허용하고 다른 데이터는 저장하지 않습니다.

또는 외부 IP 네트워크를 전혀 사용하지 마십시오. 예를 들어 GPS와 같은 라디오 소스를 사용하십시오.

http://www.diablotin.com/librairie/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/TroubleshootingNTP


1
이 답변에 감사하지만 질문에 대답하지는 않습니다. 시스템 관리자이고 내부 NTP 서비스를 설정할 수 있도록 방화벽을 열려면 어떻게해야합니까? NTP에 양방향 액세스 (단방향 액세스보다 훨씬 위험한)가 필요한 이유는 아직 아무도 모른다.
DuffJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.