CentOS7が主流となっている昨今ですが、CentOS6と比較してセキュリティ部分に大きな変化がありました。デフォルトでfirewalldが採用されています。
注意)CentOS6で使われていたiptablesを引き続き使用したい場合は、firewalldを無効化してiptables-serviceをインストールして有効にする必要があります。
目次
現状の確認
何はともあれ、現状の確認をしていきます。
デモ用に用意した、CentOS7の[firewalld]をチェックしていきましょう。
# fireall-cmd --list-all
現状と、現在設定されているサービスをチェックしていきます。
# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client samba ssh
ports: 80/tcp 22/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
現在設定されているサービスは、ここで確認できます。
services: dhcpv6-client samba ssh
publicゾーンにhttpとhttpsを許可する
Webサーバとhttpsサーバのサービスを常に許可する設定をしてみましょう。
常に許可する場合は、–permanentオプションを追加すればOKです。
# firewall-cmd --permanent --add-service=http
success
httpサーバのサービスを常に許可する設定
# firewall-cmd -permanent --add-service=https
success
httpsサーバのサービスを常に許可する設定
# firewall-cmd --reload
設定したサービスをリロードします。
# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client http https samba ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ポートを開放する
利用するサービスに応じて任意のポートを解放していきます。
http・https
# firewall-cmd --ppermanent --add-port=80/tcp --zone=public --permanent
# firewall-cmd --permanent --add-port=443/tcp --zone=public -permanent
httpサーバ(80)とhttpsサーバ(443)のポートを解放しました。
# firewall-cmd --list-port --zone=public --permanent
80/tcp 22/tcp 443/tcp
有効な設定を確認します。
FTP
# firewall-cmd --permanent --add-port=20/tcp --zone=public --permanent
# firewall-cmd --permanent --add-port=21/tcp --zone=public --permanent
# firewall-cmd --permanent --add-port=30000-30400/tcp --zone=public --permanent
パシッブポートは、 1024/TCP以上の大きなレンジで任意の設定でOKです。
特定のIPからの接続を許可(ポート)
SSH用のゾーンを用意します。DBなどでリモート接続を許可する場合は、特定のネットワークだけに解放する必要があります。
これは、絶対に覚えておいて下さい。
# firewall-cmd --permanent --new-ZONE=ssh
success
リロードします。
# firewall-cmd --reload
リロードが終わったら、設定を以下のように行いましょう。
# firewall-cmd --permanent --zone=ssh --set-target=ACCEPT
success
# firewall-cmd --permanent --zone=ssh --add-service=ssh
success
# firewall-cmd --permanent --zone=ssh --add-source=×××.×××.×××.×××/32
success
再度リロードします。
# firewall-cmd --reload
設定状況を確認します。
# firewall-cmd --get-active-zones
ssh
sources: ×××.×××.×××.×××/32
設定の反映をします。
# systemctl reload firewalld
参考:ルールの削除/ゾーンの削除/特定のIPからのアクセスの拒否
設定を削除する場合や、特定のIPアドレスからの接続を拒否したい場合は次の様に設定します。
ルールの削除
ルールの削除はadd(追加)をremoveに変更するだけです。
# firewall-cmd --permanent --remove-port=443/tcp --zone=public --permanent
ゾーンの削除
作成したゾーンsshを削除してみます。
# firewalld-cmd --permanent --delete-zone=ssh
success
特定のIPからのアクセスを拒否する
# firewall-cmd --get-active-zones
# firewall-cmd --zone=drop --add-source=×××.×××.×××..0/24
こんな感じで、firewalldの設定ができます。
他にも色々ありますが、随時追加したり整理したりしていきます。