처음으로 iptable 방화벽 소 기 를 썼 습 니 다.
토폴로지 간소화 하면 이 렇 습 니 다. 호스트 A ― Liux ― 호스트 B, iptable 의 역할 은 호스트 B 를 adsf server 로 원 격 데스크 톱 으로 연결 할 수 있 고 외부 네트워크 를 연결 할 수 있 으 며 내부 네트워크 자원 에 접근 하 는 것 을 금지 하 는 것 입 니 다.
처음부터 번 거 로 움 이 끊 이지 않 았 습 니 다. 먼저 Liux ping 호스트 A 가 통 하고 호스트 B 가 통 하지 않 았 습 니 다.그리고 두 개의 네트워크 카드 가 어떻게 모두 물리 적 네트워크 카드 에 묶 여 있 는 지 알 수 없 었 다.인터넷 에서 찾 아 보 니 모두 더 블 네트워크 카드 로 연결 되 어 있 습 니 다. 저 와 이 문 제 는 아직 다 릅 니 다.이때 문득 "인터넷 에서 찾 을 수 없 는 문 제 는 모두 SB 문제"라 는 말 이 떠 올 랐 다. ifconfig 를 자세히 살 펴 보 니 두 번 째 네트워크 카드 의 mac 주 소 는 FF 멀미 였 다. 보아하니 네트워크 카드 가 인식 되 지 않 은 것 같다.그리고 설치 판 에서 Liux 의 구동 을 찾 아서 해 결 했 습 니 다. 역시 SB 문제 입 니 다.
마침내 네트워크 문 제 를 해결 하고 Liux 는 두 호스트 를 연결 하여 iptable 을 쓰기 시작 할 수 있 습 니 다.처음에 INPUT OUTPUT 와 FORWARD 를 모두 DROP 에서 떨 어 뜨리 려 고 했 는데 필요 한 포트 를 열 고 많은 문 제 를 발 견 했 습 니 다. 호스트 A 와 호스트 B 가 서로 다른 네트워크 에 있 는 이상 DROP 를 사용 하지 않 아 도 되 고 그 자체 가 서로 방문 할 수 없다 고 생각 했 습 니 다.
납득 한 후에 훨씬 간단 해 졌 다. 먼저 주소 변환 을 해서 호스트 B 가 인터넷 에 접속 할 수 있 도록 한 다음 에 3389, 80, 443 포트 를 비 추어 기본적으로 목적 을 달성 했다.
보안 에 대해 서 는 3389 만 외부 네트워크 에 매 핑 되 기 때문에 여 기 는 제한 이 없습니다. 호스트 B ssh 에서 Liux 로 설정 하 는 것 만 금지 합 니 다.호스트 B 는 외부 사람들 에 게 adsf 를 만들어 주 는 것 이기 때문에 내부 네트워크 자원 에 접근 하 는 것 을 금지 하 는 것 이 주요 목적 입 니 다.
사실은 안전성 에 대한 규칙 에 대해 잘 모 르 겠 습 니 다. 생각 나 는 것 은 바로 포트 를 제한 하 는 것 입 니 다. 큰 신의 지 도 를 바 랍 니 다.
#!/bin/bash
#
##
in_if="eth0"
in_ip="10.1.1.249"
out_if="eth1"
out_ip="192.168.0.1"
ipt="/sbin/iptables"
gw="10.1.0.1"
work="192.168.0.2"
# iptable
for table in filter nat mangle raw; do
$ipt -t $table -X
$ipt -t $table -F
$ipt -t $table -Z
done
#####
CTL="/sbin/sysctl"
$CTL -w net.ipv4.ip_forward=1
#
$ipt -t nat -A PREROUTING -d $in_ip -p tcp --dport 3389 -j DNAT --to $work:3389
$ipt -t nat -A POSTROUTING -d $work -p tcp --dport 3389 -j SNAT --to $in_ip
#web
$ipt -t nat -A PREROUTING -d $in_ip -p tcp --dport 80 -j DNAT --to $work:80
$ipt -t nat -A POSTROUTING -d $work -p tcp --dport 80 -j SNAT --to $in_ip
$ipt -t nat -A PREROUTING -d $in_ip -p tcp --dport 443 -j DNAT --to $work:443
$ipt -t nat -A POSTROUTING -d $work -p tcp --dport 443 -j SNAT --to $in_ip
#
$ipt -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# ssh# , ?
$ipt -A INPUT -s $work -p tcp --dport 22 -j DROP
$ipt -A OUTPUT -s $work -p tcp --dport 22 -j DROP
$ipt -A OUTPUT -s $work -p tcp --dport 80 -j ACCEPT
$ipt -A OUTPUT -s $work -p tcp --dport 443 -j ACCEPT
#
$ipt -t nat -A PREROUTING -d 10.1.0.0/22 -j DROP
#drop
$ipt -A INPUT -m state --state INVALID -j DROP
$ipt -A OUTPUT -m state --state INVALID -j DROP
$ipt -A FORWARD -m state --state INVALID -j DROP
#
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# #
$ipt -t nat -A PREROUTING -s $work -p tcp --dport 3389 -j DROP
아직도 논리 적 으로 혼 란 스 러 운 부분 이 많은 것 같 습 니 다. 특히 호스트 B 가 주소 변환 을 한 후에 아래 의 규칙 은 전환 전의 것 을 써 야 합 니까? 아니면 쓸 필요 가 없 습 니까?
PS: 테스트 를 해 보 았 습 니 다. 마지막 과 앞 에 있 는 DROP 전체 10 개의 네트워크 를 주석 한 후에 원 격 으로 연결 할 수 있 습 니 다. 주석 을 취소 한 두 개의 모든 것 은 원 격 으로 연결 할 수 없습니다. 즉, 주소 가 바 뀐 후에 도 원래 의 주 소 는 유효 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.