centos 6.10 화이트리스트 IP 주소

centos 6.10 화이트리스트 IP 주소

특정 IP 주소가 iptables의 dport에 액세스하도록 허용하는 방법은 무엇입니까? 예: 2개의 클라이언트가 있는데 첫 번째 클라이언트의 IP 주소는 182.3.3.1이고 두 번째 클라이언트의 IP 주소는 202.4.5.6이며 포트는 2222입니다. 내가 원하는 것은 이 IP 주소만 포트 2222에 액세스할 수 있다는 것입니다.

나는 이 규칙을 썼다:

iptables -A INPUT -p tcp ! -s 182.3.3.1  --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 202.4.5.6  --dport 2222 -j REJECT

문제는 하나의 주소에만 액세스할 수 있고 다른 주소는 차단된다는 것입니다. 뭐가 문제 야?

답변1

iptables가 규칙을 처리하는 방식은 패킷을 잡고 위에서 아래로 일련의 규칙과 일치시키려고 시도하는 것입니다. 규칙이 일치하면 실행하고 추가 처리를 중지합니다(대상이 다른 체인, LOG, RETURN 등 특별한 경우는 제외).

각 체인에는 규칙과 일치하지 않는 패킷에 발생하는 기본 정책(기본적으로 수락)도 있습니다.

이제 다음과 같은 두 가지 규칙이 있는 경우:

iptables -A INPUT -p tcp ! -s 182.3.3.1 --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 202.4.5.6 --dport 2222 -j REJECT  

IP 182.3.3.1에서 액세스하는 경우 첫 번째 규칙이 일치하고 적용됩니다(아무 작업도 수행하지 않으며 규칙은 ACCEPT라고 생각되는 체인 DEFAULT 정책에 의해 처리됩니다). 두 번째 경우, IP가 202.4.5.6이면 첫 번째 규칙도 일치하여 적용됩니다(액세스 거부).

아마도 당신이 원하는 것은 다음과 같습니다(시스템에 이러한 규칙을 입력하지 마십시오. 그렇지 않으면 당신 자신이 잠길 것입니다!):

iptables -P DROP INPUT # Changes the INPUT Chain default policy to DROP
iptables -A INPUT -p tcp -s 182.3.3.1 --dport 2222 -j ACCEPT # Allows the access of IP 182.3.3.1  
iptables -A INPUT -p tcp -s 202.4.5.6 --dport 2222 -j ACCEPT # Allows the access of IP 202.4.5.6 

이러한 규칙을 사용하면 다른 서비스에 대한 액세스를 허용하기 위해 규칙 세트를 업데이트해야 한다는 점을 이해하십시오(예: SSH 및 서버의 기타 서비스에 대한 액세스를 허용하므로 서버에서 자신을 잠그지 않는 것이 좋습니다). .

관련 정보