왜 빌트인 테이블인가 ipchains
? 테이블을 추가하면 어떤 이점이 있나요 ipchains
? 테이블을 사용하여 성능을 향상시키거나 다른 이점을 제공할 수 있는 방법을 보여주는 간단한 시나리오가 있습니까?
답변1
iptables -N dmzrules
iptables -A dmzrules -p TCP --dport 22 -j ACCEPT
iptables -A dmzrules -p TCP --dport 80 -j ACCEPT
iptables -A dmzrules -p TCP --dport 443 -j ACCEPT
iptables -A dmzrules -p UDP --dport 53 -j ACCEPT
iptables -A dmzrules -p UDP --dport 123 -j ACCEPT
iptables -A FORWARD -s 10.0.91.0/24 -j dmzrules
iptables -A FORWARD -s 192.168.22.0/24 -j dmzrules
iptables -A FORWARD -s 172.16.33.0/24 -j dmzrules
따라서 위의 예에서는 허용된 네트워크에 대해 동일한 허용 UDP/TCP 포트 집합에 대한 규칙을 반복해서 작성할 필요가 없습니다. 따라서 15개 행이 아닌 9개 행이 있습니다. 각 수신 패킷이 15개의 규칙과 일치하려고 시도할 필요가 없으므로 성능이 향상됩니다. 대신 패킷은 3개의 INPUT 규칙과 일치하고, 소스 IP가 일치하면 dmzrules 테이블의 4개 규칙과 일치하려고 시도합니다.
단일 상자에 iptables를 사용하는 경우 테이블을 사용하는 것이 그다지 유용하지 않을 수 있다고 생각합니다. 허용된 포트를 한 번에 열거할 수 있지만 기본 규칙 세트를 위반하지 않고 이 목록을 업데이트할 수 있다는 블랙/화이트리스트 작성에 대한 Chris의 요점을 기억하십시오.
답변2
"테이블"이 포함된 이유는 이 개념이 Linux가 BSD의 IPFW 방화벽을 사용했을 때부터 ipchain으로 이어졌기 때문입니다. 이를 통해 관리상 동일하게 처리되어야 하는 IP 그룹에 하나 이상의 규칙을 쉽게 적용할 수 있습니다.
제가 가장 흔히 보는 곳은 블랙리스트나 화이트리스트를 사용할 때입니다. 각 IP에 대한 규칙을 생성하여 서버를 깨끗하게 유지하는 대신 Fail2ban을 사용하여 서버를 "공격"하는 IP를 자동으로 차단하고 장난스러운 테이블에 추가할 수 있습니다. 마찬가지로, 네트워크에 서로 다른 IP를 가진 일련의 "관리" 컴퓨터가 있을 수 있으며, 이를 테이블에 추가한 다음 SSH를 통해 서버에 액세스할 수 있도록 허용하는 규칙을 작성할 수 있습니다.