화이트리스트에 있는 IP 주소를 제외하고 방화벽에서 들어오고 나가는 모든 연결을 차단해야 합니다. 현재 가상 머신에서 우분투를 사용하고 있습니다. 나는이 명령을 시도했다이것site: 하지만 이 사이트에 연결할 수 없습니다. Google이지만 ping은 작동합니다. Linux 사용 경험이 없으며 다른 사이트도 작동하지 않습니다.
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
답변1
iptables
첫 번째 게임을 기반으로 합니다. 귀하의 예를 분석해 보겠습니다.
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
첫 번째 줄은 IP 주소에서 이러한 규칙이 적용되는 컴퓨터로 의 모든 트래픽이 iptables
허용됨 을 나타냅니다. 172.217.23.206
말 그대로 모든 트래픽은모든 트래픽. 따라서 소스가 일치하는 한 프로토콜, 포트, 옵션 등은 중요하지 않습니다 172.217.23.206
.
두 번째 줄은 컴퓨터의 모든 트래픽을 허용합니다 172.217.23.206
. 다시 말하지만, 프로토콜, 포트 등이 무엇인지는 중요하지 않습니다. 172.217.23.206
대상이 일치하는 한 허용됩니다.
세 번째 줄이 iptables
말해준다줄이다처음 두 규칙과 일치하지 않는 모든 수신 트래픽, 네 번째 및 마지막 줄은 iptables
다음을 나타냅니다.줄이다위의 세 줄과 일치하지 않는 모든 나가는 트래픽.
트래픽이 몇 개의 웹사이트로만 이동하도록 허용하는 시나리오를 구축하고 싶다고 가정하겠습니다. 귀하가 작성한 규칙 세트는 이 상황에 적용되지 않습니다.
- 귀하의 컴퓨터는 google.com이 어떤 문제를 해결할 것인지 알 수 없습니다 . 일반적으로 컴퓨터는
172.217.23.206
DNS 서버나 로컬 항목을 쿼리하여/etc/hosts
이 정보를 얻을 수 있습니다. iptables
이 경우 연결을 추적하고 응답을 허용할 만큼 똑똑하기 때문에 들어오는 트래픽을 허용할 이유가 없습니다 . 이 프로세스를 상태 유지라고 합니다.- 단지 웹사이트를 얻기 위해 모든 종류의 트래픽을 허용하는
172.217.23.206
것은 의미가 없습니다 . - ICMP 트래픽(포함
ping
)은 특별한 종류의 트래픽입니다. 구체적으로 차단해야 합니다.
이 규칙 세트는 다음 상황에 적합합니다.
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
이 규칙 세트를 사용하면 컴퓨터가 포트 53/udp를 사용하여 DNS 서버에 쿼리할 수 있습니다. 그런 다음 unix.stackexchange.com, 포트 80(http) 및 443(https)에 대한 TCP 트래픽을 허용합니다. 연결을 추적하고 다른 모든 트래픽을 삭제합니다.
에서 일치하는 항목을 구성하는 한 DNS 쿼리를 허용하는 규칙을 삭제할 수 있습니다 /etc/resolv.conf
.