나는 고정 IP(내 집 컴퓨터)를 가지고 있습니다. 다음 규칙을 사용하면 내가 사용할 원격 서버(내 집, 고정 IP에서 원격 서버까지)를 보호하는 데 충분합니까?
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
#Allow traffic from address $STATIC_IP
-A INPUT -s $STATIC_IP -j ACCEPT
-A OUTPUT -d $STATIC_IP -j ACCEPT
#Reject everything else
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT
COMMIT
편집 : 여기 내 최종 Iptable이 있습니다예고르 바실리예프답변
iptables의 일반적인 사용(DNS 없음, https 없음, 외부 IP에 대한 http 없음, 내 고정 IP XXXX에만 해당)
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A OUTPUT -i lo -j ACCEPT
#Allow traffic from address X.X.X.X
-A INPUT -s X.X.X.X -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#Reject everything else
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT
COMMIT
편집: DNS, HTTP, HTTPS를 허용하는 규칙이 추가되었습니다(배포 미러에서 새 패키지를 다운로드하고 호스트 이름을 IP로 확인하는 데 필요함)
스푸핑을 방지하기 위한 루프백에 대한 추가 규칙을 참고하세요(참조:논의하다다음과 같은)
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
패키지 업데이트 및 설치를 위한 Iptables 규칙
*filter
#Allow all loopback (lo0) traffic and reject traffic
#to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT
#Allow traffic from address X.X.X.X
-A INPUT -i eth0 -s X.X.X.X -j ACCEPT
-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#Allow DNS
-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#Allow HTTP
-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#Allow HTTPS
-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#Reject everything else
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -j DROP
COMMIT
현재 내 솔루션은 이 두 규칙을 번갈아 사용하여 일반적인 사용에는 첫 번째 규칙을 사용하고 패키지 업데이트 및 설치에는 두 번째 규칙(DNS, HTTP 및 HTTPS 사용)으로 변경하는 것입니다.
답변1
이게 서버규칙인가요? 그렇다면:
이 규칙은 필요하지 않습니다:
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
이 규칙은 스푸핑 방지 보호입니다. 트래픽만 허용합니다.~에서그리고도착하다당신의 컴퓨터를 신뢰한다면 이 규칙은 필요하지 않습니다.
루프백 주소가 필요한 애플리케이션이 제대로 작동하지 않습니다..
모든 사람을 위한 기본 정책이 있으며 루프백 트래픽을 허용하는 규칙 REJECT
은 없습니다 . OUTPUT
스크립트에 다음 규칙을 추가하세요.
-A OUTPUT -i lo -j ACCEPT
서버는 모든 트래픽을 컴퓨터로 보낼 수 있습니다.
그것이 당신에게 필요한 것이라면 당신의 규칙이 올바른 것입니다. 만약에오직컴퓨터에서 데이터 교환을 활성화해야 하는데 규칙이 올바르지 않습니다.
이 규칙을 바꾸십시오:
-A OUTPUT -d $STATIC_IP -j ACCEPT
이와 관련하여:
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
답변2
이는 서버가 자신이 보내는 트래픽만 수신하고 자신에게만 트래픽을 보내도록 제한합니다. 이 규칙 세트를 사용하면 직접 서버를 사용하더라도 다른 곳에서는 서버에 액세스할 수 없습니다. 이는 서버를 보호하는 동시에 서버를 사용할 수 없게 만들기 때문에 아마도 이 작업을 수행하고 싶지 않을 것입니다.