[ OK ] Reached target Cloud-init target.
みたいなところで止まってるなあと思って、エンターを押してみたら、 login:カーソルが出てくるので、ログインする。 一般ユーザーなので、sudo suでrootになる。 プロキシの設定とか、しなくて大丈夫かわからないが、まずは、MATEが入るかどうかやってみる。
# apt -y install ubuntu-mate-desktop
sudo apt install apache2 fcitx-mozc fdclone mlocate net-tools nkf php7.4 vsftpd webalizer
#PermitRootLogin prohibit-password
の行を(1行コピーしてコメントはずして)
PermitRootLogin no DenyUsers admin
に変更。adminは管理者ユーザー名
# sshd -t
で構文チェックし、何もエラーが表示されなければ、以下でsshdをリスタート。
# /etc/init.d/ssh restart
# update-alternatives --config editor
sudoersを修正して、管理者アカウントからのsshログインを禁止しようと思ったのだけど、
admin ALL=(ALL:ALL) ALL, !/usr/bin/ssh
みたいにやっても、adminでsshログインできてしまう。上記のsshd_configで禁止する方がよい。
timedatectl set-timezone Asia/Tokyo
確認は、timedatectl
# systemctl list-unit-files -t service
Vine Linuxだとサービス管理がGUIで行えて便利だったのだけど、systemctlのGUIフロントエンドとかないものか。ちょっと検索した感じだとなさそうな...
crontabがまだ作られてない状態で
#crontab -e
と打つと、
no crontab for root - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny 4. /bin/ed
と表示されるので2辺りを選んで、viで以下のように編集
00 00 * * * updatedb 00 01 * * * apt-get update && apt-get -y upgrade >/media/admin/hdd/apt.log 00 02 * * * rsync -auv /var/www/cgi-bin /media/admin/hdd/ > /media/admin/hdd/cgi.log 00 03 * * * rsync -auv /var/www/html /media/admin/hdd/ > /media/admin/hdd/html.log
FTPサーバーはftpdではなく、vsftpdをインストール。 ftpdも使えるが、systemctl list-unit-files -t serviceをやってもサービス一覧に現れないので、サービス管理の方法が不明。vsftpdなら、サービス一覧に現れる。
vsftpdはデフォールトでは書き込み禁止になっているので、/etc/vsftpd.conf の以下のコメントを外して有効にする
write_enable=YES
そして、service vsftpd restart
ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
DirectoryIndex index.html index.html.var index.cgi index.php
以下の2行は追加しなくてもいいかも(KeepAlive Onは既にあるかも)
ServerTokens Prod KeepAlive On
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 上記の AllowOverride None を AllowOverride ALL に。
<Directory "/var/www/">の上あたりに、 ServerName www.str.ce.akita-u.ac.jpを追加。これがないとerror.logに以下のエラーが頻繁に書き込まれる。
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin">
を
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin">
に。
perl -e 'print crypt("pasuwaado", "AB"), "\n"'みたいに実行して(ABのとこは適当な2文字)、生成された文字列 ABtM8w0lwfcH6 を .htaccess内のAuthUserFileで指定しているパスにあるuserfile内に、書き込む。
AddHandler skin/css css AddHandler image/png png
a2enmod と打つと、 Which module(s) do you want to enable (wildcards ok)? と聞かれるので、 userdir と打ち、 service apache2 restart
service apache2 restart
# a2enmod ssl # a2ensite default-ssl # service apache2 restart
これを実行することでmods-availableへのシンボリックリンクがmods-enabledに置かれ、 sites-availableへのシンボリックリンクがsites-enabledに置かれることになる。ただし、cgi.loadに関してはリンクが 生成されないので、上記のapache2の手動でリンクを貼る作業が必要。
そもそもk2とか外部に公開されてないサーバーでサーバー証明書を取れないのかもしれないが、 まずは、/var/www/html/.well-known/acme-challenge のディレクトリを作成してから、
# certbot certonly --webroot -w /var/www/html -d k2.hoge.jp
を実行。すると、以下のエラー
Failed authorization procedure. k2.hoge.jp (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://k2.hoge.jp/.well-known/acme-challenge/dE9RRQ6FNEVCiUiKUWGPJhnI3KEoAScLREcWBUBwGQk: Timeout during connect (likely firewall problem)
IMPORTANT NOTES: - The following errors were reported by the server:
Domain: k2.hoge.jp Type: connection Detail: Fetching http://k2.hoge.jp/.well-known/acme-challenge/dE9RRQ6FNEVCiUiKUWGPJhnI3KEoAScLREcWBUBwGQk: Timeout during connect (likely firewall problem)
To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided.
うまくいった場合は、
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/hogehoge.jp/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/hogehoge.jp/privkey.pem Your cert will expire on 2020-04-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
みたいに出る。
このログをコピペして、encrypt.logとかに保存しておく。 /etc/apache2/sites-availableに移動し、default-ssl.confの中の
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
の部分を、encrypt.logを参照しながら、
SSLCertificateFile /etc/letsencrypt/live/hogehoge.jp/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.jp/privkey.pem
みたいに書き換えて、service apache2 restart
これで、/var/www/html の中も/var/www/cgi-bin の中も /home/hoge/public_html の中もhttps://でアクセスできるよう。
# certbot renew
毎月1日の0時0分に実行するなら、crontabに以下のように書いておく
00 00 1 * * certbot renew
httpのページへのアクセスをhttpsに飛ばしたい時は、
a2enmod rewrite a2enmod headers service apache2 restart
をやって、mod_rewirteとmod_headersを使えるようにしておいてから、 飛ばしたいディレクトリの.htaccessに以下を追加。
<ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </ifModule> <ifModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" </ifModule>
Let's Encrypt では、ISRG Root X1(Let's Encrypt)とDST Root X3(Identrust社)の2つのルート証明書を使っていたが、このうち、DST Root X3の方が9/30に期限切れになるそうだ。 でも、9/30以降もAndoroid7.0以前の端末でもLet's Encryptを引き続き使えることになったのかな。今ひとつわかりにくいが、9/30以降にAndroid7.0からアクセスしてみよう。
define('MATHJAX_URL', 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML');
この修正をしないと、httpからは数式表示できるが、httpsからは数式表示できなくなる。 この修正をすると、httpからでもhttpsからでも数式表示できる(ブラウザーにもよるかもしれないが)
まず、synapticからphpをインストールすると、最新バージョンのphp7.2がインストールされる。 PukiWiki1.5.3の場合は、php7.4をインストールする。
左のメニューを上寄せで表示にするには、 /var/www/cgi-bin/pukiwiki/skin/pukiwiki.skin.phpの160行目辺りの <td class="menubar"> を <td class="menubar" valign="top"> に変更。PukiWiki1.5.3の場合は、デフォールトで上寄せになってるので不要。
define('MATHJAX_URL', 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML');
この修正をしないと、httpからは数式表示できるが、httpsからは数式表示できなくなる。 この修正をすると、httpからでもhttpsからでも数式表示できる(ブラウザーにもよるかもしれないが)
$ echo -n "hogehoge" |md5sum
$edit_auth = 1;
$auth_users = array( // Username => password 'hoge' => '{x-php-md5}329435e5e66be809a656af105f42401e', );
$edit_auth_pages = array( // Regex Username '##' => 'hoge', );
上記で、edit_auth_pagesではなく、間違って、read_auth_pages のところに、
$read_auth_pages = array( // Regex Username '##' => 'hoge', );
と設定してしまうと、左側のメニューバーが表示されなくなり、
#menu(): MenuBar is not readable
と表示される。
凍結解除やadminしか編集できないページを編集するパスワードは、pukiwiki.ini.phpの
$adminpass = '{x-php-md5}!';
を
$adminpass = 'kanrisyanopasuwaado';
みたいに書き換える。
上記のapache2の設定のとこを参照して、/etc/apache2/conf-available/serve-cgi-bin.confを書き換える。
根本解決ではないのだが、対処療法ということであれば、 libの中のhtml.phpの以下の箇所に//をつけてコメントアウトする。
//$body = preg_replace_callback($whole_pattern, '_decorate_Nth_word', $body);
根本解決のためには、php.iniを編集してmbstringを有効にするとからしいのだけど、どうも、この方法がうまくいかないので。
バージョンが変わらないなら、/var/www/cgi-bin/にそのままコピー。 バージョンが変わっている場合は、まず新しいバージョンのpukiwikiをインストールしてから、attach, backup, cache, counter, diff, wikiのディレクトリを上書き移動。
サーバー移転に伴って、pukiwiki1.5.2から1.5.3に移行した場合、ブラウザーに古いpukiwikiを閲覧した際のcssとかのキャッシュが残っていると、メニューバーが左側に表示されず、下に表示されることがある。この場合は、ブラウザーの履歴を削除して、アクセスし直すとか、shftを押しながら更新とかをやっているうちに直るのでは。
あと、1.5.3のpukiwiki.cssファイルは、/* Mobile-friendly Responsive layout */から下に、スマホ等のモバイル機器用のスタイルが書かれているので、スマホからアクセスすると、メニューバーが下に表示されるようになった。スマホのブラウザーの設定で、「PC版サイト」みたいなのにチェックを入れると、メニューバーが左に表示される。
スマホでも、デフォールトで左側にメニューバーが表示された方がいい場合は、 pukiwiki.cssの中の /* Mobile-friendly Responsive layout */ から下の @media print { より上の部分を削除する。
pukiwiki.ini.phpの設定は間違ってなくても、旧サーバーにアクセスした際のキャッシュが残っていると、そうなることがあるみたい。ひとまず、履歴を削除してみる。
結城さんのアンケートcgiのenq.cgiを使う場合は、 enq.cgi内のjcode.plのパスの箇所を以下のように絶対パスに修正。
require "$jcodelib";
を
require "/var/www/cgi-bin/hoge/jcode.pl";
みたいに。 この辺 から新しいjcode.plを持ってきて置き換える。
/etc/gdm3/greeter.dconf-defaults の以下の2行をコメントアウトして、時間を0にする。
# sleep-inactive-ac-timeout=1200
# sleep-inactive-battery-timeout=1200
sleep-inactive-ac-timeout=0
sleep-inactive-battery-timeout=0
どうもそうではなくて、有線LANは生きているのだけど、 画面上部メニュー右側のネットワークアイコンから有線接続の設定を参照したり、 編集したりができなくなったというだけのような。 というか、上記のようにIPを設定していたんだとすると、もともと、ここは使えてなかったのかな。 つまり、サーバー版にMATEをインストールしたマシンでは、右上のネットワークアイコンは、↑↓にはならずに扇型のままだけど、それでネットワークにはつながっているということ。
https://forums.ubuntulinux.jp/viewtopic.php?id=4250
https://forums.ubuntulinux.jp/viewtopic.php?id=4461
Header set X-Frame-Options: "sameorigin"
service apache2 restartするとおそらく、以下のエラーが出て、
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
systemctl status apache2.service をやると、
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
みたいに出ると思う。その場合は、まず、a2enmod headersをやってから、service apache2 restart
a2enmod headersをやってから.htaccessに以下を追加。上記のリダイレクト参照。
<ifModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" </ifModule>
確認方法:まず、.htaccessでリダイレクトされないページが、httpのまま表示されることを確認する。 リダイレクトされるページにhttpでアクセスして、httpsに飛ばされることを確認した後、その端末からさっきの リダイレクトされないページにアクセスすると、httpsに飛ばされるようになっているかどうかで確認。
cd /etc/ mkdir key vi hoge1.txt vi hoge2.txt vi hoge3.txt
openssl genrsa -des3 -rand hoge1.txt:hoge2.txt:hoge3.txt 2048 > hogeserver.key Enter pass phrase: <password> Verifying - Enter pass phrase: <password>←もう一度入力
openssl req -new -key servername.key -sha256 -out hogeserver.csr ←CSRファイル名 Enter pass phrase for servername.key: <password>
Country Name (2 letter code) [AU]:JP ←"JP"を入力 State or Province Name (full name) []: Akita←都道府県名を入力 Locality Name (eg, city) []:Akita City ←市町村名を入力 Organization Name (eg, company) [Default Company Ltd]:Akita University ← 組織名を入力 Organizational Unit Name (eg, section) []:入力なし Common Name (eg, your name or your server's hostname) []:www.hogeserver.jp ← サーバ名を入力 Email Address []:入力なし Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:入力なし An optional company name []:入力なし
openssl req -noout -text -in hogeserver.csr
主体者DN:自動で入力される サーバFQDN:使用予定のドメイン(wwwから入力) 利用管理者E-mail:管理者のメールアドレス 利用管理者氏名:管理者の氏名 利用管理者所属:〇〇研究科 とか Webサーバソフトウェア名等:apache2とかNginxとか dNSName:入力なし(1つの証明書で複数ドメインを運用する場合のみ必要)
cd /etc/key/ mkdir conf cd conf (以下はホームディレクトリにファイルがあるとした場合) cp ~/nii-odca4g7rsa.cer ./ cp ~/server.crt ./ cp ~/hogeserver.key ./
cat nii-odca4g7rsa.cer >> server.crt
SSLCertificateFile SSLCertificateKeyFile
SSLCertificateFile /etc/key/conf/server.crt SSLCertificateKeyFile /etc/key/conf/hogeserver.key
service apache2 restart
Enter passphrase for SSL/TLS keys for 127.0.1.1:443 (RSA):
cp hoge.key hoge.key.old cp hoge.crt hoge.crt.old cp nii-odca4grsa.cer nii-odca4grsa.cer.old
sudo apt install clamav clamav-daemon libclamunrar9
sudo systemctl status clamav-daemon.service
sudo service clamav-daemon restart
clamav-daemon.service - Clam AntiVirus userspace daemon Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/clamav-daemon.service.d └─extend.conf Active: active (running) since Fri 2022-10-28 07:00:00 JST; 7h ago Docs: man:clamd(8) man:clamd.conf(5) https://docs.clamav.net/ Main PID: 1000 (clamd) Tasks: 2 (limit: 10000) Memory: 572.0M CGroup: /system.slice/clamav-daemon.service └─1068 /usr/sbin/clamd --foreground=true
mkdir -p ~/.clamav-test/
cd ~/.clamav-test sudo clamscan -r
/home/hoge/.clamav-test/eicar.com: Win.Test.EICAR_HDB-1 FOUND /home/hoge/.clamav-test/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Infected files: 2 Time: 0.045 sec (0 m 0 s) Start Date: 2023:11:20 15:24:00 End Date: 2023:11:20 15:24:00
sudo clamscan -r
clamscan –infected –recursive –max-filesize=4095M –max-scansize=4095M –cross-fs=no $(mount | egrep -v 'type +(sysfs|proc)' | cut -d ' ' -f 3)