나는 사용하고있다곡구내 Android 휴대폰에서 Linux 컴퓨터와 휴대폰 간에 파일을 전송합니다.
애플리케이션은 42001
초기 연결 및 42000
데이터 전송을 위해 포트를 사용합니다. 나는 그것이 TCP를 사용한다고 믿습니다.
저는 nftables를 방화벽으로 사용하고 있으며 최근에 방화벽에서 전환했습니다. 나는 아직 nftable을 완전히 마스터하지 못했습니다.
42000,42001
응용프로그램을 시작하기 전에 내 컴퓨터에서 이 두 포트를 일시적으로 허용 하고 완료되면 포트를 닫고 싶습니다 .
기존 규칙을 계속해서 임시로 추가하고 가능하면 bash/nft 스크립트를 사용하여 제거하고 싶습니다.
가능합니까?
통찰력 있는 안내에 감사드립니다.
내 시스템에는 다음과 같은 간단한 기본 구성이 있습니다./etc/nftables.conf
#!/usr/bin/nft -f
# vim:set ts=2 sw=2 et:
# IPv4/IPv6 Simple & Safe firewall ruleset.
# More examples in /usr/share/nftables/ and /usr/share/doc/nftables/examples/.
table inet filter
delete table inet filter
table inet filter {
chain input {
type filter hook input priority filter
policy drop
ct state invalid drop comment "early drop of invalid connections"
ct state {established, related} accept comment "allow tracked connections"
iifname lo accept comment "allow from loopback"
ip protocol icmp accept comment "allow icmp"
meta l4proto ipv6-icmp accept comment "allow icmp v6"
tcp dport ssh accept comment "allow sshd"
pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited
counter
}
chain forward {
type filter hook forward priority filter
policy drop
}
}
미리 감사드립니다
답변1
이 경우 내가 할 일은 임시 액세스를 위한 체인을 구성하는 것입니다.
아래에서 "테이블"은 "필터"(귀하의 예를 기반으로 함)이며 이러한 규칙의 식별자로 "warpinator"를 사용하고 있습니다. (예를 들어, 테이블 이름은 별로 중요하지 않으며 이런 식으로 "예약어"를 사용하는 것은 항상 매우 혼란스럽습니다.)
# Create a new chain and counter for this purpose.
create chain inet filter warpinator
add counter inet filter warpinator
# add a rule to the chain
add rule inet filter warpinator tcp dport { 42000, 42001 } log prefix "WARPINATOR: " counter name "warpinator" accept
# insert a 'jump' condition to your input chain to inspect traffic
add rule inet filter input jump warpinator
이렇게 하면 다음에서 인바운드 트래픽이 활성화됩니다.어느소스를 이 포트에 연결하세요.
다음을 통해 이를 보다 적극적으로 제한할 수 있습니다.
add rule inet filter warpinator tcp dport { 42000, 42001 } ip saddr 192.168.0.0/24 ....
그러면 해당 주소 범위(192.168.0.1-192.168.0.255) 내의 주소로 제한됩니다. "홈" 네트워크 범위를 선택하시겠습니까?
이를 nft 스크립트(아마도 /etc/nftables?)로 저장하면 다음을 수행할 수 있습니다.
main.nft
귀하의 라인 중 하나 에 이를 포함시키십시오include
.- 임시로 실행해 보세요
nft -f <script>
"nft" 구성에 포함되어 있으므로 delete table inet filter
이를 다시 로드하여 규칙을 다시 제거할 수 있습니다.nft -f <main policy>
또는 main.nft에 정의된 체인을 유지하고 다음을 활성화할 수 있습니다.
add rule inet filter input jump warpinator
필요할 때.
원하는 경우 정책에서 규칙을 제거할 수 있지만 "규칙 ID"가 필요한 만큼 간단하지는 않습니다.
예를 들어 다음을 실행합니다.
nft -a list ruleset
"점프" 룰의 "처리ID"를 찾아 처리번호별로 삭제해 주세요. 따라서 포트를 닫기 위해 "기준선"을 다시 로드하는 것이 좋은 방법이라고 생각합니다.
답변2
애플리케이션은 초기 연결에 포트 42001을 사용하고 데이터 전송에 포트 42000을 사용합니다. 나는 그것이 TCP를 사용한다고 믿습니다.
응용 프로그램을 시작하기 전에 내 컴퓨터에서 이 두 포트 42000, 42001을 일시적으로 허용하고, 완료되면 이 포트를 닫고 싶습니다.
일시적으로 포트를 허용하는 것은 자동으로 불가능합니다. 유일한 방법은 필요에 따라 특정 규칙을 수동으로 추가하고 제거하는 것입니다. 그러나 이는 금방 지루해질 수 있습니다.
이 문제에 대한 표준 솔루션은 상태 필터링을 기반으로 제한적인 규칙을 만드는 것입니다.
포트는 42000
데이터 전송에 사용되므로 연결에만 허용되어야 하며 새 연결에 대해 포트가 닫히므로 established
항상 이 규칙을 활성화해도 아무런 해가 없습니다 .42000
포트만 42001
문제가 있는 것으로 간주되며 해결책은 new
연결 및 충분히 안전한 로컬 서브넷에만 포트를 적용하는 것입니다.
예:
먼저 다음을 위한 사용자 정의 체인을 생성 established
하고 조인하세요.new
nft add chain inet filter established_in {
comment "Established input traffic"
}
nft add chain inet filter new_in {
comment "New input traffic"
}
다음 단계는 이러한 체인과 연결 related
하고 트래픽을 수행하는 것입니다.new
nft add rule filter input ct state established goto established_in
nft add rule filter input ct state new goto new_in
이로 인해 established
트래픽이 established_in
체인 필터링되고 new
트래픽이 new_in
체인 필터링됩니다. 이는 상태 기반 체인으로 리디렉션을 필터링하는 체인
에 "추가"됩니다 .input
established_in
new_in
다음 Warpinator
으로 연결을 허용하는 체인에 규칙을 추가합니다. saddr
아래 주소를 로컬 서브넷으로 업데이트하면 로컬 네트워크의 장치만 허용됩니다.
또는 Android IP 주소로 제한할 수도 있습니다!
add rule filter new_in ip saddr 192.168.1.0/24 tcp dport 42001 accept
add rule filter established_in ip saddr 192.168.1.0/24 tcp dport 42000 accept
다음 단계는 input
이미 허용한 다른 모든 규칙 established
과 new
이러한 체인에 대한 연결을 추가하는 것입니다.
이는 (귀하의 샘플을 기준으로) 다음과 같습니다.
iifname lo accept comment "allow from loopback"
ip protocol icmp accept comment "allow icmp"
meta l4proto ipv6-icmp accept comment "allow icmp v6"
tcp dport ssh accept comment "allow sshd"
pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited counter
이러한 규칙을 사용자 정의 체인에 추가한 후 마지막 단계는 이러한 체인의 다른 모든 것을 차단하는 것이므로 기본 차단 규칙을 추가합니다.
nft add rule filter established_in drop
nft add rule filter new_in drop
input
그런 다음 다른 규칙이 기본 체인에 추가됩니다.
ct state invalid drop comment "early drop of invalid connections"
iifname lo accept comment "allow from loopback"
ip protocol icmp accept comment "allow icmp"
meta l4proto ipv6-icmp accept comment "allow icmp v6"
tcp dport ssh accept comment "allow sshd"
pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited counter
established
연결( established_in
체인에 의해 처리됨)은 별도로 처리되고 new
연결( 체인에 의해 처리됨)도 별도로 처리된다는 점을 아는 것이 중요합니다 new_in
. 다른 모든 콘텐츠 related
와 invalid
트래픽은 해당 체인으로 input
리디렉션되고 established
연결 됩니다. new
.
이 접근 방식의 이점은 42000
먼저 액세스하지 않으면 포트가 열리지 않고 42001
보안 로컬 네트워크만 포트에 액세스할 수 있다는 것입니다.