Afternoon Log

日々のことや、技術的な備忘録を吐き出していくつもり

CentOS7 の firewalld設定

firewalld

CentOS 7からiptablesではなくfirewalldになりましたね。
これは今更というものでしょうが……。
実際 ` centos7 firewalld `とでも検索すれば、
firewalld-cmdコマンド周りのことは出てくるんですよね。
なので、この記事は後々自分が調べなくて良くするためです。


firewalld の確認

特にいじってなければ最初から起動していると思うんですが、ちゃんと確認しないとね。

$ sudo systemctl status firewalld

もし無効化されているなら、statusenableに書き換えると有効化されます。
起動していなければstartに。

そして次にzoneの確認。
用途やethによって切替可能な幾つかの設定群みたいな。

$ firewall-cmd --list-all
$ firewall-cmd --get-default-zone

デフォルトのpublicだと思います。
上ではデフォルトの詳細, 下では現在のデフォルト名を確認できます。

firewalld の編集

そうして次のコマンドでpublic zoneに、定義済みサービスを追加・削除していく感じです。
例えばhttpだとこんな。

// 定義済みサービス一覧
$ sudo ls /usr/lib/firewalld/services
$ firewall-cmd --get-services

$ sudo firewall-cmd --add-service=http --zone=public --permanent
// $ sudo firewall-cmd --permanent --add-port=80/tcp

permanentをつけると恒久的に加えることになります。
addremoveにすると削除です。
サービス名でどうこうするのではなく、コメントアウトしたようにポートを指定することも可能です。
因みに、変更を加えたら /etc/firewalld/zones/public.xml が作成されます。

httpは既にhttp.xmlが用意されているので楽ですが、自分で定義したいこともあります。
基本的に難しいことはなく、/usr/lib/firewalld/services/ にあるxmlをコピーして、書き換えるだけです。
hoge.xmlを用意して

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Hoge</short>
  <description>hogehoge service</description>
  <port protocol="tcp" port="xxx"/>
</service>

と書いていって先ほどと同じように追加するだけです。

$ sudo firewall-cmd --add-service=hoge --zone=public --permanent

さて、firewalldを弄りました。
なので、リロードします。

$ sudo firewall-cmd --reload

これにて、firewalldの簡単なメモはおしまい……かな?



余談
記事書いてて思ったけど、
シンタックスシェルスクリプトにしているから、
"#"がコメントの扱いになって、コマンド全部青色になっちゃうのよね。
rootと一般ユーザーを#, $で分けるために付けていたけど、やっぱ基本的に一般ユーザーにしてsudoが無難かな。