모든 연결을 차단하지만 iptables가 있는 포트는 몇 개만 허용합니다.

모든 연결을 차단하지만 iptables가 있는 포트는 몇 개만 허용합니다.

다음과 같은 규칙이 필요합니다.

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

  2. 원하는 포트에서 들어오는 트래픽만 허용합니다.

SSH 세션 중에도 이 작업이 필요합니다(이전에 잠겨 있었습니다).

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

마치 도구 사용법을 배우고 집을 짓는 것과 같은 명령을 혼자서 배우려고 노력하는 동안. 그리고 이 문제를 해결하기 위해 몇 시간을 소비하는 대신 오늘 생산성을 높일 수 있다면 정말 좋을 것입니다. 누군가가 나를 도울 수 있다면 정말 감사하겠습니다.

답변1

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

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

데모 포트는 요청에 따라 변경됩니다.

모든 수신 트래픽 차단

# 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테이블@Michael Mol이 @Rakib의 답변에 대한 의견에서 말했듯이 IPv6에도 적용되도록 포함되었습니다.

관련 정보