CentOSには最初からsshサーバが入っていて有効になっていますが、そのままではインターネットに公開できないので、設定を変更します。
[root@ace ~]# vi /etc/ssh/sshd_config
[root@ace ~]# cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin no
# the setting of "PermitRootLogin without-password".
[root@ace ~]#
[root@ace ~]# cat /etc/ssh/sshd_config | grep UseDNS
UseDNS no
[root@ace ~]#
[root@ace ~]# systemctl restart sshd
[root@ace ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>
Active: active (running) since Sun 2020-02-16 01:13:35 JST; 7s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1480 (sshd)
Tasks: 1 (limit: 25017)
Memory: 1.1M
CGroup: /system.slice/sshd.service
mq1480 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-p>
2月 16 01:13:35 ace.lo.zeke.ne.jp systemd[1]: Stopped OpenSSH server daemon.
2月 16 01:13:35 ace.lo.zeke.ne.jp systemd[1]: Starting OpenSSH server daemon...
2月 16 01:13:35 ace.lo.zeke.ne.jp sshd[1480]: Server listening on 0.0.0.0 port>
2月 16 01:13:35 ace.lo.zeke.ne.jp sshd[1480]: Server listening on :: port 22.
2月 16 01:13:35 ace.lo.zeke.ne.jp systemd[1]: Started OpenSSH server daemon.
[root@ace ~]#
sshサーバの設定ファイルは/etc/ssh/sshd_configです。その中のPermitRootLoginパラメータをyesからnoに変更します。これはsshからrootアカウントでログインできなくするためです。
不正アクセスしようとする人は、まずは既知のrootアカウントなどで適当なパスワードを使ってログインしようとします。
簡単なパスワードを使っていませんが、あまりにも不正ログイン試行が多いので、rootでログインできなくしたほうが安心します。
rootでログインできなくなっていることを確認!
また、IPアドレスからホスト名への逆引きをしないようにします。悪意あるユーザのホスト名はまともじゃないことが多いので、逆引きするだけ時間の無駄です。
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:
[root@ace ~]# usermod -G wheel zeke
[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コマンドが使えなくなります。
で、一般ユーザをwheelグループに入れて、
[zeke@ace ~]$ su -
パスワード:
最終ログイン: 2020/02/18 (火) 21:19:55 JST日時 pts/1
[root@ace ~]#
rootになれることを確認!
Firewallで不正アクセスをブラックホールへ
サーバ公開しているとわかりますが、sshサーバへの不正アクセスはとても多いです。既知のアカウント(rootなど)に対して適当なパスワードでログインを試みるログがたくさんあります。
複雑なパスワードにしておけばよいのですが、不安なので、日本国外のsshサーバへのアクセスはすべて遮断します。
手順は
firewall-cmd --permanent --new-zone=japan
firewall-cmd --permanent --zone=japan --add-service=ssh
firewall-cmd --permanent --zone=japan --add-source=::/0
wget -P /tmp https://ipv4.fetus.jp/jp.txt
firewall-cmd --permanent --new-ipset=JAPAN --type=hash:net
firewall-cmd --permanent --ipset=JAPAN --add-entries-from-file=/tmp/jp.txt
firewall-cmd --permanent --info-ipset=JAPAN
firewall-cmd --permanent --zone=japan --add-source=ipset:JAPAN
firewall-cmd --reload
です。以下のページを参考にさせていただきました。
ところが、「firewall-cmd –reload」コマンドを実行すると以下のエラーが出ます。
Error: COMMAND_FAILED: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public' failed: Error: Could not process rule: No such file or directory
insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 17 07:01:05 ace kernel: nft[2168]: segfault at 2ab9c ip 00007f79f8705978 sp 00007ffffb80f888 error 4 in libgmp.so.10.3.2[7f79f86ea000+96000]
Feb 17 07:01:05 ace kernel: Code: c1 48 29 c1 48 89 c8 75 44 4c 89 c2 48 8b 7f 08 48 8b 76 08 48 c1 fa 3f 48 89 d0 4c 31 c0 48 29 d0 eb 14 0f 1f 80 00 00 00 00 <48> 8b 14 c7 48 8b 0c c6 48 39 ca 75 1b 48 83 e8 01 48 83 f8 ff 75
Feb 17 07:01:05 ace systemd[1]: Created slice system-systemd\x2dcoredump.slice.
Feb 17 07:01:05 ace systemd[1]: Started Process Core Dump (PID 2169/UID 0).
Feb 17 07:01:05 ace systemd-coredump[2170]: Resource limits disable core dumping for process 2168 (nft).
Feb 17 07:01:05 ace systemd-coredump[2170]: Process 2168 (nft) of user 0 dumped core.
Feb 17 07:01:05 ace firewalld[844]: ERROR: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES ip saddr @JAPAN goto raw_PRE_japan' failed:
Feb 17 07:01:05 ace firewalld[844]: ERROR: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES ip saddr @JAPAN goto raw_PRE_japan' failed:
Feb 17 07:01:05 ace firewalld[844]: ERROR: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public' failed: Error: Could not process rule: No such file or directory#012insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public#012^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 17 07:01:05 ace firewalld[844]: ERROR: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public' failed: Error: Could not process rule: No such file or directory#012insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public#012^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 17 07:01:06 ace firewalld[844]: ERROR: COMMAND_FAILED: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public' failed: Error: Could not process rule: No such file or directory#012insert rule inet firewalld raw_PREROUTING_ZONES iifname "enp0s3" goto raw_PRE_public#012^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
CentOS7ではエラーは発生しない&インストール直後でもエラーは発生するということで、原因はCentOS8(コピー元のRHEL8起因かな?)のバグっぽいです。
この、エラーの回避方法も検討しましたが、無理っぽいです。今後のバグ修正を期待して、一旦保留とします。
※4月16日追記 バグが直ったようなので、Firewallを設定しました!
お勧めのKindle本です!
コメント