firewalld†
CentOS7で導入された。動的にルールを変更できる(iptablesは再起動時に切断発生)。基本的なルールセットであるゾーンという概念があり、デフォルトはpublicゾーン。
ZONEについて†
publicだと外向けに必要最小限のポートしか開放していない。
firewall-cmd --list-all-zone
zone名 | 開放ポート | 利用ケース |
public | SSHなど最小限 | インターネット環境 |
internal | sambaなども解放 | 自宅内などの閉じた環境 |
起動や有効化など†
有効化 | systemctl enable firewalld |
起動 | systemctl start firewalld |
デフォルトゾーン確認 | firewall-cmd --get-default-zone |
デフォルトゾーン変更 | firewall-cmd --set-default-zone=external |
設定確認†
設定を見る | firewall-cmd --list-all |
すべての定義済み設定を見る | firewall-cmd --list-all-zones |
publicの定義済みポートを見る | firewall-cmd --list-ports --zone=public |
publicのすべてのルール | firewall-cmd --list-all --zone=OriginalZ |
設定ファイルの場所†
/usr/lib/firewalld/services以下にデフォルトのファイルがある。
上書きしたい場合は
/etc/firewalld/に同じファイルをコピーする。
ゾーンの操作†
サービス一覧 | firewall-cmd --get-services [--zone=public] |
サービス追加 | firewall-cmd --add-service=http [--zone=public] |
ポートの追加 | firewall-cmd --zone=public --add-port=12220/tcp --permanent |
恒久的にサービス追加(この後再起動必須) | firewall-cmd --add-service=https --permanent |
不正アクセス対策†
IP指定で禁止 | firewall-cmd --zone=drop --permanent --add-source=禁止したいIP |
設定ファイル†
特定のIPを許可†
- デフォルト拒否なので、穴あけにはacceptを利用。IP複数でもこの組み合わせを繰り返すしかないらしい。サブネットが使える。
<rule family="ipv4">
<source address="106.154.129.161/32"/>
<service name="mysql"/>
<accept/>
</rule>
zoneのDropに入れるべし