2008-12-17

VPSでiptablesのstate等が使えない

iptablesは普通に使うなら、stateやlimitを使うと思うのだが、一部VPSでは使えない。
海外だと動かしてくれと言えば許可してくれるんだが、国内はそうでも無かったり。
海外でも、戻っていたりして、そうなると完全に締め出されたりするので、安心は出来ない。

仕方ないので、思いっきり簡単なルールを作る。
正直、これでは心許ない。
最悪、VPSですので、上位で対策を取れる事を前提にしています。

参考はVPSがOpenVZ系の場合なので、インターフェースはvenet0です。
許可しているのはSSHだけ。

#!/bin/sh

# All Rule Reset
iptables -F

# BasicRule
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# lo Input Accept
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp ! --syn -j ACCEPT

# Spoofing DROP
iptables -A INPUT -i venet0 -s 127.0.0.0/8 -j DROP
iptables -A INPUT -i venet0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i venet0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i venet0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i venet0 -s 0.0.0.0/8 -j DROP
iptables -A INPUT -i venet0 -s 169.254.0.0/16 -j DROP
iptables -A INPUT -i venet0 -s 192.0.2.0/24 -j DROP
iptables -A INPUT -i venet0 -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i venet0 -s 240.0.0.0/5 -j DROP
iptables -A INPUT -i venet0 -s 248.0.0.0/5 -j DROP
iptables -A INPUT -i venet0 -s 255.255.255.255/32 -j DROP

#Spoofing-Venet DROP(HostIP)
iptables -A INPUT -i venet0 -s 192.0.2.100 -j DROP
iptables -A INPUT -i venet0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
iptables -A INPUT -f -i venet0 -j DROP

# Ident Reject
iptables -A OUTPUT -p tcp --dport 113 -j REJECT

# DNS Client
iptables -A INPUT -p udp --sport 53 -j ACCEPT

# ICMP Type3,11 Accept
iptables -A INPUT -i venet0 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --icmp-type destination-unreachable -j ACCEPT

# Accept
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

# Other Drop
iptables -A INPUT -j DROP

0 コメント:

コメントを投稿