최소 iptables 방화벽

최소 iptables 방화벽

우분투 서버 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 eth0lanis를 사용한 규칙 세트입니다 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.localsudo reboot장치가 부팅될 때마다 이 규칙 세트가 영구적으로 적용됩니까?

답변1

더 나아가기 전에. 네트워크 필터링 테이블( nftables)을 확인하세요. 이는 iptables, iptables6, arptables를 대체합니다...

nftables는 사용하기 쉽고 강력하며 최신입니다. 최근 시스템에서 iptables는 nftables의 (전통적인) 프런트 엔드입니다.

nftables 규칙 세트의 예: 사용자의 직접 네트워크 액세스를 차단 other하고 프록시를 사용하도록 강제합니다. 테스트에 사용되는 두 개의 카운터가 여전히 있습니다(삭제 가능). 또한 acceptskuid "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;
    }
}

관련 정보