나는 이러한 iptables 규칙을 설정했고 이로 인해 SSH 액세스(및 기타 모든 것)가 차단되었습니다.
*filter
# Allow loopback
-I INPUT 1 -i lo -j ACCEPT
# Allow DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT
# allow outbound connection to several website
-A OUTPUT -p tcp -d www.google.com -j ACCEPT
-A OUTPUT -p tcp -d example.com -j ACCEPT
-A OUTPUT -p tcp -d myotherwebsite.tld -j ACCEPT
#allow inbound connection after an allowed outbound
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#allow me and my website to communicate
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/8 -j ACCEPT
-A INPUT -j LOG
-A OUTPUT -j LOG
#drop everything else
-P INPUT DROP
COMMIT
이 예에서 내 IP는 1.1.1.1이고 내 웹사이트는 2.2.2.2이며 이 서버는 3.3.3.3입니다. 모든 ipv6 연결을 차단합니다(내 PC는 ipv4로만 구성되어 있습니다). 나는 이러한 규칙이 과거에는 효과가 있었다고 거의 확신하지만 지금은 그렇지 않습니다.
답변1
OUTPUT
이미 설정된 연결에 대한 패킷을 허용하는 규칙을 체인에 추가합니다 . 규칙 세트에 추가할 일반적인 규칙은 다음과 같습니다.
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
SSH 연결의 경우 이는 에서 설명한 규칙과 동일한 목적으로 사용됩니다.이전 답변. 그러나 이는 더 일반적이며 체인 INPUT
에 명시적인 추가 규칙 없이 나중에 추가할 수 있는 다른 체인 규칙과 관련된 패킷의 양방향 흐름을 허용하는 데에도 적용됩니다 OUTPUT
.
답변2
양방향 규칙이 필요한 것 같습니다. 다음 줄을 추가하면 내 서버에 액세스할 수 있습니다.
-A OUTPUT -d 1.1.1.1/32 -j ACCEPT