[2014-07] 新規作成。[2022-03] CentOS Stream 9, openSUSE 15.4 設定例。
Linuxでファイアウォールを設定する方法。
Fedora 18までは, ファイアウォールは, NetfilterとIPTablesの組み合わせで設定していました。また, GUIは system-config-firewall でした。
Fedora 19 & CentOS 7 からは, firewalld
を使うようになっています。裏では, iptables toolが使われています。
iptablesは、設定が宣言的でなく, さまざまなプログラムから設定を自動的に変更するのが難しい。
そこで, ファイアウォールを抽象化し, また、外部からAPIで設定変更できるようになっています。
内部で iptables を使っていますが, iptablesサービスとは併用できません。もし iptablesサービスが有効になっていた場合は, あらかじめ止める必要があります。
(2014.7) GUIでの設定は, firewall-config コマンドを使う。パッケージは firewall-config
パッケージ。マンマや。
[2022-03]
CentOS 7 で iptables から代わった. iptables コマンドもまだ現役。CentOS Stream 9 では, iptables の設定ファイル /etc/sysconfig/iptables
はない
次のポートのみ開ける。
サービス | ポート番号 | |
---|---|---|
ssh | 22 | |
http | 80 | |
https | 443 | |
smtp | 25 | これはメールサーバ間. 認証なし |
smtp over ssl | 465 | |
dns | tcp 53, udp 53 | |
imap | 143 | これは開けなくてよい。 |
imap over ssl | 993 |
設定ファイルは /etc/firewalld/zones/public.xml
. 開けるサービスだけを書いていけばOK.
再起動。
# systemctl restart firewalld
動作の確認。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dns http https imaps smtp smtps ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
以前のiptablesサービスを使う場合は, firewalldサービスは停止しておかなければならない。
設定ファイルは /etc/sysconfig/iptables
です。例えば、次のように書きます。
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # SSHは通す -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
リモートシェルのSSH。設定ファイルは /etc/ssh/sshd_config
です。