2013-03-16 5 views
0

포트 노킹을 위해 다음 iptables 규칙을 사용하고 있습니다. 모든 것이 잘 작동하지만 HOST_1을 노크하여 HOST_2의 SSH 포트를 열면이 기능을 향상시키고 싶습니다. 누군가가 어떻게 할 수 있는지 조언 해 주실 수 있습니까? 하나의 가능성은 포트 노킹 (hping3 -p 100 -a $ HOST_2 11.22.33.44) 동안 소스 IP를 위조하는 것입니다. 그건 작동하지만, iptables를 사용하여 구현하는 것을 선호합니다. 당신의 두 호스트가 IP 주소를 고정하는 경우iptables를 사용하는 포트 노킹

-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -s 127.0.0.0/8 -j ACCEPT 
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

-A INPUT -m recent --rcheck --seconds 5 --name KNOCK3 --rsource -j STATE3 
-A INPUT -m recent --rcheck --seconds 5 --name KNOCK2 --rsource -j STATE2 
-A INPUT -m recent --rcheck --seconds 5 --name KNOCK1 --rsource -j STATE1 

-A INPUT -j STATE0 

-A STATE0 -m recent --remove --name KNOCK1,KNOCK2,KNOCK3 --rsource 
-A STATE0 -p tcp -m tcp --dport 100 -m recent --set --name KNOCK1 --rsource -j DROP 
-A STATE0 -j DROP 

-A STATE1 -m recent --remove --name KNOCK1,KNOCK2,KNOCK3 --rsource 
-A STATE1 -p tcp -m tcp --dport 200 -m recent --set --name KNOCK2 --rsource -j DROP 
-A STATE1 -j DROP 

-A STATE2 -m recent --remove --name KNOCK1,KNOCK2,KNOCK3 --rsource 
-A STATE2 -p tcp -m tcp --dport 300 -m recent --set --name KNOCK3 --rsource -j DROP 
-A STATE2 -j DROP 

-A STATE3 -m recent --remove --name KNOCK1,KNOCK2,KNOCK3 --rsource 
-A STATE3 -p tcp -m tcp --dport 22 -j ACCEPT 
-A STATE3 -j DROP 

답변

0

, 당신은 그냥 노크 이름이 설정되는 경우 위의 해당 규칙의 소스 IP 옵션 (-s)를 추가해야한다. 예 : 유효한 IP를 아래 HOST_1 및 HOST_2 값을 대체 :

-A STATE0 -s HOST_1 -p tcp -m tcp --dport 100 -m recent --set --name KNOCK1 --rsource -j DROP 

-A STATE1 -s HOST_1 -p tcp -m tcp --dport 200 -m recent --set --name KNOCK2 --rsource -j DROP 

-A STATE2 -s HOST_1 -p tcp -m tcp --dport 300 -m recent --set --name KNOCK3 --rsource -j DROP 

-A STATE3 -s HOST_2 -p tcp -m tcp --dport 22 -j ACCEPT 

당신의 IP를 동적 경우, 그냥 iptables를를 사용하는 방법을 알고하지 않습니다 (예를 들어, 어떤 IP가 높은 다음에 대한 액세스를 열어 주어에서 노크.) .

관련 문제