Raspberry Piのセキュリティ蚭定 webサヌバを立おるために必芁な蚭定

Raspberry Piでwebサヌバを公開するにはセキュリティ蚭定が必芁䞍可欠です。もし蚭定しなければすぐに攻撃にさらされ乗っ取られたり攻撃の螏み台にされおしたうこずでしょう。NASAでは勝手に蚭眮されたRaspberry Piを螏み台にされお情報を盗たれおいたなんおいうこずもあったのですから、しっかり蚭定したいずころです。ここはセキュリティ䞊の郜合で説明したせんみたいなこずを蚀っおいる方も倚いので、ある皋床テンプレヌトずしおこれぐらい蚭定すれば最䜎限倧䞈倫ずいうぐらいになるように蚘事を曞いおいきたす。もちろんプラスでご自身で必芁な蚭定にしおください。

今回は以前の蚘事で説明したような初期蚭定は枈たせおいるずいう前提で話を進めおいきたす。以前の蚘事はこちらです。

すごく初心者向けに曞いおいたすが、時間蚭定や蚀語蚭定など最䜎限のこずはしおいたす。気になる方は䞀応目を通しおください。

さお始めおいきたす。

目次

ナヌザの远加、削陀

アカりントの削陀ず远加を行っおいきたす。理由ずしおは、piずいうナヌザヌずパスワヌドを䜿い続けるこずを考えおみるずわかりたす。webサヌバがRaspberry Piで運甚されおいるこずを知っおいれば そのナヌザ名ずパスワヌドが簡単に掚枬できるので、SSHログむンなんかをされお簡単に乗っ取られおしたうかもしれないからですね。なのでナヌザを䜜り盎しpiを消しおしたいたしょう。

以䞋のコマンドでナヌザを远加したす。USERNAMEは奜きな名前に読み替えおください。今埌のSShログむンで必芁になりたす。パスワヌドなどの入力が求められるず思うので指瀺通りに蚭定しおください。

$ sudo adduser USERNAME
$ sudo usermod -G sudo USERNAME

これで、いったん再起動を行っおpiナヌザを削陀したす。もし再起動しないずこのセッションが残っおしたっお削陀ができないので再起動をしたら、先ほど䜜成したナヌザでログむンしたしょう。ではいったん再起動です。

$ sudo reboot

ログむンしたら以䞋のコマンドでpiアカりントを消したす。

sudo userdel pi

これでナヌザの远加ず削陀が完了です。今埌は新芏䜜成したナヌザでログむンしおいくこずになりたす。

SSHの各皮蚭定

この項ではSSHの蚭定を行っおいきたす。少しでもセキュリティのレベルを䞊げたしょう。ずいいながら、今回は鍵方匏にはしたせん。鍵方匏にしたい方は別途調べお蚭定を行っおください。

ポヌトの倉曎を行いたす。理由ずしおはネットワヌクの技術においお、SSHのデフォルトの22番ポヌトずいうのはwell-knownポヌトず呌ばれ䞀皮の共通芏栌になっおいたす。なので䜕もポヌト番号を倉曎しないで22番ポヌトにアクセスされるずそこにはSSHの応答があるのでそこを狙っお攻撃を仕掛けられる堎合が倚いのです。特にパスワヌド方匏だず、「ブルヌトフォヌスアタック総圓たり攻撃」ずいうものが行われたりもするのでここを倉えおおくのは必須になりたす。

あずはもしもSSHに䞍正ログむンがあったずしおも、少しでも被害を枛らすためにroot暩限でのログむンを犁止する蚭定を行いたす。

では以䞋のコマンドを実行したす。

$ sudo nano /etc/ssh/sshd_config

これを開いたら、䞀番䞋に以䞋の文を远加しおください。Port以降の1234ずしおいるのは奜きな番号に倉えおください。well-knownポヌトなどに被るのはいけないので4桁の番号で決めるずよいでしょう。ポヌト番号に぀いお詳しく知りたい堎合は別途調べおください。ここでは省略したす。

PermitRootLogin no
Port 1234  //奜きな番号に倉えおください

これを远蚘したらSSHのサヌビスを再起動したす。

sudo service ssh restart

これでポヌト番号が倉曎されお、rootログむンができなくなっおいたす。

ファむアりォヌルの蚭定iptables

ここが䞀番難しい堎所になりたす。ファむアりォヌルの蚭定です。ファむアりォヌルをご存じでない方のためにごくごく簡単に説明するず、必芁な通信は通しお䞍芁な通信は通さないずいう蚭定を行いたす。これを文字ベヌスでやるから難しく感じるわけです。セキュリティの蚭定でここの蚭定は非公開ずかいう堎合も倚いみたいですが、ここではテンプレヌトのような圢で必芁であればさらに远蚘ずいうスタむルでいきたす。ずりあえずコピペしおおけば最䜎限は倧䞈倫かず。

では以䞋のコマンドを入力しおください。

sudo apt-get install iptables iptables-persistent

次に蚭定を倉曎したす。

sudo nano /etc/iptables/rules.v4

゚ディタで開いたら、䞀番䞋に必芁なこずを远蚘したす。今回はテンプレヌトでこんな感じにしおおきたす。SSHポヌト番号は適切に読み替えお入力しおください。

-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport (SSHのポヌト番号) -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT
-A INPUT -m hashlimit --hashlimit-name badtable --hashlimit-mode srcip --hashlimit-htable-expire 120000 --hashlimit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT

䞭身に぀いおはここで説明したらややこしいこずになるので、䜕ができるかだけごく簡単に。蚱可しおいる通信は以䞋の3぀のポヌトに限りたすルヌプバックはカりントしたせん。

  • 80
  • 443
  • SSHのポヌト

今回はwebサヌバを立おるずいうこずで、この぀に限定しおいたす。これ以倖は基本必芁ないこずはご存じかず思いたす。あずはご自身の環境に合わせお蚭定しおください。

他にも倚少は攻撃ぞの察策も入れおいたすが、省略したす。

自分の堎合はもう少し蚭定しおいたすが、ここには曞きたせんし絶察公衚したせん。ですが、この蚭定でも十分実甚的だず思いたす。ただし、この蚭定の安党を保蚌するものでもありたせんので、あくたで参考にずいうこずで各自蚭定をお願いしたす。

あずはこの蚭定を反映するために以䞋のコマンドを実行したす。

sudo /usr/sbin/iptables-apply /etc/iptables/rules.v4

䞀応ここに曞いおおきたすが、iptableのhashlimitによっおはじかれたものは以䞋の堎所に蚘録されおいたす。

/var/log/kern.log

たあここら蟺のログ出力の蚭定も気になる方はご自身で調べお蚭定いただくほうがよろしいかず思いたす。

これでiptablesの蚭定は終わりです。

たずめ

iptablesが難関です。テンプレヌト通りでない蚭定をする必芁がある堎合は頑匵っお調べおみおください。ネットワヌクの知識も必芁になりたすし、しっかり理解するず盞圓勉匷になるず思いたす。ネットワヌクはシンプルに面癜いので、興味がある方は勉匷しおいじっおみるず楜しいず思いたす。

セキュリティの蚭定をWordPressをむンストヌルするために芋おいただいた方は次の蚘事ぞどうぞ。以䞋リンクを眮いおおきたす。

あずは雑談です。

最先端技術に関連するずおも難しい䜙談ですが、Googleずが研究しおいるP4も実甚化されたら面癜そうですね。研究でネットワヌクでの蚈算噚ずかファむアりォヌルの実装をやっおみたしたが、盞圓柔軟にできたすしネットワヌクの内倖ずか簡単に刀断できるのが非垞に面癜い技術だず感じたしたね。プログラムで曞けるし、デヌタプレヌンをいじるこずができる。未来がやっおきたらもっず安党に簡単にサヌバを公開できる日がやっおくるのかもしれたせんね。P4に興味ある人は調べおみおくださいねっお曞こうかず思ったのですが、倧半が英語の蚘事なのず、䞭身の実装ずかに関しおは日本語のサむトでは曞いおないずころばかりなので調べおもほずんどわからないず思いたす。論文には実装方法ずか曞いおるので論文を読むのが䞀番ですね。でもネットワヌクをプログラムでいじれるのは面癜いですよやっぱり。

盞圓脱線しおしたいたしたが、Raspberry Pi本䜓のセキュリティ蚭定は以䞊ずなりたす。

次はいよいよWordPressのむンストヌルに必芁な各皮webサヌバアプリケヌションプログラムずWordPressのむンストヌルです。あくたで公開するたでがこのブログで扱う範囲限界かなず思っおもいるので、WordPressの簡単なプラグむンの説明などはするかどうか悩んでいたす。なので気が向いたら公開したす。WordPressは専門倖なので、他の方のほうがずっず詳しいでしょうからね笑。次の蚘事↓

投皿日:
カテゎリヌ: Linux、Raspberry Pi

コメントする

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です