さくらのVPSやら、ServersMan@VPS やらの出現で、やたらと敷居のさがった感のある VPS 。
かく言うこのサーバもめ組VPSで運用されてるわけですが、VPSを既存のレンサバ感覚で使ってる人にせめてこれくらいのセキュリティ設定はやっておいたほうが良いよっていうお話です。
今回、対象にする OS は CentOS です。
さくらVPS 借りて Ubuntu とか、別の OS で運用するような中上級者は自分でできるよね。
リモートからの root ログインを無効にする
ssh 経由で root でログインして作業したりしてませんか?
これ root パスワードが破られたら、サーバが乗っ取られちゃうので、大変に危険です。
root ログインを無効にして、権限のあるユーザでログインしてから sudo or su して作業するようにしましょう。
root ログインを無効にする方法は、こんな感じ。
まずは ssh でログインして作業するためのユーザを作成。
# useradd hogehoge # passwd hogehoge Changing password for user hogehoge New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
続いて、いま作ったユーザが root になれるように wheel グループに追加。
# usermod -G wheel hogehoge
root になれるユーザを wheel グループのみに限定。
# /usr/local/sbin/visudo : ## Allow root to run any commands anywhere root ALL=(ALL) ALL ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ← 行頭の # を消す。 ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL :
root でのログインを禁止。
# vi /etc/ssh/sshd_config PermitRootLogin yes ↓ 以下のように変更 PermitRootLogin no
sshd を再起動。
# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
これで ssh から root でログインできなくなってるはずです。
他の ssh 接続を起動してみて確かめてみてください。
また、作業中に作ったユーザでログインし、sudo できるかどうかも確認したほうが良いです。
via. 【さくらのVPS】初期設定をしてみた | Untitled Documents.
パスワードでのログインをやめて公開鍵認証にする
次は、リモートからのパスワードでのログインを廃止して、よりセキュアな公開鍵認証でのログインオンリーに設定してしまいましょう。
Win な人なら PuTTY とかで、公開鍵・秘密鍵が作れます。
Linux な人や、Mac な人は ssh-keygen で RSA キーを生成しましょう。
生成された公開鍵は、サーバに ~/.ssh フォルダを作成して保存しておきます。
この際、~/.ssh フォルダのパーミッションは 700 にしておいてください。
保存した公開鍵 ~/.ssh/authorized_keys のパーミションは 600 にしておきましょう。
後は sshd_config を修正して
# vi /etc/ssh/sshd_config #PubkeyAuthentication yes ↓ 行頭の "#" を消して、公開鍵認証でログインできるように設定 PubkeyAuthentication yes #PasswordAuthentication yes ↓ 以下のように書き換えて、パスワードログインを禁止 PasswordAuthentication no
後は sshd を再起動すれば、公開鍵認証でのみログインできるようになってるはずです。
via. さくらのVPS:Web立ち上げまでの設定メモ(下書きレベル) – [Mu]ムジログ
log 監視
まずは、毎日の運用ログを監視しましょう。
一日一回、各種ログをキレイに整形してメールで送ってくれる logwatch を利用するのがオススメです。
インストールは yum で一発。
$ sudo yum install logwatch
インストールできたら、ちゃんと動くか確認してみましょう。
–print オプションをつけると、メールが送られずにコンソールに結果が表示されます。
$ sudo /usr/sbin/logwatch --print
設定ファイルは /etc/logwatch/conf/logwatch.conf です。
中を見てみると
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)
とだけ書かれてますね。
デフォルト設定と違う設定にしたい場合は、このファイルに書いていってください。
デフォルトだと root 宛てにメールを送る設定になってるので以下のような行を追加して、メールのあて先を変更してやってください。
MailTo = hoge@example.com
# hoge@example.com は、自分のメールアドレスに変えておいてください。
さらに詳細な設定は、第29回 「logwatch によるログの収集」 とかを参考にすると良いと思うよ。
ssh のポート変更
logwatch からのレポートを見ると、以下のようなログが残っているかもしれません。
--------------------- pam_unix Begin ------------------------ sshd: Authentication Failures: unknown (218.2.129.xx): 1999 Time(s) unknown (211.141.121.xx): 800 Time(s) root (218.2.129.xx): 544 Time(s) root (121.88.249.xx): 67 Time(s) root (202.119.208.xx): 17 Time(s) unknown (121.88.249.xx): 11 Time(s) :
これは既知の ssh ポートであるポート22を変更していなかったため、そこに対してどこかの人がアタックしているというログです。
手っ取り早い対策としては ssh のポート番号を変えてしまうことです。
これだけで ssh ポートへのアタックは減るはずです。
# っつうか、私の所では無くなりました。
# vi /etc/ssh/sshd_config #Port 22 ↓ 以下のように変更することで ssh 接続する時は 10022 番ポートへのアクセスが必要になる Port 10022
もちろん、この番号は WELL KNOWN PORT NUMBERS の 0 〜 1023 番以外なら自由に割り振れます。
後は sshd を再起動すれば、新しく変更したポート番号に対して ssh 接続できるようになります。
denyhosts のインストール
ssh のポート番号を変更したくないんだけどなーという人は denyhosts の導入を検討してください。
もちろん、ポート番号を変更した人でも denyhosts は有効なので導入を検討してみましょう。
これは、定期的に log を監視して、接続失敗している ip アドレスを自動的に /etc/hosts.deny に登録してくれるものです。
インストール方法は、こんな感じ。
yum リポジトリとして epel が登録されてない場合は、まず epel を登録。
$ sudo rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL $ sudo rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
続いて yum で denyhosts をインストール。
$ sudo yum -y install denyhosts
denyhosts を起動し、自動起動の設定を行う
$ sudo /etc/init.d/denyhosts start $ sudo /sbin/chkconfig denyhosts on
例外的に必ずアクセスを許可しておきたい IP アドレスが有る場合は /var/lib/denyhosts/allowed-hosts
に記述しておいてください。
denyhosts が正常に動作している場合は、不正アクセスがあった場合 /etc/hosts.deny
に記録されていくはずです。
via. さくらのVPSで絶対最初に入れてほしいセキュリティソフト | epidemic.jp
iptables の設定
後は iptables を設定して、不要なポートへのアクセスは停止しておきましょう。
さくらVPSでは iptables は、初期設定ではインストール済みです。
もし、インストールされてないようでしたら yum でインストールしましょう。
$ sudo yum install iptables
Web サーバとして運用するなら、SSH、HTTP、FTP、HTTPS 辺りを空けておきましょう。
$ sudo vi /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # HTTP, FTP1, FTP2, SSH -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
# SSH のポート番号を22番から変更している場合は23行目の変更を忘れずに!
あとは iptables を再起動すれば、設定が適用されます。
$ sudo /etc/rc.d/init.d/iptables restart
設定がちゃんと反映されているかを確認するには、以下のようにしてください。
$ sudo iptables -L
via. さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ
とりあえず CentOS でのセキュリティ設定の基本でした。
特に忘れがちなのはログ監視です。これは、やっておいたほうが良いよ。
あとは Apache や PHP, MySQL など、サーバ上で動作しているサービスはできるだけ最新版にアップデートしてあげることも必要です。
セキュリティパッチが出た時は、早めに対応しましょう。
サーバのセキュリティ対策は、導入直後だけでなく、日々の運用も大事です。
ログを監視したり、セキュリティパッチが出てないか情報収集したり…
それがメンドクサイ場合は VPS なんか借りずに、その辺をすべて面倒見てくれるレンサバを借りたほうが良いと思うよ。
3行目のACCEPTはDROPにしなくていいんですかね?
ピンバック: Logwatch導入でサーバの状態を定期チェックするよ!+ Evernoteも! | oki2a24
ピンバック: さくらのVPSでWordPressを動かそう – 番外編 - - UKLab
ピンバック: サーバーの追加、最低限のセキュリティの覚書 | BB no Blog
ピンバック: shohei blog » VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定 | dogmap.jp
ピンバック: さくらのVPSでDebian 6をセットアップ #1(SSH, セキュリティの設定) | input*output
ピンバック: さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール | webプログラマーのメモ
ピンバック: さくらのVPSにScientific Linux6をインストール(CentOSから乗り換え) | webプログラマーのメモ
ピンバック: CentOSにnginxとfastcgiを入れてWordPressを動かすまでのメモ:その2 - Shinichi Nishikawa's blog
ピンバック: 分からない人が書いたCentOSにnginxとfastcgiを入れてWordPressを動かすまでのメモなので、分からない人が読んだら分かりそう - Shinichi Nishikawa's blog
ピンバック: Linux logwatchのインストールと設定 | Bamboo lath 日々の記録