firewalldの簡単な使い方と理解


iptablesルールバックアップ、ルールをファイルに保存することで、ルールが失われて現在のルールを表示することを防止
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination         
  138 16695 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0           
    1 80 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0           
    1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
  304 22837 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination         
    0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 177 packets, 15647 bytes)
 pkts bytes target prot opt in out source destination  

iptables-saveを使用してiptablesルールを保存し、保存したルールを1つのファイルに出力し、保存したルールを表示します.
[root@localhost ~]# iptables-save > /usr/local/src/tmp/siyan.ipt
[root@localhost ~]# cat !$
cat /usr/local/src/tmp/siyan.ipt
# Generated by iptables-save v1.4.21 on Mon Jul 16 14:09:02 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [275:24999]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Jul 16 14:09:02 2018

現在のすべてのiptablesルールを空にし、現在iptablesルールがまだ存在するかどうかを確認します.
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 27 packets, 1860 bytes)
 pkts bytes target prot opt in out source destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination         

Chain OUTPUT (policy ACCEPT 16 packets, 1568 bytes)
 pkts bytes target prot opt in out source destination 

iptables-restore逆リダイレクトを使用して、ルールを格納するファイル内のルールをiptablesに再書き込む
[root@localhost ~]# iptables-restore < /usr/local/src/tmp/siyan.ipt 
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   25  1728 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    2   107 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 15 packets, 1428 bytes)
 pkts bytes target     prot opt in     out     source               destination

起動時にこれらのルールをロードするには、/etc/sysconfig/iptablesファイルにルールを書き込む必要があります.これにより、起動時に必要なルールがロードされ、バックアップファイルのルールがフォーマット通りにiptablesプロファイルに貼り付けられます.
[root@localhost ~]# cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Firewalldファイアウォールzoneの理解


fiewaldには9つのzoneがあります.zoneはルールを保存するルールセットです.iptablesファイアウォールを一時停止し、firewalldを有効にします.
[root@localhost ~]# systemctl disable iptables
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
[root@localhost ~]# systemctl stop iptables 
[root@localhost ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@localhost ~]# systemctl start firewalld

firewalldの9つのzoneルールセット名を表示し、firewalldのデフォルトのルールセットを表示します(iptablesのデフォルトはfilterテーブルなど、iptablesと同じです).
[root@localhost ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block             zone
[root@localhost ~]# firewall-cmd --get-default-zone
public                                                                zone

drop(破棄)、受信したネットワークパケットは破棄され、返信はありません.送信されたネットワーク接続のみ可能です.block(制限)受信したネットワーク接続は、IPv 4のicmp-host-prohibited情報とIPv 6のicmp 6-adm-prohibited情報によって拒否される.public(パブリック)はパブリックエリアで使用され、ネットワーク内の他のコンピュータがあなたのコンピュータに危害を及ぼさないとは信じられず、選択された接続しか受信できません.external(外部)特にルータに偽装機能を有効にした外部ネットワーク.ネットワークからの他の計算を信頼することはできません.コンピュータに危害を及ぼさないとは信じられません.選択された接続しか受信できません.dmz(非軍事区)はあなたの非軍事区内のコンピュータに使用され、この区域内は公開的にアクセスすることができ、限られた内部ネットワークに入ることができ、選択された接続だけを受信することができます.ワーク(ワーク)ワークスペースに使用します.ネット内の他のパソコンがあなたのパソコンに危害を及ぼさないと基本的に信じることができます.選択した接続のみを受信します.ホーム(ホーム)はホームネットワークに使用されます.ネットワーク内の他のコンピュータがコンピュータに危害を及ぼさないことを基本的に信頼することができます.選択した接続のみを受信します.internal(内部)は内部ネットワークに使用されます.ネットワーク内の他のコンピュータがコンピュータを脅かさないことを基本的に信頼することができます.選択した接続のみを受け入れます.trusted(信頼)は、すべてのネットワーク接続を受け入れることができます.

firewall zoneルールセットの変更


firewall-cmd--set-default-zone=work//デフォルトzoneルールセット設定
[root@localhost ~]# firewall-cmd --set-default-zone=work
success

Firewall-cmd--get-default-zoneデフォルトルールセットの表示
[root@localhost ~]# firewall-cmd --get-default-zone
work

firewall-cmd--get-zone-of-interface=ens 33//指定NICのzoneルールセットを調べる
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
work

クエリーのNICにzoneルールセットがない場合は、ルールセットfirewall-cmd--zone=work--add-interface=lo//指定したNICにzoneを設定する必要があります.
[root@localhost ~]# firewall-cmd --zone=public --add-interface=lo
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=lo
public

firewall-cmd--zone=dmz--change-interface=ens 33//NICに対してzoneルールセットを変更
[root@localhost ~]# firewall-cmd --zone=dmz --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'dmz'.
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
dmz

firewall-cmd--zone=dmz--remove-interface=ens 33//NICに対してzoneを削除し、zoneを削除するとデフォルトのzoneに戻り、firewall-cmd--get-active-zonesを使用してすべてのNICがあるzoneを表示します
[root@localhost ~]# firewall-cmd --zone=dmz --remove-interface=ens33
The interface is under control of NetworkManager, setting zone to default.
success

firewall-cmd--get-active-zones//システムのすべてのNICがあるzoneを表示
[root@localhost ~]# firewall-cmd --get-active-zones
work
  interfaces: ens33
public
  interfaces: lo

Firewallのserver操作


サービスはすべてのサービスに対して開放的なルールであり、サービスは指定したサービスポートを放行し、サービス名でfirewall-cmd--get-サービス//システムの現在のすべてのサービスをリストすることができる.
[root@localhost ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp open*** pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

サーバのservicesを追加し、iptables内にローのポート番号を追加します.
[root@localhost ~]# firewall-cmd --zone=public --add-service=http
success

追加サービスの表示
[root@localhost ~]# firewall-cmd --zone=public --list-service
dhcpv6-client ssh http

サービス・ロー・ポートを永続的に追加します.permannetは、httpが使用されていない場合は、プロファイルに保存されません.
[root@localhost ~]# firewall-cmd --zone=public --add-service=ftp --permanent
success
[root@localhost ~]# cat /etc/firewalld/zones/public.xml


  Public
  For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
  
  
  

~

firewallのzoneルールにはテンプレートがあり、firewallはテンプレートでこれらのzonesルールを作成し、テンプレートは/usr/lib/firewall/zonesの下に保存され、zoneの格納場所
[root@localhost ~]# ls /etc/firewalld/zones/
public.xml public.xml.old
[root@localhost ~]# ls /usr/lib/firewalld/zones/
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml

必要に応じて、work zoneの下でカスタムftp 121ポートを放行し、ftpのテンプレートファイルを/etc/firewalld/services/ディレクトリの下にコピーし、port="1121"を変更します.
[root@localhost ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
[root@localhost ~]# vim /etc/firewalld/services/ftp.xml 



  FTP
  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.
  
  

workのzoneにftpローのservicesを追加し、テンプレートworkのzoneを/etc/firewalld/zones/ディレクトリにコピーし、ftpの構成を追加します.
[root@localhost ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
[root@localhost ~]# vim /etc/firewalld/zones/work.xml 



  Work
  For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
  
  
  

~      

zoneの構成を再ロードし、新しいftpのservicesを表示します.
 [root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=work --list-services
ssh ftp dhcpv6-client