セキュリティ対策」カテゴリーアーカイブ

【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

root

ファイアウォールも設定し、VPSサーバーもなかなか堅牢になってきた。
ただし、自分が遠隔でログイン出来るということは、パスワードさえわかれば誰でもログイン出来てしまうということなんだよね。
しかも、rootを開放していれば、ユーザー名がrootとわかっているんだから、パスワードさえ解析すればログインで来てしまう。
これはあまりいい状態とは言えない。
なので、別ユーザーを作り、そのユーザーでログインしてからrootになるように変更する。
そうすると、ユーザー名もわからないとログイン出来ないし、そのユーザー名がルートになれるかどうかもわからないから、ハッキングする側にとってはかなりハッキングがしにくくなる。

※注意
今回の設定は下記の記事の設定を終了したものとして書いています。

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【Gmail】CentOS6.x(64bit)でimotenを設定して@docomo.ne.jpメールを使う【主にさくらインターネット編】

【iPhone】imotenの送信メールをSSL化する【docomoメール】

【オレオレ証明書】自作WebDAVサーバーにWindows7で接続する【Windows7】

【WebDAV】VPSをミュージックストリーミングサーバーにする【Subsonic】

【MyCloud】さくらVPSをAirVideoサーバーにする【ストリーミング】

【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】

ユーザーの作成とパスワードの設定

まず、ログインユーザーを作成する。

[root@ ~]# useradd nao(作成するユーザー名)

これでユーザー kuzunoha が作成された。
作りたいユーザー名で作成しよう。
新しく作ったユーザーにパスワードを設定する。

[root@ ~]# passwd nao(パスワードを設定するユーザー名)

ユーザー kuzunoha のパスワードを変更。
新しいパスワード:
と出てくるので、パスワードを入力。
なるべく長いものが望ましい。
新しいパスワードを再入力してください:
と出てくるので、もう1度入力する。
passwd: 全ての認証トークンが正しく更新できました。
と出れば正しく設定された。

ユーザーがrootになれるように設定する

ユーザーをwheelグループに追加

新しく作ったユーザーをwheelグループに追加し、root権限を取得できるようにする。

[root@ ~]# usermod -G wheel nao(wheelグループに追加するユーザー名)

ユーザーnaoはwheelグループに追加された。

rootになれるグループをwheelのみに設定

su(スーパーユーザー)の設定を変更する。

[root@ ~]# visudo

テキストが開くが、126行目(下から14行目)の

# %wheel   ALL=(ALL) ALL

の#を消し、

%wheel   ALL=(ALL) ALL

にし、:wqで保存する。

wheelグループのみをスーパーユーザー(root)になれるよう設定

[root@ ~]# vi /etc/pam.d/su

開いたテキストの、

#auth include system-auth

の#を消し、

auth include system-auth

にする。

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
#auth            include         system-auth ←ここの#を消す
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so


:wqで終了。

新しく作ったユーザーでログインしてみよう

実際作ったユーザーでログインする。
rootではなく、ユーザー名でログインし、ログイン出来るか確認しよう。
ログイン出来れば

[nao(ユーザー名)@ ~]$ 

と、別アカウントでログインされる。

スーパーユーザー(root)になってみよう

一般ユーザーをrootへ昇格させる。

[nao@ ~]$ su

rootのパスワードが求められるので、rootのパスワードを入力。

[root@ nao]#

これでrootになった。

rootログインの停止

一般ユーザーからログイン→root化が確認できた所で、sshでのrootログインを停止する。
sshdの設定ファイルを編集する。

[root@ ~]# vi /etc/ssh/sshd_config

42行目にある、

PermitRootLogin yes

PermitRootLogin no

に変更する。

sshdを再起動する

変更を適用するため、再起動する。

[root@ ~]# service sshd restart
sshd を停止中:       [  OK  ]
sshd を起動中:       [  OK  ]

これで変更は適用された。

sshからrootでログインしてみよう

パスワードが求められ、あれっ?って思うが、何度入力してもログインできないはずだ。
これで設定は完了。
これからは、一般ユーザーでログイン後、root化するように変更された。
rootになるにはログインするたびにsuをしなければならないが、セキュリティアップのため我慢。

インターネット上にあるサーバーであることを忘れずに

VPSは非常に自由で便利である反面、常に誰かに狙われているということも忘れずに。
機密データなどは絶対にローカルに保存し、インターネットに上げてはならない。
便利さは危険さを伴う。
面倒でも大事なデータは手元に保存すること。

【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】

firewall


VPSにデータを突っ込んで楽しく使えるようになったけど、自由な分、すべての管理を自分でやらなきゃいけない。
セキュリティを高く保ち、乗っ取りを防ぐのはユーザーの大切な義務。
必ず適用してセキュリティを高く保つ努力をしよう。

※注意

今回の設定は下記の記事の設定を終了したものとして書いています。
特にSSHの設定ポートの変更はセキュリティ上大変重要なので、必ず行っておいてください。
imotenを使っている人は送信メールのSSL化を必ず終わらせてください。

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【Gmail】CentOS6.x(64bit)でimotenを設定して@docomo.ne.jpメールを使う【主にさくらインターネット編】

【iPhone】imotenの送信メールをSSL化する【docomoメール】

【オレオレ証明書】自作WebDAVサーバーにWindows7で接続する【Windows7】

【WebDAV】VPSをミュージックストリーミングサーバーにする【Subsonic】

【MyCloud】さくらVPSをAirVideoサーバーにする【ストリーミング】



iptables(ファイアウォール)の設定


さくらのVPSにはiptablesがすでにインストールしてあり、自動起動もするのだが、設定は何もされていない。
全くの無意味な存在。
なのでパケットフィルタリングの設定をする必要がある。



iptablesの編集


[root@ ~]# vi /etc/sysconfig/iptables エンターキー


何も書いていないまっさらなファイルが開くので、下記をコピペする。


—ここから—

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FIREWALL – [0:0]

-A INPUT -j FIREWALL
-A FORWARD -j FIREWALL
-A FIREWALL -i lo -j ACCEPT
-A FIREWALL -s 10.0.0.0/8 -j DROP
-A FIREWALL -s 172.16.0.0/12 -j DROP
-A FIREWALL -s 192.168.0.0/16 -j DROP
-A FIREWALL -d 255.255.255.255 -j DROP
-A FIREWALL -d 224.0.0.1 -j DROP
-A FIREWALL -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 4 -j ACCEPT
-A FIREWALL -p udp –sport 53 -j ACCEPT
-A FIREWALL -p icmp –icmp-type any -j ACCEPT
-A FIREWALL -p 50 -j ACCEPT
-A FIREWALL -p 51 -j ACCEPT
-A FIREWALL -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A FIREWALL -p udp -m udp –dport 631 -j ACCEPT
-A FIREWALL -p tcp -m tcp –dport 631 -j ACCEPT
-A FIREWALL -m state –state ESTABLISHED,RELATED -j ACCEPT

# HTTPS 443, mail 465, SSH 10022, Subsonic 4040, AirVideo 45631
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 465 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 10022 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 4040 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 45631 -j ACCEPT

-A FIREWALL -j REJECT –reject-with icmp-host-prohibited

COMMIT

—ここまで—


このコピペだとSSHのポートは10022に変更してあるが、別の番号にしているのならその番号を記入すること。
ここを間違うと遠隔ログインができなくなって泣きを見る。
SSHの設定ポートの変更の記事は10022にしてあるから10022にしてある。

SubSonicのデフォルトポートが8080、AirVideoが45631なので、そのまま記述している。
変えているのならそこも変更。

Webサーバーにもしていないので、80番も閉じている。
穴は少ないほうがいい。
WebDAVは443、メールは465のSSLポートを介して使う。


もし送信メールのSSL化なんてイラネって人は、

-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 587 -j ACCEPT

を#HTTPS 443〜の下の行に足そう。


コピペをするときに注意したいのは、コードに無駄なスペースがあってはならない。
COMMIT以降には改行もあってはならない。

これだけは注意すること!
無駄なスペースや改行があるとエラーが出て起動しない。



iptablesの再起動


[root@ ~]# /etc/rc.d/init.d/iptables restart エンターキー


でiptablesをリスタートする。


iptables: ファイアウォールルールを消去中:       [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter   [ OK ]
iptables: モジュールを取り外し中:           [ OK ]
iptables: ファイアウォールルールを適用中:       [ OK ]


と出れば成功。


[root@ ~]# iptables -L エンターキー


を行い、ずらっと文字列が出てくれば起動している。



実は結構攻撃されているVPS


sshを22番のままにしておくと、自動攻撃ツールが22番にビシバシ攻撃してきている。
パスワードを解析されると乗っ取られてしまうので、可及的速やかにポートだけでも変更しよう。


【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

performance

さくらインターネットの社長ブログを読んでいたら、VPSサーバーのパフォーマンスを向上させる方法が書いてあったので、自分なりに書き換えて記事にしてみまする。

この人は18歳でレンタルサーバー会社を創業してここまでやってきたってのは凄いもんだね。
大したもんです。

あくまで抜粋なので、証明書云々の部分は削除してます。
あの設定をするとiPhoneアプリでリモートログインができなくなってしまうので。
参考記事はこれです。
さくらのサーバーだけでなく、DTIのサーバーを借りている人も参考になると思います。

※注意!
imotenの設定記事に目を通し、Viエディタの使い方がある程度わかるものとみなして書いています。

セキュリティレベルを上げる設定

sshのポートを変える

ターミナルでログインをする時は、初期設定ではsshを使って22番ポートに接続するようになっている。
22番はsshですよ、と公開されているポートで、実際sshでしか使用することはできない。
そういうふうに決まっている(割り振られている)ポートなんだよね。

だから、クラッカーもそこを狙って攻撃してくるわけ。
だからそのポートそのものを変え、sshのポートを22番から別の数字に変更し、22番ポートを攻撃しても無駄ってことにしてしまおうというのがこの変更の趣旨。

不安なら、別にしなくてもいい。

まず、ターミナルにログインし、sshのコンフィグを開く。

[root@ ~]# vi /etc/ssh/sshd_config エンターキー

色々ズラズラ出てくるので、#Prot 22 の下に

Port 10022

と付け加える。

Ssh

これで終了。
:wqでviエディタを終了させる。
サーバーの再起動をすれば適用される。

ログインするときはポートを10022に変更してターミナルでログインしよう。

不要なプロセスを起動しないよう設定する

CentOSは結構使っていないプロセスも立ち上がっているので、それをすべて起動しないように設定し、使用できるメモリ領域を増やす。

さくらのVPSの場合はすでに無効化されている。

[root@ ~]# chkconfig auditd off エンターキー

[root@ ~]# chkconfig autofs off エンターキー

[root@ ~]# chkconfig avahi-daemon off エンターキー

[root@ ~]# chkconfig bluetooth off エンターキー

[root@ ~]# chkconfig cups off エンターキー

[root@ ~]# chkconfig firstboot off エンターキー

[root@ ~]# chkconfig gpm off エンターキー

[root@ ~]# chkconfig haldaemon off エンターキー

[root@ ~]# chkconfig hidd off エンターキー

[root@ ~]# chkconfig isdn off エンターキー

[root@ ~]# chkconfig kudzu off エンターキー

[root@ ~]# chkconfig lvm2-monitor off エンターキー

[root@ ~]# chkconfig mcstrans off エンターキー

[root@ ~]# chkconfig mdmonitor off エンターキー

[root@ ~]# chkconfig messagebus off エンターキー

[root@ ~]# chkconfig netfs off エンターキー

[root@ ~]# chkconfig nfslock off エンターキー

[root@ ~]# chkconfig pcscd off エンターキー

[root@ ~]# chkconfig portmap off エンターキー

[root@ ~]# chkconfig rawdevices off エンターキー

[root@ ~]# chkconfig restorecond off エンターキー

[root@ ~]# chkconfig rpcgssd off エンターキー

[root@ ~]# chkconfig rpcidmapd off エンターキー

[root@ ~]# chkconfig smartd off エンターキー

[root@ ~]# chkconfig xfs off エンターキー

[root@ ~]# chkconfig yum-updatesd off エンターキー

エンターキーがゲシュタルト崩壊してくるけど着にせず自動起動プロセスをOFFにしていく。
これでもうこれらのプロセスは次回起動時に立ち上がらない。

使っていないコンソールプログラムを無効にする

使っていないプログラムをOFFにすることで、CPU使用率を引き下げる。

※さくらインターネットのVPSの場合はすでに無効化されている。

[root@ ~]# vi /etc/inittab エンターキー

下記のコードのあたまに#をつけ、使用しないようにする。

2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6


#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

に変更。

Inittab
:wqで終了。

selinuxを無効にする

同様にselinuxもOFFにする。

※さくらインターネットのVPSの場合はすでに無効化されている。

[root@ ~]# vi /etc/sysconfig/selinux エンターキー

いろいろ文字が出てくるので、下記の部分をdisabledに変更。

SELINUX=disabled

Selinux

:wqで終了。

サーバーをリブートしてチューニング設定は終了。

[root@ ~]# shutdown -r now エンターキー

これでVPSサーバーのメモリ領域とパフォーマンスは改善されたはず。
フリーズしやすいDTIのサーバーはやったほうがいい。

次回ログイン時にポートの変更を忘れずに

ターミナルでのログインポートが22番から10022番に変更されているので、ログイン時はターミナルのポート番号の変更を忘れずに。

Macの場合はターミナルの新規リモート接続の下の欄に、

ssh -p 10022 root@IPアドレス

と入力すればログイン出来る。

Ssh 2

Windows(TeraTerm)の場合はTCPポート#(P)の欄に10022と入力すればログイン出来る。

Ssh 1

これでDTIを使っている人も安定すればいいけど。
ま、docomoがMMSに対応する気が全く無いので、VPSサーバーとは長い付き合いになりそうだし、大事に使ってやらないとね・・・(-_-;)w