2015-01-02
■[クラウド]CoreOSにファイアウォールを設定する

はじめに
CoreOS使用時にファイアウォールを設定する方法について、日本語の情報を発見できなかったため、メモ。
CoreOS、「Using CoreOS」の「Securing CoreOS」に以下のように書いてあります。
The recommended way to secure your entire cluster is to use a physical firewall, EC2 Security Groups or a similar feature to restrict all traffic unless allowed.
先ほど引用した部分に関連する思想のせいか、デフォルトではファイアウォールが起動していないっぽいという…。
環境
- さくらのクラウド
- 1コア
- 1GB
- CoreOS 367.1.0 (stable)
ファイアウォールの設定方法
以下にSSHとローカルホストからの通信のみを許可する場合の、/usr/share/oem/cloud-config.yml の例を示します。
さくらのクラウドで起動した場合のデフォルトのcloud-config.yml にファイアウォールの設定を追記しました。
IPアドレスとパスワードの部分は伏せてあります。
#cloud-config coreos: units: - command: restart name: coreos-setup-environment.service - command: restart name: systemd-networkd.service - name: iptables.service command: start content: | [Unit] Description=iptables Author=Me After=systemd-networkd.service [Service] Type=oneshot ExecStart=/usr/sbin/iptables-restore /etc/iptables.rules ExecReload=/usr/sbin/iptables-restore /etc/iptables.rules ExecStop=/usr/sbin/iptables-restore /etc/iptables.rules [Install] WantedBy=multi-user.target - command: start content: "[Unit]\nDescription=timezone\n[Service]\nType=oneshot\nRemainAfterExit=yes\nExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime\n" name: timezone.service hostname: core01 users: - name: core passwd: hogehoge write_files: - content: "[Match]\nName=e*\n\n[Network]\nAddress=xxx.xxx.xxx.xxx/24\nGateway=xxx.xxx.xxx.x\nDNS=xxx.xxx.xxx.xxx\nDNS=xxx.xxx.xxx.xxx\n" path: /etc/systemd/network/10-static.network - path: /etc/iptables.rules permissions: 0644 content: | *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp --tcp-flags ALL NONE -j DROP -A INPUT -p tcp ! --syn -m state --state NEW -j DROP -A INPUT -p tcp --tcp-flags ALL ALL -j DROP -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -P INPUT DROP -P OUTPUT ACCEPT COMMIT
参考
以下のサイトを参考にさせていただきました。
さいごに
これが一番エレガントなのかはわからないのですが、私が理解している範囲ではCoreOSらしい設定方法のはず……。
コメントを書く
トラックバック - http://d.hatena.ne.jp/sekom/20150102/p1