root になれるユーザーの制限

今回は、su コマンドでroot になれるユーザーを制限するPAM を設定していきます。まず、/etc/login.defs の最下行に、

SU_WHEEL_ONLY yes

を追記。次に、useradd コマンドで、ユーザーをwheel グループに加えます。

usermod -aG wheel username

つづいて、/etc/pam.d/su に以下の行を追加、

auth  required  pam_wheel.so use_uid group=wheel

上記設定で、root になれるユーザーをwheel グループのみに制限できます。

参考URL: http://www.atmarkit.co.jp/ait/articles/0108/18/news003_3.html

CentOS7 の公開鍵認証でのSSHログイン

今回ははCentOS7 における、公開鍵認証でのTeraTerm ターミナルエミュレータによるSSH ログインを設定していきます。

まず、wheel グループに加えたユーザーのホームディレクトリで公開鍵を保存する隠しディレクトリ、.ssh を作成します。つづいてroot にスイッチしてパーミッションを一時的に777 に設定します。

$ mkdir .ssh
$ su (switch user してroot のパスワード入力
# chmod 777 .ssh

次に、TeraTerm のメニューバーの[設定]-[SSH鍵生成(N)…] から公開鍵と秘密鍵を[生成(G)] ボタンをクリックするとパスフレーズを求められるので入力、再入力をして生成します。

[公開鍵の保存] と[秘密鍵の保存] ボタンをクリックしてそれぞれ、id_rsa.pub, id_rsa という名前(デフォルト)でホストの適当なフォルダに保存します。

次にエクスプローラで、id_rsa.pub ファイルをホームディレクトリ上のTeraTerm 画面にドラッグ&ドロップすると以下の画面が表示されるので下図のように、SCP:[.ssh] と入力してファイル転送します。

再びターミナルに戻り、転送した公開鍵をauthorized_keys という名前に変更。(WinSCPなど複数の鍵を追加するときは、cat id_rsa.ppk >> authorized_keys など)鍵のパーミッションを600 に、.ssh ディレクトリのパーミションを700 に変更します。

# cd .ssh
# mv id_rsa.pub authorized_keys
# chmod 600 authorized_keys
# chmod 700 .

それから/etc/pam.d/sshd に以下の行を追記、

account    required     pam_nologin.so
account    required     pam_access.so (追記

デフォルトでは、/etc/security/access.conf を参照しますが、

account required  pam_access.so accessfile=/dir/to/ssh_access.conf

で指定したパスの.conf ファイルを指定することもできます。

一方、/etc/security/access.conf に +:wheel:ALL と、+:username:ALL と、– : ALL: ALL を追記。

# Disallow non-local logins to privileged accounts (group wheel). (の付近
#
#-:wheel:ALL EXCEPT LOCAL .win.tue.nl
+:wheel:ALL (追記
+:username:ALL(追記

# All other users should be denied to get access from all sources.
#- : ALL : ALL (その他のすべてのユーザーを拒否
- : ALL : ALL (wheel グループ以外をアクセス制限するには、- : ALL EXCEPT wheel : ALL

最後に/etc/ssh/sshd_config に公開鍵認証の設定をして

#ServerKeyBits 1024
ServerKeyBits 2048 (たぶん、必要

#PubkeyAuthentication no
PubkeyAuthentication yes (公開鍵認証をyes

#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication no (パスワード認証をno

sshd 再起動、ログアウトします。

# systemctl restart sshd

TeraTerm の新しいショートカットのプロパティを以下の属性で作ると、1クリックで公開鍵認証でログインできると思います。

"C:\Program Files (x86)\teraterm\ttermpro.exe" localhost:22 /ssh2 /auth=publickey  /user=username /ask4passwd /keyfile="C:\pass/to/id_rsa"

ログインできない場合、原因はいろいろあると思いますがfirewalld でのポート開放(SSHのポート番号の変更をしたとき。)、鍵やディレクトリの所有権、SeLinux のコンテキストの確認、PAM の書式(設定ファイルの行の前後位置)、ローカル、リモートでのアクセス制限、IPの設定はどうなっているなどを確認してみて下さい。

参考URL:http://qiita.com/tjinjin/items/ca6f5518e881bdf5488c

Linuxのパスワードポリシー

/etc/pam.d/system-auth のauth行にpam_tally2.soを新規追加

auth        required      pam_env.so
auth        required      pam_tally2.so deny=3 even_deny_root unlock_time=1800 root_unlock_time=1800

deny=回数

unlock_time=ロック時間(秒)

even_deny_root 管理者アカウントも制限

でもブルートフォースアタック(パスワード総当たり攻撃)されると、設定が裏目にでて永遠にログインできないことになりませんかね。パスワードを/etc/pam.d/passwdでcracklib.so設定して保護すればいいだろぉ・・・あっ、そっかぁ~。(池沼)

参考URL http://hogem.hatenablog.com/entry/20121107/1352297631

pam によるSSHのIP制限

以前、 HOSTSファイルによるSSHのIP制限 をエントリーしましたが、TCP Wrapper を通るサービス自体が減っており、libwrap ライブラリを利用するサービスは現在、SSH, PostFix 位しかありません。 ldd /usr/sbin/sshd | grep libwrap コマンドでHOSTSファイルが利用できるかどうか、確認が出来ます。しかし今回は、pam(Pluggable Authentication Module)によるSSH のIP 制限の方法をご紹介します。

ユーザ、アクセス元IPアドレスでsshの接続制限をする

詳しい設定は、OpenSSH – IP制限かつユーザの制限を同時に行う – Qiita にありますが、とりあえずローカルネットのユーザーのみに制限する方法として、

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    required     pam_access.so (新規追加
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth

/etc/ssh/sshd_config

UsePAM yes

/etc/security/access.conf

- : gusachan : ALL EXCEPT 192.168.0.0/24
# service sshd restart

pam には他にもroot になれるスーパーユーザーをWheel グループのみに制限する、 /etc/pam.d./su もありますね。

auth  required pam_wheel.so use_uid (コメントアウト

参考:http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html