Linux系统优化之防火墙

一、防火墙简介

  Centos7和Centos6防火墙的区别:

  Centos6 使用iptables工具,主要用于过滤数据包,属于网络层防火墙

  Centos7 使用firewall工具,能够允许哪些服务可用,哪些端口可用,属于更高一层的防火墙

二、工作模式

  Centos中firewalld默认有九种(zones)工作模式:

  [root@centos02 22:51:55 zones]# ls
  block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml   # 9种不同的区域配置

  block(限制):任何接受的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。

  dmz(非军事区):用于你的非军事区内的电脑,此区域可公开访问,可以有限的进入你的内部网络,仅仅接收经过选择的连接。

  drop(丢弃):任何接收的网络数据包都被丢弃,没有任何恢复,仅能有发送出去的网络连接(不能进来,但是可以出去)

  external(外部):特别是为路由器启动了伪装功能的外部网,你不能信任来自网络的其他计算机,不能相信他们不会对你造成伤害,只能接收经过选择的连接。

  home(家庭):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收经过选择的连接

  internal(内部):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收金国选择的连接

  public(公共):默认的模式,在公共区域内使用,不能相信网络内其他计算机不会对你造成危害,只能接收经过选取的连接

  trusted(信任):可接收所有的网络连接

  work(工作):用于工作区,你可以基本信任网络的其他电脑不会对你造成危害,仅仅接收经过选择的连接

  

  问题:对于一个具体的请求应该哪个zone来处理呢?通过firewalld.conf配置文件进行处理

[root@centos02 23:19:31 ~]# cat /etc/firewalld/firewalld.conf
# firewalld config file

# default zone
# The default zone used if an empty zone string is used.
# Default: public
DefaultZone=public

 

三、相关文件   

  The configuration for firewalld is stored in various XML files in /usr/lib/firewalld and /etc/firewalld

  1. 系统配置目录(主要的作用:提供配置文件的模板信息)

   /usr/lib/firewalld/zones/*    # 目录中存放不同级别的区域配置信息

   /usr/lib/firewalld/services/*.xml     # 目录中存放定义好的网络服务以及端口参数,除非很熟悉,否在不建议修改

[root@centos01 ~]# ll /usr/lib/firewalld/services/*.xml
-rw-r--r--. 1 root root 412 Apr 11 2018 /usr/lib/firewalld/services/amanda-client.xml
-rw-r--r--. 1 root root 447 Apr 11 2018 /usr/lib/firewalld/services/amanda-k5-client.xml
-rw-r--r--. 1 root root 320 Apr 11 2018 /usr/lib/firewalld/services/bacula-client.xml
-rw-r--r--. 1 root root 346 Apr 11 2018 /usr/lib/firewalld/services/bacula.xml
-rw-r--r--. 1 root root 275 Apr 11 2018 /usr/lib/firewalld/services/bitcoin-rpc.xml
-rw-r--r--. 1 root root 307 Apr 11 2018 /usr/lib/firewalld/services/bitcoin-testnet-rpc.xml
-rw-r--r--. 1 root root 281 Apr 11 2018 /usr/lib/firewalld/services/bitcoin-testnet.xml
-rw-r--r--. 1 root root 244 Apr 11 2018 /usr/lib/firewalld/services/bitcoin.xml
-rw-r--r--. 1 root root 294 Apr 11 2018 /usr/lib/firewalld/services/ceph-mon.xml
-rw-r--r--. 1 root root 305 Apr 11 2018 /usr/lib/firewalld/services/ceph.xml
-rw-r--r--. 1 root root 168 Apr 11 2018 /usr/lib/firewalld/services/cfengine.xml

 

具体信息:

[root@centos01 ~]# cat /usr/lib/firewalld/services/telnet.xml
<?xml version="1.0" encoding="utf-8"?>
<service>  # 表示一个服务
<short>Telnet</short>  # 表示服务的名称
<description>Telnet is a protocol for logging into remote machines. It is unencrypted, and provides little security from network snooping attacks. Enabling telnet is not recommended. You need the telnet-server package installed for this option to be useful.</description>  # 服务的描述
<port port="23" protocol="tcp"/>  # 端口,使用port可以不通过service而直接对端口进行设置
</service>

 

  2. 用户配置目录(注意所有用户做的配置都会保存在这个目录的某个文件中)

  /etc/firewalld    # 用于存放用户的配置信息,配置文件跟系统目录差不多

[root@centos02 23:26:53 ~]# ls /etc/firewalld/
firewalld.conf helpers icmptypes ipsets lockdown-whitelist.xml zones

services    # zone模式最根本的是调用不同services实现了不同的效果

四、配置端口

  方式一:配置命令

  firewall-cmd --permanent --add-port=9527/tcp  # 默认会在/etc/firewalld/zones/public.xml中新增一条记录

  <port protocol="tcp" port="9527"/>  # 端口已经被添加

  firewall-cmd --zone=dmz --permanent --add-port=8010/tcp  # 指定模式,会在dmz.xml新增一条记录

  

  方式二:配置文件

[root@centos02 19:39:00 zones]# pwd  # 当前用户配置信息保存的路径
/etc/firewalld/zones

[root@centos02 20:01:46 zones]# ls  # 当前用户配置信息的具体文件信息,old是指备份文件信息
public.xml public.xml.old

[root@centos02 19:57:13 zones]# cat public.xml  # 查看zones中名为public
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>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.</description>
<service name="ssh"/>  # 服务的名称
<service name="dhcpv6-client"/>  # 服务
<port protocol="tcp" port="9527"/>  # 新增的端口记录
</zone>

 五、常用命令

  systemctl status firewalld.service 查看firewalld状态

  systemctl start firewalld.service 开启

  firewalld systemctl stop firewalld.service 关闭

  firewalld firewall-cmd --zone=public --add-port=80/tcp --permanent 永久添加指定端口

  firewall-cmd --zone=public --remove-port=8080/tcp --permanent 永久移除指定端口

  firewall-cmd --query-port=3306/tcp 查看端口是否被开放,返回yes/no

  firewall-cmd --list-all 查看所有开放的端口

  systemctl enable firewalld.service 开启自启

  systemctl disable firewalld.service 禁止开机自启

  systemctl is-enabled firewalld.service 查看是否开机自启

  firewall-cmd --reload 更新防火墙规则(立即生效,永久添加时需要reload)

六、案例

举例:(使用配置文件的方法修改zone和service)

1.需求:把ftp服务自定义端口1121,需要在work zone下面方形ftp

[root@litongyao zones]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services   (复制模板到service下)

[root@litongyao zones]# vim /etc/firewalld/services/ftp.xml              (修改ftp的配置文件,修改端口1121)

[root@centos02 00:23:14 ~]# cat /usr/lib/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="21"/>
<module name="nf_conntrack_ftp"/>
</service>

[root@litongyao zones]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/         (复制模板到zones下)

[root@litongyao zones]# vim /etc/firewalld/zones/work.xml             (修改work.xml的配置文件,把ftp加到里面)

[root@centos02 00:37:28 ~]# cat /usr/lib/firewalld/zones/work.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Work</short>
<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>

<service name="ftp"/>
</zone>

[root@litongyao zones]#  firewall-cmd --reload                  (重新加载配置,配置文件生效)

  

  

  

猜你喜欢

转载自www.cnblogs.com/chaplain/p/13398386.html
今日推荐