firewalldの設定方法まとめ

毎回Googleで出てきたページをいくつも徘徊するのが面倒なので、CentOS7のfirewalldの設定に使うコマンドについてまとめました。Linux初心者なので間違いがあるかもしれません。

恒久的に開放するポートに関しては、ポート番号直書きでポート開放するのではなく、firewalldのサービスとして名前をつけてから開放します。こうすることで、後から見てもわかりやすくていい感じです。番号だと、後からどれがどのサービスに使ってるポートなのかわからなくなっちゃうので。

firewalldはRedHat系とかのLinuxで使われているファイアウォール。Ubuntuとかちゃんと触ったことないけど、あっちはufwってコマンド使うらしい。わからん。使うことになったらそのとき調べます。

firewalldの公式サイト

使い方はここをみれば大体わかります。manページとか見とけばいいと思う。

それから、以下のコマンドはsuしてから実行しています。場合によっては適宜sudoをつけてあげてください。

現在の設定を確認

firewall-cmd --list-all

現在開放されているポートとかサービスとかが見れます。1番よく使う。

設定可能なサービス名の一覧を取得する

firewall-cmd --get-service

ぶわーっとサービス名の一覧が出てきます。ここに表示されるサービスは簡単に開放できます。http, imap, pop3等よく使われるポートはここにあったりします。ここにない場合、設定ファイルを作成する必要があります。

任意のサービスの情報を表示

#いろんな情報を表示
firewall-cmd --info-service=https

#ポート番号とプロトコルのみ表示
firewall-cmd --permanent --service=service --get-ports

2つ目のportsをdescriptionやshortにすると、対応した情報が出てきます。shortは簡潔な説明。descriptionは長めの説明。

ポートの開き方

サービス名で設定する場合

#恒久的な設定
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

#一時的な設定
firewall-cmd --add-service=https

こんな感じ。何も難しくないです。一時的な設定の場合、    reloadをする必要がありませんが、firewalldの再起動で設定が消えてしまいます。

ポート番号で設定する場合

firewall-cmd --add-port=443/tcp

これも同じようにちょこっと書き換えるだけなので、恒久的な設定については割愛。

ポートの閉じ方

基本的には開き方と同じ。add->removeにするだけ。permanentオプションをつけたら、同じようにreloadもする。一応例を書くとこんな感じ。サービスでも同様。

firewall-cmd --remove-port=443/tcp

サービス登録の方法

Firewalldのデフォルトで登録してあるサービスは、一般的によく使われるものだけなので、MinecraftやらTeamspeak3やらのためにポート開放するには、設定ファイルを作ってあげないといけません。

方法その1

よくブログなどで紹介されている方法は、直接設定ファイルを決まった形式で、”/etc/firewalld/services/” にxmlファイルとして保存してあげる方法。こうしてやれば、これを読み込んでくれます。

デフォルトの状態で使えるサービスの設定ファイルは”/usr/lib/firewalld/services”にあるけど、ここのファイルを編集したり、ここにファイルを追加することはしません。先述の/etc以下に雛形としてコピーして、それを編集していきましょう。設定方法は多分xmlファイルを見れば小学生でもわかります。終わったら要reload。その後でadd-serviceしてあげましょう。

方法その2

今回は正攻法っぽいこちらの方法で行きます。公式サイトにもあるmanページにしたがって、プチプチコマンドを打ちましょう。これなら置き場所とか権限の設定も気にしなくてOK。特にsudoで設定するときは、こっちのほうが楽な気がします。

今回は”teamspeak3″という名前のサービスを作成し、9987/tcpと30033/udpを設定します。

#空のserviceを作成
firewall-cmd --permanent --new-service=teamspeak3

#作成した"teamspeak3"というサービスにポートを設定
firewall-cmd --permanent --service=teamspeak3 --add-port=9987/tcp

#1つのサービスに複数のポートを設定できる
firewall-cmd --permanent --service=teamspeak3 --add-port=30033/udp

#最後にリロードして確認
firewall-cmd --reload
firewall-cmd --get-services

これでOK。descriptionとかshortの設定方法は割愛。後は上記の手順通りにサービスとして有効化するだけ。有効化したらもう1回リロードを忘れずに。

 

サービス削除方法

追加方法がわかったら、次は削除の方法。設定ファイルそのものを直接削除するか、以下のコマンドでサービスの削除が可能です。

firewall-cmd --permanent --delete-service=teamspeak3

削除すると、.old拡張子のついたファイル(今回の例なら”teamspeak.xml.old”)が保存されているため、間違って削除してしまったらこいつの拡張子を取っ払ったものを使えば良さそうです。


おわり


firewalldの設定について掘り下げた記事があまりなかったので、自分で使いたい部分に絞っていろいろまとめてみました。

これで、–list-allしたときに、

Ports: 25565tcp 9987udp 30033tcp

みたいなパット見意味のわからない数字の羅列ではなく、

Services: minecraft teamspeak3

のように、人間にわかる言語になります。ポート番号のほうがわかりやすいって人もいるかも知れませんが、これが10個くらいの数字になると軽くゲシュタルト崩壊してくるので私には無理です。

かず猫

インターネット初心者です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください