![모든 아웃바운드 연결을 차단하려면 어떻게 해야 합니까?](https://rvso.com/image/1452893/%EB%AA%A8%EB%93%A0%20%EC%95%84%EC%9B%83%EB%B0%94%EC%9A%B4%EB%93%9C%20%EC%97%B0%EA%B2%B0%EC%9D%84%20%EC%B0%A8%EB%8B%A8%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 서버를 차단해야 합니다.개시원격 서버에 대한 모든 연결.
그러나 나는 여전히 연결된 클라이언트를 통해 시작된 연결에서 서버가 응답할 수 있기를 원합니다.
즉, 다른 사람들은 서버에 연결할 수 있지만 서버는 다른 서버에 대한 원격 연결을 시작할 수 없기를 바랍니다.
어떻게 해야 합니까?
저는 우분투를 사용하고 있습니다.
답변1
나가는 모든 연결을 차단하는 것은 온라인 리포지토리에서 소프트웨어를 설치하고, DNS 검색을 수행하고(대부분의 환경에서 끔찍할 수 있음), NTP로 시계를 업데이트하는 등의 작업을 수행하는 것을 방지하기 때문에 나쁜 생각입니다. 어쨌든 원하는 경우 그렇게 하려면 다음을 시도해 보세요.
# Drop all connections initiated from this host
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP
# Additionally, log the event (optional)
iptables -t filter -I OUTPUT 1 -m state --state NEW -j LOG --log-level warning \
--log-prefix "Attempted to initiate a connection from a local process" \
--log-uid
DNS와 같은 특정 트래픽을 허용하여 규칙을 더욱 스마트하게 만들 수 있습니다. 다음 두 가지 방법으로 이를 달성할 수 있습니다.
일치 항목을 더욱 복잡하게 만드세요. 하나 또는 두 개의 "화이트리스트" 항목에 적합합니다. 예:
# Only forbid non-UDP traffic iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
"-j ACCEPT" 대상을 사용하여 로컬 호스트에서 시작하도록 허용된 일부 원하는 서비스와 일치하는 규칙을 앞에 추가합니다. 예:
# Run this after the "DROP" rule to allow connection to ports #+ 80 and 443, mostly used for HTTP and HTTPS traffic iptables -t filter -I OUTPUT 1 -p udp -m multiport --ports 80,443 -j ACCEPT
답변2
우분투에 내장된 방화벽은 ufw입니다. Gufw라는 GUI를 사용하여 제어할 수 있습니다. Gufw의 기본 창에서 Outgoing:Deny를 클릭하세요.