RHEL9で作る自宅サーバ:sshサーバの構築

RHEL9sshサーバパソコン自宅サーバ

RHEL9には最初からsshサーバが入っていて有効になっていますが、インターネットで公開できる設定になっている以下確認します。

[root@ace ~]# grep PermitRootLogin /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
# the setting of "PermitRootLogin without-password".
[root@ace ~]# grep UseDNS /etc/ssh/sshd_config
#UseDNS no
[root@ace ~]#
[root@ace ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: ena>
     Active: active (running) since Sun 2024-02-04 14:04:20 JST; 3min 10s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1827 (sshd)
      Tasks: 1 (limit: 23114)
     Memory: 3.3M
        CPU: 59ms
     CGroup: /system.slice/sshd.service
             mq1827 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

 2月 04 14:04:20 ace.zeke.ne.jp sshd[1827]: Server listening on 0.0.0.0 port 22.
 2月 04 14:04:20 ace.zeke.ne.jp sshd[1827]: Server listening on :: port 22.
 2月 04 14:04:20 ace.zeke.ne.jp systemd[1]: Started OpenSSH server daemon.
[root@ace ~]#

sshサーバの設定ファイルは/etc/ssh/sshd_configです。その中のPermitRootLoginパラメータは今まではyesになっていましたが、RHEL9からはprohibit-passwordに変更されたようですね。パスワード認証はできないようなっていましたので、良しとします。

[root@ace ~]# cat /var/log/secure
Feb  4 14:18:30 ace sshd[1878]: Received disconnect from 192.168.1.88 port 1076:11: authentication cancelled [preauth]
Feb  4 14:18:30 ace sshd[1878]: Disconnected from authenticating user root 192.168.1.88 port 1076 [preauth]
Feb  4 14:18:42 ace sshd[1884]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.88  user=root
Feb  4 14:18:45 ace sshd[1884]: Failed password for root from 192.168.1.88 port 1078 ssh2
[root@ace ~]#
Feb  4 14:18:30 ace sshd[1878]: Received disconnect from 192.168.1.88 port 1076:11: authentication cancelled [preauth]
Feb  4 14:18:30 ace sshd[1878]: Disconnected from authenticating user root 192.168.1.88 port 1076 [preauth]
Feb  4 14:18:42 ace sshd[1884]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.88  user=root
Feb  4 14:18:45 ace sshd[1884]: Failed password for root from 192.168.1.88 port 1078 ssh2
[root@ace ~]#

rootでログインできなくなっていることを確認!

また、IPアドレスからホスト名への逆引きをしないようにUseDNS noとしていましたが、これもRHEL9ではデフォルトになっていました。悪意あるユーザのホスト名はまともじゃないことが多いので、逆引きするだけ時間の無駄ですよね。

suコマンドを制限する

rootで直接sshでログインできなくなりました。ついでに、suコマンドを制限してrootになれるユーザを限定してしまいましょう。

[root@ace ~]#  grep "pam_wheel.so use_uid" /etc/pam.d/su
#auth           required        pam_wheel.so use_uid
[root@ace ~]# vi /etc/pam.d/su
[root@ace ~]#  grep "pam_wheel.so use_uid" /etc/pam.d/su
auth            required        pam_wheel.so use_uid
[root@ace ~]#
[root@ace ~]#
[root@ace ~]# grep ^wheel /etc/group
wheel:x:10:zeke
[root@ace ~]#

/etc/pam.d/suを編集して「#auth required pam_wheel.so use_uid」のコメントを外します。

すると、wheelグループに入っているユーザしかsuコマンドが使えなくなります。

ユーザーzekeはインストール時に管理者として作成するにチェックを入れておいたので、wheelグループに入っていました。

一般ユーザをwheelグループに入れるコマンドはusermod -G wheel ユーザ名 になります。

[zeke@ace ~]$ su -
パスワード:
最終ログイン: 2024/02/04 (日) 14:57:29 JST 日時 pts/1
[root@ace ~]#

rootになれることを確認!

Firewallの設定変更

[root@ace ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services:
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@ace ~]# firewall-cmd --permanent --add-service=ssh
success
[root@ace ~]# firewall-cmd --reload
success
[root@ace ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@ace ~]#

ファイヤーウォールにsshサービスが疎通できるように穴を開けときます。

お勧めのKindle本です!

コメント