iptables를 통해 특정 포트 허용

iptables를 통해 특정 포트 허용

저는 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또는 원격으로 작업할 때 방화벽이 cron5~10분마다 작업을 수행하도록 설정되어 있으므로 어떤 일이 있어도 시스템에 액세스할 수 있습니다.policy ACCEPTiptables -F

스크립트에는 to 또는 그 반대 의 규칙이 iptables -p FORWARD DROP없습니다 . 문제를 해결하려면 순방향 체인에 몇 가지 규칙을 설정하거나 추가 해야 합니다 . 예를 들면 다음과 같습니다.eth1eth2iptables -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

관련 정보