![최소 iptables 방화벽](https://rvso.com/image/169397/%EC%B5%9C%EC%86%8C%20iptables%20%EB%B0%A9%ED%99%94%EB%B2%BD.png)
우분투 서버 14.04 내에 최소한의 iptables 방화벽을 구축하려고 합니다. 방화벽을 올바르게 구축하고 올바르게 실행하고 있는지 확인하기 위해 커뮤니티를 통해 확인을 위해 실행하고 있습니다. 나는 방법을 잘 이해하지 못하고 작동 -o interface
합니다 -i interface
. 다른 방화벽 규칙을 볼 때마다 다르게 구성되므로 규칙에 관한 규칙을 설정하는 방식이 복잡해 wan
집니다 lan
. 제가 이해한 방법은 이렇습니다.PC>-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
세트 eth0
입니다 lan
.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 "프록시 서버"가 필요하지 않습니다. 이것이 현재의 정책이기 때문입니다.
#!/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;
}
}