ssh をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[sshでXを飛ばす>ssh/x]]
[[ssh/PortForwardSSH]]
[[SSHホストベース認証>ssh/ホストベース認証]]
[[ssh/ssh-agent]]
[[ssh/AllowUsers]]
[[windowsServer/sshd]]
[[windows/sshd]]
[[ssh/reverse]]
***ポート番号が異なる別な口が欲しい [#hd7e453e]
1つのnicで複数のssh受信が可能なportを持たせてみる.
何に役立つか?
「22番ポートは[&color(orangered){PermitRootLogin no};]で[...
「2222番ポートのsshは[&color(orange){PermitRootLogin ''ye...
とかとか
&ref(2023y03m06d_212945397.png,nolink,noborder);
#code(nonumber){{
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.1 (Blue Onyx)
[root@rockylinux9 ~]# getenforce
Enforcing
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# sed '/^#/d' /etc/ssh/sshd_config |...
Port 22
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Subsystem sftp /usr/libexec/openssh/sftp-server
X11Forwarding yes
[root@rockylinux9 ~]#
}}
&size(10){「&color(magenta){/etc/ssh/sshd_config.d/};」の...
これで
#code(nonumber){{
[saber@c ~]$ ssh -l root rockylinux9
root@rockylinux9: Permission denied (publickey,keyboard-i...
[saber@c ~]$
}}
と拒否される. 公開鍵をroot@rockylinux9に登録してでも拒否...
っでこれに穴をあける. 「port 2222」で穴をあけて、「Match ...
#code(nonumber){{
(SELinux対応)
[root@rockylinux9 ~]# semanage port --add --type ssh_port...
[root@rockylinux9 ~]# semanage port --list | grep ssh
ssh_port_t tcp 2222, 22
[root@rockylinux9 ~]#
(sshd_config設定)
[root@rockylinux9 ~]# sed '/^#/d' /etc/ssh/sshd_config |...
Port 22
Port 2222
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Subsystem sftp /usr/libexec/openssh/sftp-server
X11Forwarding yes
Match Address 192.168.0.3 LocalPort 2222
PermitRootLogin yes
PasswordAuthentication no <--不要かな
AllowUsers root
[root@rockylinux9 ~]# systemctl restart sshd
[root@rockylinux9 ~]# lsof -i:2222,22 -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1829 root 3u IPv4 30875 0t0 TCP *:222...
sshd 1829 root 4u IPv6 30884 0t0 TCP *:222...
sshd 1829 root 5u IPv4 30886 0t0 TCP *:22 ...
sshd 1829 root 6u IPv6 30888 0t0 TCP *:22 ...
[root@rockylinux9 ~]#
}}
っで2222にアクセス
#code(nonumber){{
[saber@c ~]$ ssh -l root rockylinux9 -p 2222
Last login: Mon Mar 6 22:11:56 2023 from 192.168.0.3
[root@rockylinux9 ~]#
}}
***脆弱性 [#t8af2203]
セキュリティー監査に引っかかった. 「使っている暗号」と「...
っで使われている暗号は「sshd -T」で判明する
#code(nonumber){{
:
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-c...
:
}}
&size(10){「ssh -Q cipher」で表示される暗号は相手方へ繋が...
このうちblowfish-cbc、cast128-cbc、3des-cbcのCBC系は脆弱...
#code(nonumber){{
Ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-c...
}}
っで確かめ。
この状態であえて「3des-cbc」を使って接続しようとすると下...
#code(nonumber){{
[saber@c ~]$ ssh -c 3des-cbc -l root centos7
Unable to negotiate with 192.168.0.107 port 22: no matchi...
[saber@c ~]$
}}
鍵交換のアルゴリズムの変更
同じく「sshd -T」から使われている鍵交換アルゴリズムは下記...
#code(nonumber){{
kexalgorithms curve25519-sha256,curve25519-sha256@libssh....
diffie-hellman-group16-sha512,diffie-hellman-group18-sha5...
}}
このうち「diffie-hellman-group1-sha1」が今後廃止されるそ...
#code(nonumber){{
kexalgorithms curve25519-sha256,curve25519-sha256@libssh....
diffie-hellman-group16-sha512,diffie-hellman-group18-sha5...
}}
これで対策は一応完了かな.
***アクセス制御 [#oe9b3ed6]
/etc/ssh/sshd_configの AllowUsers/AllowGroups で一応の制...
それ以外の方法として 「/etc/security/access.conf」 による...
PAMを使うのだが、「/etc/pam.d/sshd」の末尾に「account req...
そして「/etc/security/access.conf」を設定する
特定のグループのみを許可するなら「-:ALL EXCEPT root <グル...
***踏み台PCにトンネルを掘る [#v067ed2d]
#code(nonumber){{
ssh -L 33890:10.10.10.1:3389 user@192.168.0.200
}}
***/homeを共有していて authorized_keys もあるのにログイン...
ssh-keygenでパスフレーズなしの鍵を作り、公開鍵の中身を au...
でも他へsshするとpasswordが要求される...
.sshのフォルダは 700 パーミッション
.ssh/authorized_keys ファイルは 600 パーミッション
で問題があるなら
原因は SELinux.
解消方法は接続先にてrootで「setsebool -P use_nfs_home_dir...
#code(nonumber){{
setsebool -P use_nfs_home_dirs 1
(確認方法)
getsebool -a |grep use_nfs_home_dirs
}}
これで行けるかと.
原因解明にsshdのログをdebugレベルまで上げたら下記文言が見...
&size(10){sshd_configに「LogLevel debug」を入れてsshdを再...
#code(nonumber){{
Apr 18 15:15:58 n1 sshd[1968]: debug1: Could not open aut...
}}
***公開鍵を他サーバーへ登録 [#m705290a]
他サーバーへの authorized_keys へ公開鍵を追記するのは結構...
っで簡単にする方法があって「&color(magenta){ssh-copy-id};...
#code(nonumber){{
[illya@c ~]$ ssh-copy-id root@ms
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be instal...
/usr/bin/ssh-copy-id: INFO: attempting to log in with the...
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be install...
root@ms's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@ms'"
and check to make sure that only the key(s) you wanted we...
[illya@c ~]$
}}
この場合「/home/illya/.ssh/id_dsa.pub」が送られます. もし...
#code(nonumber){{
[illya@c ~]$ ssh-copy-id -i .ssh/id_rsa root@ms
}}
とします。
これは「openssh-clients」パッケージに同封されている
***鍵作成 [#p5746e39]
大抵は&color(green){ssh-keygen -t dsa};でパスフレーズを入...
&color(red){パスフレーズを別に入れなくて、リターンキーで...
#code(nonumber){{
local $ ssh-keygen -t dsa -b 1024 -f id_remote <---...
enerating public/private dsa key pair.
Enter passphrase (empty for no passphrase): <---...
Enter same passphrase again: <---...
Your identification has been saved in id_remote.
Your public key has been saved in id_remote.pub.
The key fingerprint is:
ce:d--------------------76:b5 foo@local
The key's randomart image is:
+--[ DSA 1024]----+
| .=+o=++. ..|
| +o ++.. .|
| .. =oo. E |
| = + |
| S . |
| + |
| o |
| |
| |
+-----------------+
#
}}
っで&color(green){-f};を指定したことで、実行した場所に
-秘密鍵 id_remote
-公開鍵 id_remote.pub
の2つ一組の鍵が作られます。
もし&color(green){-f};の指定がないと、使う暗号方式によるが
-秘密鍵 $HOME/.ssh/id_dsa
-公開鍵 $HOME/.ssh/id_dsa.pub
と既定の場所、ファイル名となる
***つかう [#u51dda9a]
公開鍵(id_remote.pub、既定ではid_dsa.pub)をsshで接続した...
#code(nonumber){{
local $ ftp remote
ftp> pub id_remote.pub
ftp> bye
}}
そして、相手先でsshで接続したいアカウントにこの公開鍵を含...
#code(nonumber){{
remote $
remote $ mkdir .ssh; chmod 700 .ssh
remote $ cat id_remote.pub >> .ssh/authorized_keys *...
remote $ chmod 600 .ssh/authorized_keys
remote $ rm id_remote.pub
}}
これでパスフレーズを使ってのssh接続の準備は整いました。パ...
接続する相手方(remote)の/etc/ssh/sshd_configの内容が、
#code(nonumber){{
PasswordAuthentication yes
}}
なら、明示的に秘密鍵ファイルを指定すると、パスフレーズを...
(割符が合わなければ)次に接続先のユーザの/etc/passwdを問わ...
#code(nonumber){{
local $ ssh -i ~/.ssh/id_remote -l foo remote ...
Enter passphrase for key '/home/foo/.ssh/id_remote ': ...
foo@remote's password: ...
remote $
}}
パスフレーズのみを使うのであれば、接続先(remote)の/etc/ss...
#code(nonumber){{
PasswordAuthentication no
}}
とする。
ちなみに接続先(remote)の/etc/ssh/sshd_configで
#code(nonumber){{
PermitEmptyPasswords no
}}
は、/etc/passwdでのパスワードがNULL禁止であって、パスフレ...
***めも [#edfec3b8]
どうしても公開鍵でしっぱいするなら恐らくSELinuxでしくじっ...
終了行:
[[sshでXを飛ばす>ssh/x]]
[[ssh/PortForwardSSH]]
[[SSHホストベース認証>ssh/ホストベース認証]]
[[ssh/ssh-agent]]
[[ssh/AllowUsers]]
[[windowsServer/sshd]]
[[windows/sshd]]
[[ssh/reverse]]
***ポート番号が異なる別な口が欲しい [#hd7e453e]
1つのnicで複数のssh受信が可能なportを持たせてみる.
何に役立つか?
「22番ポートは[&color(orangered){PermitRootLogin no};]で[...
「2222番ポートのsshは[&color(orange){PermitRootLogin ''ye...
とかとか
&ref(2023y03m06d_212945397.png,nolink,noborder);
#code(nonumber){{
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.1 (Blue Onyx)
[root@rockylinux9 ~]# getenforce
Enforcing
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# sed '/^#/d' /etc/ssh/sshd_config |...
Port 22
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Subsystem sftp /usr/libexec/openssh/sftp-server
X11Forwarding yes
[root@rockylinux9 ~]#
}}
&size(10){「&color(magenta){/etc/ssh/sshd_config.d/};」の...
これで
#code(nonumber){{
[saber@c ~]$ ssh -l root rockylinux9
root@rockylinux9: Permission denied (publickey,keyboard-i...
[saber@c ~]$
}}
と拒否される. 公開鍵をroot@rockylinux9に登録してでも拒否...
っでこれに穴をあける. 「port 2222」で穴をあけて、「Match ...
#code(nonumber){{
(SELinux対応)
[root@rockylinux9 ~]# semanage port --add --type ssh_port...
[root@rockylinux9 ~]# semanage port --list | grep ssh
ssh_port_t tcp 2222, 22
[root@rockylinux9 ~]#
(sshd_config設定)
[root@rockylinux9 ~]# sed '/^#/d' /etc/ssh/sshd_config |...
Port 22
Port 2222
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Subsystem sftp /usr/libexec/openssh/sftp-server
X11Forwarding yes
Match Address 192.168.0.3 LocalPort 2222
PermitRootLogin yes
PasswordAuthentication no <--不要かな
AllowUsers root
[root@rockylinux9 ~]# systemctl restart sshd
[root@rockylinux9 ~]# lsof -i:2222,22 -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1829 root 3u IPv4 30875 0t0 TCP *:222...
sshd 1829 root 4u IPv6 30884 0t0 TCP *:222...
sshd 1829 root 5u IPv4 30886 0t0 TCP *:22 ...
sshd 1829 root 6u IPv6 30888 0t0 TCP *:22 ...
[root@rockylinux9 ~]#
}}
っで2222にアクセス
#code(nonumber){{
[saber@c ~]$ ssh -l root rockylinux9 -p 2222
Last login: Mon Mar 6 22:11:56 2023 from 192.168.0.3
[root@rockylinux9 ~]#
}}
***脆弱性 [#t8af2203]
セキュリティー監査に引っかかった. 「使っている暗号」と「...
っで使われている暗号は「sshd -T」で判明する
#code(nonumber){{
:
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-c...
:
}}
&size(10){「ssh -Q cipher」で表示される暗号は相手方へ繋が...
このうちblowfish-cbc、cast128-cbc、3des-cbcのCBC系は脆弱...
#code(nonumber){{
Ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-c...
}}
っで確かめ。
この状態であえて「3des-cbc」を使って接続しようとすると下...
#code(nonumber){{
[saber@c ~]$ ssh -c 3des-cbc -l root centos7
Unable to negotiate with 192.168.0.107 port 22: no matchi...
[saber@c ~]$
}}
鍵交換のアルゴリズムの変更
同じく「sshd -T」から使われている鍵交換アルゴリズムは下記...
#code(nonumber){{
kexalgorithms curve25519-sha256,curve25519-sha256@libssh....
diffie-hellman-group16-sha512,diffie-hellman-group18-sha5...
}}
このうち「diffie-hellman-group1-sha1」が今後廃止されるそ...
#code(nonumber){{
kexalgorithms curve25519-sha256,curve25519-sha256@libssh....
diffie-hellman-group16-sha512,diffie-hellman-group18-sha5...
}}
これで対策は一応完了かな.
***アクセス制御 [#oe9b3ed6]
/etc/ssh/sshd_configの AllowUsers/AllowGroups で一応の制...
それ以外の方法として 「/etc/security/access.conf」 による...
PAMを使うのだが、「/etc/pam.d/sshd」の末尾に「account req...
そして「/etc/security/access.conf」を設定する
特定のグループのみを許可するなら「-:ALL EXCEPT root <グル...
***踏み台PCにトンネルを掘る [#v067ed2d]
#code(nonumber){{
ssh -L 33890:10.10.10.1:3389 user@192.168.0.200
}}
***/homeを共有していて authorized_keys もあるのにログイン...
ssh-keygenでパスフレーズなしの鍵を作り、公開鍵の中身を au...
でも他へsshするとpasswordが要求される...
.sshのフォルダは 700 パーミッション
.ssh/authorized_keys ファイルは 600 パーミッション
で問題があるなら
原因は SELinux.
解消方法は接続先にてrootで「setsebool -P use_nfs_home_dir...
#code(nonumber){{
setsebool -P use_nfs_home_dirs 1
(確認方法)
getsebool -a |grep use_nfs_home_dirs
}}
これで行けるかと.
原因解明にsshdのログをdebugレベルまで上げたら下記文言が見...
&size(10){sshd_configに「LogLevel debug」を入れてsshdを再...
#code(nonumber){{
Apr 18 15:15:58 n1 sshd[1968]: debug1: Could not open aut...
}}
***公開鍵を他サーバーへ登録 [#m705290a]
他サーバーへの authorized_keys へ公開鍵を追記するのは結構...
っで簡単にする方法があって「&color(magenta){ssh-copy-id};...
#code(nonumber){{
[illya@c ~]$ ssh-copy-id root@ms
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be instal...
/usr/bin/ssh-copy-id: INFO: attempting to log in with the...
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be install...
root@ms's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@ms'"
and check to make sure that only the key(s) you wanted we...
[illya@c ~]$
}}
この場合「/home/illya/.ssh/id_dsa.pub」が送られます. もし...
#code(nonumber){{
[illya@c ~]$ ssh-copy-id -i .ssh/id_rsa root@ms
}}
とします。
これは「openssh-clients」パッケージに同封されている
***鍵作成 [#p5746e39]
大抵は&color(green){ssh-keygen -t dsa};でパスフレーズを入...
&color(red){パスフレーズを別に入れなくて、リターンキーで...
#code(nonumber){{
local $ ssh-keygen -t dsa -b 1024 -f id_remote <---...
enerating public/private dsa key pair.
Enter passphrase (empty for no passphrase): <---...
Enter same passphrase again: <---...
Your identification has been saved in id_remote.
Your public key has been saved in id_remote.pub.
The key fingerprint is:
ce:d--------------------76:b5 foo@local
The key's randomart image is:
+--[ DSA 1024]----+
| .=+o=++. ..|
| +o ++.. .|
| .. =oo. E |
| = + |
| S . |
| + |
| o |
| |
| |
+-----------------+
#
}}
っで&color(green){-f};を指定したことで、実行した場所に
-秘密鍵 id_remote
-公開鍵 id_remote.pub
の2つ一組の鍵が作られます。
もし&color(green){-f};の指定がないと、使う暗号方式によるが
-秘密鍵 $HOME/.ssh/id_dsa
-公開鍵 $HOME/.ssh/id_dsa.pub
と既定の場所、ファイル名となる
***つかう [#u51dda9a]
公開鍵(id_remote.pub、既定ではid_dsa.pub)をsshで接続した...
#code(nonumber){{
local $ ftp remote
ftp> pub id_remote.pub
ftp> bye
}}
そして、相手先でsshで接続したいアカウントにこの公開鍵を含...
#code(nonumber){{
remote $
remote $ mkdir .ssh; chmod 700 .ssh
remote $ cat id_remote.pub >> .ssh/authorized_keys *...
remote $ chmod 600 .ssh/authorized_keys
remote $ rm id_remote.pub
}}
これでパスフレーズを使ってのssh接続の準備は整いました。パ...
接続する相手方(remote)の/etc/ssh/sshd_configの内容が、
#code(nonumber){{
PasswordAuthentication yes
}}
なら、明示的に秘密鍵ファイルを指定すると、パスフレーズを...
(割符が合わなければ)次に接続先のユーザの/etc/passwdを問わ...
#code(nonumber){{
local $ ssh -i ~/.ssh/id_remote -l foo remote ...
Enter passphrase for key '/home/foo/.ssh/id_remote ': ...
foo@remote's password: ...
remote $
}}
パスフレーズのみを使うのであれば、接続先(remote)の/etc/ss...
#code(nonumber){{
PasswordAuthentication no
}}
とする。
ちなみに接続先(remote)の/etc/ssh/sshd_configで
#code(nonumber){{
PermitEmptyPasswords no
}}
は、/etc/passwdでのパスワードがNULL禁止であって、パスフレ...
***めも [#edfec3b8]
どうしても公開鍵でしっぱいするなら恐らくSELinuxでしくじっ...
ページ名:
1