■jessie を stretch にアップグレードしてみた。(簡易版)
結論として動作には問題ないけれど、syslogのエラー具合から、
残り予備系やコールドスタンバイ含め6台はもう少し後でアップデートした方が良さそう。
空き領域も十分にあり、
以下でおおよそのパッケージは確認済みなので、
私の環境での躓き箇所はないはず。
jessieにchroot-stretchを導入する。
http://labunix.hateblo.jp/entry/20170711/1499781812
■以下を参考にアップグレードしてみる。
How to upgrade Debian 8 Jessie to Debian 9 Stretch
https://linuxconfig.org/how-to-upgrade-debian-8-jessie-to-debian-9-stretch
第5章 stretch で注意すべき点
https://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html
第4章 Debian 8 (jessie) からのアップグレード
https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html
■一応自身のナレッジも参考に。
WheezyからJessieにアップグレードしてみた。(簡易版)
http://labunix.hateblo.jp/entry/20150531/1433077890
■現在のjessieを最新化
$ cat ./myscripts/update.sh
echo -e "update\nupgrade\nautoremove\nautoclean" | \
awk '{print "apt-get -y "$1};END{print "apt-get clean all"}' | sudo sh
$ sudo ./myscripts/update.sh
■不完全なインストールパッケージの削除と確認
$ sudo apt-get dist-upgrade
$ dpkg -l | awk '/^rc/{print "apt-get purge -y "$2}' | sudo sh
$ sudo dpkg --audit
$ sudo dpkg -C
$ sudo apt-mark showhold
$ sudo ./myscripts/update.sh
■現在のバージョンとサービスの確認。
クライアントなので大したサービスは稼働していない。
chkconfigは個別にインストールしていないと使用出来ないはず。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.8 (jessie)
Release: 8.8
Codename: jessie
$ cat /etc/debian_version
8.8
$ /sbin/runlevel
N 5
$ sudo chkconfig --list | awk '/5:on/{print $1}' | column
acpi-fakekey clamav-daemon iptables rmnologin uml-utilities
acpi-support clamav-freshclam irqbalance rsync uuidd
acpid cpufrequtils loadcpufreq rsyslog virtualbox
anacron cron motd saned vmware-USBArbitrator
atd dbus ntp schroot vtun
binfmt-support fail2ban plymouth ssh xen
bluetooth gdm3 postfix sudo xendomains
bootlogs gdomap rc.local sysstat
$ sudo systemctl list-unit-files --type=service | \
awk '!/static|disabled|masked|STATE|listed./{gsub(".service","",$1);print $1}' | column
accounts-daemon dbus-org.bluez NetworkManager
anacron-resume dbus-org.freedesktop.ModemManager1 pppd-dns
anacron dbus-org.freedesktop.nm-dispatcher rsyslog
atd display-manager ssh
binfmt-support gdm sshd
bluetooth getty@ syslog
clamav-daemon hwclock-save unattended-upgrades
clamav-freshclam ModemManager
cron NetworkManager-dispatcher
■現在の3rdパーティのパッケージに特に影響無い。
clispやprimeは別システムでも動作するので、無視出来る。
$ sudo aptitude search '~o' | sed -e 's/^i\| A \|- .*\| //g' | column
app-install-data libprogressbar-ruby1.8
automake1.10 librtmp0
clisp libruby1.8
cpp-4.6 libruby1.9.1
crossover:i386 libsary-ruby1.8
ffmpeg libsary10
gcc-4.6 libsuikyo-ruby1.8
gcc-4.6-base libswscale2
gcj-4.7-base libtasn1-3
gcj-4.7-jre libtiff4
gcj-4.7-jre-headless libtiff4-dev
gcj-4.7-jre-lib libtiffxx0c2
icedtea-6-jre-cacao libudev0
icedtea-6-jre-jamvm libva-intel-vaapi-driver
libavcodec53 libx264-123
libavdevice53 libxen-4.1
libavfilter2 linux-headers-3.2.0-4-amd64
libavformat53 linux-headers-3.2.0-4-common
libavutil51 linux-image-3.2.0-4-amd64
libboost-iostreams1.49.0 linux-kbuild-3.2
libclamav6 linux-source-3.2
libffi5 openjdk-6-jre
libgcj13 openjdk-6-jre-headless
libgcj13-awt openjdk-6-jre-lib
libgcrypt11 prime
libgnutls26 prime-dict
libjpeg8 python2.6-minimal
libjpeg8-dev ruby1.8
libmpc2 ruby1.9.1
libopencv-core2.3 suikyo-table
libopencv-imgproc2.3 xen-hypervisor-4.1-amd64
libopenjpeg2 xen-utils-4.1
libprocps0 xfonts-mathml
■jessie から stretch にAPTの取得元を変更する。
wheezyから使っているマシン。
「ftp」プロトコルは既に廃止になっているので、「http://」のみであることを確認。
$ sudo cp /etc/apt/sources.{list,list.jessie}
$ sudo sed -i -e 's/jessie/stretch/g' /etc/apt/sources.list
$ cat /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ stretch main
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main
deb http://ftp.jp.debian.org/debian/ stretch-updates main
deb-src http://ftp.jp.debian.org/debian/ stretch-updates main
■stretch へのアップデートシミュレーション
重要なパッケージがあれば事前に「upgradable.txt」で確認しておく。
$ sudo apt-get update
$ sudo apt list --upgradable > upgradable.txt
WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.
■stretch へのアップグレード
$ ./myscripts/update.sh
$ sudo apt-get dist-upgrade -y
$ sudo dpkg --configure -a
...
処理中にエラーが発生しました:
fail2ban
$ sudo dpkg-reconfigure locales
■jessieパッケージのままのアプリケーションを再インストール
バージョンを含むパッケージもあることで危険度が急激に増すため、この方法はお勧めしない。
個別に確認した方がベター。
$ dpkg -l | awk '/^ii.*jessie/ {print $2}' | tr '\n' ' ';echo
$ dpkg -l | awk '/^ii.*jessie/ {print "apt-get install --reinstall -y ""$2}'
$ sudo aptitude search '~o'
$ dpkg -l | awk '/^rc/{print "apt-get purge -y "$2}' | sudo sh
$ sudo dpkg --audit
$ sudo dpkg -C
$ sudo apt-mark showhold
$ sudo ./myscripts/update.sh
■fail2banのインストール
$ sudo apt-get install -y fail2ban
$ ./myscripts/update.sh
■システムの再起動
$ sudo shutdown -r now && exit
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.0 (stretch)
Release: 9.0
Codename: stretch
■普段使う動作に問題はないが、syslogにバグらしきエラーが大量に出力される。
$ sudo awk '/error|warn|crit|fail/i && /02:5[23]/' /var/log/syslog
$ sudo journalctl -b | awk '/Operation not permitted/' | wc -l
1021
■待っている間にサーバもアップデート。
サーバ側の方が3rdパーティ製アプリがsplunkのみと少なかったので削除で対処。
$ sudo ./myscripts/update.sh
$ sudo apt-get dist-upgrade
$ dpkg -l | awk '/^rc/{print "apt-get purge -y "$2}' | sudo sh
$ sudo dpkg --audit
$ sudo dpkg -C
$ sudo apt-mark showhold
$ sudo ./myscripts/update.sh
$ sudo chkconfig --list | awk '/5:on/{print $1}' | column
acpid motd saned
anacron network-manager schroot
apache2 nmbd smbd
atd ntp snmpd
bootlogs postfix snmptrapd
cron postgresql speech-dispatcher
dbus rc.local squid3
fail2ban rmnologin ssh
hddtemp rsyslog xrdp
lightdm samba-ad-dc
$ sudo aptitude search '~o' | sed -e 's/^i\| A \|- .*\| //g' | column
splunk
$ sudo apt-get purge -y splunk
$ sudo rm -fr /opt/splunk
$ sudo cp /etc/apt/sources.{list,list.jessie}
$ sudo sed -i -e 's/jessie/stretch/g' /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt list --upgradable > upgradable.txt
$ ./myscripts/update.sh
$ sudo apt-get dist-upgrade -y
$ sudo dpkg --configure -a
...
処理中にエラーが発生しました:
fail2ban
xrdp
$ sudo apt-get purge -y fail2ban xrdp
$ sudo dpkg-reconfigure locales
$ dpkg -l | awk '/^ii.*jessie/ {print $2}' | tr '\n' ' ';echo
$ dpkg -l | awk '/^ii.*jessie/ {print "apt-get install --reinstall -y ""$2}'
$ sudo aptitude search '~o'
$ dpkg -l | awk '/^rc/{print "apt-get purge -y "$2}' | sudo sh
$ sudo dpkg --audit
$ sudo dpkg -C
$ sudo apt-mark showhold
$ sudo ./myscripts/update.sh
■削除した2パッケージのインストール
$ sudo apt-get install -y fail2ban xrdp
$ sudo shutdown -r now && exit
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.0 (stretch)
Release: 9.0
Codename: stretch
■不要なサービスがないかチェック。
SambaはNetBIOS無効なはずだがUDPだけ、137,138が待ち受けている。
$ sudo netstat -anup | awk '/0.0.0.0:[0-9]/'
udp 0 0 0.0.0.0:52283 0.0.0.0:* 843/(squid-1)
udp 0 0 0.0.0.0:40776 0.0.0.0:* 543/snmpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 733/ntpd
udp 0 0 0.0.0.0:137 0.0.0.0:* 856/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 856/nmbd
udp 0 0 0.0.0.0:514 0.0.0.0:* 468/rsyslogd
$ sudo testparm -s 2>/dev/null | grep netbios
disable netbios = Yes
■普段使う動作に問題はないが、syslogにバグらしきエラーが大量に出力される。
$ sudo awk '/error|warn|crit|fail/i && /02:5[23]/' /var/log/syslog
$ sudo journalctl -b | awk '/Operation not permitted/' | wc -l
1021
■脆弱性診断結果から、境界UTMのFW、IPS、アプリケーションコントロール、WAFを強化しておく。
$ cd myscripts; \
wget https://raw.githubusercontent.com/labunix/penetration/master/penetration.sh; \
cd ~;
$ dpkg -l | grep "^ii.*nmap" || sudo apt-get install -y nmap;\
sudo ./myscripts/penetration.sh 127.0.0.1
ii nmap 7.40-1 amd64 The Network Mapper
Warning: The -P0 option is deprecated. Please use -Pn
Starting Nmap 7.40 ( https://nmap.org ) at 2017-07-17 02:38 JST
NSE: Loaded 143 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 02:38
Completed NSE at 02:38, 0.00s elapsed
Initiating NSE at 02:38
Completed NSE at 02:38, 0.00s elapsed
Initiating SYN Stealth Scan at 02:38
Scanning localhost (127.0.0.1) [65535 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 25/tcp on 127.0.0.1
Discovered open port 3389/tcp on 127.0.0.1
Completed SYN Stealth Scan at 02:38, 7.91s elapsed (65535 total ports)
Initiating Service scan at 02:38
Scanning 4 services on localhost (127.0.0.1)
Completed Service scan at 02:38, 6.05s elapsed (4 services on 1 host)
Initiating OS detection (try #1) against localhost (127.0.0.1)
NSE: Script scanning 127.0.0.1.
Initiating NSE at 02:38
...