iptablesの設定メモ

そのままの状態では、サーバへすべてのパケットが通ってしまうので、iptablesを使ってパケットフィルタリングを行います。

フィルタリングルールは、以下のサイトの情報を参考にしながら設定します。

基本的には、外部に公開しているサービスのみポートを開放します。(今後、必要に応じて変更する予定)

  • 外部からTCP22番ポート(SSH)へのアクセスを日本からのみ許可
  • 外部からTCP80番ポート(HTTP)へのアクセスを許可
  • 外部からTCP443番ポート(HTTPS)へのアクセスを許可

上記のページで作成したスクリプトファイル(iptables.sh)は、内部でiptables設定用の外部関数の取り込みを行っているので動作を確認しておきます。もしwgetがインストールされていない場合には、インストールをお忘れなく!

$ sudo yum install wget

関数を実行して /tmp/cidr.txt というファイルが展開されたことを確認します。

# . /root/iptables_functions
# IPLISTGET
# ls -l /tmp/cidr.txt
-rw-r--r-- 1 root root 1107828 Mar 21 03:16 /tmp/cidr.txt

作成スクリプトを実行して、iptablesを有効にします。

# /root/iptables.sh

そのままだと、以下のエラーメッセージが表示されてしまいます。

Loading additional iptables modules: ip_conntrack_netbios_ns         [FAILED]

LinodeWikiに書かれている情報を参考に /etc/sysconfig/iptables-config を変更します。

/etc/sysconfig/iptables-config 内に記載されている

IPTABLES_MODULES="ip_conntrack_netbios_ns"
IPTABLES_MODULES_UNLOAD="yes"

の部分を以下の通りに変更します。

IPTABLES_MODULES=""
IPTABLES_MODULES_UNLOAD="no"

iptablesを再起動します。

# service iptables restart

設定内容が正しく反映されたか確認しておきます。

# iptables -n -L

おまけ

これぐらいの設定はしてた方がいいかもしれない。

$  cat /etc/hosts.allow 
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#

# local
ALL : 127.0.0.1 : allow

# 自分のプロバイダ
ALL : .xxx.xxx.ne.jp  : allow

# default
ALL : ALL : deny

Linode申込後の初期設定のメモ(環境設定)

環境変数の設定

/sbin, /usr/sbinへのPATHが通っていないので、PATHの設定を変更します。(sudoでコマンド補完したいので)

$ vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin
$ source ~/.bash_profile

タイムゾーン設定

サーバのローカルタイムが日本になっていないので、日本に変更しておきます。

$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Japan /etc/localtime
$ date
Mon Mar 22 19:55:07 JST 2010

yumリポジトリの追加

以下のポリシーでyumリポジトリの設定を行うことにします。

  • 優先度をつけ、基本パッケージを優先する
  • マイナーなyumリポジトリは、--enablerepoオプションを付けてインストールする

yumリポジトリの優先度を付けることができるパッケージ(yum-priorities)を事前にインストールしておきます。

$ sudo yum install yum-priorities

インストール完了後、/etc/yum.repos.d/CentOS-Base.repo 内の基本パッケージ(base, updates, addons, extras, centosplus, contribute)の優先度をそれぞれ設定します。以下の1行をそれぞれについて追記します。(数値が小さいほど優先度が高く、既定値は99になります)

priority=1
rpmforgeリポジトリの追加

rpmが以下に用意されているので、さくっとインストールしてしまいます。

現時点で、CentOS 5での最新版は、0.3.6-1でしたので、それをインストールします。

$ sudo rpm -ivh http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

インストールが終わると rpmforge.repo というファイルが作成されます。

$ cat /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

あわせて優先度を設定しておきます。以下の1行を追記します。

priority=10
DAGリポジトリの追加

以下のように新規に /etc/yum.repos.d/dag.repo ファイルを以下のように作成します。優先度は、priority=10とし、--enablerepo=dagオプションを付けてインストールするようにします。

$ cat /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for Fedora Core
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
enabled=0
gpgcheck=1
gpgkey=http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt
priority=10
EPELリポジトリの追加

rpmが以下に用意されているので、さくっとインストールしてしまいます。

$ sudo rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

インストールが終わると epel.repo というファイルが作成されるので、優先度を設定します(priority=10)。またインストール時には、--enablerepo=epelとする必要があります。

$ cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
priority=10

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
priority=10

[epel-source]
name=Extra Packages for Enterprise Linux 5 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
priority=10
その他

あと最新版のPHPをインストールする場合には、以下のyumリポジトリは追加しておくといいと思います。

Linode申込後の初期設定のメモ(ssh編)

ログインページ

ログインページよりログインをします。

注意事項

OSは、使い慣れているCentOSの最新版(現状では、5.3)を選択しているので、それを前提として今後話をすすめていきます。

事前準備

Networkのタブを選択し、Network Configurationのエリアに表示されている自分のサーバのeth0(IPアドレス)を確認しておきます。

以下、このように表示されていたものとして話をすすめます。

  • eth0: xxx.xxx.xxx.xxx(lixx-xxx.members.linode.com)
  • Gateways: xxx.xxx.xxx.1
  • Netmask: 255.255.255.0
  • DNS Servers: xxx.xxx.xxx.zzz, xxx.xxx.yyy.zzz

アカウント作成

まずはrootでしかアカウントは存在しないので、rootでログインします。

$ ssh root@xxx.xxx.xxx.xxx

何はともあれ、自分用のアカウント(xxxxx)を作成してしまいます。その際、wheelグループに所属するようにしておきます。忘れずにパスワードも設定しておきます。

# useradd -u 400 -G wheel xxxxx
# passwd xxxxx

sudoのインストールと設定

素の状態では、sudoパッケージすらインストールされていないので、インストールしておきます。

# yum install sudo

wheelグループに所属するユーザのみsudoを許可するように設定しておきます。

# visudo
# コメントアウトされているのを外す
%wheel  ALL=(ALL)       ALL

公開鍵でのsshログイン設定

linodeサーバへsshログインするマシンにて公開鍵/秘密鍵を作成し、公開鍵をlinodeサーバにscpで転送しておきます。

$ ssh-keygen -t rsa
$ scp ~/.ssh/id_rsa.pub xxx.xxx.xxx.xxx:~

linodeサーバへsshログインします。

$ ssh xxxxx@xxx.xxx.xxx.xxx

そのままだと、ホームディレクトリ直下に.sshディレクトリが存在しないので、作成します。(mkdir ~/.ssh && chmod 700 ~/.sshでもOK)

$ ssh localhost
※コマンド実行後に ~/.ssh/ ディレクトリが作成されたことを確認してください

公開鍵をauthorized_keysに追記しておきます。(追記後は、元ファイルは削除しておくこと)

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ rm id_rsa.pub

sshdの設定変更

そのままだとセキュリティ上の問題があるので、サーバへのsshログインの制限をかけておきます。

設定ファイル(sshd_config)の変更は以下の通りです。

$ sudo vi /etc/sshd_config

# パスワード認証を無効化し、公開鍵認証を有効化する
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

# rootでの直接ログインは認めない
PermitRootLogin no

# PAM認証は使わない
UsePAM no
# リモートホスト名の確認は行わない
UseDNS no

# X11 Forwardingは使わない
X11Forwarding no

# 許可ユーザを制限
AllowUsers xxxxx

最後にsshdを再起動します。

$ sudo service sshd restart

もちろんsshログインできることを確認して下さい。

VPSサービス(Linode)に申し込んだ。

現在、さくらインターネットレンタルサーバを利用しているんですが、rootアカウントがないために色々と不便なことも多い。

ということで、この3連休に思い切ってVPS(Virtual Private Server)サービスに申し込んでみました。

国内でもいくつかVPSサービスを提供しているようですが、やっぱり海外の方がオススメされているようなので、その中でも他社に比べてよさげなLinodeに申し込んでみました。

今回、選択した「Linode 540」は、月額29.95ドル(現時点では、2,710円)で以下のサービスが提供されると書かれており、納得できるレベルにあると思います。

  • Transfer: 200GB
  • Storage: 16GB
  • Transfer: 200GB

ということで、これからちょこちょこと作業メモをまとめていこうと思います。

興味を持った方は、こちらからどうぞ。(referral codeが付いているので、気に入らない人は取り除いてくれて構いません)

「超訳 ニーチェの言葉」を読んだ

恥ずかしながら、今までニーチェの本を読んだことがありませんでした。たまたま本屋で、パッと手に取ってみて読みやすそうな翻訳本が出ていたので、買って読みました。

小難しいことが書いてあるわけではなく、「うん、そうだ、そうだ。」と納得させられます。また1ページにつき、1つの教えが書かれているスタイルなので、読みやすいだけでなく、あとから何度でも読み返すことができます。

ってことで、まだニーチェに触れたことがない人には、ぜひオススメしたいです。

Baker Bounce(@三軒茶屋)へ行ってきた

大学時代からの友人と三軒茶屋に初めて行ってきました。もう首都圏に引っ越してから10年経ってるにもかかわらず、三茶には行ったことがなかったんですよね、実は。

人からBaker Bounceって名前のハンバーガー屋さんがオススメということだそうで、早速行ってきました。

店内の様子は、いかにもアメリカンって感じ。

注文したのは、エアメールスペシャルという2月限定のメニュー。最初は、シンプルにハンバーガーにしようと思ってたけど、注文する直前になって変えちゃいました。

公式ブログのエアメール スペシャル ¥1,470【2月のオススメ】 : Diner Road|BakerBounce オフィシャルブログによると、「バーベキューポークレッグチャンクとブリスケットと呼ばれる牛ばら肉のコンビネーションサンド」だそうです。(帰宅してたら調べて知った)

サンドウィッチにフォーカスしすぎて、全体像が分かりづらいので、もう1枚。

待ちに待っただけあって、美味しかったです!しょっちゅう来るわけではないので、奮発してみて正解だったかな。