인터넷에서 나가는 모든 트래픽을 차단하도록 구성하려는 라우터가 있습니다. 내가 이해한 바로는 전달된 패킷을 삭제해야 합니다. 또한 내부 LAN에 있는 한 시스템과 다른 여러 시스템 간의 트래픽을 허용하고 싶습니다.
이를 위해 다음을 시도했습니다.
IPT="/sbin/iptables"
LOCAL_CONTROLLER="192.168.1.2"
SUBNET="192.168.1."
MACHINE_IPS="100 101 102 103 104"
for MACHINE in ${MACHINE_IPS}; do
$IPT -A FORWARD -s $LOCAL_CONTROLLER -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -d $LOCAL_CONTROLLER -j ACCEPT
$IPT -A FORWARD -s $SUBNET$MACHINE -j DROP
done
불행히도 예상대로 작동하지 않습니다. 192.168.1.2에서 192.168.1.103으로의 트래픽과 그 반대의 트래픽이 차단됩니다.
내 스크립트에 어떤 문제가 있는지 지적해 주실 수 있나요?
답변1
FORWARD
서버에 문제가 있는 경우에만 대기열을 사용하세요.라우터입니다, 네트워크 외부에서 들어오고 나가는 패킷을 처리하는 데 사용되며, 네트워크 외부(라우터 수준에서) 패킷 라우팅을 차단/수락하는 데 사용됩니다.
호스트 수준에서 연결을 제어하려면 라우팅을 수행하지 않기 때문에(예: IP 전달을 수행하지 않음) 연결이 어디서 오는지에 관계없이 사용 INPUT
하거나 대기열에 넣는 것이 일반적입니다 .OUTPUT
로컬 네트워크에 있는 컴퓨터 그룹이 인터넷이 아닌 서로 통신할 수 있도록 하려는 경우 가장 쉬운 방법은 해당 컴퓨터에 게이트웨이를 정의하지 않는 것입니다.
그래도 이 작업을 수행해야 하는 경우 대신 스크립트에서 대기열을 사용해야 iptables
합니다 .INPUT
FORWARD
주요 관심사가 인터넷으로 들어가는 트래픽이라면 게이트웨이를 제공하는 것을 좋아하지 않지만 OUTPUT
로컬 시스템의 대기열을 사용해야 합니다.
좋다:
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -j DROP
(192.168.1.0/24 -> 192.168.1 네트워크의 모든 머신)
다른 네트워크에서 SSH를 통해 액세스하는 경우 이러한 규칙을 사용하면 효과적으로 자신을 잠글 수 있습니다.
그러나 라우터가 Linux 상자인 경우 FORWARD 규칙을 작성하면 인터넷에서 여러 시스템을 잠그기에 충분합니다.
iptables -A FORWARD -s 192.168.1.10 -j DROP
iptables -A FORWARD -s 192.168.1.11 -J DROP
에서 man iptables
:
INPUT(로컬 소켓으로 향하는 패킷용)
FORWARD(박스를 통해 라우팅되는 패킷용)
OUTPUT(로컬에서 생성된 패킷용)