LoginSignup
0
1

More than 5 years have passed since last update.

Centos7 firewallについてのメモ(編集中)

Last updated at Posted at 2017-04-23

centos7(rhel7) firewalldについて

centos6.xからしか触ったことがないのでiptablesしか使ったことがなかったのですが
自分でvps(centos7)を使うことになったため設定についてメモします。

firewalldとは

動的ファイアウォールデーモンである firewalld は、動的に管理されるファイアウォールを提供し、信頼レベルをネットワークと関連する接続およびインターフェースに割り当てるネットワーク「ゾーン」をサポートします。これは、IPv4 および IPv6 のファイアウォール設定をサポートします。また、イーサネットブリッジをサポートし、実行時と永続的な設定オプションを別々にすることできます。

rhel7のドキュメント抜粋

上記はつまり、各インターフェイスに対して「ゾーン」というネットワーク接続の許容範囲を設定したファイルを適用できるため、NIC1は〇〇,NIC2には××というように適切なネットワークの接続の範囲を設定できる。また、動的なデーモンとのことで設定したら即座に反映される。(ファイアーウォールの再起動が不要となった)NICごとにfirewallの設定ができるのは嬉しですね。

ゾーンについて

以下の表に記載している通りの機能がデフォルトで設定されいます。
これを使用するNICに適用できます。

ゾーン 説明
drop 着信ネットワークパケットはすべて遮断され、返信されない 送信ネットワーク接続のみが可能
block すべての着信ネットワーク接続が拒否 システム内で開始されたネットワーク接続のみが可能
public "ssh" "dhcpv6-client" のみ許可されている(デフォルト設定)
external "ssh" のみ許可されている ipマスカレードが有効となっている
dmz "ssh" のみ許可されている 内部へのアクセスは制限されている
work "ssh" "dhcpv6-client" のみ許可されている 作業エリア用
home "ssh" "mdns" "samba-client" "dhcpv6-client" のみ許可されている
internal "ssh" "mdns" "samba-client" "dhcpv6-client" のみ許可されている
trusted 全てのネットワーク接続が許可されている

現在設定されている設定を確認するには以下のコマンドで確認できます。

#firewall-cmd --get-active-zones
public
  interfaces: enp0s3

私の環境ではenp0s3のNICにpublicのゾーンが設定されていることがわかりますね。

ゾーンの設定

ゾーンの設定は/etc/firewalld/zones/にあるファイルを記載していきます。
初期ではpublic.xmlとpublic.xml.oldというファイルがありました。

ls /etc/firewalld/zones/
public.xml  public.xml.old

public.xmlの内容を書き換えると新しい設定が反映されます。
もし、NICにpublic以外のゾーンを設定したいときは/usr/lib/firewalld/zones配下にあるファイルをコピーして使います。

※注意 /usr/lib/firewalld/zones配下のファイルを削除しないようにしましょう。

#cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

設定の変更は以下のコマンド

#firewall-cmd --set-default-zone=work 
#firewall-cmd --get-active-zones
work
  interfaces: enp0s3

ゾーンがworkに変わっていることがわかりますね。

ゾーンに定義を追加する

使用しているゾーンに新しく許可するサービスを追加したい場合は以下のコマンド実行する

#firewall-cmd --zone=work --add-service=smtp
#firewall-cmd --zone=work  --list-all
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client smtp ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

上記のservicesにsmtpが追記されたことが確認できます。
※※ただし注意しなければいけないことがこれだけだとサーバ再起動時にはこの設定が消えてしまうので --permanent を記載してやらないといけないので常時設定とする場合は気をつけていください。

常時設定としてサービスを追加してやる場合は以下

#firewall-cmd --zone=work --permanent --add-service=smtp
#firewall-cmd --zone=work --permanent --list-all
work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client smtp ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

これで再起動しても設定が反映されている状態となります。

zoneの設定時には --permanent を入れるかどうかを念頭におく必要がありますね。

また、 --permanent コマンドのみ実行した場合は

#firewall-cmd --zone=work --list-all

には反映されないので

#firewall-cmd --reload

をしてあげる必要があります。

今回やりたいこと

今回firewallの設定を記載しているのはお名前.comのvpsレンサバを使用するためです。
2017/3にcentos6で使用していたvpsがDDoS攻撃にあってしまいvpsを止められてしまいos再インストールの対処しか対応してもらえなかったです。
(自分のiptableの制御が甘々だったため(1日1回ログをみてxx回不正アクセスがあったipを制御するという悲惨なものでした)なので仕方ないですが、今後は不正アクセスがあったら即時にip制御する必要がありますね。)

ここでやりたいことは
①不正アクセスを確認する
②xx回以上不正アクセスがあったipをブロックする

①不正アクセスを確認する方法

centos7からログはjounalctlが司っているためそちらからログを確認する必要があります。

memo

IPを破棄する

firewall-cmd --zone=drop --permanent --add-source=192.168.0.102

firewallの再起動で反映

firewall-cmd --reload

memo

(編集中)

参照サイト
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html
https://www.jdbc.tokyo/2014/10/centos7-firewalld-startup/
https://fedoraproject.org/wiki/FirewallD/jp

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1