CentOS7でSSHを使う
CentOS7になって、iptablesがfirewalldになったりsystemctl使うようになったりしたので、6.x系から変わったところを中心に。
ユーザ関連
インストール中に一般ユーザを作成し、かつそのユーザでsudoコマンドを使いたい場合、インストール完了後に当該ユーザをwheelグループに追加する
gpasswd -a akari wheel
firewalld
結局、firewalldの設定はどこを見ているのか?
- firewalldが立ち上がると、各NICに対して「ゾーン」が紐付けされる
- ゾーンには「サービス」や「ポート」、「マスカレードの可否」といったルールが紐付けされている
- このルールに従って、パケットを通したり捨てたりする
- サービスのルールはxmlファイルに保存されていて、必要に応じて編集できる
- 初期状態では、
/usr/lib/firewalld/services
に保存されているxmlファイルを参照している - ファイルを編集したいときは直接編集せず、
/etc/firewalld/services
にコピーして書き換える
- 初期状態では、
sshdの標準ルール
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>略</description>
<port protocol="tcp" port="22"/>
</service>
sshdのポートを変える場合
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
vi /etc/firewalld/services/ssh.xml
<port protocol="tcp" port="22"/>
↓
<port protocol="tcp" port="10022"/>
systemctl restart firewalld
ただ、手元の環境ではfirewalldの再起動がタイムアウトして失敗する。 設定に問題があるか、サービス間の依存関係に見落としがあるか、単にマシンの性能が足りないか(Celeron N3050でHyper-Vは重い)。 設定が終わったあとにrebootしたらちゃんと動いたのでよし。
SELinux
管理ツールのインストール
yum install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 10022
ちゃんと登録できたか確認
semanage port -l | grep ssh
SSH
sshdの設定変更
vi /etc/ssh/sshd_config
Port 10022
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
公開鍵認証に使うファイルのパーミッションに過不足があるとPermission denied
になるので注意
sshd再起動
systemctl restart sshd.service
systemctl status sshd.service
その他
MSYSgitとWindowsのpingコマンドの相性が悪いのか、出力が中途半端なところで切れたりする
パケッ