우분투에서 외부 트래픽에 대해 포트 6379를 어떻게 차단합니까?


8

서버에서 포트 6379에 대한 액세스를 차단하고 싶지만 여전히 내부적으로 연결하고 싶습니다. redis-server 응용 프로그램은 해당 포트에서 실행되며 로컬 (127.0.0.1)에만 연결하고 싶습니다. 어떻게해야합니까?

답변:


11

이렇게하려면 IPTables 규칙이 올바르게 구성되어 있는지 확인해야합니다. 우분투는 일반적으로 서버를 기본적으로 넓게 열어두고 있기 때문에 이미 올바르게 수행하는 방법을 잘 알고 있지 않는 한 서버로 사용하지 않는 것이 좋습니다.

iptables -L -nv모습이 이런 것 같아요?

# iptables -L -nv
Chain INPUT (policy ACCEPT 4M packets, 9M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8M packets, 4M bytes)
 pkts bytes target     prot opt in     out     source               destination

비어 있고 넓게 열려 있습니다. 우분투 IPTables HowTo는 아마도 이것에 상당히 도움이 될 것입니다. ( https://help.ubuntu.com/community/IptablesHowTo )

다음과 같은 것을 권장합니다. 모든 인터페이스에서 SSH를 허용하고 원하지 않는 인터페이스는 tcp 6379입니다.

*filter
:INPUT DROP [92:16679]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [203:36556]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -i lo -p udp -m udp --dport 6379 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT

그런 다음이 파일을 /etc/iptables.rules에 저장하십시오.

분명히, 특별히 열고 자하는 다른 포트를 추가해야합니다.

참고 : 명확성을 위해 특정 6379 줄을 추가했습니다. COMMIT 직전의 맨 아래 ACCEPT는이를 제대로 허용하기 위해 모든 루프백 연결이 Linux 시스템에서 허용되어야하기 때문에 실제로이를 허용합니다.

또한 / etc / network / interfaces 파일에 규칙을 추가하여 나중에 부팅 프로세스가 아닌 인터페이스가 표시 될 때 규칙을 추가 할 수 있습니다. 이와 같은 것을 추가하는 것이 좋습니다 :

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules

편집 :이 구성을 처음로드하려면 위에서 참조한 iptables-restore 명령을 실행해야합니다.

iptables-restore < /etc/iptables.rules

나는 이것이 웹 전체에 포트 6379를 열 것이라고 가정합니까? 127.0.0.1에서만 열려면 어떻게해야합니까?
Steve Rodrigue

기본 규칙은 DROP이기 때문에 아니요. 명시적인 ACCEPT 규칙이없는 경우 상단의 : INPUT 옆에있는 기본 DROP에 의해 차단됩니다.
Magellan

개인적으로 기본 ACCEPT 규칙은 "서버"배포에서 범죄라고 생각합니다. 그러나 우분투가 가장 먼저 데스크탑 배포판이기 때문에 놀라운 것은 아닙니다.
Magellan

좋아, 방금 요청한 것을 정확하게했지만 외부에서 여전히 포트 6379에 연결할 수있는 것처럼 보입니다. 서버 등을 재부팅해야합니까?
Steve Rodrigue

1
예, 그러나 카운터에 대해서는별로 신경 쓰지 않으며 이는 저에게 효과적입니다. 보다 엄격한 프로세스에 맞게 답변을 자유롭게 편집하십시오.
Magellan

3

글쎄, 나는 "복잡한 방화벽"(ufw)을 사용하는 것이 좋으며, 이것은 또한 정식으로 권장됩니다. iptable을 읽고 쓰는 것은 가끔 포트 잠금 작업을하기에는 너무 복잡합니다.

여기를 참조하십시오 https://wiki.ubuntu.com/UncomplicatedFirewall


1
이전 버전의 UFW에는 선택한 포트에 규칙을 적용 할 수있는 기능이 없었습니다. 그리고 전문적인 시스템 관리자는 iptables 설정이 무엇을하고 체인이 어떻게 작동하는지 이해하는 습관을 가져야합니다.
Magellan

2

같은 것

iptables -A INPUT -s 0.0.0.0  -i eth0 --protocol tcp --dport 6379 -j DROP

작동해야합니다.


iptables v1.4.4 : 알 수없는 옵션`--dport '
Steve Rodrigue

새로운 명령으로 다시 시도 할 수 있습니까? --protocol 및 -i 부분 (인터페이스에 맞게)을 추가했는데 이제 작동합니다.
Kedare

이 제안으로 가지고있는 문제는 다른 필요한 명령이 실행되지 않는 한 재부팅을 통해 저장하지 않으며 루프백이 아닌 인터페이스가 하나만 있다고 가정한다는 것입니다.
Magellan

부정 연산자를 사용하는 것이 좋습니다. -i! lo
마젤란

Adrian : 서버를 재부팅하면 해당 수정 사항이 더 이상 활성화되지 않습니까?
Steve Rodrigue

0

레디 스의 새 버전 당신이 사용할 수 bind 127.0.0.1있는 redis.conf추가 iptables를 구성하지 않고 직접이 일을

기사를 참조 하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.