自室の端末からVPS(レンタルサーバー)に接続する際は、通常はsshを使用します。
“お名前.com”のVPSサーバー(確認時点ではCentOS6.2)でのsshは以下のような初期設定となっていました。
SSHのRPMパッケージ名を確認する
例)
# rpm -qa | grep ssh openssh-server-5.3p1-70.el6_2.2.x86_64 openssh-5.3p1-70.el6_2.2.x86_64 libssh2-1.2.2-7.el6_1.1.x86_64
sshのサーバーのパッケージ名は”openssh-server”です。
設定ファイルの保存場所の確認
例)
# rpm -qc openssh-server /etc/pam.d/ssh-keycat /etc/pam.d/sshd /etc/ssh/sshd_config /etc/sysconfig/sshd
ファイル名からすると、”/etc/sysconfig/sshd”がopenssh-serverのサーバーサービスの設定ファイルと推測できます。
設定ファイルの変更
管理人の環境では、rootユーザーによるログインが許可されている状態でした。
暗号化されているとはいえ、インターネット回線を介してログインする際にrootユーザーでログインするのはセキュリティ的に望ましくないかと思いますので許可しない設定に変更しました。
PermitRootLogin no
起動スクリプトの配置場所の確認
例)
# rpm -ql openssh-server | grep init /etc/rc.d/init.d/sshd
sshの再起動
例)
# /etc/rc.d/init.d/sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
iptablesの設定確認
管理人の環境では、ネットワークのパケットフィルタリングは、”iptables”で行っていました。
iptablesがsshのパケットをどのように設定しているか確認します。
※iptablesコマンドで確認する事もできます。管理人は、直接設定ファイルを取り扱う方法に慣れているため、こちらの方法を紹介します。
例)
# more /etc/sysconfig/iptables (SSHの部分のみ抜粋) -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
SSHはポート番号22番を使用していますので、宛先ポートが22番ポートの新規接続の入力パケットはすべて許可する設定になっています。
自端末が使用しているグローバルIPアドレスの確認
管理人のVPSサーバーは、ssh接続するのは管理人自身のみですので、管理人の自室端末のネットワークの送信元アドレスのみ許可する設定に変更しました。
自端末のIPアドレスはプライベートアドレスのため(グローバルアドレスは、ネットワーク回線業者からレンタルしているルーターでアドレス変換されています。)サーバー上で、下記コマンドで確認しました。
例)
# netstat -an | grep 22 tcp 0 52 (サーバーのIP):22 (自端末のIP):1072 ESTABLISHED
iptablesの設定変更
上記のsshの設定に自端末のIPアドレスが属するネットワークを追加しました。(常に同じグローバルIPアドレスが割り当てられるか分からなかったため、IPアドレスではなくネットワーク単位に設定しました。)
※iptablesコマンドで確認する事もできます。管理人は、直接設定ファイルを取り扱う方法に慣れているため、こちらの方法を紹介します。
例)許可するIPアドレスが、192.168.1.1の場合
# vi /etc/sysconfig/iptables (変更箇所) -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
設定変更後、iptablesを再起動します。
例)
# /etc/rc.d/init.d/iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ]関連記事の目次
-
OpenSSH
- レンタルサーバー(VPS)にSSHでログイン
- VPS(レンタル)サーバー上のssh初期設定確認
- SSH接続の仕組み
- OpenSSHの設定ファイル
- OpenSSHの設定をよりセキュアに
- CentOS Stream9のSSH設定(OpenSSH)
- WinSCPを使ってファイル転送
- iptablesを使ってCentOSのファイアウォール設定
- nmapでオープンしているポート番号とバージョンを確認
- CentOSで不要なサービスは起動しないようにする
- RPMパッケージのインテグリティチェック
- CentOSのumaskの設定
- cronで使用するファイルのパーミッション設定
- ユーザーホームディレクトリ内の権限設定をセキュアにする
- CentOSのパスワードファイルのパーミッション設定
- findコマンドでファイル書込権限をいっせいにチェック
- findコマンドでセットユーザ(グループ)IDが不要にセットされていないかチェック
- findコマンドで所有者、グループが存在しないファイルを抽出
- ログイン時などに表示されるシステムバナーを変更するには?
- CentOSのユーザーアカウントのパスワードポリシーを設定
- pam_cracklibモジュールでパスワードポリシーを設定
- pam_unix.soモジュールを使って過去のパスワード再使用を制限する
- システムコンソールでのrootログインを制限する方法
- suコマンドによるrootへのスイッチを制限する
- root権限でのコマンド実行、sudoだと監査ログが取得できる
- デーモン用アカウントなどに対しシェルを使用を無効にする
- パスワード認証を失敗時にアカウントをロックアウトする設定
- rootアカウントのPATH環境変数のセキュリティについて
- auditdを使ってシステム監査
- auditdのログ容量の設定
- auditd監査ルールの設定方法
- auditdで時間設定変更操作を監査する
- auditdでユーザー・グループ設定ファイル変更操作を監査する
- auditdでネットワーク関連の設定変更を監査する
- auditdでログイン記録のログファイルの変更を監査する
- auditdでファイル所有者や権限の変更に関するイベントを監査する
- auditdでsetuid、setgidプログラムの実行を監査する
- auditdでマウント操作を監査する
- auditdでファイル削除操作を監査する
- auditdでsudo設定ファイルに対する操作を監査する
- auditdでカーネルモジュールのロード、アンロードを監査する
- マシン再起動後にauditdの設定変更を有効にする設定
- ausearch、aureportで監査ログのサマリレポートを作成
- NTPのセキュリティを考慮した設定
- セキュリティを考慮してX Windowsを設定または削除する方法
- ファイルの改ざん対策用にTripwireを導入
- CentOSにホスト型侵入検知ソフトAIDE(Advanced Intrusion Detection Environment)を導入
- アイドルのシェルを自動で強制終了させるには?
- CentOSでコアダンプを無効にする方法
- Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整
- CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する
ネットワーク、ポート番号
rpmパッケージ、サービス
パーミッション
ログイン、認証、パスワード、アカウント制御
auditdでシステム監査
ツール
トラブルシューティング