LoginSignup
41
43

More than 5 years have passed since last update.

さくらVPS CentOSインスタンス用のiptables設定(接続元IPアドレスによるssh等の接続制限)

Last updated at Posted at 2015-05-10

はじめに

さくらVPSに立てたCentOS 6.6インスタンス用のiptables設定について記載致します。

さくらVPSインスタンスは作成直後、ファイアウォールによる通信制限はかかっていません。

[root@tk2-XXX-XXXX ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@tk2-XXX-XXXX ~]#

さくらVPSのインスタンスは、インターネット上からアクセス可能なグローバルIPアドレスが付与された状態で起動しますので、最低限の通信制限はかけておいた方が良いかと思います。

以下の例では、さくらVPSインスタンスに対して、特定のIPアドレス(例えば自分のPC)からのみssh,MySQL通信を許可するようiptablesで設定する例を記載致します。

実行環境

実行環境のさくらVPSインスタンスは以下になります。

・さくらVPS (サービスプラン名 = さくらのVPS(v4) SSD 512 TK02)
・CentOS release 6.6 (2.6.32-504.16.2.el6.x86_64)

例示用IPアドレスについて

さくらVPSインスタンス等のIPアドレスは、例示用として以下のIPアドレスで記載しております。

・さくらVPSインスタンス(tk2-XXX-XXXX)のIPアドレス 192.0.2.200
・自分のPC(さくらVPSインスタンスへのssh,MySQL接続を許可したいマシン)のIPアドレス 192.0.2.100

さくらVPSインスタンスに設定するiptablesサンプル

(1) さくらVPSインスタンスを起動します。

さくらVPSコントロールパネルコンソールからさくらVPSインスタンスを起動します。

インスタンスの起動操作等は以下をご参照下さい。
https://help.sakura.ad.jp/app/answers/detail/a_id/2429

(2) さくらVPSインスタンスにrootユーザでログインします。

さくらVPSインスタンスが起動したら、TeraTermを起動してrootユーザでログインします。

(3) さくらVPSインスタンスに/etc/sysconfig/iptablesを作成します。

さくらVPSインスタンスにrootユーザでログインしたら、以下の/etc/sysconfig/iptablesファイルを作成します。

以下の/etc/sysconfig/iptablesでは、例として自分のクライアントPCからさくらVPSインスタンス(tk2-XXX-XXXX)に対して、ssh(22番ポート)やMySQL(3306番ポート)への通信を許可しています。自分のクライアントPC以外のIPアドレスからのsshやMySQLポートへの通信は禁止しております。

[root@tk2-XXX-XXXX ~]# export LANG=ja_JP.UTF-8
[root@tk2-XXX-XXXX ~]#
[root@tk2-XXX-XXXX ~]# vi /etc/sysconfig/iptables
/etc/sysconfig/iptables
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]

##### DNS #####
## さくらVPSサーバから外部DNSサーバに対するDNS(53番ポート)名前解決許可
-A OUTPUT -p tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT

##### HTTP #####
## さくらVPSサーバのhttpdに対するhttp(80番ポート)通信許可
## さくらVPSサーバのhttpdに対するhttps(443番ポート)通信許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443   -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

##### ssh #####
## さくらVPSサーバのsshdに対するssh(22番ポート)通信許可

# 自分のクライアントPC(192.0.2.100)からのssh通信は許可
-A INPUT -s 192.0.2.100 -p tcp --dport 22 -j ACCEPT

# 上記以外のマシンからのssh通信は禁止
-A INPUT -p tcp --dport 22 -j REJECT

##### MySQL #####
## さくらVPSサーバのMySQLに対するMySQL(3306番ポート)通信許可

# 自分のクライアントPC(192.0.2.100)からのMySQL通信は許可
-A INPUT -s 192.0.2.100 -p tcp --dport 3306 -j ACCEPT

# 上記以外のマシンからのMySQL通信は禁止
-A INPUT -p tcp --dport 3306 -j REJECT

##### 接続許可ポート以外のポートに対する通信禁止 #####
## 前述までに通信許可したポート以外のポートに対する通信を禁止する
-A INPUT -j REJECT --reject-with icmp-host-prohibited

#####
COMMIT

(4) さくらVPSインスタンスのiptables有効化前の状態を確認します。

さくらVPSインスタンスのiptablesを有効化する前に、自分のクライアントPC(192.0.2.100)以外のマシンから、さくらVPSインスタンス(tk2-XXX-XXXX 192.0.2.200)に自由にssh接続出来る状態である事を確認します。

[ec2-user@not-sakura-server ~]$ ssh root@192.0.2.200
root@192.0.2.200's password:
Last login: Sun May 10 23:12:23 2015 from XXXXX.XXXX.XXXX.XXXX

SAKURA Internet [Virtual Private Server SERVICE]

[root@tk2-XXX-XXXXX ~]#

[root@tk2-XXX-XXXXX ~]# hostname
tk2-XXX-XXXXX.vs.sakura.ne.jp
[root@tk2-XXX-XXXXX ~]#

(5) さくらVPSインスタンスでiptablesを有効化し、ssh等のポートに対する通信制限をかけます。

さくらVPSインスタンスで/etc/init.d/iptables startを実行し、さくらVPSインスタンスのiptablesを有効化します。

[root@tk2-XXX-XXXX ~]# /etc/init.d/iptables start
iptables: ファイアウォールルールを適用中:                  [  OK  ]
[root@tk2-XXX-XXXX ~]#

iptablesが有効になった事を確認します。

[root@tk2-XXX-XXXX ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  XXXX.XXXX.XXXX.XXXX  anywhere            tcp dpt:ssh
REJECT     tcp  --  anywhere             anywhere            tcp dpt:ssh reject-with icmp-port-unreachable
ACCEPT     tcp  --  XXXX.XXXX.XXXX.XXXX  anywhere            tcp dpt:mysql
REJECT     tcp  --  anywhere             anywhere            tcp dpt:mysql reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain
[root@tk2-XXX-XXXX ~]#

iptablesを自動起動するよう設定します。

[root@tk2-XXX-XXXX ~]# chkconfig iptables on
[root@tk2-XXX-XXXX ~]# chkconfig --list | grep iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@tk2-XXX-XXXX ~]#

(6) さくらVPSインスタンスに設定したiptablesが有効になっているか確認します。

先のiptablesでssh接続を許可した自分のクライアントPC(192.0.2.100)から、さくらVPSインスタンス(tk2-XXX-XXXX 192.0.2.200)に対して、ssh接続できる事を確認します。

ssh root@192.0.2.200

[root@tk2-XXX-XXXXX ~]# hostname
tk2-XXX-XXXXX.vs.sakura.ne.jp
[root@tk2-XXX-XXXXX ~]#

念の為、自分のクライアントPC(192.0.2.100)以外のマシンからは、さくらVPSインスタンス(tk2-XXX-XXXX 192.0.2.200)に対して、ssh接続出来ないよう制限がかかった事を確認します。

[ec2-user@not-sakura-server ~]$ ssh root@192.0.2.200
ssh: connect to host 192.0.2.200 port 22: Connection refused
[ec2-user@not-sakura-server ~]$

以上になります。

41
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
43