読者です 読者をやめる 読者になる 読者になる

Linux環境構築(CentOS5.11)~その5~

Linux

<はじめに>
Linux環境構築シリーズ(CentOS5編)その4です。

気が向いたのでPostfixをインストールして、

Outlook2007をメーラーとして自分から自分宛にメールを送れるところまでやります。


<作業内容>
何はともあれPostfixをインストール

Postfixの設定ファイルは下記なので、

適当に設定を行います。

/etc/postfix/main.cf

myhostname = ほげほげ

mydomain = ふがふが.local.jp

myorigin = $mydomain

inet_interfaces = all
※よくわかりませんが、allでないと動きませんでした。

home_mailbox = Maildir/

smtpd_banner = $myhostname ESMTP unknown

smtpd_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_sasl_mechanism_filter = plain

smtpd_sasl_local_domain = $myhostname

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

message_size_limit = 10485760

SMTP-Auth認証を利用するので、cyrus-saslをyumかなんかでインストールして起動!

/usr/lib/sasl2/smtpd.confをこんな感じに編集して、

pwcheck_method: saslauthd
mech_list: CRAM-MD5 PLAIN LOGIN

新規ユーザー作成時にメールボックスも作成されるようにします。

mkdir -p /etc/skel/Maildir/{new,cur,tmp}
chmod -R 700 /etc/skel/Maildir/

これでPostfixを起動させればおkのはず。

あと、POPサーバーとしてdovecotyumかなんかでインストールして、

/etc/dovecot.confを下記のように編集

protocols = imap imaps pop3 pop3s

mail_location = maildir:~/Maildir

そしてdovecotを起動

ユーザーの追加は普通にuseraddで追加して、

useradd -s /sbin/nologin centos

パスワード決めて、saslに登録してやって

saslpasswd2 -p -u ほげほげ.ふがふが.local.jp -c ユーザー名

sasldb2のグループを変えてやればおk!

chgrp postfix /etc/sasldb2

あとはメーラーでアカウント作ってテストして、

ちゃんと送受信できればおk!

<まとめ>
とりあえずPostfixの触りだけですが、

一応構築ができました。

メールサーバーが立つとそれなりにログもたまるので、

(/var/log/maillog)

次回はいよいよ、いかにログを可視化し、監視できるかというのをやっていきます。

まずはCGIで作って、最終的にはZABBIX入れるとかそんな感じでやるつもりです。

Linux環境構築(CentOS5.11)~その4~

Linux

<はじめに>
Linux環境構築シリーズ(CentOS5編)その4です。


<作業内容>
そういえば、時間がめちゃくちゃで気持ち悪かったので、
yumでntpのインストールだけ実施。

ntpサーバーはntpd.confにて、
ひとまずntp.nict.jpを指定。

/sbin/ntpdateでntp.nict.jpに時計を合わせた上で
ntpdを起動させました。

chkconfigに追加しておk…と思いきや、
sudoコマンド実行時に『タイムスタンプが未来すぎますよ』的な
エラーが発生するようになりました。

とりあえずサーバーの再起動で直りました!


<まとめ>
今日はここまで、
次はsyslogとかも少しずつ手出していくつもりです。

Linux環境構築(CentOS5.11)~その3~

Linux

<はじめに>
Linux環境構築シリーズ(CentOS5編)その3です。


<作業内容>
apacheを起動させてみます。
外には公開しないので、
横着してselinuxiptablesを切ります。

selinux
 /etc/selinux/configを修正
 setenforce 0にて停止
iptables
 /etc/init.d/iptables stopにて停止

加えてhttpd.confにて、
サーバーのホスト名を修正しておきます。
これではれてhttpdをスタートです。

/etc/init.d/httpd start

このままアクセスすると下記のようなエラーが発生します。
1)ドキュメントルートにindexファイルがないよ!
2)indexファイルの代替のnoindexファイルで指定されている
powered_by_rh.pngがないよ!

1)のエラーはともかく2)のエラーはどうかと思いますが、
ちゃんとindex.htmlをドキュメントルートに配置して、
細かい点には目をつぶることにします。
※index.htmlファイルだけだとさらにfavicon.icoがないと怒られます。


<まとめ>
ここまででapacheが無事(selinuxiptablesを切っている時点で微妙ですが…)
動きました。続けることが大切と信じて、少しずつ何かしら書いていきます。

Linux環境構築(CentOS5.11)~その2~

Linux

<はじめに>
Linux環境構築シリーズ(CentOS5編)その2です。


<作業内容>
yumリポジトリ理研のサーバーに変更します。
変更するファイルは下記の通り。

・/etc/yum.repos.d/CentOS-Base.repo

変更する内容としては『baseurl』の
『mirror.centos.org』ってところを
ftp.riken.jp~』という具合に5か所程。


変更が終わったらひとまず管理者権限でyum updateを実施します。


ユーザーをひとつ作成してsudoをインストールし、
作成したユーザーにvisudoで権限を割り当てます。
ちなみにvisudoは/usr/sbin/visudoにあります。


次に、コンパイラをインストールします。
現時点で必要かどうかはわかりませんが、
いずれ必要になると思うのでベタですがgccをインストールしてみました。


きっとWebサイトを作るとテンションもあがるので、
httpdperlもインストールします。
yumで入れたらhttpdは2.2がインストールされました。
perlはすでに5.8がインストール済みでした。


httpdをOS起動時に立ち上げたいので
chkconfigを使って/etc/rc3.dにシンボリックリンクを作成しておきます。


ここでふと思い立って/var/logを覗いてみると、
yum.logに興味がわいてきたので、
とりあえずyumでインストール、アップデート等した
各ソフトウェアの状況をWebで見れるようなプログラムでも書いてみることにします。


<まとめ>
いつになるかはわかりませんが、
次回以降、少しずつ進めていきたいと思います。

Linux環境構築(CentOS5.11)~その1~

Linux

<はじめに>
Linuxの環境構築を行う様を記録していきます。

CentOS6.4を使った『Linuxサーバー構築シリーズ』を約1年間放置しておりますが…、

それはそれとして、今回はCentOS5.11を使った環境構築シリーズです。

CentOSにもたせる役割は特に決めていません。

<作業内容>
まずはOSのインストールを行います。

今回構築するのはCentOS5.11です。

ハードウェアは約10年前のdynabookです。スペックは下記の通り。

  • CPU :CeleronM(1.4GHz)
  • メモリ :256MB
  • HDD :40GB


パーティションの分割はだいたい下記の通り。

  • / :1G
  • /boot :100M
  • /tmp :100M
  • /home :16G
  • /var :10G
  • /usr :5G
  • /usr/local:5G

OSのインストール時に6.4のときにあったような『Minimal』とかの指定はありません。

インストールが必要なソフトウェアは個別に指定する(チェックを入れる)必要があります。

今回このタイミングで必要なソフトウェアはありませんので、

チェックをすべて外してインストールを進め完了します。

<まとめ>
インストール自体は特に問題なく完了すると思います。

実際にログインしみると、いろいろ足りません。

次回以降、環境を整えていきます。

Linuxサーバー構築~その5~

Linux Perl

<はじめに>
Linuxサーバー構築シリーズその5です。

今回はperlで書いたCGIをWebサーバーで動かします。


<作業内容>
単にCGIを動かすだけであれば特に変更は必要ないですが、

まずは/etc/httpd/conf/httpd.confの中身を見てみます。

f:id:nomurabbit:20131221172749p:plain

User,Groupにapacheとあります。

そこでOSのユーザーを見てみると、apacheというユーザーが確認できます。

f:id:nomurabbit:20131221173258p:plain

おそらくhttpdでCGIを実行するときは、

このapacheユーザーを使うということだと思います。

また、/etc/httpd/conf/httpd.confにはこのような記述もあります。

f:id:nomurabbit:20131221173419p:plain

ここにOptions ExecCGIと記述があることによって、

/var/www/cgi-binフォルダ内で、CGIの実行が許可されます。

それではCGIを作成します。

test.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hello world";

ファイルのアクセス権を755とし、

/var/www/cgi-bin/test.cgiとして保存します。

ここでlsコマンドに-Zオプションをつけて、selinuxのラベルを確認しておきます。

f:id:nomurabbit:20131221181859p:plain

あまり詳しくはないのですが、

この、httpd_sys_script_exec_tというラベルがついていないと、

CGIが上手く動かないような気がします。

もし、CGIが動かない原因としてラベルが疑われるようであれば、

chcon unconfined_u:object_r:httpd_sys_script_exec_t:s0 /var/www/cgi-bin/test.cgi

というコマンドでラベルの貼り換えが可能です。

ここまで済めば動作確認です。

test.cgiにブラウザからアクセスしてみます。

f:id:nomurabbit:20131221183159p:plain

無事にCGIにアクセスできました。

<まとめ>
今回の記事まででapachを使って

CGIを動かすことができるようになりました。

前回、今回はhttpを使ったアクセスに限定していましたが、

次回以降mod_sslをインストールして

httpsでアクセスする方法も書いていこうと思います。

Linuxサーバー構築~その4~

Linux

<はじめに>
Linuxサーバー構築シリーズその4です。

今回はiptablesの修正を行い、80番ポートでwebサーバーにアクセスできることを確認します。

<作業内容>
まず、iptablesの設定を行います。

iptablesの設定ファイルは、/etc/sysconfig/iptablesです。

中身はこのようになっています。

f:id:nomurabbit:20131214111650p:plain

まずは、この部分

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

「:INPUT」と書いてある行は、自分宛のパケットについての定義です。

続いて「ACCEPT」とあるので、自分宛のパケットは受け入れるという意味になります。

同様に「:FORWARD」、「:OUTPUT」はそれぞれ、

自分を経由するパケット、自分から発信するパケットとなります。

次に、この部分

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

「-A INPUT」とあるので、自分宛のパケットについての定義です。

「-m state --state ESTABLISHED,RELATED」より、

「過去に接続したもの」や「既存コネクションに関係のあるもの」が該当します。

「-j ACCEPT」は、条件に一致するパケットを許可するという意味です。

さらに、

-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

1行目はicmpの許可、2行目はループバックの許可を指します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

前半の「-A INPUT -m state --state NEW」は

「自分宛のパケットで、新規の接続」を指します。

後半の「-m tcp -p tcp --dport 22」のうち、

「-m tcp --dport 22」はtcpの宛先ポート(今回はINPUTなので自分のポート)

が22番であることを、また「-p tcp」はtcpプロトコルを使用することを指します。

最後に「-j ACCEPT」とあるので、

「自分宛で22番ポートに新規で接続となるパケットを許可する」となります。

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

最後に、ここまでの条件に一致しなかったパケットを破棄します。

では22番ポートを開く記述にならって80番ポートを開いてみます。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

編集内容を保存したら、iptablesを再起動して確認します。

<まとめ>
iptablesの設定ファイルを編集し、ポートの解放が確認できました。

次回はhttp.confファイルの編集を行います。