Home > Tags > インストールメモ
インストールメモ
[Debian]Debian lennyで1からサーバーを作ってみる – サーバーバックアップ設定
サーバーバックアップ設定
- bzip2をインストール
# aptitude install bzip2
- バックアップスクリプト作成
# vi backup.sh
#!/bin/bash # # ローカル内でバックアップ # LANG=C # # 設定開始 # # バックアップ対象リスト名 # ※バックアップ対象をフルパスで記述したリスト BACKUPLIST=/root/backuplist [ ! -s $BACKUPLIST ] && echo "$BACKUPLIST is not found" && error_exit # バックアップ対象外リスト名 # ※バックアップ対象外をフルパスで記述したリスト BACKUPNOLIST=/root/backupnolist # バックアップ先ディレクトリ名 BACKUPDIR=/backup mkdir -p $BACKUPDIR # バックアップ保存世代数 # ※当日分を含めた過去分バックアップを保存する世代数 # ※過去分バックアップを保存しない場合は1を指定する BACKUPGEN=8 # 暗号化・復号化パスフレーズ # ※指定がないときは暗号化しない PASS='' # バックアップログファイル名 BACKUPLOG=/var/log/backup.log # # 設定終了 # # 異常終了処理関数定義 error_exit () { rm -f $TMPBACKUPNOLIST exit 1 } # バックアップファイルをバックアップ対象外リストに追加 # ※バックアップ先ファイルをバックアップしないようにする TMPBACKUPNOLIST=`mktemp` [ -s $BACKUPNOLIST ] && cat $BACKUPNOLIST > $TMPBACKUPNOLIST echo "$BACKUPDIR/*backup.tar.bz2" >> $TMPBACKUPNOLIST # 前回バックアップをリネーム cd $BACKUPDIR OLDBACKUPFILE=`ls backup.tar.bz2* 2>/dev/null` if [ -f $OLDBACKUPFILE ]; then TIMESTAMP=`ls --full-time $OLDBACKUPFILE|awk '{print $6}'|tr -d -` mv $BACKUPDIR/$OLDBACKUPFILE $BACKUPDIR/${TIMESTAMP}$OLDBACKUPFILE > /dev/null 2>&1 fi # バックアップログファイル作成 rm -f $BACKUPLOG touch $BACKUPLOG chmod 400 $BACKUPLOG # バックアップ実行 echo "`date` backup start" >> $BACKUPLOG tar cjvfP $BACKUPDIR/backup.tar.bz2 -T $BACKUPLIST -X $TMPBACKUPNOLIST >> $BACKUPLOG 2>&1 code=$? if [ $code -ne 0 ]; then cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root rm -f $BACKUPDIR/backup.tar.bz2 error_exit fi echo "`date` backup end" >> $BACKUPLOG # バックアップ暗号化(暗号化・復号化パスフレーズ指定時のみ) if [ ! -z $PASS ]; then echo "`date` encrypt start" >> $BACKUPLOG mkdir -p $HOME/.gnupg echo $PASS|gpg --passphrase-fd 0 --batch -c $BACKUPDIR/backup.tar.bz2 > /dev/null 2>&1 code=$? if [ $code -ne 0 ]; then cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root rm -f $BACKUPDIR/backup.tar.bz2* error_exit fi rm -f $BACKUPDIR/backup.tar.bz2 echo "`date` encrypt end" >> $BACKUPLOG fi # バックアップ保存世代を超えた古いバックアップを削除 if [ $(ls $BACKUPDIR/*backup.tar.bz2*|wc -l) -gt $BACKUPGEN ]; then OLDBACKUPCNT=`expr $(ls $BACKUPDIR/*backup.tar.bz2*|wc -l) - $BACKUPGEN` for file in `ls -t $BACKUPDIR/*backup.tar.bz2*|tail -n $OLDBACKUPCNT` do rm -f $file done fi # バックアップ対象外リスト削除 rm -f $TMPBACKUPNOLIST - 実行権を付与
# chmod 700 backup.sh
- バックアップ対象リスト作成
# echo "/home" >> backuplist # echo "/root" >> backuplist # echo "/var/www" >> backuplist # echo "/backup/mysql" >> backuplist # echo "/var/lib/postgresql/8.3/main/backups/pgsql-backup" >> backuplist
- バックアップ対象外リスト作成
# echo "/var/www/admin" >> backupnolist
- cronへ登録(mysqlのバックアップ後、サーバーバックアップを行う様に編集。)
# crontab -e
0 5 * * * /root/mysql-backup.sh; /root/backup.sh
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – OpenVPNをインストール
- OpenVPNをインストール
# aptitude install openvpn openssl
- もし /dev/net/tun が存在しなかったら以下を行って作成する↓
# mkdir /dev/net # mknod /dev/net/tun c 10 200
- IPフォワード設定
# vi /etc/sysctl.conf
#net.ipv4.ip_forward=1 ↓ net.ipv4.ip_forward=1
# sysctl -p /etc/sysctl.conf
1が表示されるかの確認
# cat /proc/sys/net/ipv4/ip_forward
- OpenVPN設定(サーバー)
- CA証明書・秘密鍵作成
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa # cd /etc/openvpn/easy-rsa/ # chmod +x * # vi vars
export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" ↓ export KEY_COUNTRY="JP" export KEY_PROVINCE="Tokyo" export KEY_CITY="Edogawa" export KEY_ORG="saizensen.net" export KEY_EMAIL="root@saizensen.net"
# source vars # ./clean-all # ./build-ca
↑を実行すると色々聞いてくるが全て空ENTERでおk。
# cp keys/ca.crt /etc/openvpn/
- サーバー証明書・秘密鍵作成
# ./build-key-server server
Generating a 1024 bit RSA private key ....................++++++ ............................++++++ writing new private key to 'server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: ← 空ENTER State or Province Name (full name) [Tokyo]: ← 空ENTER Locality Name (eg, city) [Edogawa]: ← 空ENTER Organization Name (eg, company) [saizensen.net]: ← 空ENTER Organizational Unit Name (eg, section) []: ← 空ENTER Common Name (eg, your name or your server's hostname) [server]: ← 空ENTER Email Address [root@saizensen.net]: ← 空ENTER Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 空ENTER An optional company name []: ← 空ENTER Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName : PRINTABLE:'JP' stateOrProvinceName : PRINTABLE:'Tokyo' localityName : PRINTABLE:'Edogawa' organizationName : PRINTABLE:'saizensen.net' commonName : PRINTABLE:'server' emailAddress : IA5STRING:'root@saizensen.net' Certificate is to be certified until Aug 11 09:04:37 2019 GMT (3650 days) Sign the certificate? [y/n]:y ← yキー 1 out of 1 certificate requests certified, commit? [y/n]y ← yキー Write out database with 1 new entries Data Base Updated
# cp keys/server.crt /etc/openvpn/ # cp keys/server.key /etc/openvpn/
- DH(Diffie Hellman)パラメータ作成
# ./build-dh # cp keys/dh1024.pem /etc/openvpn/
- 証明書廃止リスト作成
# ./build-key dmy
enerating a 1024 bit RSA private key ..............................................................++++++ ..++++++ writing new private key to 'dmy.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: ← 空ENTER State or Province Name (full name) [Tokyo]: ← 空ENTER Locality Name (eg, city) [Edogawa]: ← 空ENTER Organization Name (eg, company) [saizensen.net]: ← 空ENTER Organizational Unit Name (eg, section) []: ← 空ENTER Common Name (eg, your name or your server's hostname) [dmy]: ← 空ENTER Email Address [root@saizensen.net]: ← 空ENTER Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 空ENTER An optional company name []: ← 空ENTER Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName : PRINTABLE:'JP' stateOrProvinceName : PRINTABLE:'Tokyo' localityName : PRINTABLE:'Edogawa' organizationName : PRINTABLE:'saizensen.net' commonName : PRINTABLE:'dmy' emailAddress : IA5STRING:'root@saizensen.net' Certificate is to be certified until Aug 11 09:09:41 2019 GMT (3650 days) Sign the certificate? [y/n]:y ← yキー 1 out of 1 certificate requests certified, commit? [y/n]y ← yキー Write out database with 1 new entries Data Base Updated
- openssl.cnfを編集
# vi openssl.cnf
[ pkcs11_section ] ↓ #[ pkcs11_section ] engine_id = pkcs11 ↓ #engine_id = pkcs11 dynamic_path = /usr/lib/engines/engine_pkcs11.so ↓ #dynamic_path = /usr/lib/engines/engine_pkcs11.so MODULE_PATH = $ENV::PKCS11_MODULE_PATH ↓ #MODULE_PATH = $ENV::PKCS11_MODULE_PATH PIN = $ENV::PKCS11_PIN ↓ #PIN = $ENV::PKCS11_PIN init = 0 ↓ #init = 0
- ./revoke-full dmyを実行すると↓みたいに表示されるけど無視して進む。
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Revoking Certificate 02. Data Base Updated Using configuration from /etc/openvpn/easy-rsa/openssl.cnf dmy.crt: /C=JP/ST=Tokyo/L=Edogawa/O=saizensen.net/CN=dmy/emailAddress=root@saizensen.net error 23 at 0 depth lookup:certificate revoked
# ./revoke-full dmy # cp keys/crl.pem /etc/openvpn/ # cd
- OpenVPN設定
# openvpn --genkey --secret /etc/openvpn/ta.key # cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn # gunzip /etc/openvpn/server.conf.gz # vi /etc/openvpn/server.conf
;push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" push "route 192.168.0.0 255.255.255.0" ← 追加(内部ネットワークアドレス) ;tls-auth ta.key 0 # This file is secret ↓ tls-auth ta.key 0 # This file is secret ;user nobody ;group nogroup ↓ user nobody group nogroup ;log-append openvpn.log ↓ log-append /var/log/openvpn.log management localhost 7505 ← ファイル最終行へ追加 crl-verify crl.pem ← ファイル最終行へ追加
- iptables設定(/etc/openvpn/openvpn-startupを作成)
# vi /etc/openvpn/openvpn-startup
#!/bin/bash # VPNインタフェースiptablesルール削除スクリプト実行※必須 /etc/openvpn/openvpn-shutdown # VPNサーバーからの送信を許可※必須 iptables -I OUTPUT -o tun+ -j ACCEPT iptables -I FORWARD -o tun+ -j ACCEPT # VPNクライアントからVPNサーバーへのアクセスを許可する場合 iptables -I INPUT -i tun+ -j ACCEPT # VPNクライアントからLANへのアクセスを許可する場合 # (例としてVPNクライアントから192.168.0.0/24へのアクセスを許可する場合) iptables -I FORWARD -i tun+ -d 192.168.0.0/24 -j ACCEPT # VPNクライアントからLAN内特定マシンのみへのアクセスを許可する場合 # (例としてVPNクライアントから192.168.0.3へのアクセスを許可する場合) #iptables -I FORWARD -i tun+ -d 192.168.0.3 -j ACCEPT
# chmod +x /etc/openvpn/openvpn-startup
- iptables設定(/etc/openvpn/openvpn-shutdownを作成)
# vi /etc/openvpn/openvpn-shutdown
#!/bin/bash # VPNインタフェース(tun+)用iptablesルール削除関数 delete() { rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r` for num in $rule_number do iptables -D $target $num done } # VPNインタフェース(tun+)用iptables受信ルール削除 target='INPUT' delete # VPNインタフェース(tun+)用iptables転送ルール削除 target='FORWARD' delete # VPNインタフェース(tun+)用iptables送信ルール削除 target='OUTPUT' delete# chmod +x /etc/openvpn/openvpn-shutdown
- openvpn起動 && iptablesスクリプト起動
# /etc/init.d/openvpn start # ./iptables.sh
- ルーター側で、宛先がVPN(例:10.8.0.0/24)のアクセスはVPNサーバー(例:192.168.0.2)を経由するようにルートを追加する。
- CA証明書・秘密鍵作成
- OpenVPN設定(クライアント)
- クライアント証明書・秘密鍵作成
# cd /etc/openvpn/easy-rsa/
- 証明書/鍵作成用環境変数設定ファイル内容をシステムに反映
# source vars
- クライアント名saizensen_net-1※のクライアント証明書・秘密鍵作成
※クライアント名は一意であること=既に作成済のクライアント名と重複しないこと# ./build-key-pass saizensen_net-1
Generating a 1024 bit RSA private key .........................................++++++ ..++++++ writing new private key to 'saizensen_net-1.key' Enter PEM pass phrase: ← パスワードを設定する Verifying - Enter PEM pass phrase: ← パスワードを設定する(確認) ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: ← 空ENTER State or Province Name (full name) [Tokyo]: ← 空ENTER Locality Name (eg, city) [Edogawa]: ← 空ENTER Organization Name (eg, company) [saizensen.net]: ← 空ENTER Organizational Unit Name (eg, section) []: ← 空ENTER Common Name (eg, your name or your server's hostname) [saizensen_net-1]: ← 空ENTER Email Address [root@saizensen.net]: ← 空ENTER Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 空ENTER An optional company name []: ← 空ENTER Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName : PRINTABLE:'JP' stateOrProvinceName : PRINTABLE:'Tokyo' localityName : PRINTABLE:'Edogawa' organizationName : PRINTABLE:'saizensen.net' commonName : T61STRING:'seizensen_net-1' emailAddress : IA5STRING:'root@saizensen.net' Certificate is to be certified until Aug 11 09:40:24 2019 GMT (3650 days) Sign the certificate? [y/n]:y ← yキー 1 out of 1 certificate requests certified, commit? [y/n]y ← yキー Write out database with 1 new entries Data Base Updated
- /etc/hosts.allowへVPN仮想IPを追加
# echo "ALL: 10.8.0." >> /etc/hosts.allow
- クライアント証明書・秘密鍵作成
- CA証明書、クライアント証明書・秘密鍵、TLS認証鍵設置
サーバー側からCA証明書(/etc/openvpn/ca.crt)、クライアント証明書(/etc/openvpn/easy-rsa/keys /saizensen_net-1.crt)、クライアント秘密鍵(/etc/openvpn/easy-rsa/keys/saizensen_net-1.key)、TLS認証鍵 (/etc/openvpn/ta.key)をクライアント側へ持ち込み、設定ファイル格納フォルダ(C:\Program Files\OpenVPN\config)へ格納する。 - OpenVPN設定※クライアント側作業
- クライアント設定ファイルサンプル(C:\Program Files\OpenVPN\sample-config\client.ovpn)を設定ファイル格納フォルダ(C:\Program Files\OpenVPN\config)へコピーする。
- クライアント設定ファイル(C:\Program Files\OpenVPN\config\client.ovpn)編集
remote my-server-1 1194 ↓ remote saizensen.net 1194 ← VPNサーバー名を指定 cert client.crt ↓ cert saizensen_net-1.crt ← クライアント証明書ファイル名を指定 key client.key ↓ key saizensen_net-1.key ← クライアント秘密鍵ファイル名を指定 ns-cert-type server ← 行頭の;を削除してコメント解除("Man-in-the-Middle"攻撃対策) tls-auth ta.key 1 ← 行頭の;を削除してコメント解除(TLS認証有効化)
- VPNクライアントの削除をする場合
クライアント証明書廃止# cd /etc/openvpn/easy-rsa/ # source vars # ./revoke-full saizensen_net-1 # /bin/cp keys/crl.pem /etc/openvpn/
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – swatchをインストール
- swatchをインストール
# aptitude install swatch
- swatch自動起動スクリプト作成
# mkdir /var/log/swatch # vi /etc/init.d/swatch
#!/bin/sh PATH="/sbin:/bin:/usr/sbin:/usr/bin" NAME="swatch" DAEMON="/usr/bin/swatch" DESC="simple watcher" CONFFILE="/etc/swatch.conf" #LOGFILE="/var/log/secure" LOGFILE="/var/log/auth.log" PIDFILE="/var/run/swatch.pid" SCRIPTDIR="/var/log/swatch" OPTS="--config-file $CONFFILE --tail-file $LOGFILE --pid-file=$PIDFILE \ --script-dir=$SCRIPTDIR --awk-field-syntax --daemon" test -x $DAEMON || exit 0 start() { if [ ! -f "$CONFFILE" ]; then echo "Error: $CONFFILE does not exist." exit 1 fi if [ ! -f "$LOGFILE" ]; then echo "Error: $LOGFILE does not exist." exit 1 fi if [ -f "$PIDFILE" ] then echo "Error: $NAME is already running." else $DAEMON $OPTS fi } stop() { if [ -f "$PIDFILE" ] then PID=`cat $PIDFILE` if ps h $PID > /dev/null then pkill -P $PID else echo "Error: $NAME is not running, but PID file exists. Deleting it." fi rm -f $PIDFILE else echo "Error: $NAME is not running." fi } case "$1" in start) echo "Starting $DESC: $NAME" start ;; stop) echo "Stopping $DESC: $NAME" stop ;; restart) echo "Restarting $DESC: $NAME" stop sleep 1 start ;; *) echo "Usage: $0 start|stop|restart" exit 1 ;; esac exit 0# chmod a+x /etc/init.d/swatch # update-rc.d swatch defaults 99
- swatchアクションスクリプト作成
# vi /usr/local/bin/swatch_action.sh
#!/bin/bash PATH=/bin:/sbin:/usr/bin LANG=C # 規制IPアドレス情報メール通知先設定 # ※メール通知しない場合は下記をコメントアウト mail=root # ログを標準入力から取得 read LOG # ログからIPアドレスを抽出 IPADDR=`echo $LOG|cut -d " " -f $1` echo "$IPADDR"|grep "^[0-9]*\." > /dev/null 2>&1 if [ $? -eq 0 ]; then # IPアドレスから始まる場合 IPADDR=`echo "$IPADDR"|sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*/\1/p' -e d` else # IPアドレス以外から始まる場合 IPADDR=`echo "$IPADDR"|sed -e 's/.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*/\1/p' -e d` fi # IPアドレスをピリオドで分割 addr1=`echo $IPADDR|cut -d . -f 1` addr2=`echo $IPADDR|cut -d . -f 2` addr3=`echo $IPADDR|cut -d . -f 3` addr4=`echo $IPADDR|cut -d . -f 4` # IPアドレスがプライベートIPアドレスの場合は終了 if [ "$IPADDR" = "127.0.0.1" ]; then exit elif [ $addr1 -eq 10 ]; then exit elif [ $addr1 -eq 172 ] && [ $addr2 -ge 16 ] && [ $addr2 -le 31 ]; then exit elif [ $addr1 -eq 192 ] && [ $addr2 -eq 168 ]; then exit fi # 不正アクセスログメッセージをIPアドレス別ログファイルに記録 echo $LOG >> /var/log/swatch/$IPADDR # IPアドレス別ログファイルから累積不正アクセス数取得 cnt=`cat /var/log/swatch/$IPADDR | wc -l` # 該当IPアドレスからの累積不正アクセス数が3以上の場合または # 引数でlockと指定された場合アクセス規制 if [ $cnt -ge 3 ] || [ $# -eq 2 -a "$2" = "lock" ]; then # 該当IPアドレスからのアクセスを拒否するルールを挿入 iptables -I INPUT -s $IPADDR -j DROP # 上記ルールを24時間後に削除するスケジュールを登録 echo "iptables -D INPUT -s $IPADDR -j DROP > /dev/null 2>&1" | \ at now+24hour > /dev/null 2>&1 # アクセス規制IPアドレス情報をメール通知 [ "$mail" != "" ] && (cat /var/log/swatch/$IPADDR ; \ echo ; whois $IPADDR) | \ mail -s "$IPADDR $cnt lock!" $mail echo "`date` $IPADDR $cnt lock!" else echo "`date` $IPADDR $cnt" fichmod 700 /usr/local/bin/swatch_action.sh
- swatch設定
# vi /etc/cron.daily/logrotate
/etc/init.d/swatch restart > /dev/null ← ファイル最下部へ追加
# vi /etc/swatch.conf
# BINDのバージョン照会を検知したら該当ホストからのアクセスを24時間規制 # ※DNSサーバー(BIND)構築済であること watchfor /query \'VERSION\.BIND\/TXT\/CH\' denied/ pipe "/usr/local/bin/swatch_action.sh 7 lock" throttle=00:00:10 # アクセス無許可ホストからのDNS使用を検知したら該当ホストからのアクセスを24時間規制 # ※DNSサーバー(BIND)構築済であること watchfor /named.*client.*query.*denied/ pipe "/usr/local/bin/swatch_action.sh 7 lock" # アクセス無許可ホストからのSSHログイン失敗を検知したら該当ホストからのアクセスを24時間規制 # ※/etc/hosts.deny、/etc/hosts.allowでアクセス許可ホストを制限していることが前提 watchfor /sshd.*refused/ pipe "/usr/local/bin/swatch_action.sh 10 lock" throttle=00:00:10 # アクセス許可ホストからのSSHログイン失敗を3回以上検知したら該当ホストからのアクセスを24時間規制 watchfor /sshd.*Invalid user/ pipe "/usr/local/bin/swatch_action.sh 10" throttle=00:00:10 - swatch起動
# /etc/init.d/swatch start
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – snortをインストール
- snortインストール
snortインストール時、内部ネットワーク設定を聞いてくるので各自設定する。(例:192.168.0.0/24)
Set up a database for snort-mysql to log to? と聞いてくるので「はい」と答える。# aptitude install snort snort-mysql # aptitude install libio-zlib-perl libwww-perl libarchive-tar-perl
- /etc/snort/snort.confを編集
snortのmysql設定は/usr/share/doc/snort-mysql/README-database.Debianを読むこと。# vi /etc/snort/snort.conf
var HOME_NET any ↓ var HOME_NET DEBIAN_SNORT_HOME_NET var EXTERNAL_NET any ↓ #var EXTERNAL_NET any #var EXTERNAL_NET !$HOME_NET ↓ var EXTERNAL_NET !$HOME_NET output database: log, mysql ↓ output database: log, mysql, user=snort password='snort-db' dbname=snort host=localhost
- snort-mysqlを設定。
# dpkg-reconfigure snort-mysql
- snort用にMySQLへDBを作成する。
# mysql -u root -p mysql> CREATE DATABASE snort; mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost; mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort; mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db'); mysql> flush privileges; mysql> show grants for 'snort'@'localhost'; mysql> exit # cd /usr/share/doc/snort-mysql/ # zcat create_mysql.gz | mysql -u snort -D snort -p snort-db - /etc/snort/db-pending-configを削除する。(snortを起動しようとすると削除しろとおっしゃるので。)
# rm /etc/snort/db-pending-config
- snort起動
# /etc/init.d/snort start
- BASEをインストール
# cd /usr/local/src
最新版をここから探す。http://sourceforge.net/project/showfiles.php?group_id=103348&package_id=128846
# wget http://jaist.dl.sourceforge.net/sourceforge/secureideas/base-1.4.3.1.tar.gz # tar zxvf base-1.4.3.1.tar.gz # mv base-1.4.3.1 /var/www/admin/base
最新版をここから探す。http://sourceforge.net/project/showfiles.php?group_id=42718&package_id=220409
# wget http://jaist.dl.sourceforge.net/sourceforge/adodb/adodb509a.tgz # tar zxvf adodb509a.tgz # mv adodb5 /var/www/admin/base/adodb # chown -R www-data:www-data /var/www/admin/base/ # cd
- BASE設定
# cp /var/www/admin/base/base_conf.php.dist /var/www/admin/base/base_conf.php # vi /var/www/admin/base/base_conf.php
$BASE_Language = 'english'; ↓ $BASE_Language = 'japanese'; $BASE_urlpath = ''; ↓ $BASE_urlpath = '/base'; $DBlib_path = ''; ↓ $DBlib_path = '/var/www/admin/base/adodb'; $alert_dbname = 'snort_log`'; ↓ $alert_dbname = 'snort'; $alert_password = 'mypassword'; ↓ $alert_password = 'snort-db';
- phpのpearをupdate、必要なpearパッケージをインストール。
# pear channel-update pear.php.net # pear install --alldeps Image_Graph-alpha # pear install Mail Mail_Mime
- ブラウザで「http://admin.サーバー名/base」へアクセスする。
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – Sambaをインストール
- Sambaをインストール
インストール時、windowsのグループ名が聞いてくるが通常はデフォルトのまま(WORKGROUP)、DHCPからWINSを使うか?と聞いてくるが「いいえ」を選択。# aptitude install samba
- Sambaサーバーアクセス用ユーザ作成
既存のユーザー以外に新規ユーザを作成する場合はまずユーザーを作成する。# useradd hoge # passwd hoge
- Sambaサーバーアクセス用ユーザへ設定する。
# smbpasswd -a hoge
- ホームディレクトリ作成
新規ユーザー対処# mkdir /etc/skel/samba
既存ユーザー対処
# vi mkhomedir.sh
#!/bin/bash for user in `ls /home` do id $user > /dev/null 2>&1 [ $? -eq 0 ] && \ [ ! -d /home/$user/samba ] && \ mkdir /home/$user/samba && \ chown $user:$user /home/$user/samba && \ echo "/home/$user/samba create" done# sh mkhomedir.sh # rm -f mkhomedir.sh
- 共有ディレクトリ作成
# mkdir /var/samba # mkdir /var/samba/public # mkdir /var/samba/share # chown -R nobody:nogroup /var/samba
- /etc/samba/smb.confを編集
# vi /etc/samba/smb.conf
## [global]セクション編集 [global] unix charset = UTF-8 ← 追加 dos charset = CP932 ← 追加 display charset = UTF-8 ← 追加 hosts allow = 192.168.0. 127. 10.8.0. ← 追加 ## [homes]セクション編集 path = %H/samba ← 追加 read only = yes ↓ read only = no ## ファイル最下部へ追加↓ [public] comment = Read only Directories path = /var/samba/public public = yes guest ok = yes [share] comment = All User shared Directories path = /var/samba/share public = yes read only = no #writable = yes only guest = yes printable = no
- samba再起動
# /etc/init.d/samba restart
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – xcacheをインストール
- xcacheをインストール
# aptitude install php5-xcache
- xcacheを設定
- シンボリックリンクを作成
# ln -s /usr/share/xcache /var/www/admin/
- コマンドラインからxcache.admin.passの値を求めてメモしておく。(******は各自適当に)
# echo -n '******' | md5sum
- コマンドラインからxcache.countの値を求めてメモしておく。
# cat /proc/cpuinfo |grep -c processor
- /etc/php5/conf.d/xcache.iniを編集(hogeは適当な一般ユーザーへ)
# vi /etc/php5/conf.d/xcache.ini
[xcache.admin] xcache.admin.user = "md0" ↓ xcache.admin.user = "hoge" xcache.admin.pass = "" ↓ xcache.admin.pass = "メモした値" [xcache] xcache.size = 16M ↓ xcache.size = 64M xcache.count = 1 ↓ xcache.count = メモした値 xcache.var_size = 0M ↓ xcache.var_size = 8M xcache.var_ttl = 0 ↓ xcache.var_ttl = 600 xcache.var_maxttl = 0 ↓ xcache.var_maxttl = 3600 xcache.mmap_path = "/dev/zero" ↓ xcache.mmap_path = "/tmp/xcache" [xcache.coverager] xcache.coverager = Off ↓ xcache.coverager = On xcache.coveragedump_directory = "" ↓ xcache.coveragedump_directory = "/tmp/pcov"
- /tmp/pcovを作成
# mkdir /tmp/pcov # chown www-data.www-data /tmp/pcov
- シンボリックリンクを作成
- apache再起動
# /etc/init.d/apache2 restart
- ブラウザで「http://admin.サーバー名/xcache/admin」へアクセスする。
- ブラウザで「http://admin.サーバー名/xcache/coverager」へアクセスする。
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – PostGISをインストール
- PostGISをインストール
# aptitude install postgresql-8.3-postgis
- PostGIS用に初期化済テンプレートDBを構築する。
# su - postgres $ createdb templategis $ createlang plpgsql templategis $ psql -d templategis -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql $ psql -d templategis -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – PHP、MySQL、PostgreSQLをインストール
- PHP、MySQL、PostgreSQLをインストール。(mysqlインストール時に、案内に従ってパスワードを設定する。)
# aptitude install php5 php5-dev php5-cgi php5-cli php-pear php5-curl php5-gd php5-imagick php5-json php5-mcrypt php5-mysql php5-pgsql php5-sqlite php5-geoip phpmyadmin phppgadmin mysql-server mysql-client postgresql libapache2-mod-php5
- /etc/cron.d/php5を編集。
phpをインストールすると、30分ごとにセッション破棄を行うcronが動作するようになるので1日1回(毎朝6時)だけ動くように変更する。# vi /etc/cron.d/php5
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm ↓ 0 6 * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 20 0 -r -0 rm
- MySQL設定。
- /etc/mysql/my.cnfを編集
# vi /etc/mysql/my.cnf
##[mysqld]の項目へ追加 character-set-server = utf8 collation-server = utf8_unicode_ci init-connect = 'SET NAMES utf8' skip-character-set-client-handshake ##[mysqldump]の項目へ追加 default-character-set = utf8 ##[mysql]の項目へ追加 default-character-set = utf8
- MySQL再起動
# /etc/init.d/mysql restart
- mysqlへ接続出来るか確認。(インストール時にパスワード設定するとパスワード無しでのログインは出来ない。)
# mysql -u root -p
- 登録済みユーザーとパスワードを確認。(パスワード無しユーザーが居ないか確認。)
mysql> select user,host,password from mysql.user;
- ※もしパスワード無しユーザーが居た場合は以下で設定。
mysql> set password for ユーザー名@ホスト名=password('パスワード'); mysql> exit
- /etc/mysql/my.cnfを編集
- MySQLバックアップ設定
- MySQLバックアップスクリプト作成
# vi mysql-backup.sh
#!/bin/bash PATH=/usr/local/sbin:/usr/bin:/bin # バックアップ先ディレクトリ BACKDIR=/backup/mysql # MySQLrootパスワード ROOTPASS=****** # バックアップ先ディレクトリ再作成 rm -rf $BACKDIR mkdir -p $BACKDIR # データベース名取得 DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /` # データベースごとにバックアップ for dbname in $DBLIST do table_count=`mysql -u root -p$ROOTPASS -B -e "show tables" $dbname|wc -l` [ $table_count -ne 0 ] && mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy done - バックアップ先作成
# mkdir /backup # mkdir /backup/mysql
- mysql-backup.shへ実行権を付与。
# chmod 700 mysql-backup.sh
- バックアップスクリプト実行
# ./mysql-backup.sh
- バックアップ確認。
# ls -la /backup/mysql
- cronへ登録
# crontab -e
0 5 * * * /root/mysql-backup.sh
- MySQLバックアップスクリプト作成
- phpmyadmin設定
- シンボリックリンクを作成。
# ln -s /usr/share/phpmyadmin /var/www/admin/
- ブラウザで「http://admin.サーバー名/phpmyadmin」へアクセスする。
- シンボリックリンクを作成。
- PostgreSQL設定
- postgresユーザーのパスワードを設定。
# passwd postgres # su postgres $ psql template1 template1=# alter user postgres with password '******'; ← ******は適当なパスワードを設定。 template1=# \q
- 一般ユーザへのデータベース作成権限設定。(hogeは適当な一般ユーザーへ)
$ createuser -AdPE hoge
- /etc/postgresql/8.3/main/postgresql.confを編集
$ vi /etc/postgresql/8.3/main/postgresql.conf
listen_addresses = 'localhost' ↓ listen_addresses = '*'
- /etc/postgresql/8.3/main/pg_hba.confを編集。(↓こんな感じで。192.168.0.1は各自ネットワーク環境へ。)
$ vi /etc/postgresql/8.3/main/pg_hba.conf
# Database administrative login by UNIX sockets #local all postgres ident sameuser # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only #local all all ident sameuser # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 local all all trust host all all 192.168.0.1 255.255.255.255 trust host all all 0.0.0.0 0.0.0.0 password crypt
- PostgreSQL再起動
$ exit # /etc/init.d/postgresql-8.3 restart
- PostgreSQLのチューニングは[PostgreSQL]PostgreSQLチューニング方法まとめサイト[Ubuntu]を参照して各自で勝手にやってね。
- postgresユーザーのパスワードを設定。
- PostgreSQLバックアップ設定
# su - postgres $ mkdir /var/lib/postgresql/8.3/main/backups/ $ pg_dumpall -c > /var/lib/postgresql/8.3/main/backups/pgsql-backup $ crontab -e
30 3 * * * pg_dumpall -c > /var/lib/postgresql/8.3/main/backups/pgsql-backup
$ exit
- phppgadmin設定
- シンボリックリンクを作成
# ln -s /usr/share/phppgadmin /var/www/admin/
- /etc/phppgadmin/config.inc.phpを編集
# vi /etc/phppgadmin/config.inc.php
$conf['extra_login_security'] = true; ↓ $conf['extra_login_security'] = false; $conf['owned_only'] = false; ↓ $conf['owned_only'] = true;
- /etc/phppgadmin/apache.confを編集
# vi /etc/phppgadmin/apache.conf
allow from 127.0.0.0/255.0.0.0 ::1/128 ↓ #allow from 127.0.0.0/255.0.0.0 ::1/128 #allow from all ↓ allow from all
- apache再起動
# /etc/init.d/apache2 restart
- ブラウザで「http://admin.サーバー名/phppgadmin」へアクセスする。
- シンボリックリンクを作成
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – Postfix+Clam AntiVirus+SpamAssassinでウィルス&スパムチェック
Postfix+Clam AntiVirus+SpamAssassinでウィルス&スパムチェック
- amavisとspamassassinをインストール
# aptitude install amavisd-new spamassassin
- spamassassinをデーモンとして動かす。
# vi /etc/default/spamassassin
ENABLED=0 ↓ ENABLED=1
- postfix設定
# vi /etc/postfix/main.cf
# amavis setting content_filter = smtp-amavis:[127.0.0.1]:10024 ← 追加
# vi /etc/postfix/master.cf
# 以下をファイル最下部へ追加↓↓ # # amavisd-new + clamav. # smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
- amavis設定
# vi /etc/amavis/conf.d/15-content_filter_mode
#@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); ↓ @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); #@bypass_spam_checks_maps = ( # \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); ↓ @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
# vi /etc/amavis/conf.d/20-debian_defaults
$sa_spam_subject_tag1 = '***possible SPAM*** '; ← 追加 $sa_tag_level_deflt = 2.0; ↓ $sa_tag_level_deflt = 4.0; $sa_tag2_level_deflt = 6.31; ↓ $sa_tag2_level_deflt = 20.0; $sa_kill_level_deflt = 6.31; ↓ $sa_kill_level_deflt = 20.0; $sa_dsn_cutoff_level = 10; ↓ $sa_dsn_cutoff_level = 30.0; $sa_local_tests_only = 0; ↓ #$sa_local_tests_only = 0;
# vi /etc/amavis/conf.d/50-user
use strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $log_level = 2; $X_HEADER_TAG = 'X-Virus-Scanned'; $remove_existing_x_scanned_headers = 0; $remove_existing_spam_headers = 1; $replace_existing_extension = 1; $sa_local_tests_only = 1; # (default: false) $sa_auto_whitelist = 1; # turn on AWL (default: false) $sa_debug = 1; $max_servers = 4; # number of pre-forked children (default 2) $max_requests = 16; # retire a child after that many accepts (default 10) #------------ Do not modify anything below this line ------------- 1; # ensure a defined return
- spamassassin設定
# mkdir /var/lib/amavis/.spamassassin # cd /var/lib/amavis/.spamassassin # wget -O user_prefs_tlec http://tlec.linux.or.jp/docs/user_prefs
/var/lib/amavis/.spamassassin/user_prefsを作成。
# vi /var/lib/amavis/.spamassassin/user_prefs
include user_prefs_tlec required_score 15.0 use_auto_whitelist 0 score GB2312_CHARSET 1.0 score BIG5_CHARSET 1.0 score WINDOWS_CHARSET 1.0 score GB2312ENC 0 score MIMEQENC 0 score QENCPTR1 0 score QENCPTR2 0 score X_MAILER 1.0
-
# cd /var/lib/amavis # chown -R amavis.amavis .spamassassin # /etc/init.d/amavis restart # /etc/init.d/spamassassin restart # /etc/init.d/postfix restart # vi /etc/group
clamav:x:108:amavis amavis:x:114:clamav
※ ↓のエラーが/var/log/mail.logに出てたので↑の/etc/groupを弄る。(108や114っていうIDは触らないよ。)
Aug 7 18:05:37 debian amavis[10436]: (10436-01) (!!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20090807T180537-10436/parts: lstat() failed: Permission denied. ERROR\n" Aug 7 18:05:37 debian amavis[10436]: (10436-01) (!!)ClamAV-clamd av-scanner FAILED: CODE(0xa252768) unexpected , output="/var/lib/amavis/tmp/amavis-20090807T180537-10436/parts: lstat() failed: Permission denied. ERROR\n" at (eval 86) line 527. Aug 7 18:05:37 debian amavis[10436]: (10436-01) (!!)WARN: all primary virus scanners failed, considering backups
# /etc/init.d/clamav-daemon restart
- Comments: 0
- Trackbacks: 0
[Debian]Debian lennyで1からサーバーを作ってみる – postfixへバーチャルホストを設定する
- postfixへバーチャルホストを設定する(例:virtualhost.netというドメインの場合)
# vi /etc/postfix/main.cf
#配送を追加したいドメイン名を指定します。 virtual_alias_domains = virtualhost.net ← 追加 #バーチャルドメイン用のエイリアステーブルを指定します。 virtual_alias_maps = hash:/etc/postfix/virtual ← 追加
# vi /etc/postfix/virtual
# set saizensen.net hoge@saizensen.net hoge # set virtualhost.net virtualhost.net anything hogehoge@virtualhost.net hogehoge # こんな風にしてもいい。(hogehoge@virtualhost.netのメールはhogeへ配送) hogehoge@virtualhost.net hoge
# postmap /etc/postfix/virtual # /etc/init.d/postfix restart
- Comments: 0
- Trackbacks: 0
Home > Tags > インストールメモ
- Search
- Feeds
- Meta