SSH、SFTPなどで接続する際に1回目は、鍵のハッシュ値の確認がきますがちゃんと確認してますか?(笑)
まぁ、だいたいOKして繋いじゃってるのではと思いますが、ハッシュ値の確認方法をメモ
sha256(デフォルト)
ssh-keygen -l -f id_ed25519
md5
ssh-keygen -l -f id_ed25519 -E md5
パスワード認証の場合は、ホスト鍵なので、
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_rsa_key
とかですね。
RHELを新規インストールする際に仮想マシンだと解像度がうまく設定されなく、800×600になってしまい、グラフィカルな画面の時にボタンが見切れて、エスパーしながら気合でおしていた件。
なにか対応できるだろうと思いながら、どうせテンプレートにする1回目だけだしと思いながら、その場しのぎで放置していたのですが、新規でインストールする機会ができたので、せっかくなので調査。
isoファイルで起動して
「Install ~ Linux ~」のときに「Tab」キー
画面下部に、起動パラメータが表示されるので最後に
inst.resolution=1024x768
を追加して、Enterして起動。(キーボードが英語配列になると思うので「=」は「^」かな)
起動後のコンソールのサイズが大きい場合の変更は以下にメモ
CentOS7 コンソールの解像度変更(tksm.org)
(件名がめんどくさいな(笑))
インターネットに接続していない環境だけど、ISOファイルなりはマウントできる状態でDVDイメージからパッケージを追加したい場合、あとあえてインストールDVDのバージョンでインストールしたい場合とか。
ISOファイルを/mntにマウント
mount -t iso9660 -o loop,ro /path/xxx.iso /mnt
/etc/fstabに書きたい場合
mkdir -p /media/dvdiso
/root/xxx.iso /media/dvdiso iso9660 loop,ro,auto,nofail 0 0
◆RHEL8以降の場合
[InstallMedia-BaseOS]
name=Red Hat Enterprise Linux 8 - BaseOS
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[InstallMedia-AppStream]
name=Red Hat Enterprise Linux 8 - AppStream
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
◆RHEL5,6,7の場合
[Server-DVD]
name=Red Hat Enterprise Linux $releasever - $basearch (DVD)
baseurl=file:///mnt/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
<参考URL>
Need to set up yum repository for locally-mounted DVD on Red Hat Enterprise Linux 8(RedHat)
アップデートまたはインストールに DVD iso を使用する Red Hat Enterprise Linux 5/6/7 の apache から配信されるローカルリポジトリーを作成する(RedHat)
update-crypto-policies をもう一つ
update-crypto-policiesで、ポリシーを「DEFAULT」のままSHA-1だけ有効にする方法
(なぜメモったか覚えてないのですが、なにかのパッケージをインストールしようとしたときに、弱くする必要があって、そこのガイドに書いてあったのでメモってあったのかな)
変更(反映はReboot必要)
update-crypto-policies --set DEFAULT:SHA1
戻す(戻すのもReboot必要)
update-crypto-policies --set DEFAULT
確認
update-crypto-policies --show
LEGACYにすると、弱くなりすぎるだろうということで、SHA-1のみであればこのコマンドもアリですよというところです。
SHA1のところは、ポリシーモディファイア(policy modifier)というらしいのですが、
/usr/share/crypto-policies/policies/modules,/etc/crypto-policies/policies/modulesあたりに格納されている様子
3.9. SHA-1 を再度有効に(Redhat)
How to customize crypto policies in RHEL 8.2(Redhat)
Rocky8なり9(Alma,CentOS,RHELでも)でリバースプロキシで古いCentOS5とか6のHTTPSにリバースプロキシしようとすると、TLSのポリシーが満たされないのでつながらない件
(古いLinuxは残さざるをえないが、SSL/TLSが1.1までしかできないといろいろNGなので、前段にリバースプロキシをおいて、隠蔽しよう作戦のため)
[remote xxx.xxx.xxx.xxx:443] AH01961: failed to enable ssl support [Hint: if using mod_ssl, see SSLProxyEngine]
AH00961: https: failed to enable ssl support for xxx.xxx.xxx.xxx:443 (example.jp)
100点満点かはおいといて暗号化ポリシーを弱く(DEFAULT→LEGACY)することで接続可能
参考URLにあるcurlなどのコマンドも同様
update-crypto-policies --set LEGACY
※その他(リバースプロキシApache側の設定)
SSLEngine on
SSLCertificateKeyFile path/to/file
SSLCertificateFile path/to/file
SSLCertificateChainFile path/to/file
ProxyRequests Off
SSLProxyEngine On
SSLProxyVerify none
ProxyTimeout 600
ProxyPass / https://example.jp/
ProxyPassReverse / https://example.jp/
「example.jp」は「/etc/hosts」ファイルにIPを参照できるようにしておくといいかもね。
<参考URL>
CentOS 8.0にしたらいくつかのURLに error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small でアクセスできなくなった(日々の覚書)
ホームゲートウェイ(PR-500MI)で、内部DNSのゾーンを作って、特定のドメイン(ゾーン)だけ内部IPを返答させたい場合。
→「トップページ > 詳細設定 > DNS設定の画面
サーバはIPv4なんだけど、設定画面での入力は、IPv4射影アドレスとやらで入れる必要あり。
ブラウザのアドレスバーに以下のようにいれるとIPv6のアドレスに変換してくれる機能が便利
http://[::ffff:192.168.0.1]
をいれると以下に変換されるのでこれを登録する
http://[::ffff:c0a8:1]/
参考URL
PR-500MIでDNSサーバーをIPv4で指定する(うにゃのすみか)
(追記)
内部DNSもIPv6のアドレスも接続OKにしないといけないはず、Allow-queryでIPv4のIPだけ書いてると繋がらなかったはず(未確認)
crontab内でdateコマンドでフォーマットした文字列をいれたいときは%はエスケープ必要でしたというメモ
例えばチェックプログラムの結果をメールで送信するけど、メールの件名(Subject)に日付をいれたい場合
0 * * * * chk.sh | mail -s "[CHK]-`/bin/date '+\%Y/\%m/\%d'`" abc@example.com
RHEL8でもAlmaLinux8でもよいのですが、WindowsのWMIを使ってイベントログを取得したくなったのでメモ
wmiをつつくパッケージがあればいいのですが、el8だったりel9に対応したやつが見当たらない。
で、探し回ったところ、Pandora FMS のパッケージでwmiが配布されているのでこれが拝借できそう。(el9は無い)
dnf install -y https://firefly.pandorafms.com/centos8/wmi-1.3.14-4.el7.art.x86_64.rpm
イベントログ取り出し方(例)
/usr/bin/wmic -U administrator%password //xx.xx.xx.xx "SELECT TimeGenerated,SourceName,Type,EventIdentifier FROM Win32_NTLogEvent Where LogFile='Application'"
Rocky Linux 9 がリリースされましたので、このサーバをアップデートしようと入れなおしたのですが、バックアップを取り忘れてしまい、いくつかの記事が飛んでしまいました(T_T)
コンテンツフォルダなどはちゃんと取っていたのですが、DBをちゃんとダンプしたのですが、ダンプしたフォルダをよけてなかった(笑)、結局DBは過去のバックアップから戻したので、結構前に戻ってしまいました。最近更新してなかったので、消えたのは数件だと思うのですが、自分でよく使ってたメモだったような気もするので、ガックシ。
Rocky Linux 9.0 Available Now
AlmaLinux 9 Now Available!
RockyでもAlmaでもどちらでもいいのですが、Almaは企業色もあり、現状は対応は早いのですが、(無いとは思いますが)商売っ気出してきてなにか利用制限されるとか、どっかに買収されてどうにかなるとかないですかね。Rockyは一応コミュニティベースなので、継続はされそうですが、資金やヒトのリソースが足りなくなってきて頓挫するとか。。とネガティブな事ばかり考えててもきりがないのですが(笑)
日本のネット記事などからは、対応も早いAlmaのほうが優勢にも見えますが、個人的にはRockyのほうが安心なのではと見てますがどうでしょうか。
UbuntuやDebianも悪くはないのですが、これもあくまで個人的にはですが、インストールするパッケージが結構カスタマイズされていて、すぐ使えるのはいいのですが、パッケージの設定が製品のデフォルトからどうカスタマイズされているかが気になって使いにくい感じがするんですよねー
slogin xxx とすると
no kex alg
で、繋がらない。
◆古いCentOS→(Rocky9|Alma9|RHEL9)
サーバ側のログ
/var/log/secure
May 15 13:11:18 sv01 sshd[12223]: Unable to negotiate with xx.xx.xx.xx port 44073: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 [preauth]
SHA1系が使えなくなっているのでSHA1を有効にする
(セキュリティは弱くなるのでインターネット公開などの場合は非推奨)
update-crypto-policies --set DEFAULT:SHA1
再起動
update-crypto-policies (SHA1を有効)
◆古いCentOS→Ubuntu20.04
要求されるキー交換アルゴリズムが対応できていないのでSSHサーバ側で対処
/etc/ssh/sshd_config
KexAlgorithms +diffie-hellman-group14-sha1
とか
KexAlgorithms +diffie-hellman-group1-sha1
group14のほうが強度は高そう、「+」は追加する意味なので忘れないこと
Ubuntu 20.04をESXi上で動かしたらsyslogにmultipathdのログが大量にでる対応
multipathd[791]: sda: add missing path
multipathd[791]: sda: failed to get udev uid: Invalid argument
multipathd[791]: sda: failed to get sysfs uid: Invalid argument
multipathd[791]: sda: failed to get sgio uid: No such file or directory
→ESXiから情報が取れないので、仮想マシンのパラメータをTRUEに変更
disk.EnableUUID = "TRUE"
※これ変えるとどうなるんだっけな
→とりあえず止めたい場合
/etc/multipath.conf
blacklist {
devnode "sd([a-z])"
}
systemctl restart multipathd.service
参考URL
https://tech.virtualtech.jp/entry/2020/07/07/124731(仮想化通信)
https://www.suse.com/support/kb/doc/?id=000016951(SUSE Support)
ChromeOSクローンとしては、CloudReadyがありますが、Androidアプリが使えないので、なんかいいのないかなと思ってたら、ちょっとグレーな方法だと思われるのですが、ChromeOSのリカバリイメージで復元すれば、本家のChromeOSとして動くんじゃねというのがあるようなので、使わなくなった中華PCがあるので試してみた。
Brunch Projectを使って作業します。
◆用意するもの
・UEFIブートできる素性のいいPC
・8GBか16GBぐらいのUSBメモリ
・https://www.linuxmint.com/download.phpからLinuxMintをUSBからブートして作業用に用意
・https://rufus.ie/からrufusでUSBブートメディアを作成するために用意
・https://github.com/sebanc/brunch/releases
brunch_r87_stable_20201227.tar.gzとかをダウンロードして解凍
・https://cros-updates-serving.appspot.com/
rammusのイメージで、上のBrunchに合わせたものをダウンロード「chromeos_13505.73.0_rammus_recovery_stable-channel_mp-v2.bin.zip」・https://raw.githubusercontent.com/shrikant2002/ChromeOS/master/install.shからインストール用スクリプトを用意
◆作業手順
1. 作業用のWindowsPCでRufusを起動して、LinuxMintをUSBへ書き込み
2. LinuxMintを焼いたUSBにエクスプローラーで適当にフォルダを作成して以下3つをコピー
a) brunch_r87_stable_20201227.tar.gz の解凍したファイル
b) chromeos_13505.73.0_rammus_recovery_stable-channel_mp-v2.bin.zipを解凍したイメージ
→ install.shに合わせるなら「rammus_recovery.bin」にリネーム
c) install.sh
3. ChromeOSにしたい、中身が消えてもいいPCで、作成したUSBでブートしてLinuxMintを起動
4. シェルを起動すると、/cdrom がUSB自身のフォルダになるので以下のようにインストール
cd /cdrom
sudo sh ./install.sh
5. メモ1
「/dev/sda」は違う可能性あり、eMMCなどの場合は、「/dev/mmcblk1」とかになるはず
lsblk とか df コマンドでディスクのデバイスを確認
6.メモ2
/cdrom はReadOnly(RO)なのでinstall.shが修正できないので
sudo mount -o remount,rw /cdrom
とかすれば、書き換えできるかも
7. メモ3
install.sh をWindowsで作成するとCR+LFになるのでLFにして保存して
おいたほうがいいかも
今後のアップデートとかどうなるかわかりませんが、とりあえずChromeOSとして起動して、自分のGoogleアカウントでログインするとAndroidアプリも使用可能です。
目的はSSHでトンネルしてそこにRDPしたかったのですが、
ConnectBot(Google Play)
Remote Desktop 8(Google Play)
を使えばできそうな感じ。(途中で切れる時があるのは回線の品質のせい?)
Linuxもインストールできるのでsshでトンネルしてrdesktopかxfreerdpでもできそうか?
一応、技術的にはできそうなところまで確認、WindowsでRDPするより画面のレスポンスが悪いような気がするのは、マシンの性能なのかRDPクライアントのせいか?
そもそもこのPCを使わなくなったのが、英語配列のキーボードのせいなので、Youtubeとかネットだけならいいのだけど、普段使いは、キーボードでストレスたまりそうなので、ドンキPCとか買ってきてやってみればいいかな(^^;
<参考URL>
公式 Chrome OS で Dell Inspiron 14-3452 を Chromebook 化してみた。(PC-FREEDOM)
GooglePlay入りの純粋な「ChromeOS」を普通のパソコンにインストールする方法(SMART ASW)
メールサーバが海外からのアクセスがうっとおしいので、日本だけの制限する。
いろいろググっていろんなパターンがあるのを参考にさせてもらいましたが、ゾーンを新しく作成してipsetを作ってファイルから読み込ませるのが自分的にすっきりしていたので、以下のような感じ。
#!/bin/sh
set -x
IPLIST=cidr.txt
#ホワイトリストなどあれば
touch ip.txt
#echo 127.0.0.1 > ip.txt
#echo xxx.xxx.xxx.xxx/24 >> ip.txt
#cidr.txt あれば一応退避
if [ -e $IPLIST ]; then
mv $IPLIST "${IPLIST}_${date}"
fi
# IPリストを取得する
wget http://nami.jp/ipv4bycc/$IPLIST.gz
gunzip -d $IPLIST.gz
# JPだけ抜き出す
sed -n 's/^JP\t//p' $IPLIST >> ip.txt
# 新しいゾーンを作成
firewall-cmd --permanent --new-zone=JP
firewall-cmd --permanent --zone=JP --set-target=ACCEPT
# 制限したいサービスを作成したzoneにいれる
firewall-cmd --permanent --zone=JP --add-service=smtp
firewall-cmd --permanent --zone=JP --add-service=submission
firewall-cmd --permanent --zone=JP --add-service=pop3
# ipsetを作成し、ファイルから取り込む
# deleteはエラーがでますが作り直す用にいれてあります
firewall-cmd --permanent --delete-ipset=jp_ip
firewall-cmd --permanent --new-ipset=jp_ip --type=hash:net
firewall-cmd --permanent --ipset=jp_ip --add-entries-from-file=ip.txt
firewall-cmd --permanent --zone=JP --add-source=ipset:jp_ip
# firewalldの再読み込み
firewall-cmd --reload
firewall-cmd --list-all-zone
<参考URL>
firewalldで国内IPのみ許可(システムエクスプレス株式会社)
CentOS8(samba-4.11.2)で、ファイル共有つくってWindows10で接続すると初回接続が遅い問題。
(たぶんSambaは関係ない)
Windows10が初回の接続時にWebDAVで接続を試している様子、Linux側はFirewalldでsambaしかあけてないのでhttpがDropとなるのでタイムアウト待ちで遅いように見える。(調べきれてないので想像もあり)
今回は、Webサーバは不要なのでblockゾーンにhttp入れればいいかとおもったけど、うまくいかなかったので、Firewalldでhttp開けておいた、Apacheとかは上がってなくもいい様子。
dnf --enablerepo=PowerTools install nkf
CentOS8(1905)の環境を(1911)にアップデートした際にfirewalldの仕様が変わったのか繋がらなくなってしまったのですが、仕様変更があったのか、使い方が間違っていたのかわからんのでメモ
状況としては、
インターフェースはens192のみで、publicゾーンでhttp,httpsを公開、srcアドレス追加してでDMZゾーンを作成して、制限したIPセグメントからは追加でSSHを許可するようにしてたのですが、以前は、dmzでマッチしたあとpublicも評価されていたようなのですが、1911からは、dmzゾーンだけの評価になったのか、publicのhttp,httpsが繋がらなくなってしまったような・・・
あたりまえだと言われたらそうなんだけど、オーバーライドしなくなったのかしらん。
dmz (active)
target: default
icmp-block-inversion: no
interfaces:
sources: xxx.xxx.xxx.0/24
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
推奨されないので外れてしまっているのですが。。。
鍵を作り直すのが面倒なやつがあるのでDSAキーで鍵認証できるように。
CentOS8(RHEL8)からupdate-crypto-policiesってやつで用意されているパターンをを変更することで暗号化ポリシーを簡単に変更できる
→現在の確認
update-crypto-policies --show
→設定変更(DEFAULT,LEGACY,FUTURE,FIPS)
update-crypto-policies --set LEGACY
ファイル格納フォルダ
/usr/share/crypto-policies
全部のポリシーがヨワヨワになるのも困るので、
SSHServerのみ、LEGACYへ置き換えてでDSAをOKにする
cd /usr/share/crypto-policies/DEFAULT/
\cp -p opensshserver.txt opensshserver.txt.org
\cp -f ../LEGACY/opensshserver.txt opensshserver.txt
systemctl restart sshd.service
参考
第3章 システム全体の暗号化ポリシーの使用(Redhat)
ところで、CentOS と 8 の間には「-」があるのが正しいのか?
待望?のCentOS-8がリリースされました、さっそくインストールしたわけですが、-boot.isoだとリポジトリがとれなくて、ミラーサイトのURLを適当にいれて、このサイトの家サーバにもインストール完了して、データの移行完了。
#仮想基盤は、-dvd.isoでいれましたが、家サーバの物理に入れるのは、DVD作るとサイズがデカイので二層DVDになったり、USBメモリも探すの面倒だったので、-boot.isoでいれてみた。
CentOS-8 (1905) リリースノート(wiki.centos.org)
CentOS7からは、大幅に変わった点はない感じですが、リリース直後は、Ubuntuなどとちがってパッケージ数が少なそうなので、EPELなど外部リポジトリなども使いたくなると困るかも。
と書いてみいけど、よく考えたら、PHP7になったり、ApacheはHTTP/2できるようになったり結構違うわ(笑)
ちょっと気になるのは「yum module list」で、モジュールという概念ができたこと、PHPとかApacheとかありますが、CentOS-8のサポート中で別の新しいバージョンがでてきて、同居はできないけど、新しいのに入れ替えは可能になるもってことでいいのかな?、CentOS7みたいにPHP5.4のままで、どうするよ?ということにはならない反面、どこかで入れ直ししないといけなくなるのでは?
「8-Stream」とかってローリングリリースタイプができた模様、すこしだけ新しいものを追っかけようみたいな感じ?
Postfixで送信する際にTLSで暗号化する件。
送信の場合は、証明書無くてもよかったことを知らなかったのでメモ
main.cf に以下を追加する
smtp_tls_security_level = may
smtp_tls_loglevel = 1
#smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_CAfile は、証明書の確認をするのですが、なければ無いで送信はできる模様(デフォルトはEmpty)
入れておけば証明書の検証もされる。
また、「/etc/pki/tls/cert.pem」はパッケージのアップデートで「ca-certificates」をアップデートしておかないと証明書が更新されないので注意。
◆ログサンプル
Trusted TLS connection established to aa.bb.cc[xxx.xxx.xxx.xxx]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Untrusted TLS connection established to xx.yy.zz[xxx.xxx.xxx.xxx]:25: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Ubuntuにしたら、
psql -l とかでPagerがlessとかで止まるのが面倒なので確認
psql
template1=# \pset pager off
→psql -lとかはこちらでないとうまくいかなかった
echo '\pset pager off' >> ~/.psqlrc
最近のコメント