このエントリーをはてなブックマークに追加
スポンサーリンク

Fedora17のインストール(2)

1 2

前ページのおさらい

・古いPCでは、Troubleshooting→Instrall Fedora in basic graphics modeを選ばないと画面に何も表示されない。
・RAID1にするには、「最大容量まで使用する」だとエラーになる。パーティションは固定容量にする。
・CUIが豆腐になったら、ビデオカード、またはPCごとかえる。
・起動時の解像度を指定する時は、インストール後に/boot/grub2/grub.cofを編集してgfxmode=の後に指定する。(例:640x480)

SELinuxのオフ

selinuxが動いていると、xinetd経由でsshやtelnetやftpで入れないので止めます。

vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcinfg - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
に変更する。その後リブートする。

もちろんselinuxの設定をカスタマイズして解決できる人は止めないでくださいね。あくまで私がselinuxがよくわからないから止めてます。

不要なデーモンを止める

サーバー機は、少しでもデーモンを乗っ取られるリスクを減らすために、常駐しているデーモンは必要最小限にしなければなりません。例えばメールを使わないのにsendmailを動かしていると、それだけSPAMの踏み台にされるリスクが高まります。

起動するデーモンの確認。
ls -1 /etc/systemd/system/multi-user.target.wants/

不要なデーモンがサーバー起動時に常駐しないようにする
例)
systemctl disable acpid.service
systemctl disable arp-ethers.service
systemctl disable atd.service
systemctl disable auditd.service
systemctl disable gpm.service
systemctl disable irqbalance.service
systemctl disable mcelog.service
systemctl disable mdmonitor.service
systemctl disable remote-fs.target
systemctl disable rpcbind.service
systemctl disable sm-client.service
systemctl disable smartd.service
※これは例です。どのデーモンが不要かは、みなさんご自身で決めてくださいね。

リブート
reboot

xinetdを入れる

mkdir /usr/local/src/RPMS
cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/x/xinetd-2.3.14-46.fc17.i686.rpm
rpm -ivh xinetd-2.3.14-46.fc17.i686.rpm

systemctl start xinetd.service
systemctl enable xinetd.service

sshをxinetd経由にする

sshdをスタンドアロンでは実行させずにxinetd経由に変更します。 sshdは、同時に大量のコネクションをかけるとルート権限を乗っ取られる不具合が発見された事があり、 それ以来慣習としてsshはxited経由で起動させています。あくまで個人的な慣習なので、無理に従う必要はありません。

vi /etc/xinetd.d/ssh
# default: on
# description: The ssh server serves ssh sessions; it uses \
# unencrypted username/password pairs for authentication.
service ssh
{
	disable = no
	flags = REUSE
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/sshd
	server_args = -i
	log_on_failure += USERID
}
スタンドアロンのサービスを止める
systemctl disable sshd.service
systemctl stop sshd.service

いったんsshを抜ける
実機で
systemctl restart xinetd.service

sshのチューニング

vi /etc/ssh/sshd_config
Protocol 2,1
PermitRootLogin no 
PermitEmptyPasswords no
いったんsshを抜ける。
実機で
systemctl restart xinetd.service

プロトコル1を追加するのは、私の使っているTTSSHが1にしか対応してないからなので、2に対応しているターミナルをお使いの方はなるべくプロトコル2だけにしておいてくださいね。

ルートログインを禁止する理由は、パスワード総当りでログインを試みる輩がいたとして、「ユーザーID」と「パスワード」の組み合わせが当たらないとログインできない場合に比べて、ルートログインではユーザーIDがrootに固定されているため、パスワードをaaaaa〜zzzzzまで総当りで試された場合にパスワードを破られるリスクが高まるためです。

telnetを入れる

これも完全に私の好みの問題ですが、sshよりもtelnetの方が自分的にはTera Termでログインしやすいし、Windowsのコマンドプロンプトでもログインできるし、便利がいいので入れてます。パスワードが平文で流れるので、あまりセキュリティ上はよろしくありません。

cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/t/telnet-server-0.17-52.fc17.i686.rpm
rpm -ivh telnet-server-0.17-52.fc17.i686.rpm

vi /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
	flags = REUSE
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/in.telnetd
	log_on_failure += USERID
	disable = no
}
いったんsshを抜ける
実機で
systemctl restart xinetd.service

Tera Term等でtelnetで入ってみる。

vsftpdのチューニング

まず、スタンドアロンのvsftpdを止める。
systemctl stop vsftpd.service
systemctl disable vsftpd.service

次に、xinetd経由にする。これは、サーバー上で実行しているデーモンを、少しでも少なくするためです。

vi /etc/xinetd.d/ftp
# default: on
# description: The ftp server serves ftp sessions; it uses \
# unencrypted username/password pairs for authentication.
service ftp
{
	instances = 200
	flags = REUSE
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/vsftpd
	server_args = /etc/vsftpd/vsftpd.conf
	log_on_failure += USERID
	disable = no
}
vi /etc/vsftpd/vsftpd.conf (変更・追記する箇所だけ)
anonymous_enable=NO
chroot_local_user=YES
listen=NO
listen_ipv6=NO
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
いったんssh(かtelnet)を抜ける
実機で
systemctl restart xinetd.service

このままでは、ユーザーのホームディレクトリに書き込み可のパーミッションがついてると「500 OOPS: vsftpd: refusing to run with writable root inside chroot()」というエラーになってしまうので、その制限が嫌な時はvsfptdを3.00にバージョンアップする。

mkdir /usr/local/src/targz
cd /usr/local/src/targz
wget https://security.appspot.com/downloads/vsftpd-3.0.0.tar.gz
tar xvzf vsftpd-3.0.0.tar.gz
cd vsftpd-3.0.0

vi builddefs.h (undefをdefineにする)
#define VSF_BUILD_TCPWRAPPERS
vi tunables.c (/etc/vsftpdの後のピリオドをスラッシュにする)
  install_str_setting("/etc/vsftpd/user_list", &tunable_userlist_file);
  install_str_setting("/etc/vsftpd/banned_emails", &tunable_banned_email_file);
  install_str_setting("/etc/vsftpd/chroot_list", &tunable_chroot_list_file);
  install_str_setting("/etc/vsftpd/user_list", &tunable_userlist_file);
  install_str_setting("/etc/vsftpd/email_passwords",
make
ここで「tcpwrap.c:16:20: 致命的エラー: tcpd.h: そのようなファイルやディレクトリはありません」と表示される時は、tcpwrapperのdevelパッケージが入ってないのが原因。その場合は、以下の手順で入れる。
cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/t/tcp_wrappers-devel-7.6-69.fc17.i686.rpm
rpm -ivh tcp_wrappers-devel-7.6-69.fc17.i686.rpm

makeできたら、
cp vsftpd /usr/local/sbin
としてコンパイルしてできあがったvsftpdファイルをコピーします。make installとしなかったのは、個人的に/usr/local/man以下にファイルを入れたくなかったからです。特に意味はありません。

vi /etc/xinetd.d/ftp (/usr/local/sbinにある方を使うように変更)
# default: on
# description: The ftp server serves ftp sessions; it uses \
# unencrypted username/password pairs for authentication.
service ftp
{
	instances = 200
	flags = REUSE
	socket_type = stream
	wait = no
	user = root
	server = /usr/local/sbin/vsftpd
	server_args = /etc/vsftpd/vsftpd.conf
	log_on_failure += USERID
	disable = no
}
vi /etc/vsftpd/vsftpd.conf (変更・追記する箇所だけ)
allow_writeable_chroot=YES
いったんssh(かtelnet)を抜ける
実機で
systemctl restart xinetd.service

※あとで気付いたのですが、vsftpd-3.0.0-2.fc17.i686.rpmというパッケージが出てるみたいなので、コンパイルするまでもなくrpm -Uvhでアップデートすれば済んだような気も・・・・

viを標準でカラーにする

これもかなり個人的な好みの問題ですが、Poderosaからtelnet/sshでアクセスした時に、viがカラーで出ると見やすいので、標準でカラーで出るようにします。Poderosa(や同様のカラー表示のできるターミナルソフト)を使ってない人や、白黒でも良い(白黒の方が良い)という方は、この設定はしないでください。あと、TeraTermだとこの設定ではうまくいかないみたいなのでTeraTermを使う人はこの設定はしないでください。

カラーのviを起動させるvi2というコマンドを新設
/usr/bin/vim -u /etc/vimrc /usr/local/bin/vi2
#!/bin/sh
/usr/bin/vim -u /etc/vimrc $1
chmod 755 /usr/local/bin/vi2

デフォルトをvi2にする
vi /etc/profile.d/vi2.sh
alias vi=vi2
chmod 755 /etc/profile.d/vi2.sh

標準は従来どおりの設定の方が良いという場合は、aliasは指定しないでください。また、/etc/vimrcではなく独自の設定ファイルを使いたいという場合は、/usr/local/bin/vi2をカスタマイズして自分のオリジナルの設定ファイルを指定するようにしてください。

日本語コードをeucにする

これもかなり個人的な好みの問題ですが、かつてTeraTermを使っていた頃からずっとサーバーのコードはeucにしているので、慣習として今もeucにしています。

vi /etc/sysconfig/i18n
#LANG="ja_JP.UTF-8"
#SYSFONT="False"
LANG="ja_JP.eucJP"
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"
いったんssh(かtelnet)を抜けて入りなおす。

sendmailのチューニング

最初からCD(やDVD)に入ってるsendmailは不具合やセキュリティーホールが発見される可能性が高いため、常に最新のパッケージを入れるようにします。以後最新版が出たら、以下の記事のバージョン番号を読み替えて入れ替えてください。

db4-develの削除とlibdb-develのインストール
cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/l/libdb-devel-5.2.36-5.fc17.i686.rpm
rpm -e db4-devel-4.8.30-10.fc17.i686
rpm -ivh libdb-devel-5.2.36-5.fc17.i686.rpm

ghostscriptのインストール
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/x86_64/os/Packages/g/ghostscript-9.05-1.fc17.i686.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/g/ghostscript-fonts-5.50-28.fc17.noarch.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/p/poppler-data-0.4.5-2.fc17.noarch.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/u/urw-fonts-2.4-11.fc17.noarch.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/x/xorg-x11-font-utils-7.5-7.fc17.i686.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/l/libXfont-1.4.5-1.fc17.i686.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/l/libfontenc-1.1.0-2.fc17.i686.rpm
rpm -ivh ghostscript-9.05-1.fc17.i686.rpm ghostscript-fonts-5.50-28.fc17.noarch.rpm poppler-data-0.4.5-2.fc17.noarch.rpm urw-fonts-2.4-11.fc17.noarch.rpm xorg-x11-font-utils-7.5-7.fc17.i686.rpm libXfont-1.4.5-1.fc17.i686.rpm libfontenc-1.1.0-2.fc17.i686.rpm

sendmailをソースパッケージから再生成、強制上書きインストール
wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/source/SRPMS/s/sendmail-8.14.5-14.fc18.src.rpm
rpmbuild --rebuild --target=i686 --define 'dist .fc18' sendmail-8.14.5-14.fc18.src.rpm
rpm -ivh --force /root/rpmbuild/RPMS/i686/sendmail-8.14.5-14.fc18.i686.rpm
rpm -ivh --force /root/rpmbuild/RPMS/noarch/sendmail-cf-8.14.5-14.fc18.noarch.rpm

sendmailの再起動
systemctl restart sendmail.service

restartした時にプロンプトに戻ってこない場合、ホスト名が逆引きされていません。このままenableにするとサーバーが起動しなくなってしまうので、逆引きを登録します。

hostname ホスト名
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.XX ホスト名
無事sendmailがリスタートできるようになったら、サーバー起動時に起動するようにする。
systemctl enable sendmail.service

デリバリーモードの変更
通常はデフォルトの設定で問題ないのですが、メールマガジンを大量配信するスクリプトを動かす場合、スクリプトはすぐに終了させてメール配信はバックグラウンドで行いたい場合が多いと思います。そこで、デリバリーモードをqにして、メールはいったんキューにためておいてsendmailがバックグラウンドでメールを配信させるようにします。

cd /usr/share/sendmail-cf/feature/
vi msp.m4
define(`confDELIVERY_MODE', `q')
`DAEMON_OPTIONS(`Name=NoMTA, Addr=127.0.0.1, M=C')dnl')
ここでデリバリーモードは、
i・・・即送信する。送信が完了するまで待つ。
d・・・-qで指定した時間だけ待ってから送信する。送信が完了するまで待たない。
q・・・キューに溜める。送信が完了するまで待たない。-qで指定した時間毎に再送を試みる。
b・・・キューに溜める。送信が完了するまで待たない。sendmail -qが指定された時にまとめて送信する。

設定を反映させる
cd /etc/mail
m4 sendmail.mc > sendmail.cf

このままだと/var/spool/clientmqueueにたまるだけでメーが全然飛ばなくなるので、再送の間隔を16秒に変更する。

vi /etc/sysconfig/sendmail
SENDMAIL_OPTS="-q16s"
sendmailの再起動
systemctl restart sendmail.service

NTPサーバーの設定

cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/n/ntp-4.2.6p5-2.fc17.i686.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/n/ntpdate-4.2.6p5-2.fc17.i686.rpm
rpm -ivh ntp-4.2.6p5-2.fc17.i686.rpm ntpdate-4.2.6p5-2.fc17.i686.rpm

cd /etc
vi /etc/ntp.conf
restrict default ignore
restrict 127.0.0.1
restrict localhost
restrict 210.173.160.27 mask 255.255.255.255 nomodify notrap noquery
restrict 210.173.160.57 mask 255.255.255.255 nomodify notrap noquery
restrict 210.173.160.87 mask 255.255.255.255 nomodify notrap noquery
server 210.173.160.27
server 210.173.160.57
server 210.173.160.87
driftfile /etc/ntp/drift
authenticate no
broadcastdelay  0.008
ドリフトファイルを作成する
touch /etc/ntp/drift
touch /etc/ntp/drift.TEMP
chmod 666 /etc/ntp/drift
chmod 666 /etc/ntp/drift.TEMP

サーバーを起動する(自動起動にする)
systemctl start ntpd.service
systemctl enable ntpd.service

動作テスト
ntpq -p

時計が大幅に狂ってる時はNTPでは調整できないので、dateコマンドである程度合わせておく。(ある程度で良い)ただし、実機がデーターセンターのラックの中にある場合は仕方ないが、実機に直接触れる事ができるのであれば、BIOSで直した方が良い。

QPOPPERのインストール

Fedora17の$6$から始まるshadowパスワードに対応するためには、QPOPPERのバージョンが4.1以上である必要があります。

cd /usr/local/src/targz
wget http://core.ring.gr.jp/archives/net/mail/qpopper/qpopper4.1.0.tar.gz
tar xvzf qpopper4.1.0.tar.gz
cd qpopper4.1.0
./configure --enable-special-auth --enable-log-login --enable-shy
make
make install

vi /etc/xinetd.d/popper
# default: on
# description: The wu-ftpd FTP server serves FTP connections. It uses \
#       normal, unencrypted usernames and passwords for authentication.
service pop3
{
        disable = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/local/sbin/popper
        server_args             = -t /var/log/pop3.log
}
systemctl restart xinetd.service
このコマンドでssh(telnet)を抜けてしまうので、入りなおす。

動作テスト
telnet localhost 110
user ユーザー名
pass パスワード
quit

ImageMagickのインストール

CentOS4の時は一発で入ったImageMagickですが、Fedora17では依存性の解決に苦労します。

ilmbaseを入れる
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/i/ilmbase-1.0.2-4.fc17.i686.rpm
rpm -ivh ilmbase-1.0.2-4.fc17.i686.rpm

OpenEXR-libsを入れる
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/o/OpenEXR-libs-1.7.0-4.fc17.i686.rpm
rpm -ivh OpenEXR-libs-1.7.0-4.fc17.i686.rpm

libwmf-liteを入れる
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/l/libwmf-lite-0.2.8.4-32.fc17.i686.rpm
rpm -ivh libwmf-lite-0.2.8.4-32.fc17.i686.rpm

ImageMagickを入れる
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/i/ImageMagick-6.7.5.6-3.fc17.i686.rpm
wget ftp://rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/i/ImageMagick-perl-6.7.5.6-3.fc17.i686.rpm
rpm -ivh ImageMagick-6.7.5.6-3.fc17.i686.rpm ImageMagick-perl-6.7.5.6-3.fc17.i686.rpm

IPTABLESのカスタマイズ

IPTABLESを設定した後、CentOS4では/etc/rc.d/init.d/iptables saveでセーブできたが、Fedora17にそんなものはないので、RedHat6の頃を思い出して、
iptables-save > /etc/sysconfig/iptables
という風にセーブする。本当に稼動してるかどうかは以下のように確認する。
iptables -L -n

FTPでログインしてみる。その際に、パッシブモード、非パッシブモード両方でファールが送信/受信できる事を確認する。うまくいったら自動起動をオンにする。
systemctl enable iptables.service

サーバー起動時にrc.localを実行するようにする
systemctl enable rc-local.service
vi /etc/rc.d/rc.local
#!/bin/sh
/root/scripts/firewall-setting.sh
chmod 755 /etc/rc.d/rc.local
vi /root/scripts/firewall-setting.sh
     :
(ファイアウォールの設定いろいろ)
     :
/sbin/modprobe ip_conntrack_ftp
chmod 755 /root/scripts/firewall-setting.sh
サーバーを再起動させて、
lsmod | grep ftp
で動作確認してみる。

参考文献

以下のサイトを参考にさせていただきました。この場をお借りして御礼申し上げます。
http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/
http://www.kozupon.com/ftp/vsftpd.html
http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html
http://abe-log.cocolog-nifty.com/blog/2012/04/centoapache24ru.html
http://fukuda7707.blogspot.jp/2012/04/fedora-16-rclocal.html
1 2
スポンサーリンク