#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 [[研究室関係]]