최소 iptables 방화벽

최소 iptables 방화벽

우분투 서버 14.04 내에 최소한의 iptables 방화벽을 구축하려고 합니다. 방화벽을 올바르게 구축하고 올바르게 실행하고 있는지 확인하기 위해 커뮤니티를 통해 확인을 위해 실행하고 있습니다. 나는 방법을 잘 이해하지 못하고 작동 -o interface합니다 -i interface. 다른 방화벽 규칙을 볼 때마다 다르게 구성되므로 규칙에 관한 규칙을 설정하는 방식이 복잡해 wan집니다 lan. 제가 이해한 방법은 이렇습니다.PC>-i interface -o interface>-i interface 핏기 없는 -o interface>인터넷. 이는 테이블에도 해당됩니다 NAT. prerouting>회로망 postrouting그리고 forward우회회로망.

wan이것은 내가 어디에 있고 어디에 있는지 eth0가 올바른 경우 방화벽이 작동하도록 하는 일반적인 규칙 세트입니다 .laneth1

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하고 프록시를 사용하도록 강제합니다. 테스트에 사용된 두 개의 카운터가 여전히 있습니다(제거 가능). 또한 acceptskuid "프록시 서버"가 필요하지 않습니다. 이것이 현재의 정책이기 때문입니다.

#!/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;
    }
}

관련 정보