IceFloor를 사용하는 OSX의 PF 방화벽

IceFloor를 사용하는 OSX의 PF 방화벽

Server 3.0.2를 실행하는 OSX 10.9 시스템에서 IceFloor를 사용하여 pf를 설정했습니다. localhost의 DNS 이름이나 공용 IP를 사용하여 시스템에 연결할 수 없다는 점을 제외하면 모든 것이 괜찮은 것 같습니다. 예를 들어 인터넷에서 http/port 80에 연결할 수 있지만 공용 IP를 사용하는 컴퓨터 자체에서는 연결할 수 없습니다. 머신에서 localhost/127.0.0.1로의 연결이 작동합니다. 내가 얻은 로그는 다음과 같습니다(xxxx는 호스트의 공개 IP입니다).

rule 7/0(match): block in on en0: x.x.x.x.80 > x.x.x.x.64460: Flags [R.], seq 1, ack 1, win 65535, length 0

그리고 여기에 규칙 목록이 있습니다.

$ sudo pfctl -s rules
[sudo] password for paul: 
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "icefloor.nat" all fragment reassemble
anchor "icefloor.nat" all
block drop in quick from <emergingthreats> to any
block drop out quick from any to <emergingthreats>
block drop in log quick from <_blacklist> to any
block drop out log quick from any to <_blacklist>
block drop in quick from no-route to any
block drop in quick from urpf-failed to any label "uRPF"
block drop log inet all label "Generic_blocks_(IPv4)"
block drop log inet6 all label "Generic_blocks_(IPv6)"
anchor "icefloor.groupblocks" all label "Blocks"
anchor "inspector.blocks" all label "Temp_blocks"
anchor "icefloor.exceptions" all label "Logs_exceptions"
anchor "icefloor.portknocking" all label "Hidden_services"
anchor "icefloor.genericipv6" all
anchor "icefloor.inbound" all label "Local_services"
anchor "icefloor.outbound" all label "All_traffic"
anchor "icefloor.outbound_nat" all label "NAT_clients_traffic"
anchor "icefloor.custom_rules" all

그게 어느 것인지 말해줄 수 있나요 rule 7/0(match)? 그리고 왜 localhost에서 공개 키(모든 열려 있는 포트에서)로 연결이 허용되지 않습니까? f 규칙 과 관련이 있나요 no-route? 아니면 두 가지 Generic_blocks_규칙?

미리 감사드립니다.

답변1

tcpdump나 역시 이 문제에 직면했고, 모든 것을 파악하는 데 약간의 테스트가 필요했습니다 .

첫 번째 질문에 답하려면 rule 7/0(match): 이는 명시적으로 승인되지 않은 모든 트래픽을 차단하고 기록하기 위해 IceFloor가 자동으로 추가한 "Generic_blocks_(IPv4)" 규칙입니다. 루트로 실행하여 해당 규칙의 번호를 확인할 수 있습니다 pfctl -gsr.

차단된 이유에 대해 알아보세요. 인바운드 연결이 차단됩니다. 경로가 없는 곳이나 그 어떤 것과도 관련이 없습니다.보이는규칙 세트. 이는 DNS 이름이 로컬에서 처리되는 방식과 관련이 있습니다. 컴퓨터의 라우팅 테이블( )에는 인터페이스 에서 netstat -r를 가리키는 DNS 이름에 대한 항목이 있습니다 .localhostlo0

로그 항목에는 몇 가지 수수께끼 같은 정보, 특히 block in on en0인터페이스에서 무슨 일이 일어나고 있다고 믿게 만드는 정보가 포함되어 있습니다 en0. 그러나 을 수행하면 tcpdump -nvvvi en0 tcp and port 80실제로 패킷이 이동하지 않는 것으로 나타났습니다 en0. 그러나 패킷은 에서 발견되었으므로 tcpdump -nvvvi lo0 tcp and port 80트래픽이 (예상대로) 에서 발생하고 있음을 확인했습니다 lo0.

기본 IceFloor 구성( /Library/IceFloor/icefloor.conf)은 다음 라인으로 생성됩니다 set skip on lo0. 처음에는 이것은 매우 표준적이고 환영받는 대사처럼 보입니다(참조:http://www.openbsd.org/faq/pf/options.html). 다른 모든 부분은 lo0pf 규칙에 의해 방해받지 않고 나타났습니다. 직감으로 나는 해당 줄을 주석 처리하고 새 규칙(테이블 포함 바로 뒤에)을 추가하기로 결정했습니다 pass quick on lo0. 수정된 구성으로 다시 로드한 후 DNS 이름을 통해 웹 서버에 성공적으로 액세스할 수 있었습니다(문제 해결). 그래서 set skip on lo0라인에 문제가 있는 것 같습니다 .

파일 을 수동으로 수정할 때의 문제점은 icefloor.confIceFloor 인터페이스의 방화벽 탭을 사용할 수 없다는 것입니다. 새 구성을 저장하면 수동 편집이 무시됩니다.

관련 정보