firewalldの簡単な使い方と理解
11129 ワード
iptablesルールバックアップ、ルールをファイルに保存することで、ルールが失われて現在のルールを表示することを防止
iptables-saveを使用してiptablesルールを保存し、保存したルールを1つのファイルに出力し、保存したルールを表示します.
現在のすべてのiptablesルールを空にし、現在iptablesルールがまだ存在するかどうかを確認します.
iptables-restore逆リダイレクトを使用して、ルールを格納するファイル内のルールをiptablesに再書き込む
起動時にこれらのルールをロードするには、/etc/sysconfig/iptablesファイルにルールを書き込む必要があります.これにより、起動時に必要なルールがロードされ、バックアップファイルのルールがフォーマット通りにiptablesプロファイルに貼り付けられます.
Firewalldファイアウォールzoneの理解
[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
[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
[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
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
[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
[root@localhost ~]# firewall-cmd --zone=public --add-service=http
success
[root@localhost ~]# firewall-cmd --zone=public --list-service
dhcpv6-client ssh 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.
~
[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
[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.
[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.
~
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=work --list-services
ssh ftp dhcpv6-client