python --version
Python 2.7.18
brew install pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
pyenv --version
pyenv install --list
pyenv install 3.12.7
pyenv versions
pyenv global 3.12.7
pyenv local 3.12.7
python --version
// Python 3.12.7 が返ってくる
fabricのインストール
pip install fabric
sudo dnf info redis
sudo dnf install -y redis
sudo systemctl start redis
sudo systemctl enable redis
systemctl status redis
まず、Goがインストールされていることを確認してください。インストールされていない場合は、CentOSの公式リポジトリまたはGoの公式サイトからインストールしてください。
MySQLのドライバーをコンパイルするために必要なパッケージをインストールします。
sudo yum install gcc
MySQLタグを指定してgolang-migrateをインストールします。
go install -tags 'mysql' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
インストールしたmigrateコマンドにパスを通します。
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
migrate --version
コンソール → サーバー → マシン名クリック → シャットダウン
コンソール → サーバー → マシン名クリック → イメージ保存
バックアップに名前をつけて保存します
dnf update -y
が以下のエラーで失敗する場合の対応
CentOS Stream 8 - AppStream
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
以上です!
http {
upstream api {
server 192.168.10.1;
server 192.168.10.2;
server 192.168.10.3;
}
}
リクエストを順番に各サーバーに分配します。
upstream myapp {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
最少接続数は現在処理中の接続が最も少ないサーバーにリクエストを割り当てる方法です。
upstream myapp {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
IPハッシュ方式は、クライアントのIPアドレスのハッシュ値を使用してリクエストを特定のサーバーに割り当てます。
これにより、同じクライアントからのリクエストが同じサーバーに継続して送られるため、
セッションの持続性が必要なアプリケーションに適しています。
upstream myapp {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
sestatus
vi /etc/selinux/config
SELINUX=permissive
↓
SELINUX=disabled
reboot
hostnamectl | grep hostname
hostnamectl set-hostname 書き換えたいホスト名
dnf update -y
dnf install -y httpd
systemctl start httpd
systemctl enable httpd
systemctl status httpd
なお 設定ファイルは /etc/httpd/conf/httpd.conf にあります。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
firewall-cmd --list-all
dnf module list php
dnf -y install epel-release
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf clean all && dnf -y makecache
dnf -y module reset php && dnf -y module enable php:remi-8.2
dnf -y install php php-cli php-fpm php-devel php-pear php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process
vi /var/www/html/p.php
<?php
phpinfo();
?>
http://192.168.1.28/p.php などにアクセスして正しく表示されることを確認します。
dnf -y install mysql-server mysql
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
ifconfig をインストールする
dnf install net-tools
ifconfig
SSH接続する
ssh root@<IPアドレス>
以下のようなリダイレクトをする場合の設定です
/webp/hoge.webp
↓
/img/hoge.png
.htaccess
<ifModule mod_rewrite.c>
RewriteEngine On
# webp未対応ブラウザのみ
RewriteCond %{HTTP_ACCEPT} !webp
# webp を png に変換
RewriteRule webp\/(.+).webp$ /img/$1.png [R,L]
</ifModule>
鍵はローカルマシン(Mac)のみに保持するようにして、サーバ上に秘密鍵を保存しないようにします
exec ssh-agent $SHELL
ssh-agent プロセスの確認
ps aux | grep ssh-agent
秘密鍵ファイルの登録
ssh-add 秘密鍵のパス
登録されている鍵ファイルの一覧を表示して確認
ssh-add -l
秘密鍵ファイルの削除
ssh-add -d 削除したい秘密鍵のパス
ssh -A コマンドで接続
または
~/.ssh/configの接続するサーバ設定に以下を追加
ForwardAgent yes
これでローカルのマシンで ssh-add した秘密鍵が接続したサーバーでも使用することができます。
ssh やSFTPをパスワードなしで接続するには次のようにします。
鍵ファイル名を指定して「公開鍵」「非公開鍵」2つの鍵ファイルを作成します。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa__mysite
(何か入力を促されますが、そのままenterを2回押します)
これで
公開鍵「id_rsa__mysite.pub」 と
非公開鍵「id_rsa__mysite」
が生成されます。
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519__mysite
で生成します。生成ファイル名(「id_rsa__mysite」→「id_ed25519__mysite」)に変えているので、以下の文章のファイル名のところは読み替えてください。
接続元マシンで以下のように入力します
ssh-keygen -l -f ~/.ssh/id_rsa__mysite
# または次のコマンドでもok
ssh-keygen -l -f ~/.ssh/id_rsa__mysite.pub
表示される先頭の数字がバイト数です。2048以上になっていることを確認します。
cat ~/.ssh/id_rsa__mysite.pub
(画面上にキーを表示してクリップボードにコピーする)
ssh-copy-id -i ~/.ssh/id_rsa__mysite.pub [リモートユーザー]@[リモートサーバーのホスト名]
cd
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
vi authorized_keys
(ここでviから先ほどクリップボードにコピーした鍵をペーストする。)
viの保存コマンド esc → :wq → Enter で保存する。
なお、サーバによってはファイル名「authorized_keys2」というファイルが存在することがあります。(古いサーバです。)
気にせず「authorized_keys」に追記 します。
どちらのファイルもない場合は「authorized_keys」でOKです。
ssh -i ~/.ssh/id_rsa__mysite user@xxx.yyy.zzz
なお、SSH接続の不具合を調査するときはこのように -v をつけて実行します
ssh -v -i ~/.ssh/id_rsa__mysite user@xxx.yyy.zzz
/wp-admin を除外する
#除外設定
RewriteCond %{REQUEST_URI} !(^/wp-admin/)
https://ssltools.digicert.com/checker/views/checkInstallation.jsp
このようなメールが返されてきた場合はスパムサーバと判定されてしまっています。
<aaa@bbb.com>: host smtp1.epressd.jp[123.123.123.123] said: 554 5.7.1
Service unavailable; Client host [123.123.123.123] blocked using
b.barracudacentral.org;
http://www.barracudanetworks.com/reputation/?pr=1&ip=123.123.123.123 (inreply to RCPT TO command)
https://www.barracudacentral.org/lookups
こちらにお使いのサーバーの IP アドレスを入力します。
スパム判定されている場合は解除のリクエストを出すことができますのでそのままリクエスト解除フォームから送信します。
設定ファイルを
client_max_body_size 999M;
のように、クライアントの送信可能サイズを引き上げます。
(root ユーザで以下の手順を行います)
http://www.pdflib.jp/product/download/pdflib/
php -r "echo phpinfo();" | grep "php.ini"
vi /etc/php7.d/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/php_pdflib.so
を追加する。
reboot
php -m
以上です。
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y update
yum --enablerepo=remi search pdflib
結果
php54-php-pecl-pdflib.x86_64 : Package for generating PDF files
php55-php-pecl-pdflib.x86_64 : Package for generating PDF files
php56-php-pecl-pdflib.x86_64 : Package for generating PDF files
php70-php-pecl-pdflib.x86_64 : Package for generating PDF files
php71-php-pecl-pdflib.x86_64 : Package for generating PDF files
php72-php-pecl-pdflib.x86_64 : Package for generating PDF files
php73-php-pecl-pdflib.x86_64 : Package for generating PDF files
php74-php-pecl-pdflib.x86_64 : Package for generating PDF files
PHP バージョン7.3用の PDFlib をインストールします
yum --enablerepo=remi -y install php73-php-pecl-pdflib
php -r "echo phpinfo();" | grep "php.ini"
vi /etc/php7.d/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/pdf.so
を追加する。
KUSANAGIをリスタートさせる
kusanagi restart
PHP のモジュールを確認する
php -m
nbtstat -A 192.168.100.193
smbutil -v status -ae 192.168.100.193
smbutil lookup km-arics-sv
linuxマシンでssh(コマンドライン)から wifi 設定を変更する
iwconfig
結果例
wlan0 IEEE 802.11 ESSID:"HOGEHOGE-LAN-1"
Mode:Managed Frequency:2.412 GHz Access Point: 34:76:C5:50:69:96
Bit Rate=54 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=69/70 Signal level=-41 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:5 Invalid misc:0 Missed beacon:0
eth0 no wireless extensions.
lo no wireless extensions.
ネットワーク名 wlan0 が有効である事がわかります。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="1つ目のSSID"
scan_ssid=1
psk="1つ目のSSIDのパスワード"
key_mgmt=WPA-PSK
}
network={
ssid="2つ目のSSID"
psk="2つ目のSSIDのパスワード"
key_mgmt=WPA-PSK
disabled=1
}
network={
ssid="3つ目のSSID"
key_mgmt=NONE
wep_key0="3つ目のSSIDのパスワード"
disabled=1
}
route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default 192.168.100.1 0.0.0.0 UG 303 0 0 wlan0
192.168.100.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
sudo wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
Macに接続しているイーサネットケーブルのポートまたは wi-fi ポートなど調査の対象となるネットワークデバイスの一覧を表示します
networksetup -listallnetworkservices
結果例
An asterisk (*) denotes that a network service is disabled.
USB 10/100/1000 LAN
Wi-Fi
Bluetooth PAN
Thunderbolt Bridge
例えば Wi-Fi の情報を調べてみます
networksetup -getinfo "Wi-Fi"
結果例
DHCP Configuration
IP address: 192.168.2.114
Subnet mask: 255.255.255.0
Router: 192.168.2.1
Client ID:
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: 8c:85:90:90:27:14
調べ方その1
scutil --dns
帰ってくる結果リストの一番下にこのように記述されているはずです
DNS configuration (for scoped queries)
resolver #1
nameserver[0] : 192.168.3.1
if_index : 6 (en0)
flags : Scoped, Request A records
reach : 0x00020002 (Reachable,Directly Reachable Address)
調べ方その2
networksetup -getdnsservers "Wi-Fi"
sudo killall -HUP mDNSResponder
.htaccess に保存してサイトのトップに置きます。
<ifModule mod_rewrite.c>
RewriteEngine On
# http でのアクセス
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# https でのアクセス
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com$
RewriteRule ^(.*)$ https://hogehoge.com/$1 [R=301,L]
</ifModule>
上の書き方でリダイレクト連続する場合は次のようにも書きます。
# http でのアクセス
RewriteCond %{ENV:HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
unzip NotoSansCJKjp-hinted.zip
rm -f NotoSansCJKjp-hinted.zip
sudo mkdir /usr/share/fonts/NotoSansCJKjp
sudo mv NotoSans* /usr/share/fonts/NotoSansCJKjp/
wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip
unzip NotoSerifCJKjp-hinted.zip
rm -f NotoSerifCJKjp-hinted.zip
sudo mkdir /usr/share/fonts/NotoSerifCJKjp
sudo mv NotoSerif* /usr/share/fonts/NotoSerifCJKjp/
wget https://osdn.jp/downloads/users/8/8642/genjyuugothic-20150607.zip
unzip genjyuugothic-20150607.zip
rm -f genjyuugothic-20150607.zip
sudo mkdir /usr/share/fonts/GenJyuuGothic
sudo mv GenJyuuGothic* /usr/share/fonts/GenJyuuGothic/
fc-list -v
で一覧を表示して、 "Noto Serif CJK JP" の項目を見てみます。
Pattern has 24 elts (size 32)
family: "Noto Serif CJK JP"(s)
familylang: "en"(s)
style: "Regular"(s)
stylelang: "en"(s)
fullname: "Noto Serif CJK JP"(s)
fullnamelang: "en"(s)
slant: 0(i)(s)
weight: 80(f)(s)
width: 100(f)(s)
foundry: "GOOG"(s)
file: "/usr/share/fonts/NotoSerifCJKjp/NotoSerifCJKjp-Regular.otf"(s)
index: 0(i)(s)
outline: True(s)
scalable: True(s)
charset:
.... 続く .....
とあるので family に指定されている "Noto Serif CJK JP" を CSS で指定すれば使用できます。
body {
font-family: "Noto Serif CJK JP";
font-weight: bold;
}
body {
font-family: "Gen Jyuu Gothic P";
sudo vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
sudo yum install -y google-chrome-stable
sudo yum install -y ipa-gothic-fonts
sudo yum install -y ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
google-chrome --version
Google Chrome 79.0.3945.130
OKです!
mkdir test_pngout
cd test_pngout
wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-linux.tar.gz
tar zxvf pngout-20150319-linux.tar.gz
cp ./pngout-20150319-linux/x86_64/pngout /usr/local/bin/
mkdir test_pngout
cd test_pngout
wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-bsd.tar.gz
tar zxvf pngout-20150319-bsd.tar.gz
cp ./pngout-20150319-linux/x86_64/pngout /usr/local/bin/
pngout -v
pngout before.png after.png
time pngout before.png after.png
結果例 967KB の png ファイルを小さくしてみます。
In: 967067 bytes before.png /c6 /f5
Out: 352325 bytes after.png /c3 /f0 /d8, 255 colors
Chg: -614742 bytes ( 36% of original)
real 3m21.419s
user 3m21.218s
sys 0m0.189s
3分21秒と結構かかります。 ただ圧縮率は 36% ととても小さくなりました。
.ssh/config
ホスト設定のところに ServerAliveInterval を記述します
Host remotehost:
HostName remotehost.com
ServerAliveInterval 240
これはデフォルトで StrictModes が有効なため起こります。
StrictModes
sshd がファイルモードとユーザーのファイルとホームディレクトリの所有権をチェックするかどうかを指定します
・ファイル「authorized_keys」が、オーナー以外に書き込み権限がある場合、公開鍵認証は拒否される。
・ホームディレクトリが、オーナー以外に書き込み権限がある場合、公開鍵認証は拒否される。(例 777 はエラーになる。)(755は ok ! )
vi /etc/ssh/sshd_config
strictmodes no
シンボリックリンクを
https://my-site.tld/css/ で 表示させる css ディレクトリをシンボリックリンクを貼って表示させる場合に Forbidden エラーとなる場合があります。
nginx の conf ファイルに以下のように記述します。
例:
# ===== symbolic link setting =====
location /css/ {
root /var/www/vhosts/my-site.tld/httpdocs/;
}
# ===== symbolic link setting =====
なお、Amazon AWS の EC2 を使っている場合は セキュリティグループ を使用しましょう
Centos7 からは firewalld を使用します。
( /etc/hosts.deny , /etc/hosts.allow は使用しません )
firewall-cmd --list-all
(例)
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 22000/tcp 587/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
例: sshポート(22番)を削除します。
firewall-cmd --permanent --remove-service=ssh
例: 22000番を削除します。
firewall-cmd --remove-port=22000/tcp --permanent
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="接続を許可するIPアドレス" port protocol="tcp" port="22" accept"
設定例
IP : 123.123.123.123
ポート : 22000
を許可します。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="22000" accept"
ポート22000を開放します
firewall-cmd --add-port=22000/tcp --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="22000" accept"'
sudo firewall-cmd --get-log-denied
firewall-cmd でログを有効にするには、以下のコマンドを実行します。
sudo firewall-cmd --set-log-denied=オプション
オプションの種類
sudo firewall-cmd --set-log-denied=off
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port port="3306" protocol="tcp" log prefix="MYSQL_ACCESS" level="info"' --permanent
sudo firewall-cmd --reload
記録されたログの確認
sudo journalctl -f | grep 'IN='
以下のように表示されます
5月 08 08:18:28 サーバ名 kernel: MYSQL_ACCESSIN=eth0 OUT= MAC=02:02:76:1b:05:64:00:2a:10:77:b3:c0:08:00 SRC=接続元IP DST=118.27.5.100 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=44610 DF PROTO=TCP SPT=40346 DPT=3306 WINDOW=32120 RES=0x00 SYN URGP=0
git --version
git version 1.8.3.1
yum install -y https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y remove git git-\*
yum -y install git224
git --version
git version 2.24.3
/etc/nginx/conf/xxxxxxx.conf
server {
listen 80;
# http を https にリダイレクト( ↓ この行を追加する )
return 301 https://$host$request_uri;
..........
}
nginx -s reload
nginx の設定ファイルに以下のように記述しましょう。
http, server, location のディレクティブに記述することができますので
設定したい範囲を決めて記述しましょう
http {
client_max_body_size 1048576; # default 1m
server {
client_max_body_size 100m;
location ~ ^/upload/ {
client_max_body_size 2g;
}
}
}
rootアカウントが必要 ですが、とても簡単にできます。
/usr/local/psa/admin/conf/panel.ini (もし無ければ新規作成)に 設定を追加して、Pleskの 設定を 再設定するだけです
cd /usr/local/psa/admin/conf/
vi panel.ini
以下の内容で保存します
[webserver]
nginxClientMaxBodySize = 999m
plesk sbin httpdmng --reconfigure-all
以上で plesk の画面には表示されませんが 設定が完了しています。
20xx/xx/xx 16:17:39 [error] 3288#0: *100 readv() failed (104: Connection reset by peer) while reading upstream, client: 192.168.1.1, server: aaa.bbb.ccc, request: "POST /cms/admin/convert/xls_sakuhin_convert_exec_convert HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "aaa.bbb.ccc", referrer: "https://xxxxx"
fastcgi://127.0.0.1:9000 でこけているもよう。
request_terminate_timeout について記述があるファイルを検索します。
cd /etc/php7-fpm.d
grep 'request_terminate_timeout' -rl .
結果
./www.conf.default
./www.conf
./www.conf.kusanagi
これらのファイルから実際に記述されているところを変更する。
vi /etc/php7-fpm.d/www.conf
request_terminate_timeout = 90
変更する ↓
request_terminate_timeout = 1200
service php-fpm restart
nginx -s reload
ps ax | grep nginx | grep worker
11151 ? S 0:01 nginx: worker process
↓ 11151 から次のコマンドを実行
cat /proc/11151/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 1866 1866 processes
Max open files 20000 20000 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 1866 1866 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Max open files 20000 となっています。
cat /etc/nginx/nginx.conf | grep worker_rlimit_nofile
20000
cat /proc/sys/fs/file-max
vi /etc/nginx/nginx.conf
例: worker_rlimit_nofile を 40000 に設定する
worker_rlimit_nofile 40000;
nginx のリスタート
nginx -s reload
[warn] 15554#0: *3274 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000007
この警告についてですが client_body_buffer_size のサイズを大きくする ことで出なくなる可能性があります。 ( ただし大きくしすぎは注意 !! )
cat nginx.conf | grep client_body_buffer_size
client_body_buffer_size 768k;
この値を大きくします。
client_body_buffer_size 768k;
nginxのコンフィグファイルに次のように記述します。
location / {
auth_basic "please enter id,pass"; # 認証時に表示されるメッセージ
auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
}
cd /etc/opt/kusanagi/nginx/conf.d/
nginx -s reload
location / { の記述が複数ある場合 はそれぞれに設定するか、それより上の server { に設定します。
それぞれに設定する
location / {
auth_basic "please enter id,pass"; # 認証時に表示されるメッセージ
auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
}
location /my_app/ {
auth_basic "please enter id,pass"; # 認証時に表示されるメッセージ
auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
}
server 全体に設定する
server {
auth_basic "please enter id,pass"; # 認証時に表示されるメッセージ
auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
}
/etc/opt/kusanagi/nginx/conf.d
123.123.123.0/24 は適宜読み替えてください
firewall-cmd --zone=drop --permanent --add-source=123.123.123.0/24
firewall-cmd --reload
firewall-cmd --get-active-zones
drop
sources: 123.123.123.0/24
public
interfaces: eth0
drop のリストに入っています。これでOKです。
cat /var/log/maillog | grep failed
yum list installed | grep dkim
インストールされていない場合は
yum install -y epel-release
yum install -y opendkim
opendkim-genkey -D /etc/opendkim/keys -d example.com -s 20190318
オプションの説明は次の通り
opendkim-genkey -D /etc/opendkim/keys -d <サイト名> -s <セレクタ名(ファイル名。指定しないときはdefault)>
作成後に鍵ができているか確認します
ls -la /etc/opendkim/keys
-rw------- 1 root root 1679 1月 1 12:59 default.private
-rw------- 1 root root 498 1月 1 12:59 default.txt
できています。 default.privateが秘密鍵 、default.txt が公開鍵です。
chown -R opendkim:opendkim /etc/opendkim/keys/*
↑ これを行わないとメール送信時に
「can't load key from /etc/opendkim/keys/default.private: Permission denied」
エラーとなります。
DNSサーバに登録するのは次の2レコードです。
・DKIM公開鍵
・ADSPレコード
公開鍵の中身を表示
cat /etc/opendkim/keys/default.txt
DKIM公開鍵の登録
Title | Type |
---|---|
サブドメイン | default._domainkey |
対象 | TXT |
値 | p=MIIBIjANBgkqh.................................... |
でお使いのDNSサーバに登録します。
ADSPレコードには all , unknown , discardable のどれかを指定します。
設定値の説明は次の通り
unknown | DKIM署名していないメールも送信している |
all | 送信するメールはすべてDKIM署名している |
discardable | DKIM署名されていないメール・不正な内容のDKIM署名がされているメールが届いたら、すべて破棄してよい |
ADSPレコードの登録
Title | Type |
---|---|
サブドメイン | _adsp._domainkey. |
対象 | TXT |
値 | dkim=unknown |
でお使いのDNSサーバに登録します。
dig default._domainkey.<YOUR-SERVER.NAME> TXT
設定ファイルのバックアップ
cp /etc/opendkim.conf /etc/opendkim.conf.original
opendkim.conf を編集します
vi /etc/opendkim.conf
Mode v
↓
Mode sv
KeyFile /etc/opendkim/keys/default.private
↓
#KeyFile /etc/opendkim/keys/default.private
# KeyTable /etc/opendkim/KeyTable
↓
KeyTable refile:/etc/opendkim/KeyTable
# SigningTable refile:/etc/opendkim/SigningTable
↓
SigningTable refile:/etc/opendkim/SigningTable
# ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
↓
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
# InternalHosts refile:/etc/opendkim/TrustedHosts
↓
InternalHosts refile:/etc/opendkim/TrustedHosts
vi /etc/opendkim/KeyTable
次のようなフォーマットでファイルの最後に追記します
<DKIMレコード(サーバ)名> <ドメイン名>:<セレクタ名>:<秘密鍵ファイル>
YOURSERVER.COM はお使いのドメイン名に読み替えてください
セレクタが default の場合
default._domainkey.YOURSERVER.COM YOURSERVER.COM:default:/etc/opendkim/keys/default.private
vi /etc/opendkim/SigningTable
ファイルの最後の追記します
YOURSERVER.COM はお使いのドメイン名に読み替えてください
*@YOURSERVER.COM default._domainkey.YOURSERVER.COM
サーバをリスタートした時の自動起動の設定
chkconfig opendkim on
opendkimの起動
systemctl enable opendkim
service opendkim start
起動の確認
netstat -lntp | grep opendkim
systemctl status opendkim
vi /etc/postfix/main.cf
最終行に以下を追記
# dkim
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
postfixの再起動
service postfix check
service postfix reload
postconf | grep smtpd_milters
https://support.google.com/a/answer/3726730?hl=ja
https://sendgrid.kke.co.jp/blog/?p=8210
vi /etc/postfix/main.cf
inet_protocols = all
↓
inet_protocols = ipv4
http://pentan.info/server/linux/gmail_postfix_ipv6.html
cat /var/log/maillog | grep "status=sent"
http://www.blacklistalert.org/
http://www.senderbase.org
http://www.spamhaus.org/
https://www.invaluement.com/removal/
https://www.spamhaus.org/lookup/
こちらに IPアドレスを入れて調べます。
リストに載っていると
xxx.xxx.xxx.xxx is listed in the PBL, in the following records:
と表示されるので、IPアドレスの所をクリックして詳細表示画面へ移動します。
xxx.xxx.0.0/17 is listed on the Policy Block List (PBL)
と表示されていました。 サブネットマスク( /17 )なので32768個のIPアドレスが一括でリストに入れられています。
「Remove an IP from PBL」から解除申請をします。
メールアドレスを入力すると確認コードが送られてくるのでそれをフォームに入れて申請します。
以上です。
こちらのやり方でチェックするという方法があるようです。
例 (index.php?page_id=22) (index.php?page_id=23)を new.html へリダイレクトさせる
RewriteCond %{QUERY_STRING} ^page_id=(22|23)$
RewriteRule ^.+$ new.html? [R,L]
Unixマシン起動時にシェルスクリプトを実行するには /etc/rc.local へ記述します
cat /etc/rc.local
rootユーザーで行います
vi /etc/rc.local
https://www.mamp.info/en/
ここからダウンロードしてインストールする
/Applications/MAMP/MAMP.app
こちらを起動して「Start Servers」を押してサーバを起動してください。
.bach_profile に 以下を追加
# MAMP MySQL
export PATH="/Applications/MAMP/Library/bin/:$PATH"
ターミナルを再起動して
mysql -V
でバージョンが帰ることを確認する
mysql Ver 14.14 Distrib 5.7.25, for osx10.9 (x86_64) using EditLine wrapper
Access denied for user 'root'@'localhost' (using password: NO) というエラーが出てパスワードなしでログインできない時は 次のように設定します
vi /Applications/MAMP/conf/my.cnf
ファイルが存在しない場合は新しいファイルに記述します。
my.cnf の mysqld の項目に次の1行加えます
[mysqld]
skip-grant-tables
MAMPを再起動してパスワードなしでログインできることを確認します。
mysql -u root -p
初期パスワードは「root」です。
mysql -uroot -proot
でもok
.bach_profile に 以下を追加
7.3.1 のところはバージョンによって変わります
# MAMP PHP
export PATH="/Applications/MAMP/bin/php/php7.3.1/bin/:$PATH"
php -v
正しいバージョンが帰って来ればOKです
PHP 7.3.1 (cli) (built: Feb 1 2019 12:26:46) ( NTS )
Finder から 「/Applications/MAMP/bin/php」へ移動し、MAMPで使用したい2つのバージョン以外のフォルダの先頭に「アンダーバー」をつけます。
その後MAMPアプリを再起動すると、「Preferences」→「PHP」からアンダーバーをつけなかった2つのバージョンが選択できます。
(有効なのは2つのバージョンまでです。)
コマンドラインの php も古いバージョンにする
.bach_profile に 以下を追加
# MAMP PHP
export PATH="/Applications/MAMP/bin/php/php5.6.40/bin:$PATH"
Finder から 「移動」 →「フォルダへ移動」から
/Applications/MAMP/bin/php/php7.3.1/conf
へ移動して、php.ini を好きなエディタで編集します。
以下の項目をチェックしておくといいでしょう
display_errors = On
error_log = "/Users/ユーザー名/mamp/log/php_error.log"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M
使用しているPHPのバージョンを調べて設定ファイルを開きます
vi /Applications/MAMP/bin/php/php7.4.2/conf/php.ini
php.ini の1番最後を次のようにします
zend_extension="/Applications/MAMP/bin/php/php7.4.2/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_port = 9003
MAMPを再起動します。
phpinfo でxdebugのバージョンを確認しておきます。(バージョン2系とバージョン3系があります)
VS Codeで「PHP Debug」をインストールします。
ブレークポイントを追加したりソースコードを開いて「F5」を押します。 launch.json がない場合は作成するよう促されるので作成します。 以下のようにポート番号合わせておきましょう。
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9003
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
設定したブレークポイントのところでプログラムが止まることを確認すればokです
httpd.conf はこちらになります
/Applications/MAMP/conf/apache/httpd.conf
WEBアプリが動くようにする
AllowOverride Allに設定しておきましょう
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
↓
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
/Applications/MAMP/conf/apache:196 は変更しません。
# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Users/xxxxxxx/mamp/eveforma_app"
コマンドラインでphp のバージョンを確認した後composerをインストールします
php -v
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
git clone https://github.com/riywo/ndenv ~/.ndenv
echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
exec $SHELL -l
git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
ndenv -h
ndenv install -l
ndenv install v10.15.1
ndenv rehash
ndenv global v10.15.1
node -v
export GIT_CURL_VERBOSE=1
git ls-remote
このようなエラーが出ます
* Couldn't find host bitbucket.org in the .netrc file; using defaults
* About to connect() to bitbucket.org port 443 (#0)
* Trying 18.205.93.1... * Connected to bitbucket.org (18.205.93.1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -12286
* Expire cleared
* Closing connection #0
・現在の nss のバージョンを表示
yum list installed | grep nss
nss.x86_64 3.16.1-7.el6_5 @updates
・インストール可能な nss のバージョンを表示
yum list | grep nss
nss.x86_64 3.36.0-9.el6_10 updates
yum update nss
これでエラーが出なくなります。
戻しておきましょう
unset GIT_CURL_VERBOSE
引用元 : https://goo.gl/2X6w3L
Centos7 の 自動起動設定は2つあります。 (新しいもの : systemctl 、古いもの : chkconfig)
systemctl list-unit-files -t service
例: httpd.service を自動起動するように設定します
systemctl enable httpd.service
例: vsftpd.service を自動起動しないように設定します
systemctl disable vsftpd.service
chkconfig --list
例: webmin を自動起動するように設定します
chkconfig webmin on
例: webmin を自動起動しないように設定します
chkconfig webmin off
firewall-cmd --get-icmptypes
firewall-cmd --list-icmp-blocks --zone=public
firewall-cmd --add-icmp-block=timestamp-request --zone=public --permanent
firewall-cmd --reload
firewall-cmd --remove-icmp-block=timestamp-request --zone=public --permanent
firewall-cmd --reload
自由にパケットを変更して送信できるツール
TCP, UDP, ICMP, RAWIP をサポート
brew install hping
.bash_profile にパスを追加
export PATH="/usr/local/sbin:$PATH"
hping3 host [mode] [options]
モード
モード | 説明 |
---|---|
default | TCPパケットを送信 |
-rawip | TCPやUDPがない状態で送信(RAW IP) |
--icmp | ICMPパケットを送信 |
--udp | UDPパケットを送信 |
--scan | ポートスキャン |
ポート1 - 30 をスキャンします
sudo hping 127.0.0.1 --scan 1-30
sudo hping 127.0.0.1 --icmp --icmptype 13
こちらも同じ動作をします
sudo hping 127.0.0.1 --icmp-ts
sudo hping --tcp-timestamp -S 127.0.0.1 -p 80 -c 1
wget https://github.com/peco/peco/releases/download/v0.5.3/peco_linux_amd64.tar.gz
tar xvzf peco_linux_amd64.tar.gz
cd peco_linux_amd64
最新バージョンのURLはこちらから確認します。
https://github.com/peco/peco/releases
ls | ./peco
問題なく動作するなら、 /usr/local/bin/ へコピーする
cp peco /usr/local/bin/
パイプを使って流し込みます。
ls -la | peco
例:FTPポートを閉じる
firewall-cmd --permanent --remove-service=ftp
ファイアーウォールをリロードする
firewall-cmd --reload
firewall-cmd --list-all-zones
public (active) のように active がついているのが現在のゾーンです。
このような感じで表示されます。 ↓
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports: 22222/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
curl -X TRACE 127.0.0.1 | grep TRACE
TRACE / HTTP/1.1
が返ってくると、TRACEメソッドが有効です。(OFFにしましょう!)
vi /etc/httpd/conf/httpd.conf
次の設定をファイルのどこかに記述します
# HTTP TRACE method off
TraceEnable off
apachectl configtest
apachectl restart
curl -X TRACE 127.0.0.1 | grep TRACE
<p>The requested method TRACE is not allowed for the URL /.</p>
が返って来ればOKです。
https://mxtoolbox.com/spf.aspx
SPFレコードの設定方法 https://www.naritai.jp/guidance_spf_example.html
宛先は
delist@messaging.microsoft.com
です。ただし、送信できないメールアカウントからは送らないこと。
https://support.microsoft.com/en-us/supportrequestform/8ad563e3-288e-2a61-8122-3ba03d6b8d75
実行方法(Perlスクリプトを wget でダウンロードしてきて実行します)
wget wget http://www.cirt.net/nikto/nikto-current.tar.gz
tar -xzvf nikto-current.tar.gz
cd nikto-2.1.5
perl nikto.pl -update
perl nikto.pl -host https://YOUR-SERVER.TLD
実行結果
---------------------------------------------------------------------------
+ Target IP: xxx.xxx.xxx.xxx
+ Target Hostname: dummy.server.name.com
+ Target Port: 80
+ Start Time: 2018-10-10 17:32:48 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/2.4.6 (CentOS) PHP/7.1.2
+ Server leaks inodes via ETags, header found with file /, fields: 0x813 0x5747dfb6fe842
+ The anti-clickjacking X-Frame-Options header is not present.
+ Allowed HTTP Methods: OPTIONS, GET, HEAD, POST, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ / - Requires Authentication for realm 'Secret Area'
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 6545 items checked: 0 error(s) and 6 item(s) reported on remote host
+ End Time: 2018-10-10 17:36:18 (GMT9) (210 seconds)
---------------------------------------------------------------------------
上記のサーバでは次のような脆弱性が報告されています。
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
TRACE メソッドが有効なので無効にしましょう(XST脆弱性があります)
+ OSVDB-3268: /icons/: Directory indexing found.
ディレクトリインデックスが見えてますよ
+ OSVDB-3233: /icons/README: Apache default file found.
Apacheのデフォルトファイルが見えてますよ
ターミナルから以下のように入力してコマンドラインからThunderbirdを起動すると、デスクトップにログ(smtp.log)を保存できます。
「SMTP」のログを詳細度「4」で取得します。
export NSPR_LOG_MODULES=SMTP:4
export NSPR_LOG_FILE=~/Desktop/smtp.log
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin
全てのログを細かく取得したい時は
export NSPR_LOG_MODULES=ALL:5
export NSPR_LOG_FILE=~/Desktop/smtp.log
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin
で起動します。
yum remove mariadb-libs
rm -rf /var/lib/mysql/
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server
mysqld --version
systemctl enable mysqld.service
systemctl start mysqld.service
systemctl stop mysqld.service
最初に MySQL を起動した時にテンポラリパスワードが作成されますのでそれを表示して控えておきます
cat /var/log/mysqld.log | grep "temporary password"
例)
2018-01-01T01:01:01.308410Z 1 [Note] A temporary password is generated for root@localhost: %o8aD!&kz:*m
mysql -uroot -p
(この後パスワード入力を促されるので入力します)
最初にrootパスワードを設定しておかないとMysqlを使うことはできませんので rootパスワードを設定します
set password for root@localhost=password('Password@123');
SET GLOBAL validate_password_policy=LOW;
set password for root@localhost=password('YOUR_PASSWORD_HERE');
yum -y install epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum list | grep php71
yum install -y --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mcrypt php-gd php-xml php-intl php-pecl-xdebug php-bcmath php-mysqlnd php-zip php-fpm
php -v
PHP 7.1.19 (cli) (built: Jun 21 2018 07:18:00) ( NTS )
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm -f composer-setup.php
mv composer.phar /usr/local/bin/composer
webminが使用するポート10000番を空けておきます。
firewall-cmd --add-port=10000/tcp --permanent
http://download.webmin.com/download/yum/
から最新バージョンを調べて下記コマンドでインストールする
yum -y install http://download.webmin.com/download/yum/webmin-1.881-1.noarch.rpm
vi /etc/webmin/miniserv.conf
/etc/webmin/miniserv.conf の最後に以下を追加 IPアドレスは適宜変更してください。
# アクセスを許可するIPアドレス
allow=127.0.0.1/24
/etc/rc.d/init.d/webmin restart
ブラウザから
https://192.168.33.10:10000/
などのアドレスでアクセスします。
/usr/libexec/webmin/changepass.pl /etc/webmin root <設定したいパスワード>
・Webmin → Change Language and Theme をクリック
・「Webmin UI language」を「Personal choice」に変更し、”Japanese(JA_JP.UTF-8)にする
・「Make Changes」をクリックする
wget http://software.virtualmin.com/gpl/scripts/install.sh
chmod +x install.sh
./install.sh
途中で
Please enter a fully qualified hostname (e.g.: host.example.com): host.example.com
と聞かれるので host.example.com と入力します。(または適当なホスト名を入力)
linuxの RedHat , CentOS 7移行ではファイアウォールの設定が 「iptables」から「firewalld」へ変更されています。
systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld
firewall-cmd --list-all-zones
デフォルトでは
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
(active)が付いている public が有効なゾーンです。
設定ファイルの格納場所は
/usr/lib/firewalld/services
/etc/firewalld/services
/etc/firewalld/services の方が優先されるようです。
「http.xml」を 元に 5000番ポーと5001版ポートを開放する 設定ファイル 「kestrel.xml」を作成する
cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/kestrel.xml
ポートを変更します
vi /etc/firewalld/services/kestrel.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Kestrel</short>
<description>Kestrel port 5001</description>
<port protocol="tcp" port="5001"/>
</service>
ゾーンに作成した Kestrel を追加する
firewall-cmd --add-service=kestrel --permanent
firewall再起動
systemctl reload firewalld
再確認
firewall-cmd --list-all-zones
参考: http://www.eastforest.jp/vps/4539#ICMP-2
※ICMPタイプの一覧表示
firewall-cmd --get-icmptypes
例
address-unreachable
bad-header
communication-prohibited
destination-unreachable
echo-reply
echo-request
fragmentation-needed
host-precedence-violation
host-prohibited
host-redirect
host-unknown
host-unreachable
ip-header-bad
neighbour-advertisement
neighbour-solicitation
network-prohibited
network-redirect
network-unknown
network-unreachable
no-route
packet-too-big
parameter-problem
port-unreachable
precedence-cutoff
protocol-unreachable
redirect
required-option-missing
router-advertisement
router-solicitation
source-quench
source-route-failed
time-exceeded
timestamp-reply
timestamp-request
tos-host-redirect
tos-host-unreachable
tos-network-redirect
tos-network-unreachable
ttl-zero-during-reassembly
ttl-zero-during-transit
unknown-header-type
unknown-option
禁止されているICMPタイプに追加
firewall-cmd --add-icmp-block=echo-request --zone=public
恒久的に禁止されているICMPタイプに追加
firewall-cmd --add-icmp-block=echo-request --zone=public --permanent
禁止されるICMPタイプから削除
firewall-cmd --remove-icmp-block=echo-request
恒久的に禁止されるICMPタイプから削除
firewall-cmd --remove-icmp-block=echo-request --permanent
firewall-cmd --list-rich-rule
・ownCloud創設者が 2016年にNextcloud社設立
・オープンソース
・WEB上にFTP接続できるサーバが必要
つまりレンタルサーバ契約があれば無料で使用できます。
容量は無制限(レンタルサーバの契約いっぱいまで)で使用できます。
注意点としてはまだまだバグがあって、ファイルがアップロードされない事がしばしばあります。
DropBox的というよりはFTP的に使用するのがいいでしょう。
https://nextcloud.com/install/ から画面一番下の「</>Web Installer」タブをクリック
「Right-click here」の「here」を右クリックして別名で保存します。
(setup-nextcloud.php というファイルが保存されます。)
保存したファイル「setup-nextcloud.php」をFTPでサーバの公開ディレクトリの一番トップにアップロードします。
・https://<あなたのサーバ>/setup-nextcloud.php を実行します。
・Nextcloudをインストールするディレクトリを聞いてくるので(デフォルトでは「nextcloud」)入力して「next」を押します。
・インストールが完了すると「Nextcloud is now installed」と表示されます。「next」を押します。
・管理者アカウントのメールアドレスとパスワードを入力して「完了します」ボタンを押します。
・Nextcloud/data/ の ディレクトリパーミッションを(0700)にしておきます
メモリとアップロードの最大サイズを適宜変更してください。
php.ini 変更例
memory_limit = 512M
upload_max_filesize = 2000M
post_max_size = 2000M
Windows, Macなど端末ごとにアプリをダウンロードします。
(こちらからダウンロードできます。 https://nextcloud.com/install/#install-clients )
(インストール時に聞かれる「サーバーアドレス」は (https://<あなたのサーバ>/nextcloud) です)
cp /usr/share/zoneinfo/Japan /etc/localtime
vim /etc/sysconfig/clock
次のように変更します
ZONE="UTF"
UTC=true
ARC=false
↓
ZONE="Asia/Tokyo"
UTC=true
ARC=false
systemctl status postfix
Unit postfix.service could not be found.
現在のステータスが帰ります
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: inactive (dead)
yum -y install postfix
vi /etc/postfix/main.cf
systemctl restart postfix
バージョンが古くサポートが切れたcentosではyumコマンドが利用できなくなります。 (次のエラーが表示されます)
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
これはyumの設定ファイルに書かれてあるミラーサーバー参照できなくなるからでそこを書き換えてあげれば 古いcentosでもyumコマンドを利用することができるようになります
vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
の「mirrorlist」コメントアウトして「baseurl=http://vault.centos.org/5.5/os/$basearch/」追加します。
「5.5」のところはcentosのバージョンを入れてください
書き換えた結果例
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/5.5/os/$basearch/
これを同様に [updates] [addons] [extras] [centosplus] [contrib] についても書き換えます。
書き換え後に
yum list
で確認します
mac os にはコマンドラインから使える便利なシップスという画像変換コマンドがあります。 例えば以下のように使用します
sips -s format [変更するフォーマット] --out [変更後のファイル名] [変更元のファイル名]
その他のオプションはこちら
sips --help
Usages:
sips [-h, --help]
sips [-H, --helpProperties]
sips [image-query-functions] imagefile ...
sips [profile-query-functions] profile ...
sips [image modification functions] imagefile ...
[--out result-file-or-dir]
sips [profile modification functions] profile ...
[--out result-file-or-dir]
Profile query functions:
-g, --getProperty key
-X, --extractTag tag tagFile
-v, --verify
Image query functions:
-g, --getProperty key
-x, --extractProfile profile
Profile modification functions:
-s, --setProperty key value
-d, --deleteProperty key
--deleteTag tag
--copyTag srcTag dstTag
--loadTag tag tagFile
--repair
Image modification functions:
-s, --setProperty key value
-d, --deleteProperty key
-e, --embedProfile profile
-E, --embedProfileIfNone profile
-m, --matchTo profile
-M, --matchToWithIntent profile intent
--deleteColorManagementProperties
-r, --rotate degreesCW
-f, --flip horizontal|vertical
-c, --cropToHeightWidth pixelsH pixelsW
-p, --padToHeightWidth pixelsH pixelsW
--padColor hexcolor
-z, --resampleHeightWidth pixelsH pixelsW
--resampleWidth pixelsW
--resampleHeight pixelsH
-Z, --resampleHeightWidthMax pixelsWH
-i, --addIcon
ログファイル名 | 概要 | |
---|---|---|
/var/log/wtmp | ログインに関するログ | who /var/log/wtmp コマンドや last コマンドで表示する |
/var/log/btmp | 不正ログインに関するログ | lastbコマンドで表示する |
/var/log/lastlog | 最終ログインに関するログ | laslogコマンドで表示する |
/var/log/faillog | ログイン失敗回数に関するログ | |
/var/log/tallylog | ログイン失敗回数に関するログ |
lastb -f /var/log/btmp | awk '{print $1}' | sort | uniq -c | sort -nr | head -30
例
670 admin
112 usuario
99 user
98 test
97 administ
83 oracle
ログファイル名 | 概要 |
---|---|
/var/log/messages | システムに関する一般的なログ |
/var/log/cron | cron の処理結果に関するログ |
/var/log/maillog | メールサービスに関するログ |
/var/log/secure | セキュリティに関するログ |
/var/log/boot.log | システムの起動に関するログ |
/var/log/XFree86.0.log | X Window System のログ |
/var/log/cups/access_log /var/log/cups/error_log /var/log/cups/page_log | プリントサーバー cups のログ |
/var/log/http/access_log /var/log/http/error_log | Web サーバー apache のログ |
/var/log/samba/log.nmbd /var/log/samba/log.smbd | ファイル共有サーバー samba のログ |
/var/log/squid/access.log /var/log/squid/cache.log /var/log/squid/store.log | プロキシサーバー squid のログ |
mysqldumpslow -s t /var/log/mysql_slow.log
毎日メールで送るという方法もあります。
https://github.com/manabusakai/slow-query
一定時間より長いQueryのみをフィルター抽出出来るperlスクリプト
https://github.com/denishpatel/mytreats/blob/master/mysql_slow_log_filter.pl
syslogの設定ファイルは「/etc/syslog.conf」または「/etc/rsyslog.conf」
Mac App StoreからXcodeをインストールします。
インストール後一度起動しておきます
Xcodeを起動して
Xcode → Open Developer Tool → More Developer Tools ...
を選択。 一覧から「Command Line Tools(OS X 11.10) (お使いのMacOSバージョン)for Xcode」をダウンロードしてインストールする
curl -L http://git.io/phpenv-installer | bash
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
exec $SHELL -l
ターミナルから
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
パスワードの入力が促されるので入力する必要があります
homebrewはあらかじめインストールしておく必要があります
brew install jpeg
brew install bison
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
brew install re2c
brew install libpng
brew install libmcrypt
brew install libxml2
brew install openssl
brew link openssl --force
echo 'export PATH=/usr/local/opt/openssl/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
cd /usr/local/include
ln -s ../opt/openssl/include/openssl .
phpenv install -l
表示例
5.6.7
5.6.8
5.6.9
5.6snapshot
7.0.0
7.0.10
7.0.11
7.0.12
7.0.13
phpenv install 7.0.13
次のコマンドでインストールすることができます PHP 7.1.4をインストールする場合
PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4 phpenv install 7.1.4
phpenv versions
PHP 7.1.4に切り替える場合
phpenv global 7.1.4
phpenv rehash
php -v
とにかく急ぎで検証用環境が欲しい方に。
今回作業するマシンはMac。インストールする仮想マシンのOSは ubuntu とします。
https://www.vagrantup.com/downloads.html
http://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html
ここにインストールしたいOSの種類を入力して検索します。
https://app.vagrantup.com/boxes/search
今回はこのボックスを使用します
https://atlas.hashicorp.com/michaelward82/boxes/trusty64-php7
まず仮想マシンを格納したいフォルダ( Ubuntu_PHP7 とします )を作成しそこに移動します。
ターミナルから
mkdir Ubuntu_PHP7
cd Ubuntu_PHP7
次に vagrant コマンドを使ってインストールと起動を行います
vagrant init michaelward82/trusty64-php7;
vagrant up
# ● Vagrantfile の編集
インストールが完了すると Vagrantfile というファイルが作成されているのでそれを好きなエディタアプリで起動し編集します。
下記の行の先頭のコメントを取って実行できるようにします
config.vm.network "private_network", ip: "192.168.33.10"
再びターミナルから次のコマンドを実行して ssh の接続情報を表示します
vagrant ssh-config
表示例
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
IdentitiesOnly yes
LogLevel FATAL
この情報から ssh での接続コマンドが分かるので 実行して ssh 接続します。
ssh vagrant@127.0.0.1 -p 2200 -i /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
【ここから先は vagrant 内の仮想マシンでの作業となります】
su - (パスワードは vagrant)
apt-get update
apt-get install php7.0-mbstring
vi /etc/apache2/apache2.conf
ユーザーとグループを下記のように書き換えておきます
User vagrant
Group vagrant
/etc/init.d/apache2 restart
curl localhost
ウェブブラウザに以下のように入力してアクセスする
http://192.168.33.10/
以上です。
さきほど表示したSSH設定にでてきた鍵を使用します。
/Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
これをFTPソフトの鍵選択画面から選択してください。 (接続プロトコルは SFTP にします)
Mac だとTransmit がお勧めです。
yum -y install php-fpm
vi /etc/php-fpm.d/www.conf
user と group を「nginx」に書き換えます
user = nginx
group = nginx
systemctl start php-fpm
systemctl enable php-fpm
php-fpmの設定を変更します
vi /etc/php-fpm.d/www.conf
PHPの実行ユーザーとグループを myuser に変更します
user = nginx
group = nginx
↓
user = myuser
group = myuser
nginxリロード
nginx -s reload
nginx -s reload
( または )
systemctl restart nginx
お好きな方をどうぞ。
これで nginx でPHPが使用できる様になります。
WEBサイトのトップにファイル test.php を以下の内容で作成しアップロードします
<?php
ini_set( 'display_errors', 1 );
touch ('aaa.txt');
これを実行してディレクトリ・ファイル操作権限があるかどうかを調べます。 もしエラーになった場合は次の対処法にて対処してください。
ターミナルから
getenforce
を実行します
Enforcing
と帰ってきた場合は SELinux が有効なので、設定ファイル /etc/sysconfig/selinux を書き換えてオフにします。
vi /etc/sysconfig/selinux
次の様に disabled に設定します
SELINUX=disabled
これでマシンを再起動します。
/etc/nginx/conf.d/laravel.conf の設定を書き換えます
vi /etc/nginx/conf.d/laravel.conf
try_files $uri $uri/ /index.php$query_string;
↓
try_files $uri $uri/ /index.php$is_args$args;
/etc/nginx/nginx.conf
設定ファイル default.conf を /etc/nginx/conf.d/ に作成します。
vi /etc/nginx/conf.d/default.conf
default.conf の内容
server {
listen 80;
server_name site1.local;
access_log /var/log/nginx/site1.access.log main;
location / {
root /usr/share/nginx/site1;
index index.html index.htm;
}
}
server {
listen 80;
server_name site2.local;
access_log /var/log/nginx/site2.access.log main;
location / {
root /usr/share/nginx/site2;
index index.html index.htm;
}
}
nginx -t
mkdir /usr/share/nginx/site1
mkdir /usr/share/nginx/site2
nginx -s reload
・まずコマンド ip a でローカルマシンの ip アドレスを調べます。( Vagrant等で構築している場合 )
・次に調べた ip アドレスをローカルマシンのホストの hosts ファイルに書き込みます。
vi /etc/hosts
# local nginx virtual host
192.168.33.10 site1.local
192.168.33.10 site2.local
ログファイルを開く権限がなくてエラーが出る場合は下記のようにログファイルの所有者を変更します (例:ログファイルの所有者をnginxに変更する)
chown nginx /var/log/nginx/error.log
chown nginx /var/log/nginx/access.log
chown nginx /var/log/nginx/site1.access.log
chown nginx /var/log/nginx/site2.access.log
WEBブラウザのアドレス欄からアクセスします
http://site1.local/
以下のコマンドから調べます。
httpd -V
表示例 :
-D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf"
場所は `
/etc/httpd/httpd.conf`
ということがわかります
/usr/sbin/httpd -S
httpdにパスが通ってない場合は次のコマンドからパスを調べます
ps alxw | grep httpd
表示例 :
5 0 14337 1 20 0 233108 11224 poll_s Ss ? 0:14 /usr/sbin/httpd -k start
5 1000 48431 14337 20 0 233108 3848 skb_re S ? 0:00 /usr/sbin/httpd -k start
5 1000 48432 14337 20 0 1594492 13764 pipe_w Sl ? 0:13 /usr/sbin/httpd -k start
httpdコマンドの場所は `
/usr/sbin/httpd`
ということがわかります
SFTP(ssh接続によるFTP)時の umask設定は .bashrc や .bash_profile に記述しても反映されません。
/etc/ssh/sshd_config を書き換えます
vi /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
↓
Subsystem sftp /usr/libexec/openssh/sftp-server -u 0002
書き換えた後 ssh をリスタートします centos 7 の場合
systemctl restart sshd
centos 6 の場合
/etc/init.d/sshd restart
これでSFTPで接続し、ディレクトリを作成して確認します。
ファイル作成時の umask は SFTPソフトがどういう挙動をするかによって変わってきます。
【環境設定】→【ルール】
から設定できます
接続先のマシンに接続後設定ファイル「sshd_config」を変更します
vi /etc/ssh/sshd_config
PasswordAuthentication yes
↓
PasswordAuthentication no
service sshd restart
Apache 2.4 で Apache 2.2 以下の設定ファイルをコピーして起動すると「404 Not Found」になります。 エラーログを見てみると
client denied by server configuration:
というエラーになっているはずです。
これはApache 2.4 での Allow from all の書き方が変更になったからで、以下のように修正するとなおります。
<Directory "/home/www">
Order allow,deny
Allow from all
</Directory>
↓
<Directory "/home/www">
Require all granted
</Directory>
yum -y install chrony
設定ファイル /etc/chrony.conf を以下のように編集する
#server ntp1.noah.idc.jp iburst # (コメントアウト)
#server ntp2.noah.idc.jp iburst # (コメントアウト)
server ntp.nict.jp iburst
マシン起動時の自動起動設定とchronyの起動
systemctl enable chronyd
systemctl start chronyd
chronyc -a makestep
hwclock -r ; date
まずはターミナルから現在のMacにインストールされているバージョンを確認します。
java -version
>java version "1.6.0_65"
>Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468-11M4833)
>Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
から
「 JDK Downloadをクリック」→「 Java SE Development Kit の Mac OSX のインストーラーをクリック」でインストーラーをダウンロード
ダウンロードしたインストーラーを起動してインストールします。
java -version
>java version "1.8.0_101"
>Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
>Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Google Compute Engine は バーチャルなサーバーをクラウド上に作成できるGoogleのサービスです。 有料ですが無料で300ドルぶんお試しで利用できます(要クレジットカード)
#1. Google Compute Engine へ登録してサーバを起動する
(インストール中に簡単な英語で何か聞かれるが、もしよくわからない場合は, そのまま「return」でOK。)
curl https://sdk.cloud.google.com | bash
いったんターミナルを終了して再度起動させます
下記コマンドを入力してGoogleアカウントを設定します。
gcloud auth login
インスタンス名はWEBサイト「Google Cloud Platform」から 左メニュー > Compute Engine > VMインスタンス の 画面に一覧表示されます。
そこの接続したいインスタンスの項目の「接続:SSH」の横のボタンから「gcloudコマンドを表示」でSSHの接続コマンドが表示されます。
それをターミナルから入力するとSSHログインできます。
gcloud compute instances list
とします
参考 : http://bit.ly/1Y406U2 に記述がありました。とても便利です。
.bash_profile に 以下を追加
alias gcp='gcloud compute copy-files'
alias glist='gcloud compute instances list'
alias gsh='gcloud compute ssh'
alias gup='gcloud compute instances start'
alias gdown='gcloud compute instances stop'
としておいて 以下のように操作します
gsh 【インスタンス名】
でssh接続します。
#3. WEBサーバApacheをインストールして起動する
sudo apt-get install apache2
sudo /etc/init.d/apache2 start
これでWEBサーバが起動します。
次にトップページを作成してみます。
cd /var/www/
sudo chmod 0777 html
cd /var/www/html
mv index.html ___old___index.html
vi index.html
(エディタで何か入力して保存する)
WEBサイト「Google Cloud Platform」からインスタンスのIPアドレスのところをクリックすると表示されているはずです。
http://wkhtmltopdf.org
webkitによりレンダリングを行いPDFを作成します。
http://wkhtmltopdf.org/downloads.html
よりパッケージをダウンロードしてインストール
sudo apt-get install wkhtmltopdf
wkhtmltopdf http://yahoo.co.jp y.pdf
QXcbConnection: Could not connect to display
というエラーが出る場合は
sudo apt-get install xvfb
でインストール後
sudo xvfb-run wkhtmltopdf http://yahoo.co.jp y.pdf
sudo apt-get install unzip
cd /usr/share/fonts
sudo wget http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip
sudo unzip IPAexfont00301.zip
fc-cache -fv
Mac App Storeからインストール
https://itunes.apple.com/jp/app/xcode/id497799835
Homebrewのサイトに移動してインストールコマンドを取得する
http://brew.sh
例 : ターミナルから以下のコマンドを実行
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install tree
treeコマンドには様々なオプションがありますがとりあえずは -F オプションをつけて実行するとディレクトリ名の後ろにスラッシュがついて見やすくなります。
tree -F 【ディレクトリ名】
全てのオプションを見るには
tree --help
PHP CS Fixer は PSR-0 、 PSR-1 、 PSR-2 、Symfony コーディング規約 にそってソースコードを整形するシステムです。 インストールは簡単
wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer
wgetが無い場合はcurlで
curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer
sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
php-cs-fixer fix . --dry-run
php-cs-fixer fix f.php --rules=@PSR2
sshでログイン後にシェルを変更したいときなど、SSHログイン後に何かコマンドを実行したい場合は
-t コマンド名
とします。 具体的には
ssh user@hogehoge.com -t /usr/local/bin/bash
PHPフレームワークLaravelをインストールする
https://pgmemo.tokyo/data/archives/1267.html
composer global require "laravel/installer"
laravelコマンドへのパスを通します。 .bash_profile に以下の行を追加して保存
#Laravel
export PATH=~/.config/composer/vendor/bin:$PATH
laravelコマンドが使えることを確認します。
laravel
source ~/.bash_profile
(ターミナルから以下を入力)
laravel new my_app
mkdir my_app2
composer create-project laravel/laravel my_app2
Laravel 5.6 を指定してアプリをインストールします
composer create-project "laravel/laravel=5.6.*" rss_app
# telnet で接続 telnet hoge.com 80 # telnet接続後に次のコマンドを入力 TRACE / HTTP/1.0 TEST: HOGE (エンターを2回押す)
これで TEST:HOGE がサーバーから帰ってきた場合TRACEが有効です。
# telnet で接続 telnet hoge.com 80 # telnet接続後に次のコマンドを入力 OPTIONS * HTTP/1.1 HOST: localhost
TRACEが表示されれば使用出来る状態になっています。
httpd.confにて以下を記述し、再起動する。
TraceEnable off
MacOSXの【ターミナル】を起動して下記のように実行します。 なにか入力を促された場合は「Enter」をそのまま押せばOK!
# pearインストールプログラムを保存して実行する
curl http://pear.php.net/go-pear.phar > go-pear.php
php go-pear.php
# インストールがうまく完了できたら。インストールプログラムを削除
rm go-pear.php
# PEAR
PATH=$PATH:$HOME/pear/bin
export PATH
echo 'export PATH=$PATH:$HOME/pear/bin' >> ~/.bash_profile
su -
cp /etc/php.ini.default /etc/php.ini
chmod 0644 /etc/php.ini
vi /etc/php.ini
# php.iniのinclude_path に下記を付け加える
# /Users/【ユーザー名】/pear/share/pear
# 例
include_path = ".:/Users/【ユーザー名】/pear/share/pear"
■ qmHandle
http://sourceforge.net/projects/qmhandle
Perlスクリプトなのでサーバにアップロードして chmod 755 で実行可能。
実行オプションは以下の通り
Available parameters: -a : try to send queued messages now (qmail must be running) -l : list message queues -L : list local message queue -R : list remote message queue -s : show some statistics -mN : display message number N -dN : delete message number N -fsender : delete message from sender -f're' : delete message from senders matching regular expression re -Stext : delete all messages that have/contain text as Subject -h're' : delete all messages with headers matching regular expression re (case insensitive) -b're' : delete all messages with body matching regular expression re (case insensitive) -H're' : delete all messages with headers matching regular expression re (case sensitive) -B're' : delete all messages with body matching regular expression re (case sensitive) -t're' : flag messages with recipients in regular expression 're' for earlier retry (note: this lengthens the time message can stay in queue) -D : delete all messages in the queue (local and remote) -V : print program version Additional (optional) parameters: -c : display colored output -N : list message numbers only (to be used either with -l, -L or -R)
http://www.atmarkit.co.jp/flinux/rensai/qmail03/qmail03c.html
SSHへのブルートフォースアタック(ID, PASS 総当たり攻撃)は必ず経験する攻撃の一つです。 ブルートフォースアタックへの対応策(ID,PASSでのSSHログインを不可にする)は必ずしておきましょう。
ブルートフォースアタックを受けていることを確認するにはログファイルを確認します。 まずログファイルの場所を確認し、そのログファイルを参照します。
cat /etc/syslog.conf
Fedora や CentoOSの場合下記コマンドで確認できます。
cat /var/log/secure | grep "Invalid user"
cat /var/log/secure | grep "Failed password"
cat /var/log/messages | grep "failure"
webmin で見る場合
【システム】→【システム ログ】から該当のログを表示できる
vi /etc/ssh/sshd_config
以下の設定を追加する
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no (通常 no をおすすめします)
PermitRootLogin without-password ( root で直接ログインする必要がある場合はパスワードログイン以外を許可します)
Port 22222 (デフォルトポート 22 を変更する)
sshd の再起動
service sshd stop
service sshd start
/etc/hosts.deny
以下を追加 (IP:123.456.789.123 からの ssh 接続を拒否する場合) (IP:999.999.999.999 からの 全ての接続を拒否する場合)
sshd: 123.456.789.123
ALL : 999.999.999.999
http://denyhosts.sourceforge.net/ から DenyHosts-2.6.tar.gz をダウンロード
tar zxvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install
# インストールが完了したらコンフィグファイルをコピーし所有者と権限を変更する
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
denyhosts.cfg を編集する
vi /usr/share/denyhosts/denyhosts.cfg
設定例
# 4週間経過すると拒否対象から解除してあげる
PURGE_DENY = 4w
# 拒否解除を2回行うとそれ以降は解除しない
PURGE_THRESHOLD = 2
# 「存在しないユーザでの認証失敗5回」で拒否ホストに認定
DENY_THRESHOLD_INVALID = 5
# 「存在するユーザでの認証失敗10回」で拒否ホストに認定
DENY_THRESHOLD_VALID = 10
# 「rootユーザでの認証失敗1回」で拒否ホストに認定
DENY_THRESHOLD_ROOT = 1
# メールにて通知
ADMIN_EMAIL = your@email.address
# メールタイトルを指定する
SMTP_SUBJECT = DenyHosts Report Server( yourhost.server )
自動起動の設定をする
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig denyhosts on
denyhosts の起動
service denyhosts start
間違って自分のホストが denyhosts によって拒否された場合は
vi /etc/hosts.allow
として 接続を許可したい IP を追加します
sshd: 123.123.123.123
旧なアクセス増加によってWEBサーバが重い。そんな時は別のマシンでapacheのログを解析するとよいです。
そこで
■ Visitors
http://www.hping.org/visitors/index_jp.php
ダウンロードして、解凍して make すると「visitors」という実行可能なファイルが出来ます。
それを /usr/bin 等へコピー
使い方
visitors オプション ログファイル > out.html
とすると 解析結果が out.html ファイルに出力されます。
オプションは
visitors -h
とすると表示されますが、とりあえずは
visitors -A ログファイル > out.html
と「 -A 」オプションをつけて解析してみるのがいいかと思われます。
lsof(エルエスオーエフ)コマンドは"list open files"の意味であり、多くのUnix系オペレーティングシステムで、オープン中のファイルと、そのファイルをオープンしているプロセスのリストを出力するコマンドである。
lsof -c ssh lsof -c httpd lsof -c vsftp
lsof -i:80
netstat -a 5
ターミナルを立ち上げて、rootになります。
su -
設定ファイルをデフォルトからコピー
cp -p /etc/postfix/master.cf.defaultserver /etc/postfix/master.cf chmod 0644 /etc/postfix/master.cf.defaultserver /etc/postfix/master.cf
vi で「org.postfix.master.plist」を編集します
vi /System/Library/LaunchDaemons/org.postfix.master.plist
設定ファイルの中身をこのようにします。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.postfix.master</string> <key>Program</key> <string>/usr/libexec/postfix/master</string> <key>ProgramArguments</key> <array> <string>master</string> </array> <key>QueueDirectories</key> <array> <string>/var/spool/postfix/maildrop</string> </array> <key>OnDemand</key> <false/> </dict> </plist>
postfixを起動します
postfix start
ちなみにpostfixの再起動は
postfix reload
です。
参考:http://blog.livedoor.jp/dankogai/archives/20511234.html
http://www.kozupon.com/mail/submission.html
unixユーザー(例:ユーザー名 fedora )を作成するには root から
useradd fedora
で作成します
次にパスワードの設定
passwd fedora
とすると
New UNIX password: Retype new UNIX password:
と入力を促されるのでパスワードを入力して完了。
FedoraCoreのPHP5には(DOM拡張)が標準でインストールされていません。
そこで yum を使って PHP5用DOM拡張 をインストールします。
yum install php-xml
apachectl configtest apachectl graceful
インストールが完了したら
phpinfo() で DOM の項目が出来ていればOK。
DOM関数マニュアル
http://php.mirror.camelnetwork.com/manual/ja/ref.dom.php
Fedora Coreにnetpbmをインストールするには
yum -y install netpbm*
コマンド一つでOK。
インストール後コマンドが正しくインストールされたか確認をしよう。
djpeg --help pnmscale --version
これで何か文字が表示されればインストールは正常です。
◆ mod_rewriteで変換前URIに「%2F」があると、サーバーエラーになります。
これの対処方法は
◆ 1. apacheのバージョンを調べる
httpd -v Server version: Apache/2.2.0 Server built: Feb 11 2006 18:10:38
◆ 2. Apache 2.0.46 以降の場合は「AllowEncodedSlashes ディレクティブ」をONにするとスラッシュ"/"の受け渡しを許可することが出来る。
httpd.conf (.htaccessには記述できません) に以下の内容を記述
AllowEncodedSlashes On
◆ 3. apache を再起動
apachectl graceful
実在するファイル名には mod_rewrite を適用しない
RewriteCond %{REQUEST_FILENAME} !-f
実在するディレクトリ名には mod_rewrite を適用しない
RewriteCond %{REQUEST_FILENAME} !-d
http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/
■ 1. mod_sslのインストール
yum -y install mod_ssl
■ 2. 秘密鍵の作成
cd /etc/pki/tls/certs make server.key (パスワードを2回聞かれるので入力する) openssl rsa -in server.key -out server.key(パスワードを1回聞かれるので入力する)
■ 3. 公開鍵の作成
make server.csr
色々質問されるので以下のように入力する(例)
Country Name (2 letter code) [GB]:jp Locality Name (eg, city) [Newbury]:tokyo Locality Name (eg, city) [Newbury]:shibuya Organization Name (eg, company) [My Company Ltd]:test Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:testserver.com (サーバー名を入れる) Email Address []:info@testserver.com A challenge password []: (そのままEnterを押す) An optional company name []: (そのままEnterを押す)
■ 4. WEBサーバー用証明書の作成
openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365 chmod 400 server.*
■ 5. apacheのSSL設定ファイルを編集
cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.backup (バックアップをとる) vi /etc/httpd/conf.d/ssl.conf
実行すると ssl.conf 編集画面になるので下記のように書き換える。
SSLCertificateFile /etc/pki/tls/certs/server.pem SSLCertificateKeyFile /etc/pki/tls/certs/server.key DocumentRoot "/var/vhosts/www.testserver.com/htdocs"
■ 6. apacheを再起動する
apachectl graceful
■ 注意 ■
ネームベースのバーチャルホストでは一つのバーチャルホストに対してしかSSLを設定することが出来ない。
バーチャルホストについては下記を参照
http://www.atmarkit.co.jp/flinux/rensai/apache08/apache08b.html
/etc/init.d/named start /etc/init.d/named stop /etc/init.d/named restart
named-checkconf
named-checkzone testserver.com /var/named/testserver.com
■1. MySQLのサイトのダウンロードページから Mac OS X 用ファイルを選択してダウンロードする。
http://dev.mysql.com/downloads/mysql/ (Version5.5)
■2. ダウンロード完了後、
ファイルをダブルクリックしてインストール開始。
■3. 『システム環境設定』→『MySQL』→『Start MySQL Server』でMySQLが起動します。
■4. ターミナルからMySQLを使うには
mysqlコマンドは
/usr/local/mysql/bin/mysql
にありますので、このパスを追加します。
ファイル『~/.bash_profile』に下記の行を追加
export PATH=$PATH:/usr/local/mysql/bin
■ 5. ターミナルを一度終了して、再度ターミナルを起動し
mysql
でMySQLプロンプトに入ればインストール成功。
finkコマンドをインストールする。
次に
<pre>fink install imagemagick</pre>
インストール中に質問されるが全てデフォルトでOK。
インストールが完了したら
<pre>convert</pre>
と入力して
convertコマンドの説明が表示されればインストール成功!
まずfinkコマンドをインストールする。
■libjpegのインストール
finkを使って、libjpeg ligpngをインストール
fink install libjpeg fink install libpng3
■ Netpbmのインストール
これもfinkコマンド一発でインストール出来ます。
fink install netpbm
インストールが完了すると「/sw/bin/」というパスに画像変換プログラムがインストールされています。
djpeg --help
とやって文字が表示されればインストール成功
■ CGIスクリプトでNetPBMを使用する場合はPerlスクリプトの最初の方に
$ENV{PATH} .= ":/sw/bin/";
を追加する。
「Premature end of script headers: /Library/WebServer/myprogram.cgi」
apacheのログ「access_log」「error_log」はほっておくとどんどん容量が増えて無駄にディスクを消費する上にapacheのパフォーマンスが落ちます。
ログをローテーションするには「logrotate」を使用します。
vi /etc/logrotate.conf
weekly
rotate 4
errors root
create
include /etc/logrotate.d
weekly:週単位でローテーション(daily:日単位 monthly:月単位)
rotate 4:最大4つ前までのファイルを残す
errors root:エラーがあれば rootまでメールする
create [パーミッション] [グループ名] [ユーザ名]:ローテーション後すぐに同名のログファイルを作成する。
compress:.gz ファイルに圧縮する
notifempty : ログがカラならローテーションしない
missingok : ファイルが存在しない場合でもエラーとしない
include /etc/logrotate.d:/etc/logrotate.d ディレクトリ以下の設定ファイルを読み込む
dateext : ローテーションしたファイルに日付をつける
dateformat _%Y-%m : ローテーションしたファイルに指定したフォーマットの日付をつける
vi /etc/logrotate.d/httpd
でファイルを開くと
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
となっている。
notifempty があると ログファイルがから場合ローテーションを実行しないので、
テストの段階ではこれを削除しておくほうが挙動がわかりやすくなります。
使用しているログファイルが「access_log」「error_log」ならこのままでOK。
ログファイルが「access_log.sitename.com」「error_log.sitename.com」等に変更してある場合は
/var/log/httpd/*log {
↓
/var/log/httpd/*log.sitename.com {
に変更する。
また複数のファイルはスペースで区切って指定する
/var/log/httpd/*log.siteA.com /var/log/httpd/*log.siteB.com {
ローテーション設定の確認をするには -d オプションをつけて実行します
logrotate -d /etc/logrotate.d/httpd
ローテーション設定の確認をするには -f オプションをつけて実行します
動作を確認するには -v オプションもつけて実行するとより良いです。
logrotate -f -v /etc/logrotate.d/httpd
crontabの設定にで logrotate が組み込まれているかどうかを調べる
ls /etc/cron*
表示されるリストに
/etc/cron.daily:
logrotate man-db.cron
logrotate があればanacronで起動する設定になっています。
実際に起動されたかどうかを見るには
cat /var/log/cron | grep 'cron.daily'
で確認します。
logrotate は設定ファイル /etc/cron.daily/logrotate に記述がされてあり、
このファイルは anacron から実行されます。
anacronはcronと違って以下のような特徴があります
なので決まった時刻に正確に事故した場合はクーロンから起動するとよいでしょう。 例
mv /etc/cron.daily/logrotate /root/
crontab -e
(毎日4時半に実行するには以下のように記述する)
30 4 * * * /root/logrotate
/etc/inittab ファイルの mingetty 起動項目の 2〜6 をコメントアウト(行頭に # をつける)
1:2345:respawn:/sbin/mingetty tty1 # 2:2345:respawn:/sbin/mingetty tty2 # 3:2345:respawn:/sbin/mingetty tty3 # 4:2345:respawn:/sbin/mingetty tty4 # 5:2345:respawn:/sbin/mingetty tty5 # 6:2345:respawn:/sbin/mingetty tty6
shutdown -r now
(参考)
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/310delvcon.html
■1. /etc/servicesに下記の一行を追加(あらかじめある場合はそのままでよい)
rsync 873/tcp
■2. rsyncサーバを起動する
rsync --daemon
参考
http://park11.wakwak.com/~nkon/homepc/zaurus/config/rsync.html
時刻サーバ(NTPサーバ)へ時刻を問い合わせ、マシンの時計を合わせるコマンド。
ntpdate ( サーバ名 )
ntpdate time.apple.com
hwclock -r ; date
# mod_rewriteを有効にする
RewriteEngine on
# mod_rewriteを有効にするURL階層トップ
RewriteBase /
# www「あり」「なし」を「なし」に統一する
# http://www.hogehoge.com/ → http://hogehoge.com/
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com
RewriteRule ^(.*)$ http://hogehoge.com/$1 [R=301,L]
# ディレクトリの移転
RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L]
# ファイルの移転
RewriteRule ^old_dir/index\.html$ /new_dir/index.html [R=301,L]
# プログラムページの偽装(test.html へアクセスした時に index.php?q=test を表示する)
RewriteRule ^test\.html$ index.php?q=test [L]
RewriteCondは次に現れる RewriteRule にのみ適用されます。 ですので全てのリライトルールに条件を付けたい場合はすべての RewriteRuleの前に記述する必要があります。
# 実在するファイル,ディレクトリには rewrite しない
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test\.html$ index.php?q=test [L]
mod_rewrite の RewriteBase を環境によって切り替える方法 - Qiita
リライトルールの書式 http://goo.gl/FdYQZd
sudo systemctl start mysqld
sudo touch /var/lib/mysql/mysql.sock
sudo touch /tmp/mysql.sock
(シェルから)mysql -u root -p
(mysqlから)status;
UNIX socket: /tmp/mysql.sock
の行が mysql.sock の場所を示しているのでチェック
pnpinfoの mysql.sock とディレクトリが違うのでシンボリックリンクをはる
sudo nmap YOUR-SERVER.TLD -O
ポート 20 〜500番をポートスキャンします
nc -z -v YOUR-SERVER.TLD 20-500
自マシンのポートを外部からスキャンしてくれます
http://www.cman.jp/network/support/port.html
使い方
・「Proceed」ボタンをクリック
・「All Service Ports」ボタンをクリック
でスキャンが始まります。
・1. Apple メニューから「システム環境設定」>「ユーザとグループ」を実行する ・2. 鍵アイコンをクリックし管理者アカウントで認証 ・3.「ログインオプション」をクリック ・4. 右下の「編集」または「接続」ボタンをクリック ・5. 「ディレクトリユーティリティを開く」をクリック ・6. 「ディレクトリユーティリティ」ウインドウの鍵アイコンをクリック ・7. 管理者アカウント名とパスワードを入力し「OK」をクリック ・8. 「編集」メニューから「ルートユーザを有効にする」を選択する ・9. 利用するルートパスワードをパスワードフィールドとその確認用フィールドに入力し「OK」をクリック
・1. System > Library > CoreServices > 【ディレクトリユーティリティ.app】を起動する ・2. 左下のカギのアイコンをクリックする(パスワードを求められるので入力する) ・3. 【編集】->【ルートユーザを有効にする】を実行し新しいパスワードを入力
・1. アプリケーション>ユーティリティー>【ディレクトリユーティリティ.app】を起動する ・2. カギのアイコンをクリックする ・3. 【編集】->【ルートユーザを有効にする】を実行し新しいパスワードを入力
・1. アプリケーション>ユーティリティー>【NetInfoマネージャ】を起動する ・2. 【セキュリティ】->【認証】を実行してパスワードを入力 ・3. 【セキュリティ】->【ルートユーザを有効】を実行し新しいパスワードを入力 ・4. アプリケーション>ユーティリティー>【ターミナル】を起動する ・5. suと入力し「return」キーを押す。(パスワードを入力してrootユーザーになる)