原点回帰!IT業界に蔓延る技術力0の元ダメPMのブログ

原点回帰で技術力をつけたい技術力0の元ダメPMです。技術力がないとやっていけないフリーランスエンジニアの世界に背水の陣で飛び込みました。本ブログでは技術の話だけでなく起業の事とかお金の事とかなんでも備忘録的に綴って行きます。

iptablesの設定ミスによるSSH通信遮断を防ぐスクリプトを作った

本番環境でiptablesを反映する時って何回やってもドキドキですよね。

もちろん本番環境でiptablesを反映する時は、事前に通信テストパターンを準備した上で、反映後のテストで通信に影響がでた場合はすぐに戻せる様にもしていますが、最も最悪なパターンとしては反映した途端にSSHがつながらなるパターン。

今回はその最悪のパターンを回避する為にiptables変更後、一定時間キーボートからの入力がなければiptablesの設定を切り戻すスクリプトを作成しましたのでぜひご活用いただければと思います。

前提条件

  • 動作環境はCentOS6系
  • スクリプトはiptablesの反映のみを行う

スクリプトの概要

基本的にはiptablesサービスを起動するだけのスクリプトですが、5秒間入力がなかったらiptablesサービスをストップします。
これによってiptablesの設定ミスなどでiptablesサービスを起動した途端に対象サーバとのSSH通信が遮断されたとしても、5秒間入力がなければiptablesサービスをストップするのでSSH通信が出来なくなると言う最悪の事態を防ぐ事ができます。

スクリプトの作成

$ vi iptables.sh

### iptables.sh ###

#!/bin/bash

echo "service iptables start"
sudo service iptables start

if read -p "Please Enter (y):" -t 5 RES
then
    if [ $RES = "y" ]
    then
        echo "Done."
        exit;
    fi
fi

sudo service iptables stop
echo "service iptables stopped"

スクリプトの使い方

1.「/etc/sysconfig/iptables」を編集する
$ sudo vi /etc/sysconfig/iptables

### /etc/sysconfig/iptables ###

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
・
〜 中略 〜
・
COMMIT
2.iptablesサービスを停止する
$ sudo service iptables stop
3.スクリプトを実行する
$ bash iptables.sh


以上となります。