#author("2022-04-11T10:25:40+09:00","hasegawa","hasegawa")
#author("2022-10-17T09:24:42+09:00","hasegawa","hasegawa")
[[研究室関係]]

https://www.server-world.info/query?os=Debian_10

#contents

*backportsの利用 [#m859f96a]
http://backports.debian.org/~
/etc/apt/source.listに
 deb http://http.debian.net/debian buster-backports main contrib non-free
を追加。
 # apt update
backportsのpackageをインストールする場合は、
 # apt install -t buster-backports install "package"

*追加ソフトのインストール [#d7ca6870]
 # apt install rsync vim emacs mew mozc roundcube mailman procmail awstats webalizer fonts-ipafont sudo ntp nfs-kernel-server fail2ban tcsh gitlab-ce clamav spamassassin
*ユーザの移行 [#s1895d94]
**ldapのインポート [#h9125b64]
 # atp-get install slapd ldap-utils
ldap管理者パスワードを適当に設定
 # /etc/init.d/slapd stop
 # dpkg-reconfigure slapd
 DN名:phys.shinshu-u.ac.jp
 O名: heplab
 MDBを選択
 slapdをパージした時にデータベースを削除しない
 古いldapv2を使わない。
 /var/backupに移動する。
現azusa上で、全てのアカウント情報をldif形式のファイルにダンプする。
 # /sbin/service slapd stop
 # /usr/sbin/slapcat -l all.ldif
 # /sbin/service slapd start
ダンプしたファイルを新azusa上にコピーし、不必要な部分(一番上のdn: dc=phys..とdn: cn=admin...のエントリ、この二つは、新azusaにslapdをインストールし、reconfigureしたときに設定しているので、既にエントリに含まれている)を削除する。ou=Groupを追加する。
 $ cat >Group.ldif
 dn: ou=Group,dc=phys,dc=shinshu-u,dc=ac,dc=jp
 objectClass: organizationalUnit
 ou: Group
 ^C
 $ 
%%後述するpostfixのメールを受信するために、mailというattributeが必要だが、これはstructural object classのobjectClass: accountではなく、objectClass: inetOrgPersonである。そのため、現azusaからダンプしたそれぞれのエントリに対し、account→inetOrgPersonに置き替え、さらに"sn:"(surnameの意味)と"mail:"のattributeを追加する。%%その後、
 # /etc/init.d/slapd stop
 # /usr/sbin/slapadd -l Group.ldif
 # /usr/sbin/slapadd -l all.ldif
 # /etc/init.d/slapd start
とすれば良いはず。
**ldapの設定 [#cf2ed74f]
***uid>=1000のユーザ(ldapで認証するユーザ)に対して最初にldapで認証する [#z0e5ff91]
/etc/pam.d/common-authで、
 auth [success=2 default=ignore] pam_unix.so nullok_secure
 auth [success=1 default=ignore] pam_ldap.so use_first_pass
を次のように変更する。
 auth [success=1 default=ignore] pam_succeed_if.so uid >= 1000 quiet
 auth [success=2 default=ignore] pam_unix.so nullok_secure
 atth [success=1 default=ignore] pam_ldap
***passwdでパスワードを変更できるようにする。 [#fce23f66]
passwdでパスワードの変更をできるようにするために、/etc/pam.d/common-passwordで
 password     [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass
を
 password        [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass
に変更する。さらに、簡単なパスワードを禁止する。
 # apt-get install libpam-cracklib
/etc/pam.d/common-passwordを変更する。
 password        requisite pam_cracklib.so retry=3 minlen=N dcredit=-n ucredit=-m lcredit=-k ocredit=-l difok=3
などとする。minlen=Nは最低N文字を要求、dcredit=-nは数字がn文字以上含まれる、ucredit=-mは大文字英字がm文字以上含まれる、lcredit=-kは小文字英字がk文字以上含まれる、ocredit=-lは記号がl文字以上含まれることを要求する。
***pam_ldap.secretの設定 [#l80dcb29]
passwdで変更できるようにするために、pam_ldap.secretにldap rootのパスワードを書いておく。
 # cat (ldap rootのパスワード) > /etc/pam_ldap.secret
 # chmod 600 /etc/pam_ldap.secret
***syslogに"bdb_equality_candidates (uid) not indexed"のようなメッセージが出る場合 [#kb8c095f]
ldapmodifyを使う。ただし、cn=admin,cn=configの管理者パスワードolcRootPWが/etc/ldap/slap.d/cn=config/olcDatabase={0}config.ldifに設定されていないので、直接編集して書き込み、設定が終わったらもとに戻す。
 $ slappasswd -s password
 {SSHA}qGQ06BQx2QtRzjQWdTMUph5JJ0hLU/uh
これを書き込む
 $ echo 'olcRootPW: {SSHA}qGQ06BQx2QtRzjQWdTMUph5JJ0hLU/uh' >> /etc/ldap/slap.d/cn\=config/olcDatabase\=\{0\}config.ldif
slapdを再起動する。
 # /etc/init.d/slapd restart
ログにcheck sum errorが出るが、これはファイルを手で編集したため。変更後に編集した部分をもとに戻せばよい。~
変更する内容を書き込んだファイルを用意する。
 $ cat > index.ldif
 dn: olcDatabase={1}hdb,cn=config
 changeType: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 ^C
変更する。
 # ldapmodify -x -D "cn=admin,cn=config" -W -f index.ldif
 Enter LDAP Password: password
/etc/ldap/slap.d/cn=config/olcDatabase={0}config.ldifをもとに戻して、一応、slapdを再起動。
 # /etc/init.d/slapd restart
***ldapクライアントの設定 [#o51eacb7]
[[計算機関係/Debian(stretch)をインストール#ke39ca55]]
**ローカルユーザのインポート [#y3ccc3e8]
hepl, tvrec, scecal, ilccal, caliceの/etc/passwd, /etc/shadowをインポートする。
*メールサーバの設定 [#d8cf89e0]
**mailサーバーをExim4からPostfixに変更 [#f0230030]
 # apt install exim4-
 # apt autoremove
 # apt -y install postfix postfix-ldap sasl2-bin

** Postfix+ldap [#d7763fc3]
ldapでユーザ管理しているため、メールを配送する際にldapとのやり取りが必要になる。/etc/postfix/main.cfで以下のように変更する。
 alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases,ldap:/etc/postfix/ldap-aliases.cf
/etc/postfix/ldap-aliases.cfを以下のように作成する。
 server_host = localhost
 search_base = dc=phys,dc=shinshu-u,dc=ac,dc=jp
 query_filter = (uid=%u)
 result_attribute = uid
query_filterの設定で色々できそうだが、とりあえずはuidが存在するかどうかでチェックし配送する。
**procmail [#l7b760ad]
%%/etc/postfix/main.cfでコメントを外し、%%
 mailbox_command = /usr/bin/procmail
%%とする。%%これをすると、.forward, .procmailrcが無いユーザのメールがMaildirではなく、/var/mail/以下に配送される。ユーザが個別に設定する。.forwardは以下のようにする。
 "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/"

**dovecotのインストール [#hc9417a0]
 # apt install dovecot dovcot-ldap
gidがsystem userの場合、認証がfailする。/etc/dovecot/conf.d/10-mail.confで、first_valid_gidを設定する。GIDが0(root)だとデフォルトでアクセスできない。
**avmavis-new+spamassassin+clamav [#v813bc52]
**amavis-new+spamassassin+clamav [#v813bc52]
 # apt install amavis-new spamassassin clamav

*mewの設定 [#u2204d2c]
ローカルユーザpop,imap,smtpを利用する際に認証が必要となる。特に、smtpでメールを送る際に.mew.elでmew-smtp-userの設定が必要になる。
 (setq mew-smtp-user "ユーザID")
pop3,imapはmew-pop-user, mew-imap-userにログイン名(ユーザID)がデフォルト値になっているので設定する必要がないが、mew-smtp-userのデフォルト値は"ユーザID@azusa.shinshu-u.ac.jp"になっているので、この値を設定しないと、認証できなくなる。

*apache2の設定 [#xca16e85]
-sslを使ったアクセスに限定する。
現行azusaから、/etc/apache2/site-available/000-default.confとdefault-ssl.confをコピーする(a2enmodは拡張子に.confがないとERROR: Site XXX does not exist!とエラーとなる)。
 # a2enmod ssl
 # a2enmod rewrite
 # a2ensite default-ssl
を行う。
-ユーザのpublic_htmlをみられるようにする。/etc/apache2/mod-availableに利用可能なモジュールがあるので、この中の、userdirがそのモジュール。有効にするには、
 # a2enmod userdir
-通常ユーザでもphpが使えるようにする
/etc/apache2/mods-available/php7.0.confで以下のようにコメントアウトする。
 #<IfModule mod_userdir.c>
 #    <Directory /home/*/public_html>
 #        php_admin_flag engine Off
 #    </Directory>
 #</IfModule>
-cgiを使えるようにする(mailmanのため)
 # a2enmod cgi

*mailman [#d3379e25]
mailmanをインストール
 # apt-get install mailman
サイトリストがない、と言ってくるが、設定ファイルやアーカイブをまるごとコピーすればよいはず。/var/lib/mailman/以下をコピーすればよいはず。
 # rsync -e ssh -rlopgt /var/lib/mailman newdomain.shinshu-u.ac.jp:/var/lib
 # rsync -e ssh -rlopgt /etc/mailman newdomain.shinshu-u.ac.jp:/etc

%%インストール終了後作成する。%%
 # newlist mailman ←不要
%%mailman で予め listname でメーリングリストを作成し、必要な設定をしておく。%%

/etc/mailman/mm_cfg.pyを適当に編集。ドメイン名(azusa.shinshu-u.ac.jp)を変更しなければ、編集不要。変更する場合は、
 DEFAULT_URL_HOST   = 'newdomain.shinshu-u.ac.jp'
などとする。インポートしたメーリングリストのurlの変更と、アーカイブのurlも変更する。
 # cd /var/lib/mailman/bin
 # ./mainmanctl stop
 # ./withlist -l -r fix_url he -u newdomain.shinshu-u.ac.jp
 # ./arch --wipe he
 # ./mainmanctl start

mailmanの設定例~
http://fedorasrv.com/postfix-mailman.shtml~
http://www.exim.org/howto/mailman21.html~
mailman main, mailman router, mailman transportの設定が必要。~
特に、
 OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes ← メーリングリストをWeb上から削除可能にする
を設定すると便利。

**postfixのための設定 [#za3f21dd]
/etc/mailman/mm_cg.pyを以下のように変更する。
 MTA='Postfix'
aliaseを作成する。
 # /usr/lib/mailman/bin/genaliases
**日本語文字コードでエラーとなる場合 [#vcd36a85]
mailmanでは日本語文字コードはEUC-JPになっている。システムがUTF-8の場合、文字化けやエラーが出るので、UTF-8に変更する。/usr/lib/mailman/Mailman/Default.pyで
 add_language('ja',    _('Japanese'),            'utf-8',      'ltr')
に変更する。
**httpからhttpsへの変更に伴う修正 [#r53d9931]
/etc/mailman/mm_cfg.pyで
 DEFAULT_URL_PATTERN = 'https://%s/mailman/
とする。ただし、これは今後作成するメーリングリストに適用され、既にあるリストには反映されない。それらを変更するには以下のようにする。
 # withlist he
 he のリストを読み込中 (ロック解除)
 変数 `m' が he の MailList インスタンスです
 >>> m.Lock()
 >>> m.web_page_url
 'http://azusa.shinshu-u.ac.jp/cgi-bin/mailman
 >>> m.web_page_url='https://azusa.shinshu-u.ac.jp/cgi-bin/mailman/'
 >>> m.web_page_url
 'https://azusa.shinshu-u.ac.jp/cgi-bin/mailman/'
 >>> m.Save()
 >>> 
 リストをロック解除 (保存はしてません): he
 最終処理中
 #

*awstats [#w26dcdd3]
/etc/awstats/awstats.conf, awstats.conf.localを引き継ぐ。/etc/apache2/sites-available/default.heplをファイルを引き継ぎ、
 # a2ensite default.hepl
 # /etc/init.d/apache2 reload
する。cronの設定を変更する。/etc/cron.d/awstatsで、実行ユーザをrootに変更。/etc/cron.daily/awstatsを引き継ぐ。データの引き継ぐ。
 /var/cache/awstats/awstats
 /var/lib/awstats

*dns [#m276b13a]
 # apt install bind9 dnsutils
現azusaから/etc/bind以下をコピー。
**エラー named error (insecurity proof failed) resolvingが出た場合 [#z4a59995]
/etc/bind/named.conf.optionsで、
 dnssec-validation no; <-autoから
とする。http://blog.livedoor.jp/haruchaco/archives/1610376.html参照。
*ビデオサーバー [#kba693c2]
 # apt install ffmpeg
現azusaから/var/www/.ssh以下をコピー。www-dataにowner,groupを変更。

*fail2ban [#y1d8b319]
 # apt install fail2ban
iptablesにルールを設定する模様。設定例https://www.chrissearle.org/2015/06/16/replacing-denyhosts-with-fail2ban-for-debian/

*gitlab-ce [#ufbee4ba]
現在のサーバからバックアップを取る。
 # gitlab-rake gitlab:backup:create
/var/opt/gitlab/gitlab/backupsの下に1617433928_2021_04_03_13.10.2_gitlab_backup.tarのようなファイルができるのでこれを新しいサーバへrestoreする。
 # gitlab-rake gitlab:backup:restore BACKUP=1617433928_2021_04_03_13.10.2_gitlab_backup.tar
/etc/gitlab以下のファイルもコピーする。設定をreconfigureし、変更を反映させる。
 # gitlab-ctl reconfigure
 # gitlab-ctl restart

*phpの設定 [#g31d9c2e]
roundcubeの添付ファイルやpukiwikiのアップロードファイルのサイズの上限を変える。/etc/php/7.X/apache2/php.iniで、
 post_max_size = 20M
 upload_max_filesize = 20M
と変更し、apache2を再起動する。
 # systemctl restart apache2.service

*bind [#l129cb3b]
 # apt install bind9
現azusaから/etc/bind以下のファイルをコピー。

*nfs [#t8049dfd]
 # apt install nfs-kernel-server
現azusaから/etc/exportsをコピー。ビデオ・サーバがマウントするため。

*Let's Encrypt [#mdbab360]

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/***.shinshu-u.ac.jp/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/***.shinshu-u.ac.jp/privkey.pem
   Your cert will expire on 2021-06-22. 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"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

*roundcubeの設定 [#d3745f62]
認証を行わないようにする。/etc/roundcube/config.inc.phpで、
 $config['smtp_server'] = 'localhost';
 $config['smtp_port'] = 25;
 $config['smtp_user'] = '';
 $config['smtp_pass'] = '';
とする。
 # systemctrl restart apache2


[[研究室関係]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS