原点回帰!元PMが技術力でフルリモートワークを目指すブログ

IT業界に蔓延る技術力0の元ダメPMが独立を機に技術を1から勉強していくブログです。技術の話だけでなく起業の事とかお金の事とかなんでも備忘録的に綴って行きます。

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

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

今回はその最悪のパターンを回避する為のスクリプトを作成しましたので、紹介したいと思います。

前提条件

  • 動作環境は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


以上となります。