CentOS7でSSHを使う

CentOS7になって、iptablesがfirewalldになったりsystemctl使うようになったりしたので、6.x系から変わったところを中心に。

ユーザ関連

インストール中に一般ユーザを作成し、かつそのユーザでsudoコマンドを使いたい場合、インストール完了後に当該ユーザをwheelグループに追加する

gpasswd -a akari wheel

firewalld

結局、firewalldの設定はどこを見ているのか?

  1. firewalldが立ち上がると、各NICに対して「ゾーン」が紐付けされる
  2. ゾーンには「サービス」や「ポート」、「マスカレードの可否」といったルールが紐付けされている
  3. サービスのルールはxmlファイルに保存されていて、必要に応じて編集できる

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

sshdが待ち受けるポートとしてTCPの10022番を追加

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コマンドの相性が悪いのか、出力が中途半端なところで切れたりする

パケッ