
저는 iptables를 처음 사용합니다. iptables를 재설정하는 스크립트(reset.sh)를 만들었고 다른 스크립트(ip-chains.sh)는 입력 출력 체인과 같은 체인을 생성합니다. 하단의 동일한 scipr(ip-chains.sh)에서 FTP에 사용하고 있는 들어오고 나가는 포트 2121을 허용하도록 테스트하기 위한 규칙을 만들었습니다.
문제는 재설정 스크립트를 실행하면 FTP 서버에 액세스할 수 있지만 ip-chains.sh 스크립트를 실행하면 액세스할 수 없다는 것입니다. 동일한 스크립트 파일에 포트 2121의 트래픽을 허용하는 규칙이 있기 때문에 혼란스럽습니다.
eth1을 사용하여 FTP 서버 192.168.1.0에 연결하고 eth2를 사용하여 클라이언트 컴퓨터에 연결하고 있습니다. 내 ip-chains.sh 스크립트는 다음과 같습니다.
#!/bin/bash
#Flush tables and set policies to drop
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Create Logging Chain for accepted packets on INPUT CHAIN
iptables -N accept-input
#Rules for accept-input chain
iptables -A accept-input -j LOG --log-prefix "INPUT-ACCEPTED "
iptables -A accept-input -j ACCEPT
#Create Logging Chain for dropped packets on INPUT CHAIN
iptables -N drop-input
#Rules for drop-input chain
iptables -A drop-input -j LOG --log-prefix "INPUT-DROPPED "
iptables -A drop-input -j DROP
#Create Logging Chain for accepted packets on OUTPUT CHAIN
iptables -N accept-output
#Rules for accept-output chain
iptables -A accept-output -j LOG --log-prefix "OUTPUT-ACCEPTED "
iptables -A accept-output -j ACCEPT
#Create Logging Chain for dropped packets on OUTPUT CHAIN
iptables -N drop-output
#Rules for drop-output chain
iptables -A drop-output -j LOG --log-prefix "OUTPUT-DROPPED "
iptables -A drop-output -j ACCEPT
#Allow port 2121
iptables -A INPUT -i eth1 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth1 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input
iptables -A INPUT -i eth2 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth2 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input
#Log all DROPPED traffic
iptables -A INPUT -j drop-input
iptables -A OUTPUT -j drop-output
iptables -L -n
답변1
규칙을 플러시할 때는 조심하세요.iptables -F
모든 규칙을 플러시하지만 정책은 플러시하지 않도록 주의하세요! 따라서 가지고 있는 경우 policy DROP
시스템에서 쉽게 잠길 수 있습니다!
일반적으로 체인의 마지막 규칙 policy ACCEPT
으로 설정하는 것이 더 안전합니다 . DROP
또는 방화벽에 대해 원격으로 작업하는 동안 다음 cron
작업을 설정 policy ACCEPT
하고iptables -F
5~10분마다 설정하세요. 이런 방식으로 어떤 경우에도 시스템에 액세스할 수 있습니다.
귀하의 스크립트에는 에서 또는 그 반대 iptables -p FORWARD DROP
의 규칙이 있으며 그 반대의 규칙도 없습니다 . 문제를 해결하려면 순방향 체인에 몇 가지 규칙을 설정하거나 추가해야 합니다 . 예를 들면 다음과 같습니다.eth1
eth2
iptables -p FORWARD ACCEPT
iptables -A FORWARD -p tcp -i eth1 -o eth2 -s 2121 -d 2121 -j ACCEPT;
iptables -A FORWARD -p tcp -i eth2 -o eth1 -s 2121 -d 2121 -j ACCEPT;
답변2
-v를 사용하여 패킷이 어디에 도착했는지 확인하세요.
iptables --list -n -v