Firewalldが使われることになったので、こちらを使う。
zoneは publicのみ設定します。
Firewalldの起動
現在起動していているか確認
# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)既にインストールされていているが起動していない。
firewall-cmdでも確認できる
# firewall-cmd --state not running
パッケージが最新か確認
# dnf list firewalld CentOS-8 - AppStream 448 kB/s | 4.3 kB 00:00 CentOS-8 - Base 87 kB/s | 3.9 kB 00:00 CentOS-8 - Extras 169 kB/s | 1.5 kB 00:00 CentOS-8 - PowerTools 21 kB/s | 4.3 kB 00:00 Extra Packages for Enterprise Linux Modular 8 - x86_64 15 kB/s | 8.1 kB 00:00 Extra Packages for Enterprise Linux 8 - x86_64 10 kB/s | 7.9 kB 00:00 Remi's Modular repository for Enterprise Linux 8 - x86_64 3.5 kB/s | 3.5 kB 00:00 Safe Remi's RPM repository for Enterprise Linux 8 - x86_6 3.1 kB/s | 3.0 kB 00:00 Installed Packages firewalld.noarch 0.7.0-5.el8_1.1 @BaseOS Available Packages firewalld.noarch 0.8.0-4.el8 BaseOS0.8が使えるようなのでupdate。dnfではupdateも使えるがupgradeが正しいオプション。
アップグレード
# dnf -y upgrade firewalld
起動
# systemctl start firewalld起動したとたん、SSHの接続が切られました。事によってはデータセンターに行くパターンです。
設定サービスの確認
# firewall-cmd --zone=public --list-services cockpit dhcpv6-client sshIPv6は使う予定が無いので dhcpv6-clientの通信を停止しておきます。
dhcpv6-client停止
# firewall-cmd --permanent --remove-service=dhcpv6-client success # firewall-cmd --reload見慣れないcockpitはCentOS8の操作をWEB上からできるとか。
セキュリティ面を考慮しないとすぐには利用したくないので、こちらも一旦停止しておきます。
cockpit停止
# firewall-cmd --permanent --remove-service=cockpit success # firewall-cmd --reload success
http https追加
# firewall-cmd --permanent --add-service=http success # firewall-cmd --permanent --add-service=https success # firewall-cmd --reload success
確認
# firewall-cmd --zone=public --list-services http https ssh
cockpitはデフォルトでインストールされていました。
# dnf list installed |grep cockpit cockpit.x86_64 196.3-1.el8 @BaseOS cockpit-bridge.x86_64 196.3-1.el8 @BaseOS cockpit-packagekit.noarch 197.3-1.el8 @AppStream cockpit-system.noarch 196.3-1.el8 @BaseOS cockpit-ws.x86_64 196.3-1.el8 @BaseOS
メール関連のサービス追加
必要に応じて、smtp, smtps, pop3, pop3s, imap, imapsを追加。# firewall-cmd --permanent --add-service=smtp success # firewall-cmd --permanent --add-service=smtps success # firewall-cmd --permanent --add-service=pop3 success # firewall-cmd --permanent --add-service=pop3s success # firewall-cmd --reload success
SSHのポートを変更対応
SSHのPortを12345に変更。ssh.xmlコピー
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
ssh.xm編集
# vi /etc/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="12345"/>
</service>
設定反映
# firewall-cmd --reload success
FTPのポートを変更対応
FTPのPortを12345に変更。PASV_PORT: 60100-60100
ftp.xmlコピー
# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/ftp.xml
ftp.xml編集
# vi /etc/firewalld/services/ftp.xml
?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="12345"/>
<helper name="ftp"/>
</service>
追加されていない場合はftp追加
# firewall-cmd --permanent --add-service=ftp success
PASVポート追加
# firewall-cmd --zone=public --permanent --add-port=60000-60100/tcp success
設定反映
# firewall-cmd --reload success
確認
# firewall-cmd --list-ports 60000-60100/tcp
コマンドまとめ
起動の確認
firewall-cmd --state
設定の確認
firewall-cmd --list-all firewall-cmd --get-active-zone firewall-cmd --zone=public --list-services firewall-cmd --list-ports
サービスの追加
firewall-cmd --permanent --add-service=ftp
サービスの削除
firewall-cmd --permanent --remove-service=ftp
設定反映
firewall-cmd --reload
特定のIPを拒否
firewall-cmd --zone=drop --permanent --add-source=46.38.148.0/22
lsofコマンドで現在使っているポートを確認
# lsof -i -nP ・ ・ httpd 4176 apache 3u IPv4 24324 0t0 TCP *:80 (LISTEN) dovecot 8231 root 23u IPv4 463784 0t0 TCP *:110 (LISTEN) dovecot 8231 root 24u IPv6 463785 0t0 TCP *:110 (LISTEN) dovecot 8231 root 25u IPv4 463786 0t0 TCP *:995 (LISTEN) dovecot 8231 root 26u IPv6 463787 0t0 TCP *:995 (LISTEN) dovecot 8231 root 41u IPv4 463832 0t0 TCP *:143 (LISTEN) dovecot 8231 root 42u IPv6 463833 0t0 TCP *:143 (LISTEN) dovecot 8231 root 43u IPv4 463834 0t0 TCP *:993 (LISTEN) dovecot 8231 root 44u IPv6 463835 0t0 TCP *:993 (LISTEN) master 8346 root 16u IPv4 467529 0t0 TCP *:25 (LISTEN) master 8346 root 20u IPv4 467532 0t0 TCP *:465 (LISTEN) ・ ・