概要
最近ハンズオンや検証でテスト環境が必要になったとき、AWSやらAzureで仮想サーバーを立てて使っている。
しかし、インターネット上で使うので当然IPフィルタリングをしなければいけない。
AWSはセキュリティグループでIP制限をかけられるがAzureの場合は自分でiptablesを設定しないといけない。
毎回調べて書いていて煩わしいのでまとめます。
さくらVPSや直接コンソロールを叩く場合
直接コンソロールに接続している場合はこう。
sudoするなりroot権限で行う
3行目のxxx.xxx.xxx.xxxは接続元IPに置き換える
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
出力パケットはすべて許可、
入力パケットは指定したIPからとサーバー側から送った接続の戻りのみ許可。
これで指定IPからの接続はすべて使えてyumもaptも使える。
ミスってSSHが繋がらなくなったら再起動すればリセットされます。
すでにSSH接続をしている場合
SSHでログインしている場合に↑をやると最初の一行目を打ち込んだ瞬間に接続が途切れてしまうので、
スクリプトを書いてそれを始動させる。
下記の頭の変数の値を変えてiptable.shとかいう名前で保存、そしてroot権限で動かす。
#!/bin/sh
MYIP=xxx.xxx.xxx.xxx
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# accept local roopback
iptables -A INPUT -i lo -j ACCEPT
# accept my IP
iptables -A INPUT -p tcp -s ${MYIP} -j ACCEPT
# accept established connection
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# drop other connection
iptables -A INPUT -j DROP
これも失敗してしまったときはサーバーを再起動すれば元に戻ります。
仕上げ
sudo service iptables save
これで再起動しても戻らなくなる。
※debianは使えません