LoginSignup
6
5

More than 3 years have passed since last update.

Amazon Linux 2にfirewalldを追加(IPアドレス制限)

Last updated at Posted at 2020-10-20

関連URL

Amazon Linux 2ではfirewalldは不要?

amazon linux + firewalldでググると上位表示される記事の多くで『Amazon Linux 2には同等の機能を持つセキュリティグループやネットワークALCがある(しかもサーバの手前でブロックしてくれる)のでfirewalldは使用しないでよい』と記載されています。

ただ「特定のIPアドレスの接続を拒否したい場合」に以下の問題があります。

  • セキュリティグループ・・・ホワイトリスト方式(設定できるのは「許可」。拒否は指定不可)
  • ネットワークACL・・・「拒否」設定可能。(許可も)。設定できる数に上限(20)がある。
  • ALB・・・ブラックリスト方式。HTTP/HTTPS限定

したがって20を超えるIP制限をしたい場合はfirewalldの出番です。

環境/前提

  • 2020年10月20日現在/東京リージョンのEC2
  • OSはAmazon Linuxyum update
  • EC2に割り当てているセキュリティグループのインバウンドで利用するポートへのアクセス許可がされている
    • 本記事の場合はssh(22),http(80),https(443)

Image from Gyazo

導入

インストール

yum install firewalld

永続化(サーバ再起動時に自動起動)

systemctl enable firewalld.service

開始

systemctl start firewalld.service

ステータス確認 => ActiveになっていればOK

systemctl status firewalld.service

利用できるサービスを限定(ssh/http/https)

public{ゾーンに追加します。ホワイトリスト方式です。
最後にリロードを忘れずに。(
systemctl reload firewalld`は不要)

firewall-cmd --add-service=http  --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --add-service=ssh   --zone=public --permanent
firewall-cmd --reload

--permanent:サーバ再起動しても有効

IPアドレス制限

dropゾーンにアドレスを指定します。ブラックリスト方式です。

firewall-cmd --zone=drop --permanent --add-source=<IPアドレス範囲/CIDR>
firewall-cmd --reload

動作確認

--get-active-zone

当方の環境だと--get-active-zoneを実行しても結果が返ってきませんでした。--reloadしても同じ。
不安になりますが、実はこの状態でもfirewalldは動作しています。(サーバ再起動(# reboot)すると表示されるようになりました)

期待した結果 実際の結果
# firewall-cmd --get-active-zone
drop
  sources: <指定したIPアドレス範囲>
public
  interfaces: eth0
# firewall-cmd --get-active-zone
<空>

--list-all

こちらもinterfacesが空になっていて不安になりますが動作していました。(こちらもサーバ再起動で表示されるようになりました)

サーバ再起動前の(不安になる)表示

# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client https http
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

有効なサービス確認(firewall-cmd --list-services)

これはサーバ再起動しないでも表示されてました。

# firewall-cmd --list-services
ssh dhcpv6-client https http

dhcpv6-clientは最初から有効化されているサービスです

動作確認

publicゾーン、dropゾーンに追加、削除しながら意図した動作になっているか確認します。
sshをpublicから外した後に全部ログアウトしてしまうとまずい(ですよね?)ので、外さないように注意。

6
5
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
6
5