저는 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
5~10분마다 작업을 수행하도록 설정되어 있으므로 어떤 일이 있어도 시스템에 액세스할 수 있습니다.policy ACCEPT
iptables -F
스크립트에는 to 또는 그 반대 의 규칙이 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