CentOS
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
''目次''
#contents
~
----
*時刻の同期 [#ld716f12]
下記のコマンドでOS時刻をntpサーバに同期できる。~
[root@XXXXX ~]# ntpdate ntp.nict.jp
''ntp.nict.jp''は日本標準時を供給している[[独立行政法人情...
**定期的に時刻を同期 [#sd5bdf44]
''ntpdate''コマンドで時刻同期させても、その後時間の経過と...
~
まずは、cronが動作しているかどうか確認。~
[root@XXXXX ~]# /etc/rc.d/init.d/crond status
crond (pid ****) is running... ←動作中
動作していない場合は起動する。
[root@XXXXX ~]# /etc/rc.d/init.d/crond start
Starting crond: [ OK ]
cronの設定を行う。
[root@XXXXX ~]# crontab -e
初期状態では何も設定されていない(空欄)ので設定を追加す...
(例)毎日AM6時に時刻同期を行う場合
0 6 * * * ntpdate ntp.nict.jp
(※cronの設定については詳しく説明されたサイトが他にある...
設定を終了すると、
crontab: installing new crontab
とコンソールに表示される。
(cronの参考にしたサイト → [[Linuxで自宅サーバ構築»...
~
*コマンド実行結果のログを残す [#b5668b38]
コマンド実行時、画面にコマンド実行結果が表示されるが量が...
例えば make コマンドは、エラーが起こっても途中で終了せず...
画面上からスクロールしてしまっており確認できないことが多...
~
以上のように出力内容を後から見返したい場合もあるのでコマ...
(例) opensslのconfig時のログをソースフォルダに20130207_c...
[root@XXXXX ~]# cd /usr/local/src/openssl-1.0.1d
[root@XXXXX openssl-1.0.1d]# ./config --prefix=/usr --op...
tee コマンドの後ろには複数のファイル名を記述する事もでき...
~
*フロッピーのマウント [#g375d5fb]
参考サイト:[[Linux/CentOS ネットワーク実験室>http://cent...
+''カーネルモジュールのロード''~
最近のバージョンの OS では、フロッピーのカーネルモジュー...
# modprobe floppy
~
+''マウントポイントのフォルダを作成''
# mkdir /mnt/floppy
~
+''/etc/fstabを編集する''
# vi /etc/fstab
/dev/fd0 /mnt/floppy vfat ...
~
+''root以外でもmountできるようにする''
# visudo
〜(略)〜
## Allow root to run any commands anyware
root ALL=(ALL) ALL
hoge ALL=(ALL) ALL ← この1行を追加
~
+''使い方''
-最近のバージョンの OS では、フロッピーのカーネルモジュー...
# modprobe floppy
-マウント
# mount /mnt/floppy
root以外では
$ sudo mount /mnt/floppy
-マウント解除
# umount /mnt/floppy
~
*NASドライブのマウント [#vf55d4e4]
NASには共有フォルダとユーザー、パスワードを設定しておく~
今回は
共有フォルダ名:backup
ユーザー名:hoge
パスワード:hogehoge
+''マウントポイントのフォルダを作成''
#mkdir /mnt/backup
+''/etc/fstabを編集する''
#vi /etc/fstab
最後の行に下記を追加
//100.100.100.100/backup /mnt/backup cifs ...
+''使い方''
#mount /mnt/backup
*バックアップの実行 [#edadb4fd]
**スクリプトの例 [#tbc590e5]
どこかのサイトからそのまま拝借して修正~
-バックアップする環境
tracとsubversionで1プロジェクトを構成
~/proj01ディレクトリにtracとsvnのディレクトリがある
tracのDBにはPostgreSQLを使用
subversionはfsで運用(BerkeleyDBは使っていない
バックアップ先にはNASを利用
~
出来上がったスクリプト「backup.sh」には実行権限が必要
#chmod 755 /path/backup.sh
~
ただし、作成したスクリプトを実行すると、下記エラーがログ...
sudo: sorry, you must have a tty to run sudo
なので''sudo''の設定を修正。
#visudo
#Defaults requiretty ←この行をコメントアウト
~
以下スクリプトサンプル
#!/bin/bash
#
# ローカル内でバックアップ
#
LANG=C
#
# 設定開始
#
# バックアップ先ディレクトリ名
BACKUPDIR=/mnt/backup
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=3
# バックアップログファイル名
BACKUPLOG=$BACKUPDIR/backup.log
#PostgreSQL
PGPATH=/usr/local/pgsql/bin
#
# 設定終了
#
cd $BACKUPDIR
#=======================================================...
# 前回バックアップをリネーム
#=======================================================...
#Log
BACKUPFILE=`ls backup.log 2>/dev/null`
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{print $6}...
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}$BAC...
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj01
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=`ls ${PROJ_NAME}_pgdump.backup.gz ...
'2') BACKUPFILE=`ls ${PROJ_NAME}_trac.tar.gz 2>/de...
'3') BACKUPFILE=`ls ${PROJ_NAME}_svn.tar.gz 2>/dev...
esac
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{prin...
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}...
fi
done
done
#//
#//
#///////////////////////////////////////////////////////...
#=======================================================...
# バックアップログファイル作成
#=======================================================...
rm -f $BACKUPLOG
touch $BACKUPLOG
chmod 400 $BACKUPLOG
#=======================================================...
# バックアップ実行
#=======================================================...
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01
PROJ_PATH=/home/htdocs/Sample/proj01 ;;
'2') PROJ_NAME=Sample-proj02
PROJ_PATH=/home/htdocs/Sample/proj02 ;;
'3') PROJ_NAME=Sample-proj03
PROJ_PATH=/home/htdocs/Sample/proj03 ;;
esac
# tracのDBバックアップ
echo "`date` backup start [DB:trac_${PROJ_NAME}]" >> $...
sudo -u postgres $PGPATH/vacuumdb trac_${PROJ_NAME} >>...
sudo -u postgres $PGPATH/pg_dump --file=${PROJ_NAME}_p...
gzip ${PROJ_NAME}_pgdump.backup >> $BACKUPLOG 2>&1
echo "`date` backup end [DB:trac_${PROJ_NAME}]" >> $...
for i in trac svn
do
echo "`date` backup start [${PROJ_NAME} ${i}]" >> $B...
tar czvfP $BACKUPDIR/${PROJ_NAME}_${i}.tar.gz $PROJ_...
echo "`date` backup end [${PROJ_NAME} ${i}]" >> $B...
done
done
#//
#//
#///////////////////////////////////////////////////////...
#=======================================================...
# バックアップ保存世代を超えた古いバックアップを削除
#=======================================================...
#Log
BACKUPFILE=$BACKUPDIR/*backup.log
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BACKUP...
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_pgdump.ba...
'2') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_trac.tar....
'3') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_svn.tar.g...
esac
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BA...
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKU...
do
rm -f $file
done
fi
done
done
#//
#//
#///////////////////////////////////////////////////////...
**cronでの自動実行 [#z73e242e]
参考サイト:[[NEC 8番街 - croの設定ガイド:http://www.expr...
#crontab -e
~
毎日1時に実行
0 1 * * * /path/backup.sh
日時指定の書式は左から「分、時、日、月、曜日」それにコマ...
上記の例では「1時0分」それ以外が「*」なので毎日実行される...
これが例えば
0 1 1 * * /path/backup.sh
だったら毎月1日の1時0分に実行される
~
*htpasswdへのユーザー登録 [#l978336f]
ユーザーhogehogeで新規に認証用ファイル.htpasswdを作成
# htpasswd -c /home/htdocs/.htpasswd hogehoge
~
ユーザーhogehoge2を既存の認証用ファイル.htpasswdに追加
# htpasswd /home/htdocs/.htpasswd hogehoge2
~
「command not found」が出たら
# PATH=$PATH:/usr/local/apache2/bin
# export PATH
~
*ファイアウォールの設定 [#wda4f7fd]
参考サイト:[[CentOSで自宅サーバー構築 ファイアウォール構...
**iptables設定 [#qc0eb70b]
+''iptablesの設定用スクリプトを作成''
# vi iptables.sh
~
下記の通り記述~
公開するポートのみコメントを外す
#!/bin/bash
#---------------------------------------#
# 設定開始 #
#---------------------------------------#
# インタフェース名定義
LAN=eth0
#---------------------------------------#
# 設定終了 #
#---------------------------------------#
# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)...
# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK...
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# ファイアウォール停止(すべてのルールをクリア)
/etc/rc.d/init.d/iptables stop
# デフォルトルール(以降のルールにマッチしなかった場合に...
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄
# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを...
iptables -A INPUT -m state --state ESTABLISHED,RELATED -...
# SYN Cookiesを有効にする
# ※TCP SYN Flood攻撃対策
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# ブロードキャストアドレス宛pingには応答しない
# ※Smurf攻撃対策
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/...
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sy...
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sy...
# ICMP Redirectパケットは拒否
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl...
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /d...
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc...
done
# Source Routedパケットは拒否
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sys...
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 >...
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /...
done
# フラグメント化されたパケットはログを記録して破棄
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAG...
iptables -A INPUT -f -j DROP
# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT -s ! $LOCALNET -p tcp -m multiport --d...
iptables -A INPUT -s ! $LOCALNET -p udp -m multiport --d...
iptables -A OUTPUT -d ! $LOCALNET -p tcp -m multiport --...
iptables -A OUTPUT -d ! $LOCALNET -p udp -m multiport --...
# 1秒間に4回を超えるpingはログを記録して破棄
# ※Ping of Death攻撃対策
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-b...
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES...
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LO...
# 全ホスト(ブロードキャストアドレス、マルチキャストアド...
# ※不要ログ記録防止
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP
# 113番ポート(IDENT)へのアクセスには拒否応答
# ※メールサーバ等のレスポンス低下防止
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-...
# ACCEPT_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを許可するユーザ...
ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print ...
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}
# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ...
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print ...
do
iptables -A DROP_COUNTRY -s $addr -m limit --lim...
iptables -A DROP_COUNTRY -s $addr -j DROP
done
}
# IPアドレスリスト取得
. /root/iptables_functions
IPLISTGET
# 日本からのアクセスを許可するユーザ定義チェインACCEPT_C...
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# 以降,日本からのみアクセスを許可したい場合はACCEPTのか...
# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE KR
DROP_COUNTRY_MAKE TW
iptables -A INPUT -j DROP_COUNTRY
#-------------------------------------------------------...
# 各種サービスを公開する場合の設定(ここから) ...
#-------------------------------------------------------...
# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ...
# ※SSHサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
# ※外部向けDNSサーバーを運用する場合のみ
#iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 外部からのTCP21番ポート(FTP)へのアクセスを日本からのみ...
# ※FTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY
# 外部からのPASV用ポート(FTP-DATA)へのアクセスを日本から...
# ※FTPサーバーを公開する場合のみ
# ※PASV用ポート60000:60030は当サイトの設定例
#iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_...
# 外部からのTCP25番ポート(SMTP)へのアクセスを許可
# ※SMTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 外部からのTCP465番ポート(SMTPS)へのアクセスを日本から...
# ※SMTPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY
# 外部からのTCP110番ポート(POP3)へのアクセスを日本からの...
# ※POP3サーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY
# 外部からのTCP995番ポート(POP3S)へのアクセスを日本から...
# ※POP3Sサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY
# 外部からのTCP143番ポート(IMAP)へのアクセスを日本からの...
# ※IMAPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY
# 外部からのTCP993番ポート(IMAPS)へのアクセスを日本から...
# ※IMAPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY
# 外部からのUDP1194番ポート(OpenVPN)へのアクセスを日本か...
# ※OpenVPNサーバーを公開する場合のみ
#iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY
# VPNインタフェース用ファイアウォール設定
# ※OpenVPNサーバーを公開する場合のみ
#[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/ope...
#-------------------------------------------------------...
# 各種サービスを公開する場合の設定(ここまで) ...
#-------------------------------------------------------...
# 拒否IPアドレスからのアクセスはログを記録せずに破棄
# ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておく...
# (/root/deny_ipがなければなにもしない)
if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
iptables -I INPUT -s $ip -j DROP
done
fi
# 上記のルールにマッチしなかったアクセスはログを記録して...
iptables -A INPUT -m limit --limit 1/s -j LOG --log-pref...
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-pr...
iptables -A FORWARD -j DROP
# サーバー再起動時にも上記設定が有効となるようにルールを...
/etc/rc.d/init.d/iptables save
# ファイアウォール起動
/etc/rc.d/init.d/iptables start
~
+''設定用スクリプトに実行権限を付加''
# chmod 700 iptables.sh
~
+''設定スクリプト外部関数作成''
# vi iptables_functions
~
下記の通り記述
# IPアドレスリスト取得関数定義
IPLISTGET(){
# http://nami.jp/ipv4bycc/から最新版IPアドレスリスト...
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 最新版IPアドレスリストが取得できなかった場合
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# バックアップがある場合はその旨をroot宛にメ...
echo cidr.txt was read from the backup! | ma...
exit 1
else
# バックアップがない場合はその旨をroot宛にメ...
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# 最新版IPアドレスリストを /tmpへバックアップする
/bin/mv cidr.txt /tmp/cidr.txt
}
~
**IPアドレスリスト更新チェック [#e11867bb]
IPアドレスリストは頻繁に更新されるので、毎日自動でIPアド...
+''IPアドレスリストチェックスクリプト作成''
# vi /etc/cron.daily/iplist_check.sh
~
下記の通り記述
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin...
# チェック国コード
COUNTRY_CODE='JP CN KR TW'
# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
~
+''スクリプトに実行権限を付加''
# chmod +x /etc/cron.daily/iplist_check.sh
~
**iptables起動 [#oe124956]
+''設定スクリプト実行''
# ./iptables.sh
ファイアウォールルールを適用中: ...
チェインポリシーを ACCEPT に設定中filter ...
iptables モジュールを取り外し中 ...
ファイアウォールのルールを /etc/sysconfig/iptables に保...
ファイアウォールルールを適用中: ...
チェインポリシーを ACCEPT に設定中filter ...
iptables モジュールを取り外し中 ...
iptables ファイアウォールルールを適用中: ...
iptables モジュールを読み込み中ip_conntrack_netbios_ns ...
+''iptables自動起動設定''
# chkconfig iptables on
~
*ログローテーション [#ued603c7]
-''/etc/logrotate.conf'' の内容
# see "man logrotate" for details
# rotate log files weekly
weekly
↑毎週ログを置き換える。毎日はdaily、毎月はmonthly
# keep 4 weeks worth of backlogs
rotate 4
↑※ログを4世代分残す。weeky を指定した場合は4週間という意味
# create new (empty) log files after rotating old ones
create
↑※新規ログファイルをローテーションした直後に作成する
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
↑※圧縮する。デフォルトは圧縮''しない''(コメントアウト)
# RPM packages drop log rotation information into this d...
include /etc/logrotate.d
↑※各ログファイルの設定がおかれているパスを指定。
このディレクトリに自身で作成したconfを入れておけば良い
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
~
**設定値 [#ee9ba0f2]
-daily or weekly or monthly~
ログのローテーション間隔~
~
-missingok~
ログファイルがない場合でもエラーにしない~
~
-rotate n~
n回ローテーションする~
~
-compress~
ローテーションされたログを圧縮~
~
-delaycompress~
次回のログローテーションサイクルになるまで圧縮しない~
~
-notifempty~
ログファイルが空ならローテートしない~
~
-create 0644 user group~
ログファイルのパーミッションと所有ユーザの設定~
~
-copytruncate~
通常、ローテートするときは、既存のログを移動させた後に新...
~
-dateext~
ログファイル末尾につく数値の代わりに日付(YYYYMMDD)がつく~
~
**apache用のログローテーション設定 [#t1c9bfe3]
+''設定ファイルの作成''
# vi /etc/logrotate.d/httpd
/usr/local/apache2/logs/access_log /usr/local/apache2/lo...
weekly
rotate 4
missingok
sharedscripts
postrotate
/bin/killall -HUP `cat /var/run/httpd.pid 2>/...
endscript
}
~
+''確認''~
ログのローテートを実行し、/var/lib/logrotate.log を見て、...
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテ...
# cat /var/lib/logrotate.status
"/usr/local/apache2/logs/access_log" 2011-12-1 ← 設定し...
"/usr/local/apache2/logs/error_log" 2011-12-1 ← 設定し...
~
**Redmine用のログローテーション設定 [#t1c9bfe3]
+''設定ファイルの作成''
# vi /etc/logrotate.d/redmine
/home/htdocs/redmine/log/production.log {
weekly
rotate 4
missingok
copytruncate
notifempty
}
~
+''確認''~
ログのローテートを実行し、/var/lib/logrotate.log を見て、...
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテ...
# cat /var/lib/logrotate.status
"/home/htdocs/redmine/log/production.log" 2011-12-1 ← ...
~
*ランレベル [#g934a7ae]
参考:[[ランレベルとは?(http://www.atmarkit.co.jp)>htt...
| 0 |シャットダウン(システムの停止)|シャットダウンに向...
| 1 |シングルユーザーモード(rootのみ) |シングルユーザモ...
| 2 |ネットワークなしのマルチユーザーモード |使用されない|
| 3 |通常のマルチユーザーモード(テキストログイン) |標準...
| 4 | 未使用 |使用されない|
| 5 | グラフィカルログインによるマルチユーザーモード |GUI...
| 6 | システムの再起動 |再起動に向かう状態|
~
httpd の自動起動を on にする場合
# chkconfig httpd on
~
httpd の自動起動を ランレベル3と5のみ on にする場合
chkconfig --level 35 httpd on
~
現在のランレベルを調べる場合
# runlevel
N 3 ←ひとつ前のランレベルは存在せず、...
~
*バージョン確認 [#m502e11f]
**OS [#scb8de06]
# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
**カーネル [#yd9ec247]
# uname -a
Linux hogehoge 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11...
**Apache [#b196ccbc]
# httpd -v
Server version: Apache/2.2.26 (Unix)
Server built: Mar 7 2014 17:07:03
または、
# httpd -V
Server version: Apache/2.2.26 (Unix)
Server built: Mar 7 2014 17:07:03
Server's Module Magic Number: 20051115:33
Server loaded: APR 1.5.0, APR-Util 1.5.3
Compiled using: APR 1.5.0, APR-Util 1.5.3
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
**OpenSSH [#p4c2c7c7]
# ssh -V
OpenSSH_6.5p1, OpenSSL 1.0.1e-fips 11 Feb 2013
**Postfix [#y29a1188]
# postconf | grep mail_version
mail_version = 2.6.6
milter_macro_v = $mail_name $mail_version
**OpenSSL [#ha17286b]
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
**Ruby [#x24fc118]
# ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
**Subversion [#d961e7d8]
# svn --version
svn, version 1.8.8 (r1568071)
compiled Feb 17 2014, 18:18:15 on i686-pc-linux-gnu
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many peo...
see the NOTICE file for more information.
Subversion is open source software, see http://subversio...
以下のリポジトリアクセス (RA) モジュールが利用できます:
* ra_svn : svn ネットワークプロトコルを使ってリポジトリ...
- Cyrus SASL 認証を併用
- 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスす...
- 'file' スキームを操作します
* ra_serf : Module for accessing a repository via WebDAV...
- using serf 1.3.4
- 'http' スキームを操作します
- 'https' スキームを操作します
**PostgreSQL [#m3ee8d8c]
# yum list installed | grep postgres
postgresql93.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-devel.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-libs.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-server.i686
または、
# psql -U postgres
postgres=# select version();
version
--------------------------------------------------------...
PostgreSQL 9.3.3 on i686-pc-linux-gnu, compiled by gcc ...
(1 行)
postgres=# \quit
**yumでの確認 [#p55a370a]
# yum list installed
または、
# yum list installed | grep XXXX
XXXXは調べたいもの。例えばzlibなら、
# yum list installed | grep zlib
zlib.i686 1.2.3-29.el6 @anaconda-Cent...
zlib-devel.i686 1.2.3-29.el6 @base
~
# yum list installed
とした時に表示されるリストに黄色と赤の色付きで表示される...
# man yum.conf
を参照すると、黄色に関するものは
color_list_installed_newer The colorization/highlightin...
newer than the latest available package with the same na...
color_list_installed_older for possible values.
赤に関するものは
color_list_installed_extra The colorization/highlightin...
no available package with the same name and arch. Defaul...
for possible values.
と記載されている。yum.confはデフォルトのまま使用している...
黄色は「yumが参照しているリポジトリの最新よりも新しいもの...
赤色は「yumが参照しているリポジトリには同じ名前の利用可能...
といったところかな?~
*容量を調べる [#m63f2220]
例えば/etc/httpdディレクトリの使用容量を調べる場合
# du -h /etc/httpd
76K /etc/httpd/conf/extra
60K /etc/httpd/conf/original/extra
84K /etc/httpd/conf/original
188K /etc/httpd/conf/proj
12K /etc/httpd/conf/ssl
472K /etc/httpd/conf
8.0K /etc/httpd/conf.d
484K /etc/httpd ←/etc/httpd全体...
終了行:
''目次''
#contents
~
----
*時刻の同期 [#ld716f12]
下記のコマンドでOS時刻をntpサーバに同期できる。~
[root@XXXXX ~]# ntpdate ntp.nict.jp
''ntp.nict.jp''は日本標準時を供給している[[独立行政法人情...
**定期的に時刻を同期 [#sd5bdf44]
''ntpdate''コマンドで時刻同期させても、その後時間の経過と...
~
まずは、cronが動作しているかどうか確認。~
[root@XXXXX ~]# /etc/rc.d/init.d/crond status
crond (pid ****) is running... ←動作中
動作していない場合は起動する。
[root@XXXXX ~]# /etc/rc.d/init.d/crond start
Starting crond: [ OK ]
cronの設定を行う。
[root@XXXXX ~]# crontab -e
初期状態では何も設定されていない(空欄)ので設定を追加す...
(例)毎日AM6時に時刻同期を行う場合
0 6 * * * ntpdate ntp.nict.jp
(※cronの設定については詳しく説明されたサイトが他にある...
設定を終了すると、
crontab: installing new crontab
とコンソールに表示される。
(cronの参考にしたサイト → [[Linuxで自宅サーバ構築»...
~
*コマンド実行結果のログを残す [#b5668b38]
コマンド実行時、画面にコマンド実行結果が表示されるが量が...
例えば make コマンドは、エラーが起こっても途中で終了せず...
画面上からスクロールしてしまっており確認できないことが多...
~
以上のように出力内容を後から見返したい場合もあるのでコマ...
(例) opensslのconfig時のログをソースフォルダに20130207_c...
[root@XXXXX ~]# cd /usr/local/src/openssl-1.0.1d
[root@XXXXX openssl-1.0.1d]# ./config --prefix=/usr --op...
tee コマンドの後ろには複数のファイル名を記述する事もでき...
~
*フロッピーのマウント [#g375d5fb]
参考サイト:[[Linux/CentOS ネットワーク実験室>http://cent...
+''カーネルモジュールのロード''~
最近のバージョンの OS では、フロッピーのカーネルモジュー...
# modprobe floppy
~
+''マウントポイントのフォルダを作成''
# mkdir /mnt/floppy
~
+''/etc/fstabを編集する''
# vi /etc/fstab
/dev/fd0 /mnt/floppy vfat ...
~
+''root以外でもmountできるようにする''
# visudo
〜(略)〜
## Allow root to run any commands anyware
root ALL=(ALL) ALL
hoge ALL=(ALL) ALL ← この1行を追加
~
+''使い方''
-最近のバージョンの OS では、フロッピーのカーネルモジュー...
# modprobe floppy
-マウント
# mount /mnt/floppy
root以外では
$ sudo mount /mnt/floppy
-マウント解除
# umount /mnt/floppy
~
*NASドライブのマウント [#vf55d4e4]
NASには共有フォルダとユーザー、パスワードを設定しておく~
今回は
共有フォルダ名:backup
ユーザー名:hoge
パスワード:hogehoge
+''マウントポイントのフォルダを作成''
#mkdir /mnt/backup
+''/etc/fstabを編集する''
#vi /etc/fstab
最後の行に下記を追加
//100.100.100.100/backup /mnt/backup cifs ...
+''使い方''
#mount /mnt/backup
*バックアップの実行 [#edadb4fd]
**スクリプトの例 [#tbc590e5]
どこかのサイトからそのまま拝借して修正~
-バックアップする環境
tracとsubversionで1プロジェクトを構成
~/proj01ディレクトリにtracとsvnのディレクトリがある
tracのDBにはPostgreSQLを使用
subversionはfsで運用(BerkeleyDBは使っていない
バックアップ先にはNASを利用
~
出来上がったスクリプト「backup.sh」には実行権限が必要
#chmod 755 /path/backup.sh
~
ただし、作成したスクリプトを実行すると、下記エラーがログ...
sudo: sorry, you must have a tty to run sudo
なので''sudo''の設定を修正。
#visudo
#Defaults requiretty ←この行をコメントアウト
~
以下スクリプトサンプル
#!/bin/bash
#
# ローカル内でバックアップ
#
LANG=C
#
# 設定開始
#
# バックアップ先ディレクトリ名
BACKUPDIR=/mnt/backup
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=3
# バックアップログファイル名
BACKUPLOG=$BACKUPDIR/backup.log
#PostgreSQL
PGPATH=/usr/local/pgsql/bin
#
# 設定終了
#
cd $BACKUPDIR
#=======================================================...
# 前回バックアップをリネーム
#=======================================================...
#Log
BACKUPFILE=`ls backup.log 2>/dev/null`
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{print $6}...
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}$BAC...
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj01
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=`ls ${PROJ_NAME}_pgdump.backup.gz ...
'2') BACKUPFILE=`ls ${PROJ_NAME}_trac.tar.gz 2>/de...
'3') BACKUPFILE=`ls ${PROJ_NAME}_svn.tar.gz 2>/dev...
esac
if [ -f $BACKUPFILE ]; then
TIMESTAMP=`ls --full-time $BACKUPFILE|awk '{prin...
mv $BACKUPDIR/$BACKUPFILE $BACKUPDIR/${TIMESTAMP}...
fi
done
done
#//
#//
#///////////////////////////////////////////////////////...
#=======================================================...
# バックアップログファイル作成
#=======================================================...
rm -f $BACKUPLOG
touch $BACKUPLOG
chmod 400 $BACKUPLOG
#=======================================================...
# バックアップ実行
#=======================================================...
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01
PROJ_PATH=/home/htdocs/Sample/proj01 ;;
'2') PROJ_NAME=Sample-proj02
PROJ_PATH=/home/htdocs/Sample/proj02 ;;
'3') PROJ_NAME=Sample-proj03
PROJ_PATH=/home/htdocs/Sample/proj03 ;;
esac
# tracのDBバックアップ
echo "`date` backup start [DB:trac_${PROJ_NAME}]" >> $...
sudo -u postgres $PGPATH/vacuumdb trac_${PROJ_NAME} >>...
sudo -u postgres $PGPATH/pg_dump --file=${PROJ_NAME}_p...
gzip ${PROJ_NAME}_pgdump.backup >> $BACKUPLOG 2>&1
echo "`date` backup end [DB:trac_${PROJ_NAME}]" >> $...
for i in trac svn
do
echo "`date` backup start [${PROJ_NAME} ${i}]" >> $B...
tar czvfP $BACKUPDIR/${PROJ_NAME}_${i}.tar.gz $PROJ_...
echo "`date` backup end [${PROJ_NAME} ${i}]" >> $B...
done
done
#//
#//
#///////////////////////////////////////////////////////...
#=======================================================...
# バックアップ保存世代を超えた古いバックアップを削除
#=======================================================...
#Log
BACKUPFILE=$BACKUPDIR/*backup.log
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BACKUP...
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
#/////////////////////////////////////////////////////////
#//
#// Sample Proj
#//
for j in 1 2 3
do
case $j in
'1') PROJ_NAME=Sample-proj01 ;;
'2') PROJ_NAME=Sample-proj02 ;;
'3') PROJ_NAME=Sample-proj03 ;;
esac
for i in 1 2 3
do
case $i in
'1') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_pgdump.ba...
'2') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_trac.tar....
'3') BACKUPFILE=$BACKUPDIR/*${PROJ_NAME}_svn.tar.g...
esac
if [ $(ls $BACKUPFILE|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPFILE|wc -l) - $BA...
for file in `ls -t $BACKUPFILE|tail -n $OLDBACKU...
do
rm -f $file
done
fi
done
done
#//
#//
#///////////////////////////////////////////////////////...
**cronでの自動実行 [#z73e242e]
参考サイト:[[NEC 8番街 - croの設定ガイド:http://www.expr...
#crontab -e
~
毎日1時に実行
0 1 * * * /path/backup.sh
日時指定の書式は左から「分、時、日、月、曜日」それにコマ...
上記の例では「1時0分」それ以外が「*」なので毎日実行される...
これが例えば
0 1 1 * * /path/backup.sh
だったら毎月1日の1時0分に実行される
~
*htpasswdへのユーザー登録 [#l978336f]
ユーザーhogehogeで新規に認証用ファイル.htpasswdを作成
# htpasswd -c /home/htdocs/.htpasswd hogehoge
~
ユーザーhogehoge2を既存の認証用ファイル.htpasswdに追加
# htpasswd /home/htdocs/.htpasswd hogehoge2
~
「command not found」が出たら
# PATH=$PATH:/usr/local/apache2/bin
# export PATH
~
*ファイアウォールの設定 [#wda4f7fd]
参考サイト:[[CentOSで自宅サーバー構築 ファイアウォール構...
**iptables設定 [#qc0eb70b]
+''iptablesの設定用スクリプトを作成''
# vi iptables.sh
~
下記の通り記述~
公開するポートのみコメントを外す
#!/bin/bash
#---------------------------------------#
# 設定開始 #
#---------------------------------------#
# インタフェース名定義
LAN=eth0
#---------------------------------------#
# 設定終了 #
#---------------------------------------#
# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)...
# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK...
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# ファイアウォール停止(すべてのルールをクリア)
/etc/rc.d/init.d/iptables stop
# デフォルトルール(以降のルールにマッチしなかった場合に...
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄
# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを...
iptables -A INPUT -m state --state ESTABLISHED,RELATED -...
# SYN Cookiesを有効にする
# ※TCP SYN Flood攻撃対策
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# ブロードキャストアドレス宛pingには応答しない
# ※Smurf攻撃対策
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/...
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sy...
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sy...
# ICMP Redirectパケットは拒否
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl...
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /d...
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc...
done
# Source Routedパケットは拒否
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sys...
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 >...
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /...
done
# フラグメント化されたパケットはログを記録して破棄
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAG...
iptables -A INPUT -f -j DROP
# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT -s ! $LOCALNET -p tcp -m multiport --d...
iptables -A INPUT -s ! $LOCALNET -p udp -m multiport --d...
iptables -A OUTPUT -d ! $LOCALNET -p tcp -m multiport --...
iptables -A OUTPUT -d ! $LOCALNET -p udp -m multiport --...
# 1秒間に4回を超えるpingはログを記録して破棄
# ※Ping of Death攻撃対策
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-b...
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES...
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LO...
# 全ホスト(ブロードキャストアドレス、マルチキャストアド...
# ※不要ログ記録防止
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP
# 113番ポート(IDENT)へのアクセスには拒否応答
# ※メールサーバ等のレスポンス低下防止
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-...
# ACCEPT_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを許可するユーザ...
ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print ...
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}
# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ...
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print ...
do
iptables -A DROP_COUNTRY -s $addr -m limit --lim...
iptables -A DROP_COUNTRY -s $addr -j DROP
done
}
# IPアドレスリスト取得
. /root/iptables_functions
IPLISTGET
# 日本からのアクセスを許可するユーザ定義チェインACCEPT_C...
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# 以降,日本からのみアクセスを許可したい場合はACCEPTのか...
# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE KR
DROP_COUNTRY_MAKE TW
iptables -A INPUT -j DROP_COUNTRY
#-------------------------------------------------------...
# 各種サービスを公開する場合の設定(ここから) ...
#-------------------------------------------------------...
# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ...
# ※SSHサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
# ※外部向けDNSサーバーを運用する場合のみ
#iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 外部からのTCP21番ポート(FTP)へのアクセスを日本からのみ...
# ※FTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY
# 外部からのPASV用ポート(FTP-DATA)へのアクセスを日本から...
# ※FTPサーバーを公開する場合のみ
# ※PASV用ポート60000:60030は当サイトの設定例
#iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_...
# 外部からのTCP25番ポート(SMTP)へのアクセスを許可
# ※SMTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 外部からのTCP465番ポート(SMTPS)へのアクセスを日本から...
# ※SMTPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY
# 外部からのTCP110番ポート(POP3)へのアクセスを日本からの...
# ※POP3サーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY
# 外部からのTCP995番ポート(POP3S)へのアクセスを日本から...
# ※POP3Sサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY
# 外部からのTCP143番ポート(IMAP)へのアクセスを日本からの...
# ※IMAPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY
# 外部からのTCP993番ポート(IMAPS)へのアクセスを日本から...
# ※IMAPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY
# 外部からのUDP1194番ポート(OpenVPN)へのアクセスを日本か...
# ※OpenVPNサーバーを公開する場合のみ
#iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY
# VPNインタフェース用ファイアウォール設定
# ※OpenVPNサーバーを公開する場合のみ
#[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/ope...
#-------------------------------------------------------...
# 各種サービスを公開する場合の設定(ここまで) ...
#-------------------------------------------------------...
# 拒否IPアドレスからのアクセスはログを記録せずに破棄
# ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておく...
# (/root/deny_ipがなければなにもしない)
if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
iptables -I INPUT -s $ip -j DROP
done
fi
# 上記のルールにマッチしなかったアクセスはログを記録して...
iptables -A INPUT -m limit --limit 1/s -j LOG --log-pref...
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-pr...
iptables -A FORWARD -j DROP
# サーバー再起動時にも上記設定が有効となるようにルールを...
/etc/rc.d/init.d/iptables save
# ファイアウォール起動
/etc/rc.d/init.d/iptables start
~
+''設定用スクリプトに実行権限を付加''
# chmod 700 iptables.sh
~
+''設定スクリプト外部関数作成''
# vi iptables_functions
~
下記の通り記述
# IPアドレスリスト取得関数定義
IPLISTGET(){
# http://nami.jp/ipv4bycc/から最新版IPアドレスリスト...
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 最新版IPアドレスリストが取得できなかった場合
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# バックアップがある場合はその旨をroot宛にメ...
echo cidr.txt was read from the backup! | ma...
exit 1
else
# バックアップがない場合はその旨をroot宛にメ...
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# 最新版IPアドレスリストを /tmpへバックアップする
/bin/mv cidr.txt /tmp/cidr.txt
}
~
**IPアドレスリスト更新チェック [#e11867bb]
IPアドレスリストは頻繁に更新されるので、毎日自動でIPアド...
+''IPアドレスリストチェックスクリプト作成''
# vi /etc/cron.daily/iplist_check.sh
~
下記の通り記述
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin...
# チェック国コード
COUNTRY_CODE='JP CN KR TW'
# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
~
+''スクリプトに実行権限を付加''
# chmod +x /etc/cron.daily/iplist_check.sh
~
**iptables起動 [#oe124956]
+''設定スクリプト実行''
# ./iptables.sh
ファイアウォールルールを適用中: ...
チェインポリシーを ACCEPT に設定中filter ...
iptables モジュールを取り外し中 ...
ファイアウォールのルールを /etc/sysconfig/iptables に保...
ファイアウォールルールを適用中: ...
チェインポリシーを ACCEPT に設定中filter ...
iptables モジュールを取り外し中 ...
iptables ファイアウォールルールを適用中: ...
iptables モジュールを読み込み中ip_conntrack_netbios_ns ...
+''iptables自動起動設定''
# chkconfig iptables on
~
*ログローテーション [#ued603c7]
-''/etc/logrotate.conf'' の内容
# see "man logrotate" for details
# rotate log files weekly
weekly
↑毎週ログを置き換える。毎日はdaily、毎月はmonthly
# keep 4 weeks worth of backlogs
rotate 4
↑※ログを4世代分残す。weeky を指定した場合は4週間という意味
# create new (empty) log files after rotating old ones
create
↑※新規ログファイルをローテーションした直後に作成する
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
↑※圧縮する。デフォルトは圧縮''しない''(コメントアウト)
# RPM packages drop log rotation information into this d...
include /etc/logrotate.d
↑※各ログファイルの設定がおかれているパスを指定。
このディレクトリに自身で作成したconfを入れておけば良い
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
~
**設定値 [#ee9ba0f2]
-daily or weekly or monthly~
ログのローテーション間隔~
~
-missingok~
ログファイルがない場合でもエラーにしない~
~
-rotate n~
n回ローテーションする~
~
-compress~
ローテーションされたログを圧縮~
~
-delaycompress~
次回のログローテーションサイクルになるまで圧縮しない~
~
-notifempty~
ログファイルが空ならローテートしない~
~
-create 0644 user group~
ログファイルのパーミッションと所有ユーザの設定~
~
-copytruncate~
通常、ローテートするときは、既存のログを移動させた後に新...
~
-dateext~
ログファイル末尾につく数値の代わりに日付(YYYYMMDD)がつく~
~
**apache用のログローテーション設定 [#t1c9bfe3]
+''設定ファイルの作成''
# vi /etc/logrotate.d/httpd
/usr/local/apache2/logs/access_log /usr/local/apache2/lo...
weekly
rotate 4
missingok
sharedscripts
postrotate
/bin/killall -HUP `cat /var/run/httpd.pid 2>/...
endscript
}
~
+''確認''~
ログのローテートを実行し、/var/lib/logrotate.log を見て、...
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテ...
# cat /var/lib/logrotate.status
"/usr/local/apache2/logs/access_log" 2011-12-1 ← 設定し...
"/usr/local/apache2/logs/error_log" 2011-12-1 ← 設定し...
~
**Redmine用のログローテーション設定 [#t1c9bfe3]
+''設定ファイルの作成''
# vi /etc/logrotate.d/redmine
/home/htdocs/redmine/log/production.log {
weekly
rotate 4
missingok
copytruncate
notifempty
}
~
+''確認''~
ログのローテートを実行し、/var/lib/logrotate.log を見て、...
# /usr/sbin/logrotate /etc/logrotate.conf ← ローテ...
# cat /var/lib/logrotate.status
"/home/htdocs/redmine/log/production.log" 2011-12-1 ← ...
~
*ランレベル [#g934a7ae]
参考:[[ランレベルとは?(http://www.atmarkit.co.jp)>htt...
| 0 |シャットダウン(システムの停止)|シャットダウンに向...
| 1 |シングルユーザーモード(rootのみ) |シングルユーザモ...
| 2 |ネットワークなしのマルチユーザーモード |使用されない|
| 3 |通常のマルチユーザーモード(テキストログイン) |標準...
| 4 | 未使用 |使用されない|
| 5 | グラフィカルログインによるマルチユーザーモード |GUI...
| 6 | システムの再起動 |再起動に向かう状態|
~
httpd の自動起動を on にする場合
# chkconfig httpd on
~
httpd の自動起動を ランレベル3と5のみ on にする場合
chkconfig --level 35 httpd on
~
現在のランレベルを調べる場合
# runlevel
N 3 ←ひとつ前のランレベルは存在せず、...
~
*バージョン確認 [#m502e11f]
**OS [#scb8de06]
# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
**カーネル [#yd9ec247]
# uname -a
Linux hogehoge 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11...
**Apache [#b196ccbc]
# httpd -v
Server version: Apache/2.2.26 (Unix)
Server built: Mar 7 2014 17:07:03
または、
# httpd -V
Server version: Apache/2.2.26 (Unix)
Server built: Mar 7 2014 17:07:03
Server's Module Magic Number: 20051115:33
Server loaded: APR 1.5.0, APR-Util 1.5.3
Compiled using: APR 1.5.0, APR-Util 1.5.3
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
**OpenSSH [#p4c2c7c7]
# ssh -V
OpenSSH_6.5p1, OpenSSL 1.0.1e-fips 11 Feb 2013
**Postfix [#y29a1188]
# postconf | grep mail_version
mail_version = 2.6.6
milter_macro_v = $mail_name $mail_version
**OpenSSL [#ha17286b]
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
**Ruby [#x24fc118]
# ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
**Subversion [#d961e7d8]
# svn --version
svn, version 1.8.8 (r1568071)
compiled Feb 17 2014, 18:18:15 on i686-pc-linux-gnu
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many peo...
see the NOTICE file for more information.
Subversion is open source software, see http://subversio...
以下のリポジトリアクセス (RA) モジュールが利用できます:
* ra_svn : svn ネットワークプロトコルを使ってリポジトリ...
- Cyrus SASL 認証を併用
- 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスす...
- 'file' スキームを操作します
* ra_serf : Module for accessing a repository via WebDAV...
- using serf 1.3.4
- 'http' スキームを操作します
- 'https' スキームを操作します
**PostgreSQL [#m3ee8d8c]
# yum list installed | grep postgres
postgresql93.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-devel.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-libs.i686 9.3.3-1PGDG.rhel6 @pgdg93
postgresql93-server.i686
または、
# psql -U postgres
postgres=# select version();
version
--------------------------------------------------------...
PostgreSQL 9.3.3 on i686-pc-linux-gnu, compiled by gcc ...
(1 行)
postgres=# \quit
**yumでの確認 [#p55a370a]
# yum list installed
または、
# yum list installed | grep XXXX
XXXXは調べたいもの。例えばzlibなら、
# yum list installed | grep zlib
zlib.i686 1.2.3-29.el6 @anaconda-Cent...
zlib-devel.i686 1.2.3-29.el6 @base
~
# yum list installed
とした時に表示されるリストに黄色と赤の色付きで表示される...
# man yum.conf
を参照すると、黄色に関するものは
color_list_installed_newer The colorization/highlightin...
newer than the latest available package with the same na...
color_list_installed_older for possible values.
赤に関するものは
color_list_installed_extra The colorization/highlightin...
no available package with the same name and arch. Defaul...
for possible values.
と記載されている。yum.confはデフォルトのまま使用している...
黄色は「yumが参照しているリポジトリの最新よりも新しいもの...
赤色は「yumが参照しているリポジトリには同じ名前の利用可能...
といったところかな?~
*容量を調べる [#m63f2220]
例えば/etc/httpdディレクトリの使用容量を調べる場合
# du -h /etc/httpd
76K /etc/httpd/conf/extra
60K /etc/httpd/conf/original/extra
84K /etc/httpd/conf/original
188K /etc/httpd/conf/proj
12K /etc/httpd/conf/ssl
472K /etc/httpd/conf
8.0K /etc/httpd/conf.d
484K /etc/httpd ←/etc/httpd全体...
ページ名: