DTIサーバー構築11 「ほんとに私なんだって」

最近はスパムメール対策のために、メール送信するための制限が多くなってきています。
その制限の一つ、SPF認証を設定しましょう。
詳しくは次のリンク先をご参照ください。と、さぼる。
なりすましメール撲滅に向けたSPF(Sender Policy Framework)導入の手引き

やる事は一つ、DNSのデータにSPFフォーマットのTXTを入れる。
私が使っているValue Domainの場合、「DNSレコード/URL転送の変更」で以下の一行を追加。

txt * v=spf1 +a:mail.yourdomain.com ~all
意味は、
*
 全てのサブドメイン(サブドメインなしを含む)からのメールに対して、

+a:mail.yourdomain.com
 mail.yourdomain.comというホストから送られたメールは信用し、
~all
 それ以外から送られたメールは信用しない。
ということ。

 

これで送信元が信頼できるかが分かってもらえる。

DTIサーバー構築10 「私に送りなさいよ」

POP3サーバーのインストールの前に、
rootやwebmaster等に送られる重要なメールは一般ユーザーの自分のアカウントに転送しておこう。
/etc/postfix/main.cf内に次の行があれば、/etc/aliasesというファイルで、設定可能。

alias_maps = hash:/etc/aliases
もうおなじみのviで開こう。

$ sudo vi /etc/aliases
最後に次の1行を付け加えれば、重要なメールアドレスへのメールは全てあなたのメールボックスへ。

root:           you

複数人に送りたい場合は、次のようにコンマで区切って追加しよう。

root:           you, yourpartner

保存後に次のコマンドを実行しないと、反映されないからね。

$ sudo newaliases

root@yourdomain.comにメールして、あなた宛にメールが届けばOK。

DTIサーバー構築9 「メールしてね」

SMTPサーバーはSENDMAILでも良いのですが、色々やりたいのでPostfixをインストールします。
色々やりたいだけで、どんな色々があるのか、全ては知らないのですが。

まず、インストール。

$ sudo yum -y install postfix

インストール後に設定ファイルを編集。

$ sudo vi /etc/postfix/main.cf

ファイル内の次の部分を変更。

myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
上から、メールサーバーのホスト名、ドメイン名、送信元のドメイン名

サーバーが対応するネットワークは、全て。

inet_interfaces = all

サーバーが信頼するネットワークは、ホスト自身のみ。

mynetworks_style = host
mynetworks = 127.0.0.0/8

サーバーが対応する宛先。
自分自身のドメイン以外に、サブドメインも指定出来ます。
ただし、メールボックスは区別されずに同じフォルダに配信されます。

mydestination = $myhostname, localhost.$mydomain, localhost, a.yourdomain.com, b.yourdomain.com
配信先を、各ユーザーのホームにフォルダを作成して指定するには、以下のように設定します。

home_mailbox = Maildir/

クラッカーから身を守るために、少しばかりの抵抗。

smtpd_banner = $myhostname ESMTP unknown

最後に、SMTPサーバーをSendmailからPostfixへ交代させます。

まず、標準で動いているSENDMAILを停止します。

$ sudo service sendmail stop
sm-client を停止中:                                        [  OK  ]
sendmail を停止中:                                         [  OK  ]

メールを処理するソフトを切り替えます。

$ sudo alternatives –config mta
2 プログラムがあり ‘mta’ を提供します。
  選択       コマンド
———————————————–
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

Postfixを起動させます。

$ sudo service postfix start
postfix を起動中:                                          [  OK  ]

自動起動の設定も行います。

$ sudo chkconfig sendmail off
$ sudo chkconfig postfix on

最後に、サーバー外の自分のメールアドレスに、メールしてみましょう。

$ mail you@example.com
Subject: test
テスト
.
EOT

本文の最後はピリオドだけで改行して下さい。
メールが来たら、返信してみましょう。
返信されたメールのチェックはこんな感じ。

[username@newhost ~]$ mail -f Maildir
Heirloom Mail version 12.4 7/31/08.  Type ? for help.
“Maildir”: 1 message 1 new
>N  1 You                  Fri Jul 26 23:34  49/2495  “Re: test”
& v 1
& quit
“Maildir” complete

“v 1″で1番目のメールがviで表示されます。
次は、POP3サーバーのインストールかな。

DTIサーバー構築8 「新しい物好きなのね」

Windowsで言うところのMicrosoftUpdateが、Linuxにも有りまして、その仕組をインストール可能です。

$ sudo yum -y install yum-cron
-yを入れると、途中のユーザー確認をふっ飛ばします。

 :(色々表示される)
Installed:
  yum-cron.noarch 0:3.2.29-40.el6.centos

Dependency Installed:
  yum-plugin-downloadonly.noarch 0:1.1.30-14.el6

Complete!
で、次に、自動的に更新するかの設定をしましょう。

$ sudo vi /etc/sysconfig/yum-cron
更新が有るか、チェックだけする?
(yes:チェックだけ/no:更新もする)

CHECK_ONLY=no
更新サーバーが有るかを先にチェックする?
(yes:チェックする/no:チェックしない)

CHECK_FIRST=no
ダウンロードだけにする?
(yes:ダウンロードだけ/no:更新もする)

DOWNLOAD_ONLY=no

「DOWNLOAD_ONLY=yes」の場合は、強制的に「CHECK_ONLY=yes」とされます。

更新は勝手にしてほしくない時は、更新があればメールしてもらえるように設定しておきましょう。

MAILTO=root
これで更新があればroot宛にメールが来ます。

設定が終わったら、スタート!

$ sudo service yum-cron start
夜間 yum 更新の有効化中:                                   [  OK  ]
自動起動の設定も忘れずに。

$ sudo chkconfig yum-cron on
自動起動の確認は次のコマンドで。

$ sudo chkconfig –list yum-cron
yum-cron        0:off   1:off   2:on    3:on    4:on    5:on    6:off
通常起動時のrunlevelを調べて、その状態がonならOK

$ runlevel
N 3

と、+αの情報をちょこちょこメモ

 

そして、更新があれば、次のようなメールが来る。

New updates available for host newhost.yourdomain.com
authconfig.x86_64                      6.1.12-13.el6                   base  
avahi-libs.x86_64                      0.6.25-12.el6                   base  
 :(色々)
zlib.x86_64                            1.2.3-29.el6                    base  
Obsoleting Packages
libjpeg-turbo.x86_64                   1.2.1-1.el6                     base  
    libjpeg.x86_64                     6b-46.el6                       installed
Updates downloaded, use “yum -C update” manually to install them.

ダウンロードが終了しているらしいので、いわれる通りに更新開始。

 

$ sudo yum -C update
楽ちん楽ちん。

DTIサーバー構築7 「セキュリティ向上委員会」

最低限のセキュリティ対策はやっておく。基本は大事。

ServersMan@VPSのセキュリティ設定
http://dream.jp/vps/esp/manual/mnl_security_01.html

公式サポートの情報を元に、

# useradd newusername
# passwd newusername
ユーザー newusername のパスワードを変更。
新しいパスワード:***
新しいパスワードを再入力してください:***
passwd: 全ての認証トークンが正しく更新できました。
SSHで接続しなおして、
新しいユーザーでログインできたら、rootになれるかを確認!

[newusername@newhost ~]$ su –
パスワード:***
[root@newhost ~]#
なれたら、rootになれるユーザーを限定するために、rootになれるユーザーをwheelグループに入れる。

# usermod -G wheel newusername
sudoが使えるユーザーをwheelグループのユーザーだけに制限する。
visudoは、sudoが使えるユーザーを変更するためのエディタ。
“sudo vi /etc/sudoers”と同じこと。

$ visudo
 次の行のコメント(#)を外して、保存(:wq)。

%wheel   ALL=(ALL)      ALL
wheelグループのユーザーは、sudoが使えるかを確認。

[newusername@newhost ~]$ sudo ls /

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for newusername:***
aquota.group  bin   dev  home  lib64  mnt  proc  sbin     srv  tmp  var
aquota.user   boot  etc  lib   media  opt  root  selinux  sys  usr
[newusername@newhost ~]$
その他のユーザーは使えないかを確認。

[notwheeluser@newhost ~]$ sudo ls /
[sudo] password for notwheeluser:***
notwheeluser is not in the sudoers file.  This incident will be reported.
[notwheeluser@newhost ~]$
確認が終わったら、次はrootになれるユーザーも制限する。

$ sudo vi /etc/pam.d/su
次の行のコメント(#)を外して保存。
auth       required     pam_wheel.so use_uid

wheelグループのユーザーは、rootになれるかを確認!

[newusername@newhost ~]$ su –
パスワード:***
[root@newhost ~]#

その他のユーザーは、rootになれない事を確認!

[notwheeluser@newhost ~]$ su –
パスワード:***
su: パスワードが違います
[notwheeluser@newhost ~]$
最後に、SSHにrootで直接ログイン出来ない様に設定変更。

# vi /etc/ssh/sshd_config
ちなみに、”/”の後に検索したい文字列を入れると検索が可能
次の行を入れる。

PermitRootLogin no
PermitEmptyPasswords no
SSHを再起動して、rootでログインできないか試しましょう。

# service sshd restart

でも、rootで入れなくなると、制限を気にしないといけないから不便なんですよね~。