跳至主要内容

centos7 firewalld 防火墙的设置

CentOS 7 firewalld よく使うコマンド

CentOS 7ではファイアウォール(以下、FW)のサービスが iptables から firewalld に変わりました。
FWの設定は基本的に firewall-cmd にて行います。よく使うコマンドをまとめます。

サービスの起動

「bash-completion」がインストール済みの場合、[TAB]キーで補完可能です。
サービス名を指定する際の「.service」は省略可能です。
サービスの起動
# systemctl start firewalld.service
サービスの状態確認
# systemctl status firewalld.service

# firewall-cmd --state
running
<余談>サービスの終了
# systemctl stop firewalld.service

自動起動の設定

自動起動の設定
# systemctl enable firewalld.service
自動起動設定の状態確認
# systemctl is-enabled firewalld.service 
enabled
<余談>自動起動の解除
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost ~]# systemctl is-enabled firewalld.service
disabled

設定の確認

ゾーンの割り当て状態

firewalld にはゾーンという概念があり、ゾーンにFWの設定が入っています。ゾーンは標準で9つ用意されています。(追加も可能)
NIC に対して、ゾーンを割り当てて管理します。

現在割り当てられているゾーンの確認

「--get-active-zones」オプションを指定することで、現在割り当てられているゾーン(以下、アクティブゾーン)を確認できます。
アクティブゾーンの確認
# firewall-cmd --get-active-zones
public
  interfaces: ens160
上記の例では、「public」ゾーンが「ens160」インターフェースに割り当てられていることが確認できます。

デフォルトで割り当てられるゾーンの確認

「--get-default-zone」オプションを指定することで、デフォルトで割り当てられるゾーン(以下、デフォルトゾーン)を確認できます。
特にNICに対してのゾーンの割り当てがない場合は、デフォルトゾーンが割り当てられます。
デフォルトゾーンの確認
# firewall-cmd --get-default-zone
home

FWの設定状態の確認

デフォルトゾーン

「--list-all」オプションを指定することでデフォルトゾーンの現在のFW設定を確認できます。
デフォルトゾーンのFW設定確認
# firewall-cmd --list-all
※デフォルトゾーンとアクティブゾーンが異なる場合はアクティブゾーンの設定を見るように促す注意書きが出力されます。
 明示的にゾーンを指定する必要があります。他のコマンドを実行する際も同様に注意書きが出力されます。
デフォルトゾーン(home)とアクティブゾーン(public)が異なる場合
# firewall-cmd --list-all
You're performing an operation over default zone ('home'),
but your connections/interfaces are in zone 'public' (see --get-active-zones)
You most likely need to use --zone=public option.

home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

指定したゾーン

「--zone」オプションを指定することで任意のゾーンの現在のFW設定を確認できます。
指定したゾーンのFW設定を確認(homeの例)
# firewall-cmd --list-all --zone=home
home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

すべてのゾーン

「--list-all-zones」オプションを指定することですべてのゾーンの現在のFW設定を確認できます。
すべてのゾーンのFW設定を確認
# firewall-cmd --list-all-zones

恒久的なFW設定の確認

「--permanent」オプションを指定することで、恒久的な設定をそれぞれ確認できます。
※一時的に追加した設定は表示されません。再起動後も反映される設定となります。
デフォルトゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all --permanent
指定したゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all --zone=home --permanent
すべてのゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all-zones --permanent

FWの設定

サービス

ゾーンにサービスを追加することで、そのサービス用のFW設定が反映されます。
サービスのFW設定は、XMLファイルで定義されており、以下の場所に格納されています。
/usr/lib/firewalld/services/

登録可能なサービスの確認

「--get-servicess」オプションを指定することで登録可能なサービス名一覧を確認できます。
登録可能なサービスの確認
# firewall-cmd --get-services

現在追加されているサービスの確認

「--list-services」オプションを指定することで現在追加されているサービスを確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
 ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
現在追加されているサービスの確認
# firewall-cmd --list-services --zone=public
dhcpv6-client ssh https
現在追加されているサービスの確認(恒久的な設定のみ表示)
# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh

サービスの追加

「--add-service」オプションを指定することでサービスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに登録されます。
サービスの追加(publicゾーンに対して、httpsを追加する例)
# firewall-cmd --add-service=https --zone=public 
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
サービスの追加(恒久的な設定とする場合)
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload
success

サービスの削除

「--remove-service」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
サービスの削除
# firewall-cmd --remove-service=https --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
サービスの削除(恒久的な設定とする場合)
# firewall-cmd --remove-service=https --zone=public --permanent
# firewall-cmd --reload
success

ポート番号

現在追加されているポート番号の確認

「--list-ports」オプションを指定することで現在追加されているポート番号を確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
 ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
現在追加されているポート番号の確認
# firewall-cmd --list-ports --zone=public
現在追加されているポート番号の確認(恒久的な設定のみ表示)
# firewall-cmd --list-ports --zone=public --permanent

ポート番号の追加

「--add-port」オプションを指定することでサービスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
ポート番号の追加(デフォルトゾーンに対して、TCP8080、UDP60000の例)
# firewall-cmd --add-port=8080/tcp --zone=public
# firewall-cmd --add-port=60000/udp --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-port=8080/tcp --zone=public --permanent
# firewall-cmd --add-port=60000/udp --zone=public --permanent
# firewall-cmd --reload
success

ポート番号の削除

「--remove-service」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
ポート番号の削除
# firewall-cmd --remove-port=8080/tcp --zone=public
# firewall-cmd --remove-port=60000/udp --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の削除(恒久的な設定とする場合)
# firewall-cmd --remove-port=8080/tcp --zone=public --permanent
# firewall-cmd --remove-port=60000/udp --zone=public --permanent
# firewall-cmd --reload
success

IPアドレス

現在追加されているIPアドレスの確認

「--list-sources」オプションを指定することで現在追加されているIPアドレスを確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
現在追加されているIPアドレスの確認
# firewall-cmd --list-sources --zone=public
現在追加されているIPアドレスの確認(恒久的な設定のみ表示)
# firewall-cmd --list-sources --zone=public --permanent

IPアドレスの追加

「--add-source」オプションを指定することでIPアドレスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。

アクセス許可

許可アドレスの追加
# firewall-cmd --add-source=192.168.0.0/24 --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-source=192.168.0.0/24 --zone=public --permanent
# firewall-cmd --reload
success

アクセス拒否

「drop」ゾーンに対してIPアドレスを登録することで拒否IPアドレスとなります。
拒否アドレスの追加
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop 
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success

アクセス元IPアドレスのゾーンの変更

すでに登録済みのIPアドレスは、「--change-source」オプションを指定することで、ゾーンの変更が行えます。
アクセス元IPアドレスに割り当てられているゾーンの変更(dropに変更の例)
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop
アクセス元IPアドレスに割り当てられているゾーンの確認
# firewall-cmd --get-zone-of-source=192.168.11.0/24
drop
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ゾーンの変更(恒久的な設定とする場合)
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success

IPアドレスの削除

「--remove-source」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
IPアドレスの削除
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
IPアドレスの削除(恒久的な設定とする場合)
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success

ゾーンの変更

アクティブゾーンの変更

「--change-interface」オプションを指定することでアクティブゾーンを変更できます。
アクティブゾーンの変更(ens160に対する割り当てをhomeに変更する例)
# firewall-cmd --zone=home --change-interface=ens160
アクティブゾーンの変更(恒久的な設定とするかつすぐに反映させる場合)
# firewall-cmd --zone=home --change-interface=ens160 --permanent
# firewall-cmd --reload
success

デフォルトゾーンの変更

「--set-default-zone」オプションを指定することでデフォルトゾーンを変更できます。
NICに対してゾーンの割り当ての指定が特にない場合は、デフォルトゾーンが割り当てられます。
デフォルトゾーンの変更(homeに変更する例)
# firewall-cmd --set-default-zone=home

サービスの新規作成

サービスは独自に作成することも可能です。
詳しくは、firewall-cmdのマニュアル(man firewalld-cmd)をご覧ください。
「--permanent」オプションは必須です。
hogeサービスの作成
# firewall-cmd --permanent --new-service hoge

# cat /etc/firewalld/services/hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
</service>
※/etc/firewalld/services/hoge.xml が作成されます。
既存のxmlファイルから作成する場合
# firewall-cmd --permanent --new-service-from-file=[filename] --name=[別名をつける場合]
hogeサービスの説明文追加
# firewall-cmd --permanent --service=hoge --set-description=[説明文]
# firewall-cmd --permanent --service=hoge --set-short=[短い説明文]
hogeサービスにFW設定追加の例
# firewall-cmd --permanent --service=hoge --add-port=2020/tcp
# firewall-cmd --permanent --service=hoge --add-source-port=60000-65000/udp
# firewall-cmd --permanent --service=hoge --set-destination=ipv4:192.168.0.1/24

# cat /etc/firewalld/services/hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>[短い説明文]</short>
  <description>[説明文]</description>
  <port protocol="tcp" port="2020"/>
  <source-port protocol="udp" port="60000-65000"/>
  <destination ipv4="192.168.0.1/24"/>
</service>
再読み込み
# firewall-cmd --reload
hogeサービスの削除
# firewall-cmd --permanent --delete-service=hoge

评论

此博客中的热门博文

7z 7zip 命令行压缩解压详解

7z 1) 简介 7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。 主页:http://www.7-zip.org/ 中文主页:http://7z.sparanoid.com/ 命令行版本下载:http://7z.sparanoid.com/download.html 主要特征: # 全新的LZMA算法加大了7z格式的压缩比 # 支持格式: * 压缩 / 解压缩:7z, XZ, BZIP2, GZIP, TAR, ZIP * 仅解压缩:ARJ, CAB, CHM, CPIO, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, UDF, VHD, WIM, XAR, Z 2)退出代码 0 : 正常,没有错误; 1 : 警告,没有致命的错误,例如某些文件正在被使用,没有被压缩; 2 : 致命错误; 7 : 命令行错误; 8 : 没有足够的内存; 255 : 用户停止了操作; 3)使用语法 7z <命令行> [<选项>...] <基本档案名称> [<参数变量>...] 在方括号内的表达式(“[” 和 “]”之间的字符)是可选的。 在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。 7-Zip 支持和 Windows 相类似的通配符: “*”可以使用星号代替零个或多个字符。  “?”可以用问号代替名称中的单个字符。 如果只用*,7-Zip 会将其视为任何扩展名的全部文件。 4)命令及实例 a 添加文件到压缩档案。 7z a archive1.zip subdir\  :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived1.zip中的文件名包含subdir\前缀。 7z a archive2.zip .\subdir\* :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived2.zip中的文件名不包含subdir\前缀。 cd /D c:\dir1\  7z a c:\archive3.zip dir2\dir3\  :archiive3.zip中的文件名将包含dir2\dir3\前

新版wii购机及修复断脚芯片改机过程

今天新开了我的博客,暂时还没啥内容,先把我去年写的wii的购机和破解帖子贴过来,以后我将和大家分享我生活的点点滴滴。 事情发生在2007年的7月7日这个周末 国内的朋友,访问速度慢的话,可以访问这个地址http://bbs.nanqiao.net/dispbbs.asp?boardid=9&id=57877&star=1#57877 在买这台wii之前,我曾经帮一个朋友改过一台老板的wii,芯片是另外一个朋友刷好wiifree的pic,整个修改过程,就1个半小时左右。 最近觉得很无聊,而且,听说任天堂已经出了不能改直读的光驱芯片的版本了,为了以防万一,决定要去买台wii来玩玩。这次购机和改机过程,从头到尾都不顺利。从上周四开始,我每天都往秋叶原的yodobashi跑,礼拜五下午去,没货,晚上再去,还是没货,于是,我步行到上野的yodobashi去碰碰运气,给我的答案也是没货。之后,托我的朋友到町田的yodobashi去看,确认那里有货,不过考虑到我有1万多的点数要用掉,朋友也说,礼拜六早上,秋叶原yodobashi没有理由不进货的,所以还是决定周六自己再去秋叶园一次。 礼拜五晚上,我没闲着,之前已经从前面的那个朋友那里拿来了3颗12f629和烧录器,就在我家唯一一台带串口的台式机上开始烧片了。事情进展很不顺利,下面的内容省略,我一直烧到临晨三点才睡。 礼拜六一早,我8点半起床,吃了早饭和老婆直奔秋叶原。到那里9点45分,发现已经开门了,我觉得很奇怪,因为之前有小春的朋友和我说是10点开门的。直接上六楼,(天天来,太熟悉了),在电动扶梯上,就看到ds,緊急入荷中,可是,我的wii,还是一片红色。当时的心情我真的没法说,三天来,我为了找wii,在交通费上就已经花了好几千日元了。而且我更加后悔,昨天没让我的朋友帮我在町田买。老婆看我这个样子,就说干脆买个dvd刻录机回去,我知道她想安慰我,应为我想买dvd刻录机也想了很久了。这是我还不死心,于是和老婆两个步行去上野的yodobasi,还好天气不错,没啥太阳。到了那里,我直接上2楼的左侧,抓到一个店员就问有没有wii。这是,我看到一个女的在柜台上付款,面前就放了一台wii。我立刻排到她身后。运气还不错,我买的是当天最后第三台wii,先买了一个遥控器和一个双节棍,然后在买wii,把我原先的点