우분투 서버 14.04에 최소 iptables 방화벽을 구축할 계획입니다. 방화벽을 올바르게 구축하고 올바르게 실행했는지 확인하기 위해 커뮤니티를 통해 실행하여 확인했습니다. 방법 -o interface
과 동작을 잘 모르겠습니다 -i interface
. 다양한 방화벽 규칙을 볼 때마다 다르게 구성되므로 wan
규칙 설정 방법이 복잡해집니다 lan
. 내가 이해하는 방법은 다음과 같습니다.개인용 컴퓨터>-i interface
근거리 통신망 -o interface
>-i interface
핏기 없는 -o interface
>인터넷. 테이블 도 NAT
마찬가지다 . prerouting
>회로망 postrouting
우회forward
회로망.
wan
내 올바른 위치가 eth0
이고 lan
이면 eth1
방화벽이 작동하도록 하는 일반적인 규칙 집합은 다음과 같습니다.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
wan
다음은 is eth0
및 lan
is를 사용한 규칙 세트입니다 eth1
.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT,ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD -j DROP
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT
iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
또한 방화벽을 영구적으로 적용하는 것도 포함됩니다. 이 규칙 세트를 편집한 후 sudo nano -w /etc/rc.local
사용한 후에 sudo chmod 755 /etc/rc.local
는 sudo reboot
장치가 부팅될 때마다 이 규칙 세트가 영구적으로 적용됩니까?
답변1
더 나아가기 전에. 네트워크 필터링 테이블( nftables
)을 확인하세요. 이는 iptables, iptables6, arptables를 대체합니다...
nftables는 사용하기 쉽고 강력하며 최신입니다. 최근 시스템에서 iptables는 nftables의 (전통적인) 프런트 엔드입니다.
nftables 규칙 세트의 예: 사용자의 직접 네트워크 액세스를 차단 other
하고 프록시를 사용하도록 강제합니다. 테스트에 사용되는 두 개의 카운터가 여전히 있습니다(삭제 가능). 또한 accept
skuid "proxy-server"는 필요하지 않습니다. 이것이 현재의 정책이기 때문입니다.
#!/usr/sbin/nft -f
table ip my_table {}
flush table my_table
table ip my_table {
chain output {
type filter hook output priority 0; policy accept;
skuid "other" jump restrict_chain;
skuid "proxy-server" accept;
}
chain restrict_chain {
counter;
oifname != "lo" reject;
tcp dport != "1080" reject;
counter;
accept;
}
}