makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

カテゴリ: 技術メモ

こちらはWindows7のドメイン設定編です

Samba4のインストール編はこちら

--------------------------
Step1: Windows7クライアントのドメイン参加ユーザを作成
--------------------------
Samba4サーバのsamba-toolでユーザ作成

# /usr/local/samba/bin/samba-tool user add ユーザ名
 →パスワード入力

管理ツールからの操作を可能にする場合は管理者グループに加える

グループにユーザを追加
# /usr/local/samba/bin/samba-tool group addmembers 'Domain Admins' ユーザ名


--------------------------
Step2: Windows7 PCをドメインに参加
--------------------------
DNSサーバーをSamba4サーバに変更
[コントロールパネル]→[ネットワークと共有センター]→[ローカル エリア接続]
 [プロパティ]→[インターネット プロトコル バージョン 4]
  優先DNSサーバー 192.168.100.123 (Samba4サーバ IPアドレス)
 ※[インターネット プロトコル バージョン 6]を停止

所属するグループをワークグループからドメインに変更
[コントロールパネル]→[システム]
 「コンピュータ名、ドメインおよびワークグループの設定」
  「コンピュータ名を変更したりドメインに参加させたり...」 『設定の変更』をクリック
 「所属するグループ」をワークグループからドメインに変更
  ドメイン名を入力 testdomain.local
   →ドメイン認証 administrator / (Aamba4の管理者パスワード)

再起動してSamba4に作成したユーザ名でログイン


--------------------------
その他: Windows7からSamba4サーバを管理する
--------------------------
RSATのインストール
 Windows 7 Service Pack 1 (SP1) 用のリモート サーバー管理ツール
  http://www.microsoft.com/ja-jp/download/details.aspx?id=7887

RSATを利用可能にする
 [コントロールパネル]-[プログラム]-[Windowsの機能の有効化または無効化]
   [リモートサーバー管理ツール]にチェックを入れて有効にする

[コントロールパネル]-[システムとセキュリティ]-[管理ツール] から起動


CentOSでSamba4ベースにしたActiveDirectoryを構築する際のメモです

2013年11月の時点ではsamba ver4系の公式rpmは出回っていないようなのでソースからコンパイルしました。
------------------------------
Step 1: Sambaの入手
------------------------------
# cd /usr/local/src
# wget http://ftp.samba.org/pub/samba/samba-4.1.1.tar.gz


------------------------------
Step 2: Sambaのコンパイル
------------------------------
# tar zxvf samba-4.1.1.tar.gz
# cd samba-4.1.1
# ./configure --enable-debug --enable-selftest
 (中略)
# time ( make -j3 ; make quicktest ) | tee -a make.log
 (中略)
ALL OK (2061 tests in 310 testsuites)
#


------------------------------
Step 3: Sambaのインストール
------------------------------
# make install

インストール完了


------------------------------
Step 4: Sambaの設定
------------------------------
ADドメイン名を担保するために/etc/hostsと/etc/resolv.confを調整

# vi /etc/hosts
-----
127.0.0.1       localhost.localdomain   localhost
192.168.100.123   dctest.testdomain.local  dctest
-----

# vi /etc/resolv.conf
-----
search testdomain.local
nameserver 192.168.100.123
-----

samba-tool domain provision 設定情報
Realm : TESTDOMAIN.LOCAL
 Domain : TESTDOMAIN
 Server Role : dc
 DNS backend : SAMBA_INTERNAL
 DNS forwarder IP address : 192.168.100.1 (LANから通常使用するDNSなど)
Administrator password : ******

※パスワードは数字、英大文字、英小文字、記号のうち3種を使用すること

domain provision に失敗した場合は以下のファイルを削除してやり直し
# rm -rf /usr/local/samba/private/*
# rm -rf /usr/local/samba/etc/smb.conf


samba-tool の実行
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2

Realm [TESTDOMAIN.LOCAL]:
 Domain [TESTDOMAIN]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.100.1]:
Administrator password: ******
Retype password: ******
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=testdomain,DC=local
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=testdomain,DC=local
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              dctest
NetBIOS Domain:        TESTDOMAIN
DNS Domain:            testdomain.local
DOMAIN SID:            S-1-5-21-366560596-18017407-*************

#
-----------------------------------------------------------------------------------

生成された smb.conf をコピー
# cp /usr/local/samba/etc/smb.conf /etc/samba


Kerberosの設定を編集
# vi /etc/krb5.conf
----------
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = TESTDOMAIN.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = true

[realms]
 TESTDOMAIN.LOCAL = {
  kdc = dctest.testdomain.local
 }

[domain_realm]
 .testdomain.local = TESTDOMAIN.LOCAL
 testdomain.local = TESTDOMAIN.LOCAL
----------


------------------------------
Step 5: シングルモードによるテスト
------------------------------

# /usr/local/samba/sbin/samba -i -M single
samba version 4.1.1 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_UNSUCCESSFUL
-----------------------------------------------------------------------------------

Kerberosをテスト
# kinit administrator@TESTDOMAIN.LOCAL


------------------------------
Step 6: Sambaの動作確認
------------------------------
クライアントアプリのバージョン確認
# /usr/local/samba/bin/smbclient -V

クライアントアプリから動作確認
# /usr/local/samba/bin/smbclient -L localhost -U%

管理者ログイン
# /usr/local/samba/bin/smbclient //dctest.testdomain.local/netlogon -Uadministrator


------------------------------
Step 7: DNSの動作確認
------------------------------

名前解決の確認
# host -t SRV _ldap._tcp.testdomain.local.
_ldap._tcp.testdomain.local has SRV record 0 100 389 dctest.testdomain.local.
# host -t SRV _kerberos._udp.testdomain.local.
_kerberos._udp.testdomain.local has SRV record 0 100 88 dctest.testdomain.local.
# host -t A dctest.testdomain.local.
dctest.testdomain.local has address 192.168.1.201
# host -t A www.sgi.com (forwarderを経由しての外部IPアドレス検索)
www.sgi.com has address 192.48.178.134
----------


------------------------------
Step 8: 自動起動スクリプトの登録
------------------------------
(参考)
http://www.oss-d.net/samba4/ad#ee305c57

# vi /etc/init.d/samba4
----------
#! /bin/bash
#
# samba4       Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions

if [ -f /etc/sysconfig/samba4 ]; then
    . /etc/sysconfig/samba4
fi

CWD=$(pwd)
prog="samba4"

start() {
      # Attach irda device
      echo -n $"Starting $prog: "
    /usr/local/samba/sbin/samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
      echo
}
stop() {
      # Stop service.
      echo -n $"Shutting down $prog: "
    killall samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
      echo
}
status() {
    /usr/local/samba/sbin/samba --show-build
}

# See how we were called.
case "$1" in
start)
    start
      ;;
stop)
    stop
      ;;
status)
    status irattach
    ;;
restart|reload)
    stop
    start
    ;;
*)
      echo $"Usage: $0 {start|stop|restart|status}"
      exit 1
esac

exit 0
---------


# chmod 0755 /etc/init.d/samba4
# ln -s /etc/init.d/samba4 /etc/rc3.d/S80samba4
# ln -s /etc/init.d/samba4 /etc/rc5.d/S80samba4

# chkconfig --level 35 samba4 on
# service samba4 start
sambaが立ち上がることを確認


------------------------------
Step 9: その他(iptablesの調整)
------------------------------
簡易FWとしてiptables等を使用している場合は以下のようにADに必要なポートを解放する必要があります。

# vi /etc/sysconfig/iptables

以下を追加してiptablesを再起動
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 88 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 88 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 135 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 389 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 464 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3268 -j ACCEPT



→続いてWindows7のドメイン設定編はこちら

iPadのSafariでPHP(CakePHP)アプリのログインSESSIONが切れてしまう不具合が発生し、かなりハマりました。

いろいろ検証したところ、画面上部の「アクション」アイコンをタップすると、ブラウザが人知れずアイコンデータをサーバに取得しに行き、結果として存在しないファイルがNotFound(404)となりセッションが切れてしまうようです。

自動的にリクエストされるアイコンデータ
/apple-touch-icon-144x144-precomposed.png
/apple-touch-icon-144x144.png
/apple-touch-icon-72x72-precomposed.png (旧バーション)
/apple-touch-icon-72x72.png (旧バーション)
/apple-touch-icon-precomposed.png
/apple-touch-icon.png

これらのファイルは0バイトのダミーを置くだけでもセッション切れが回避できました。

IEがブックマークアイコンのfavicon.icoを要求するようなものでしょうかね?

やや特殊なネットワーク環境だけに遭遇する現象だったかもしれませんので参考まで

今現在、サーバがどのくらいの回線帯域を使用しているか確認できるスクリプトを作りました。
ただしPerlですが参考まで。。

#! /usr/bin/perl

$interval = 2;

$line = `/sbin/ifconfig eth0 | grep "TX bytes"`;
$line =~ s/^.*TX bytes\:(\d+) .*$/$1/ ;
$previous = $line;
print "sampling interval is $interval sec.\n";
sleep $interval;

while (1){
  $line = `/sbin/ifconfig eth0 | grep "TX bytes"`;
  $line =~ s/^.*TX bytes\:(\d+) .*$/$1/ ;
  $bytes = $line - $previous;
  $previous = $line;

  $Mbps = int ($bytes * 8 / 1024 / 1024 / $interval *100 ) / 100;

  printf ("%12d bytes in %ssec / %3.2f Mbps\n", $bytes , $interval , $Mbps);
  sleep $interval;
}

コンソールで実行するとMbps単位で出力します。

% .traffic.pl
sampling interval is 2 sec.
     3827959 bytes in 2sec / 14.60 Mbps
     3695406 bytes in 2sec / 14.09 Mbps
     2831445 bytes in 2sec / 10.80 Mbps
     3737917 bytes in 2sec / 14.25 Mbps
     4167232 bytes in 2sec / 15.89 Mbps
     3855147 bytes in 2sec / 14.70 Mbps
     3276326 bytes in 2sec / 12.49 Mbps
     3629611 bytes in 2sec / 13.84 Mbps
     3169168 bytes in 2sec / 12.08 Mbps
     1673286 bytes in 2sec / 6.38 Mbps
     2655460 bytes in 2sec / 10.12 Mbps
     4125430 bytes in 2sec / 15.73 Mbps
     3399426 bytes in 2sec / 12.96 Mbps
     3068414 bytes in 2sec / 11.70 Mbps
     1149160 bytes in 2sec / 4.38 Mbps
         138 bytes in 2sec / 0.00 Mbps
         138 bytes in 2sec / 0.00 Mbps
         138 bytes in 2sec / 0.00 Mbps
         487 bytes in 2sec / 0.00 Mbps
        1719 bytes in 2sec / 0.00 Mbps
         204 bytes in 2sec / 0.00 Mbps
         138 bytes in 2sec / 0.00 Mbps
         138 bytes in 2sec / 0.00 Mbps
         138 bytes in 2sec / 0.00 Mbps
       33776 bytes in 2sec / 0.12 Mbps
         138 bytes in 2sec / 0.00 Mbps

以前、サーバの安全なお引越しでサーバを移設する際の手順について書きましたが、実際の作業でコンテンツ・アプリケーションやミドルウェアの動作確認を重点的に行うのは当然として、意外と見落としがちなチェックポイントがあるのでまとめてみました。

  1. cron設定
    運用関連の処理でバッチプログラムが淡々と仕事をしているかもしれませんので、/etc/cron.*や/var/spool/cronフォルダに入っているユーザアカウントの設定ファイルを確認してください。ここで実行されているスクリプトなども移設が必要な場合があります。なおユーザアカウントを削除するとcron設定も消えてしまうので注意が必要です。

  2. ホームディレクトリは安易に消さない
    サーバ移設の機会に、不要なユーザアカウントを整理することがあります。しかし安易にユーザアカウントをホームディレクトリごと消去してしまうと、旧担当者が管理していた重要なファイルを消してしまう可能性があります。

  3. セキュリティ設定の引き継ぎ
    参考: VPSを借りたら真っ先にやるべきセキュリティ対策
    参考: VPSのファイアウォール設定について(iptablesの例)

  4. ログローテーション設定
    /etc/logrotate.d
    ログの記録方式をカスタマイズしている可能性があります。

  5. メールエイリアス
    /etc/aliases
    root宛てのメールなどを管理者宛てに転送設定している場合があります。

  6. ドメイン管理者情報の更新
    サーバ管理とともにドメイン管理も業者に一元管理させていた場合、管理者情報等の変更や管理アカウント権限の移譲を行っていないと、有効期限通知メールなどが届かずに、最悪失効してWebサービスが停止してしまう可能性があります。またネームサーバについても管理責任の帰属先を確認しておいた方が良いです。

  7. プログラムからの通知メール等
    お問合せフォームや各種ユーザ操作の動作確認などで、運用担当者宛てにメールが通知される仕様になっているシステムが良くあります。送信の有無と宛先が適切か確認しましょう。ログから確認する場合は/var/log/maillogが参考になります。

以前、「VPSを借りたら真っ先にやるべきセキュリティ対策」をブログに書いた通り、新規でVPSサーバを借りた状態では脆弱性があるので、真っ先にセキュリティ設定を行うことが重要です。次にApacheやMySQLなどのミドルウェア設定となりますが、Webサーバは、複数のスタッフや会社がアクセスして共同で開発・運用を行う事が多いので、利便性を高めるにはアカウント設定やディレクトリのパーミション設定等にもひと工夫必要です。

以下に複数の担当者が使用するWebサーバ構築において設定した方が良いことをまとめました。

  1. 共通グループを作成して関係者アカウントを所属させる
    # groupadd workgroup
    # vi  /etc/group
    workgroup:x:600:wuser1, wuser2

  2. FTPを使用する場合、FTPサーバのマスク値を002に設定する
    # vi /etc/vsftpd/vsftpd.conf
    local_umask=022 → 002
    # (vsftpdの再起動)
    FTPでファイルをUPした際パーミションが自動的に664になり、グループでの更新が可能になります。

  3. FTPユーザのアクセス範囲を制限する。
    コンテンツ更新などに限定したアカウントの場合、HTMLが格納されているドキュメントルートより上位のフォルダにアクセスする必要が無い場合はchrootを設定します。
    # vi /etc/vsftpd/vsftpd.conf
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    # vi /etc/vsftpd/chroot_list
    wuser2 (制限したいアカウント名を列挙)
    # (vsftpdの再起動)
    # vi /etc/passwd
    wuser2:x:602:602::/var/www/html/ir:/bin/bash (IRフォルダしか見えなくなります)

     
  4. 各ユーザの.bashrcファイルにマスク値を設定する
    # cd ~wuser1
    # vi .bashrc
    umask 002
    SSHでログインしてファイルを作成した際、グループでの更新可能なパーミションになります。

  5. ドキュメントルートフォルダのグループ設定
    # cd /var/www
    # chgrp workgroup html
    グループ所属ユーザによるファイル更新を可能にします。

  6. ドキュメントルートフォルダのパーミション設定
    # cd /var/www
    # chmod 2775 html
    ファイルやフォルダを作成した際にグループが自動的に継承されるようになります。

  7. MT(MovableType)への配慮
    CMSとしてMTが使用されるケースが多くありますが、生成されるHTMLのファイル権限はWebサーバを実行している"apache"になります。その為、apacheユーザによるファイル操作を許可するため、強引にパーミションを777にしたり666にしている運用が多いようですが、あまり安全な状態とは言えません。そこでapacheユーザを共通グループに所属させることによってファイル更新が可能になると思います。
    # vi /etc/group
    workgroup:x:500:wuser1, wuser2, apache

参考まで

cronで適当な間隔で実行するとHDDの容量オーバーをメールで通知してくれます。
本文に日本語を使いたい場合はnkf等で変換した方がいいようです。

#!/bin/bash
#
# status_df.sh
#
#
partition="/"   # Mount point
limit=70         # Usage rate(%)
from="*****@foo.co.jp"
to="*****@foo.co.jp"
host="www.foo.co.jp"
#
#
#
#

# Begin monitoring program.
IFS=$'\n'
r=($(df -k|tail -n +2|awk '{print $5" "$6}'|sed s/%//))

for tmp in ${r[@]}; do
  IFS=$' '
  a=($tmp)
  if [ ${a[1]} = $partition ]; then
    if [ ${a[0]} -ge $limit ]; then
echo "Subject: Warning of system resource [$host]
From: $from
To: $to

Datetime  : `date`
Server    : $host
Target    : $partition
Threshold : $limit

`df -k`
" | /usr/lib/sendmail -t -f $from
    else
      echo "ok"
    fi
  fi
  IFS=$'\n'
done

まもなくネット選挙が解禁となり、メールでの選挙活動も盛んになると思いますが、要注意なのが候補者や政党に成りすましたメールです。万が一、本人ではない人や偽りの組織から送られて来たメールの内容によって、有権者の世論が左右され、国政に影響が及ぶ事になれば民主主義の根幹を揺るがす事態です。

Eメールというのはインターネットの古き良き時代の仕様をいまだに引きずっており、容易に偽装することが可能です。ですから、個人的には選挙活動におけるメール送信には電子署名(証明書)の付与が欠かせないと思っています。

現在、メールにおける電子署名の利用は金融機関など一部のメールに限られ、まだ一般化しているとは言えませんが、今後はネット選挙を期に普及が進むと思われますので少し調べてみました。

証明書は、Webサイトのセキュリティ対策で使用されるSSLサーバ証明書などが有名ですが、メール用の証明書も各社から提供されています。

「ベリサイン セキュアメールID」
https://www.verisign.co.jp/securemail/
1年有効 185,850円(税込) 1メールアドレスにつき 1セキュアメールID

う、高い。。

「グローバルサイン クライアント証明書」
https://jp.globalsign.com/service/clientcert/
組織(部署)向け
 電子署名(S/MIME)用証明書 1年 54,600円
組織に属する個人向け
 マネージドPKI Lite 10ライセンス105,000円

これらの証明書を取得し、一般的なメールソフトであればインストールして使用できるようです。

大量の宛先に同報配信する場合や組織として日常的に証明書付のメールを送りたい場合は、ゲートウェイ型のメール配信ソリューションがあるようです。
http://www.hde.co.jp/hsm/
http://www.ditgroup.jp/service/product/apmg/
http://www.spis-box.net/sign/index.html


なお、ネット選挙用のWebサイトを運用するにあたって必要と思われるサーバ等のインフラ環境については、以前書いたこちらの記事を参考にしてください。
「ネット選挙用サーバ構築のガイドライン」 http://blog.shinkaku.co.jp/archives/23337019.html

7.4 2003-11-17 IPv6, information_schema
8.0 2005-01-19 Microsoft Windows対応, SAVEPOINT, PITR, 表領域 
8.1 2005-11-08 2相コミット, ROLE, 行共有ロック, テーブル・パーティショニング
8.2 2006-12-05 ウォームスタンバイ, GIN 
8.3 2008-02-04 更新処理性能の向上, XMLデータ型, 全文検索, JIS X 0213, ENUM型, UUID型
8.4 2009-07-01 再帰クエリ, ウィンドウ関数, 列単位のアクセス制御, SQLと関数の性能解析機能
9.0 2010-09-20 レプリケーション, 一括権限変更, 匿名プロシージャ, 64bit Windows サポート, 移動平均, 列/条件トリガ, 一意性制約の遅延, 排他制約
9.1 2011-09-12 同期レプリケーション, 外部テーブル, パッケージ管理, UNLOGGEDテーブル, 更新可能なWITH句, 近傍検索, SELinux権限制御
9.2 2012-09-10 JSONネイティブサポート, Index-onlyスキャン, CPU消費電力削減, スケーラビリティ向上, ソートの高速化

元々価格が安いVPSは、オプションとして比較的高価なファイアーウォールを利用するケースは少ないと思います。その場合のセキュリティ対策は借りているVPS自体で行う必要があります。

大概のVPSサービスはLinux系のCentOSが提供されますので、標準でiptablesという簡易ファイアウォールが利用できます。このiptablesは一般的なファイアウォールの標準的機能であるパケットフィルタリング等がきめ細かくできますが、反面ネットワークの知識が必要で、慣れていない方には少し設定が難しいと思います。簡易的なアクセス制限についてはこちらを参考にしてください。

次の例では、備忘も兼ねて標準的なWebサービスを提供するサーバを運用する場合のファイアウォール設定を記述しています。なおこちらは机上での設定例を記述しただけで、実際のVPSでの動作検証は行っておりませんので、参考にされる場合はくれぐれも自己責任でお願いします。

まずは運用ポリシーを決めましょう
(1)デフォルトで全てのアクセスを拒否する
(2)必要なポートのみ解放する
(3)メンテナンス用のアクセス解放は特定IPアドレスに限定する

以下はiptablesサービスが起動時に読み込む/etc/sysconfig/iptablesファイルを編集した内容になります。 
-------------------------------------------------------
#受信、送信、通過を全て拒否
*filter
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:FORWARD DROP [0:0]

#接続済みパケットの送受信を許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#VPS自身からの送受信(ループバック)を許可
#VPS⇔VPS
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#ping(icmp)を許可
#VPS⇔WAN
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT

#名前解決の為に内部からDNS(53)参照を許可
#VPS→WAN
-A INPUT -p udp --sport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT

#時刻同期の為に内部からNTP(123)参照を許可
#VPS→WAN
-A INPUT -p udp --sport 123 -j ACCEPT
-A OUTPUT -p udp --dport 123 -j ACCEPT

#Webサービス(80)を解放
#WAN→VPS
-A INPUT -p tcp --dport 80 -j  ACCEPT
-A OUTPUT -p tcp --sport 80 -j  ACCEPT

#Webサービス(443)を解放
#WAN→VPS
-A INPUT -p tcp --dport 443 -j  ACCEPT
-A OUTPUT -p tcp --sport 443 -j  ACCEPT

#外部APIなどへのHTTP接続(80)を許可※
#VPS→WAN
-A INPUT -p tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp --dport 80 -j ACCEPT

#外部APIなどへのHTTPS接続(443)を許可※
#VPS→WAN
-A INPUT -p tcp --sport 443 -j ACCEPT
-A OUTPUT -p tcp --dport 443 -j ACCEPT

#※できれば宛先の制限をお勧めします

#SMTPサービス(25)送受信を許可
#WAN⇔VPS
-A INPUT -p tcp --sport 25 -j  ACCEPT
-A INPUT -p tcp --dport 25 -j  ACCEPT
-A OUTPUT -p tcp --sport 25 -j  ACCEPT
-A OUTPUT -p tcp --dport 25 -j  ACCEPT

#特定IPアドレスからSSH(22)を許可
#123.123.123.123→VPS
-A INPUT -p tcp -s 123.123.123.123 --dport 22 -j  ACCEPT
-A OUTPUT -p tcp -d 123.123.123.123 --sport 22 -j  ACCEPT

#特定IPアドレスからFTP(20,21)を許可
#123.123.123.123→VPS
-A INPUT -p tcp -s 123.123.123.123 --dport 20 -j ACCEPT
-A OUTPUT -p tcp -d 123.123.123.123 --sport 20 -j ACCEPT
-A INPUT -p tcp -s 123.123.123.123 --dport 21 -j ACCEPT
-A OUTPUT -p tcp -d 123.123.123.123 --sport 21 -j ACCEPT


COMMIT
-------------------------------------------------------

編集後iptablesを再起動するとフィルタが適用されますが、設定をミスするとVPSにつながらなくなる可能性があり、最悪OSリセットからやり直しになる可能性もあります。くれぐれも重要な設定はサービスの開始前に行うことをお勧めします。

↑このページのトップヘ