모든 연결을 차단하되 iptables가 있는 포트는 몇 개만 허용하세요.

모든 연결을 차단하되 iptables가 있는 포트는 몇 개만 허용하세요.

나에게 필요한 규칙은 다음과 같습니다.

  1. 들어오는 트래픽을 모두 차단하고(인터넷 > 서버) 나가는 트래픽을 허용하고(서버 > 인터넷) 로컬 서비스 실행을 허용합니다.

  2. 원하는 포트에서 들어오는 트래픽만 허용하세요.

또한 SSH 세션 내에서도 이 작업을 수행해야 합니다(이전에 잠긴 적이 있습니다).

내가 묻는 이유는 내 VPS 공급자와 함께 UFW를 사용할 수 없기 때문입니다...분명히 그들의 커널/OpenVZ 때문에...

명령을 직접 배우려고 하면 도구 사용법을 배우고 집을 짓는 것과 같습니다. 이 문제를 해결하려고 많은 시간을 소비하는 대신 오늘 좀 더 생산적으로 일할 수 있다면 좋을 것 같습니다. 누구든지 나를 도울 수 있다면 매우 감사하겠습니다.

답변1

먼저 특정 포트를 허용한 다음 들어오는 모든 트래픽을 차단합니다.

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

데모 포트 중 22개는 필요에 맞게 변경할 수 있습니다.

모든 수신 트래픽 차단

# iptables -A INPUT -j REJECT

나가는 모든 패킷을 허용합니다.

# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

답변2

@Rakib이 좋은 답변을 제공했으며 이를 받아들여야 한다고 생각합니다. 내가 준 대답은 단순히 그의 대답을 보완했습니다. OS가 시작될 때 자동으로 실행하거나 요청 시 다시 입력하지 않고 실행할 수 있도록 셸 스크립트를 만드는 것이 좋습니다.

#!/bin/sh

IPT = iptables

#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

#block all incoming traffic
$IPT -A INPUT -j REJECT

#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

나는 또한 스크립트를 두 번 수행했는데 유일한 차이점은IP6 테이블@Rakib의 답변에 대한 의견에서 @Michael Mol이 말했듯이 포함되어 있으므로 IPv6에서도 작동합니다.

관련 정보