こんにちは、ゲストさん

Choklogトップ - ランダムブログ - ログイン - ヘルプ

sshのパスワード認証を禁止

ブルートフォース攻撃対策に、某所のsshのパスワード認証を禁止(鍵認証のみに)しました。手順は次の通りです。なお、環境は「CentOS 4.6」です。併せて「sshポート番号の変更」も設定すると、より強い対策が可能です。


$ cat /etc/redhat-release
CentOS release 4.6 (Final)



1. sshd_configの編集


PasswordAuthentication(デフォルト:yes)をnoにし、PubkeyAuthentication(デフォルト:yes)がyesであることを確認します。


$ sudo vi /etc/ssh/sshd_config



(略)
#PasswordAuthentication yes
PasswordAuthentication no
(略)
PubkeyAuthentication yes
(略)



2. (なければ)鍵を生成し、~/.ssh/に置く


詳細は参照ページに譲りますが、Linux環境では


$ ssh-keygen -t rsa



で、rsa鍵が~/.ssh/id_rsa(秘密鍵)と~/.ssh/id_rsa.pub(公開鍵)に生成されます。


3. sshdの再起動


ここまで設定した状態で、sshdを再起動します。


$ sudo /etc/rc.d/init.d/sshd restart



以上です。


参照:
- 「sshのポート番号を変更する
- 「@IT:Linuxでsshの鍵を作成するには

MacOSでのアプリケーションごとの設定ファイル

iTermのデフォルトの接続先をリモートサーバにしていたのだけど、リモートサーバがダウンしたらiTermそのものが起動しなくなって困った。


「iTermを起動」->「接続先に繋げられない」->「iTermが終了」


というような流れになってしまったらしい。仕事に差し障るので、iTermを再インストールしたけれど、状況は変わらず。どうやらiTermの設定ファイルはiTerm本体とは別のところにあるらしい(当然か)。


色々と検索して


~/Library/Preferences/



がMacOSにおける、アプリケーションごとの設定ファイルの在処だということがわかった。未だに「MacOS Newbie」の域を脱しておらず。


~/Library/Preferences/iTerm.plist



を削除して、iTermを再起動したところ、iTermがきちんと初期化された(デフォルトの接続先がローカルになった)。もっともっと、色々と知らなければならないな。

「Where did you learn to type?」

httpd.confを書き換え、apacheを再起動しようとして、妙なメッセージに遭遇しました。

$ sudo /usr/local/sbin/apachectl restart
Password:
Where did you learn to type?


ちょw 「Where did you learn to type?」て。パスワード入力を失敗したくらいで、そんなメッセージを頂戴するとは思わなんだ。なんて失礼な。

sudoコマンドでのパスワード入力ミスによるジョークメッセージは、ランダムで出力されるものらしくて、「にぽたん研究所」にsudo-1.6.8p8 のメッセージリストが掲載されています。けっこう、たくさんあるもの何ですね。

I think ... err ... I think ... I think I'll go home


これは... 勝手に帰れよ(笑

Subversionを使い任意のポート番号でsvn+sshする方法

リモートサーバにあるSubversionリポジトリからCheckoutしたい場合

$ svn co svn+ssh://user@example.com/path/to/repos/project


のようにすればよい。ただし、この場合はexample.comでsshdがデフォルトポート(=22番)で動作していると仮定している。22番ポートではないポートでsshdが起動している場合、次のように$HOME/.subversion/configを書き換える。

$ vi ~/.subversion/config
[tunnels]
new_config=ssh -p 99999


こうした状態で

$ svn co svn+new_config://user@example.com/path/to/repos/project


すると、user@example.comのポート番号99999で動作しているsshdを通してprojectをチェックアウトすることができる。というか、コマンドラインから直接ポート番号を指定できればよいと思うのだけれど、どうにもそのための方法が見つからず、こういう手段に逃げてしまった。オフィシャルの資料を当たっても、この方法しか載っていないような気がする。

どなたか、よい方法をご存知なら教えていただけると嬉しいです(最近、このパターンばかり 笑)

Emacsで複数行の先頭に文字列を挿入する

例えば、httpd.confなどをいじっていて、「この行からこの行までコメントアウトしたい」という風に思うときがあります。今までは愚直にカーソルを移動しつつ'#'を入れていたのですが、Emacsで「string-rectangle」というコマンドを使えば、範囲指定した行頭に、任意の文字列を入れられるということを知りました。むしろ今まで知らなかったのが恥ずかしいかも。


範囲指定した状態で


M-x string-rectangle



もしくは、標準状態のEmacsでは


C-x r t



が「string-rectangle」に割り当てられています(ref: 「複数行の先頭に文字列を挿入 - 英語とプログラミング気まぐれ日記」)。

GNU Screenの文字化け@FreeBSD 6.x(UTF-8)

FreeBSD 6.2な環境でGNU ScreenをUTF-8で使用して、(一部)文字化けする現象に出会った。環境は次のような感じ。

 $ uname -a
 FreeBSD example.com 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 10:40:27 UTC 2007     root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
 $ screen --version
 Screen version 4.00.03 (FAU) 23-Oct-06
 $ cat ~/.screenrc
 escape ^Tt
 defscrollback 100000
 hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"

 # window separation with emacs_like key bind
 bind -c REGION 2 split
 bind -c REGION 1 only
 bind -c REGION 0 remove
 bind -c REGION o focus
 bind -c REGION ^ resize
 bind x command -c REGION

 bind s # reset a key


Emacsライクなキーバインドで、かつscrollback多めな感じにしてある。基本的にはnaoyaさんのところを参考にしている(ref: 「GNU screen いろいろまとめ。 - naoyaのはてなダイアリー」)。これでCentOS 5.xな環境では問題ないので、どうしたものかと悩んでいたのだけれど、FreeBSDで同様の現象に遭遇している人を発見して、ひゃっほうって感じ。というか、ScreenのオプションでUTF-8を明示的に指定できるそうな。

 $ screen -U


で起動すればよく、これでFreeBSDでもUTF-8で快適なScreen生活を満喫できそう。幸せ。

sshポート番号の変更

ブルートフォース攻撃対策に、某所のsshポート番号を変更しました。手順は次の通りです。

1. sshd_config の編集

$ sudo vi /etc/ssh/sshd_config


#Port 22
Port XXX # ← 任意の整数


XXX には新規に使用するポート番号を入れます。

2. iptables の編集

必要があれば、iptablesを編集し、任意のポートを開放します。

$ sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport XXX --syn -j ACCEPT
$ sudo /sbin/service iptables save # (2008/01/19 : 追記)
$ sudo /sbin/chkconfig iptables on # (2008/01/19 : 追記)


XXX には、1.で設定した任意の整数が入ります。

3. モデム/ルータ等の設定

必要があれば、モデム/ルータ等のポート転送設定をします。設定については各機器のマニュアルを参照してください。

4. オプション(~/.ssh/config)

~/.ssh/config にてport指定をしておくと、各ホスト毎でポート番号を固定できるので便利です(ref: 「自宅サーバのssh - masahilog」)。

~/.ssh/configというファイルにHostごとの設定を書いとけばポート指定できるらしいじゃないですか。


ファイルには次のような記述をします。

Host myddns.host.name
    Port *****(ポート番号)


5. sshd を再起動

ここまで設定した状態で、sshdを再起動します。

$ sudo /etc/rc.d/init.d/sshd restart


以上です。