2017/04/25
サーバーのOSインストールが終わり、次の日sshログインをしたら次のようなメッセージがでた。
1 2 3 4 5 |
------------------- Last failed login: Thu Sep 15 14:49:20 JST 2016 from 221.229.172.66 on ssh:notty There were 1377 failed login attempts since the last successful login. Last login: Wed Sep 14 22:07:32 2016 from bb_dyn_pb-146-88-39-182.violin.co.th ------------------- |
1377回、不正ログインが試みられていたので、sshのセキュリティを強化しました。
以下、作業ログです。
結果、不正アクセスはなくなり、効果はありました。
目次
1.ポート番号を変更
1-1. 新しく設定するポート番号を指定
1 2 3 4 5 6 7 8 |
vi /etc/ssh/sshd_config 以下を追加 - - - - - - - - - # 既存のポート番号 Port 22 # 新しいポート番号 Port 9999 - - - - - - - - - |
note : ポート番号は 1-65535 の好きな番号から、使用していないポートを選ぶ
1-2. sshdを再起動
1 |
systemctl restart sshd.service |
※ エラーがでる場合、SeLinuxにブロックされていないか確認
1-3. 確認
1 2 3 4 5 |
netstat -tanp 設定したポートがLISTENになっていたらOK ------------ tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 25021/sshd ------------ |
1-4. firewalldの設定
設定ファイルをコピー
1 |
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-alt.xml |
現行ssh用の設定ファイルをコピーして、新しい設定用のファイルを作成する。
1 2 3 4 5 6 7 8 9 10 |
vi /etc/firewalld/services/ssh-alt.xml 以下、書き込む ---------------------------------- <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="9999"/> </service> ---------------------------------- |
firewalld をリロードし、今保存したファイル(ssh-alt)を読み込ませる
1 |
firewall-cmd --reload |
サービスを追加
1 2 |
firewall-cmd --add-service=ssh-alt firewall-cmd --permanent --add-service=ssh-alt |
サービスが追加されたか確認
1 2 3 4 5 |
firewall-cmd --list-all ↓が見つかったらOK --------------------- services: dhcpv6-client ssh ssh-alt --------------------- |
念の為リロードして、permanent設定が効いていることを再確認
1 2 |
firewall-cmd --reload firewall-cmd --list-all |
1-5. ローカルで設定ファイルを変更
SFTPクライアントなどのポートも変更し、
アクセスできたら OK
1-6. ポート22を、firewalld のサービスから削除
1 2 3 4 5 6 7 8 9 |
firewall-cmd --remove-service=ssh firewall-cmd --permanent --remove-service=ssh firewall-cmd --reload firewall-cmd --list-all 以下の行に、sshが入っていなければOK ---------------------- services: dhcpv6-client ssh-alt ---------------------- |
一度、sftpを22に戻してチェックしてみる。
接続できなかったらOK。ポートを元に戻す。
1-7. /etc/ssh/sshd_config から port22 の削除
1 2 3 4 5 6 |
vi /etc/ssh/sshd_config ----------------------- Port 22 ↓ # Port 22 ----------------------- |
sshd を再起動
1 |
systemctl reload sshd |
参考:
CentOS7でsshのポートを変更する(firewalld, SELinux) – SEGVな毎日
CentOS 7 で sshd のポートを変更する(firewalld, SELinuxの設定) | CentOS | daily memorandum 3.0.0
linux – What is the maximum port number? – Server Fault