sshスキャン対策 sshd_config,rootユーザ接続不許可
sshスキャン対策 sshd_config,rootユーザ接続不許可
0.改訂履歴
- 2005.08.23 新規作成
- 2005.08.30 接続辞書ユーザに関しての追記
1.はじめに
このドキュメントでは,RedHat ES3.0にて,rootユーザがsshを使って接続できないようにする設定の手順を説明する.
きっかけは,某サーバにてインターネットにグローバルIPアドレスを持ってサービスを提供しているが,不正なアクセスを試みている痕跡がサーバのログに残されてある事を発見した為. 不正なアクセスは,rootユーザとしてのログインを繰り返し実行している為,これを放置するといつの日か接続されてしまう可能性があり,rootユーザの接続を遮断する事とした.
2.現状確認
- messagesファイルを確認すると,次のようなログが大量に.アクセスログを見ると,次のようなログが大量に出力されている.
authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser=
rhost=222.106.123.nnn user=root
|
- rootユーザとしての接続であるが,パスワード認証に失敗しているとの事.
- rhost(接続元)サーバは,全く心当たりのないところである.
- いつからこのログが表示されているかを確認する.
Aug 10 21:42:29 jupiter sshd(pam_unix)[4981]: session closed for user root
Aug 10 21:42:47 jupiter sshd(pam_unix)[5160]: session closed for user root
Aug 10 21:56:31 jupiter sshd(pam_unix)[4680]: session closed for user root
Aug 10 21:56:31 jupiter su(pam_unix)[4863]: session closed for user root
Aug 11 03:30:36 jupiter sshd(pam_unix)[6014]: authentication failure;
logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=222.106.123.nnn
user=root
Aug 11 03:30:39 jupiter sshd(pam_unix)[6016]: check pass; user unknown
Aug 11 03:30:39 jupiter sshd(pam_unix)[6016]: authentication failure;
logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=222.106.123.nnn
|
- このマシンをセットアップしてグローバルに接続してから半日程度でアクセス(不正侵入の試み)が行われている事がわかる.
3.rootユーザでsshログインできないようにする
- UNIX系OSでは,管理者権限を持つrootユーザでログインできてしまえば何でもできる.rootユーザは必ず存在しているので直接侵入するにはちょうど良いアカウントと言える.
- rootユーザからの接続を拒否する設定は,sshdではデフォルトで持っており,デフォルトではOffになっている. この設定を有効にする事で実現できる.
- 設定ファイルsshd_configは次の通り.
[root@jupiter root]# head -n 10 /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.59 2002/09/25 11:17:16 markus Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
[root@jupiter root]#
|
- このファイルの中の,PermitRootLoginパラメータを確認する.
変更前 |
35
36 #LoginGraceTime 120
37 #PermitRootLogin yes
38 #StrictModes yes
|
変更後 |
35
36 #LoginGraceTime 120
37 #PermitRootLogin yes
38 PermitRootLogin no
39 #StrictModes yes
|
- デフォルトではコメントアウトになっているが,コメントアウトしてnoとして設定し,保存する.
- 設定を変更したら,sshdをリスタートする.
[root@jupiter root]# /etc/init.d/sshd restart
sshdを停止中: [ OK ]
sshdを起動中: [ OK ]
[root@jupiter root]# /etc/init.d/sshd status
sshd (pid 32126 32039 32037 31993 31991 31928 31891 31889 31646 30932)
を実行中...
[root@jupiter root]#
|
4.動作確認
iMacG5:~ shinnai$ ssh root@jupiter.ujp.jp
root@jupiter.ujp.jp's password: ■■■
Permission denied, please try again.
root@jupiter.ujp.jp's password: ■■■
Permission denied, please try again.
root@jupiter.ujp.jp's password: ■■■
Permission denied (publickey,password,keyboard-interactive).
iMacG5:~ shinnai$ ssh shinnai@jupiter.ujp.jp
shinnai@jupiter.ujp.jp's password:
[shinnai@jupiter shinnai]$
|
- rootでログインできない事がわかる.
- また,この時のアクセスログを確認する.
Aug 23 14:35:51 jupiter sshd(pam_unix)[32616]: session opened for user yamada by (uid=0)
Aug 23 14:47:55 jupiter sshd(pam_unix)[32616]: session closed for user yamada
Aug 23 15:11:38 jupiter sshd(pam_unix)[32710]: session opened for user shinnai by (uid=0)
|
- rootで接続が試みられた事がログに残らない.
- これはDoS(サービス拒否攻撃)をさける為か?と思われる.
5.rootユーザ以外の認証エラーの確認
- ssh接続のエラーについてはsecureログに記録されている.
[root@jupiter log]# tail -n 3 /var/log/secure
Aug 23 16:27:03 jupiter sshd[690]: Failed password for illegal user felix
from 219.198.120.65 port 43035 ssh2
Aug 23 16:27:12 jupiter sshd[692]: Illegal user fred from 219.198.120.65
Aug 23 16:27:15 jupiter sshd[692]: Failed password for illegal user fred
from 219.198.120.65 port 43194 ssh2
[root@jupiter log]#
|
- ログを見るとまさに辞書アタック.片っ端からユーザとパスワードを試している事がわかる.
- もう少し詳細を見てみる.
Failed password for root from 218.66.123.nnn port
Failed password for root from 218.66.123.nnn port
Failed password for root from 218.66.123.nnn port
Failed password for root from 218.66.123.nnn port
Failed password for root from 218.66.123.nnn port
Failed password for root from 218.66.123.nnn port
Failed password for illegal user admin from 218.
Failed password for illegal user admin from 218.
Failed password for illegal user admin from 218.
Failed password for illegal user administrator f
Failed password for illegal user administrator f
Failed password for illegal user administrator f
Failed password for illegal user tads from 218.6
Failed password for illegal user tads from 218.6
Failed password for illegal user tads from 218.6
Failed password for illegal user tip from 218.66
Failed password for illegal user tip from 218.66
Failed password for illegal user tip from 218.66
Failed password for illegal user myra from 218.6
Failed password for illegal user myra from 218.6
|
- rootユーザでアクセスできないようにしたとたんに,辞書アタックに切り替わったようである.
- どのようなユーザで接続してきているかを確認してみる.
- secureログの中からFailed(password)が含まれている行を取り出す.
- ログの11列目(ユーザ名が入っているところ)を取り出す.
- IPアドレスが含まれるものがあるので,それは-vで除いておく.
- 結果をソートしておく.
- 複数回同一ユーザで試みられているので,出現数も入れてユニークリストを取り出す.
[root@jupiter root]# grep Failed /var/log/secure \
> | cut -f 11 -d' ' | grep -v [0-9]. | sort | uniq -c
2 Chicago
1 Christ
2 Dakota
2 Jordan
2 Joshua
2 Justin
2 Nicole
2 Robert
3 aaron
3 abby
3 abilenki
1 absurdir_deadphp
12 adam
3 adi
4 adine
13 admin
3 admin2
4 administrator
7 adrian
4 aecpro
4 ahmed
2 aho
2 alan
5 albert
5 alberto
10 alex
3 alexander
3 alexandru
3 alexie
4 alfred
4 ali
4 alice
6 alin
3 alka
4 allan
3 almacen
3 alvin
4 amanda
3 amdsa
4 andi
3 andreea
4 andrei
4 andres
4 andrew
3 andy
3 angel
4 angela
4 angie
4 anita
3 ann
4 anna
3 anonymous
3 anthony
3 anton
8 apple
1 apple1
3 apples
3 arbaiah
1 arbgirl_phpbb1
3 areyes
3 aris
3 arnold
4 aron
4 arthur
4 ashley
3 atir
4 austin
3 backup
4 bandit
3 bank
3 banner
5 barbara
4 bart
3 bash
3 bayonne
3 bcampion
4 bear
3 beavis
4 beginner
3 belea
7 ben
4 beny
3 bernard
4 bert
7 bill
3 billy
4 bind
3 bird
3 black
4 bob
4 bobby
3 bogdan
3 bonec
3 bong
3 boon
3 boss
4 bret
7 brian
4 bruce
3 bryan
3 bull
3 bunny
3 burrelli
3 buster
4 carl
4 carol
4 carshowguide
3 cassie
3 center
7 cesar
3 charlott
3 cheryl
1 chicago
3 chipmast
2 chris
1 christia
7 clark
3 claudia
7 clinton
3 clock
3 colleen
3 collins
3 control
4 corinna
3 courier
4 craig
3 crichard
3 cristi
3 cvs
6 cycle
3 cynthia
3 cyp
3 cyrus
1 dakota
3 dale
3 dan
3 dana
4 daniel
3 daniela
10 danny
4 dave
3 david
3 davis
4 db
3 deb
3 debbie
3 deborah
3 denise
3 dev
7 dexter
3 diamond
4 dick
3 dkauffman
3 doctor
3 doming
3 dominic
6 drive
3 duckie
3 dujoey
3 duncan
3 dust
3 dylan
4 earl
4 ed
4 eddie
4 edgar
3 edward
3 elena
3 elizabet
3 elizabeth
11 ellen
3 elly
4 emil
3 emmanuel
4 enzo
9 eric
3 erica
4 ethereal
3 eugen
3 eva
3 faridah
3 fauzi
3 fax
4 felix
3 fernie
6 filip
1 filippid_admin
3 fletcher
3 flower
3 fluffy
9 francis
3 francois
3 frank
3 franklin
7 fred
3 friends
3 ftphome
2 ftpuser
3 gabi
3 gary
3 gemma
3 george
3 ginger
3 girl
3 godzilla
3 gordon
3 grace
3 graham
3 gregory
11 guest
3 guest2
3 guinness
3 gwen
6 hack
6 hacker
3 hal
3 hall
3 hamlet
3 hammer
3 harley
3 harold
3 harris
3 harrison
3 harry
3 hatton
3 henry
3 hera
3 herbert
4 hiperg
3 honey
3 http
3 httpd
3 ian
3 iceuser
2 iesse
4 info
4 instrume
3 internet
3 ioana
3 ionut
6 isabelle
3 ismail
7 jack
6 james
3 janice
3 jeff
3 jeffrey
3 jeremy
6 jerry
1 jesse
3 jessie
3 jester
4 jesus
3 jet
3 jim
3 jimmy
4 jking
3 jmartin
3 joanna
3 joeflores
3 joerg
3 joey
5 john
3 johny
1 jordan
4 joshua
3 jukebox
3 julie
3 junior
3 jupiter
2 justin
2 justin1
4 karika
3 karl
3 kathleen
3 kathrine
3 kathy
3 katie
3 kay
6 kayla
3 keith
4 kelly
9 ken
3 kevin
3 kim
3 kinder
3 kjayroe
3 kramer
3 kristen
3 kristin
3 larry
3 laurentiu
3 lee
1 lemancaf_leman
3 leon
3 leonard
3 leroy
3 leslie
3 library
3 linda
3 linux
3 lisa
3 lloyd
3 lucas
3 madison
3 magic
2 mailtest
3 marcus
3 margaret
3 maria
3 mario
3 marivic
3 mark
3 marleth
3 marlon
3 martin
3 martinez
4 marvin
3 master
3 matilda
6 matt
3 matthew
3 maurice
3 maverick
3 max
3 merlin
3 mia
3 mich
3 michael
1 michey
2 mickey
3 mihai
3 mikael
6 mike
3 miller
3 mirc
3 monica
3 monique
3 moon
3 mortimer
3 mouse
4 mri
3 mustang
3 myra
1 myrhodesiaiscom
3 mysql
5 nathan
3 netadmin
4 nicole
3 nina
3 nishiyama
3 nora
3 norm
3 norman
3 notused
3 o2
3 one
4 oracle
3 orange
3 paintball
5 paintball1
3 pascal
3 patrick
9 paul
3 paulj
3 peaches
3 peewee
3 penelope
3 pete
2 peter
3 petru
3 pgsql
3 phil
6 philip
3 play
3 porno
1 postgres
3 press
3 princess
3 purple
3 quincy
3 resin
3 rezvie
3 richard
2 robert
3 rock
3 roland
3 rolo
9 ronald
3 rosa
6 russ
1 sales
3 samba
3 samir
3 sammy
3 samuel
3 sandra
1 sangley_xmb1
3 sarah
3 save
3 scan
3 scorpion
3 sean
3 semenov
4 seoulselection
1 service
3 sham
3 sharon
3 sharp
3 shaun
4 shell
3 shop
4 signalhill
3 silver
4 simon
3 skkb
3 sll
3 sm
3 sme
3 smith
4 snoopy
3 sonny
3 spam
3 spencer
3 spider
3 spike
6 stephanie
3 stephen
3 steve
3 steven
3 superman
3 suva
3 sven
3 sya
4 sybase
3 sylvia
3 sys_admin
3 system
3 tads
3 tamara
3 tara
3 tasha
3 temp
5 test
2 testuser
3 thaiset
3 theo
3 theresa
6 thomas
3 tiffany
3 tigger
3 tim
3 timothy
3 tino
3 tip
3 tir
3 tmp
3 tom
3 tomcat
3 tony
3 trash
1 travel_phpb1
3 tweety
3 ultra
3 union
3 unix
8 user
3 username
3 valentin
3 valerie
2 vanesa
1 vanessa
3 vdi
3 venom
3 ventas
3 vermont
3 vicky
3 vinci
3 vincintz
3 viorel
6 viper
3 virginia
1 wallimo_phpbb1
4 walter
3 wang
3 wanker
3 waterboy
3 watson
3 wayne
3 web
3 webmaster
3 webpop
6 webster
3 weenie
6 white
3 will
1 wille
5 willie
3 willow
3 willy
3 wilma
3 win
3 word
3 www
3 wwwdata
3 wwwrun
3 xbox
3 xtra
3 xxx
3 yolanda
3 zena
[root@jupiter root]#
|
- いろいろと思い当たるアカウントもあったりするようなしないような.
- その後一週間ほど経過した結果を,トップ10で表示してみる.
[root@jupiter nagios]# grep Failed /var/log/secure | ¥
> cut -f 11 -d' ' | grep -v [0-9]. | sort | uniq -c | ¥
> sort --reverse |head -n10
1026 a
33 admin
24 test
21 tester
21 spam
17 oracle
14 amanda
12 testuser
11 alan
11 administrator
[root@jupiter nagios]#
|
- 圧倒的に多いので,単なるアタックのような感じです.
6.それ以外に
- rootユーザでのログインだけでなく,推測しやすいアカウント名や長いパスワードを利用しない運用等も必要で,可能であれば接続して来れるサーバを制限する.