【转】CentOS7调教—-firewall/iptables

  •   
  • 1433
  • linux
  • 0
  • dodobook
  • 2017/09/02

当服务器搭建的时候,经常会出现服务器访问不畅,或者配置不恰当的时候会被攻击。所以学习了解Linux的防火墙是一项基本的技能。

CentOS7用firewall命令“替代”了iptables。在这里我们需要区分“iptables服务”和“iptables命令”。虽然firewalld是替代提供的防火墙管理iptables服务,但是它仍然使用iptables对内核命令动态通信包过滤。所以它只是iptables服务代替,而不是iptables命令。

centos7_firewalld

如果想使用iptables服务,执行如下命令

```
systemctl stop firewalld
systemctl disable firewalld

yum install iptables-services

touch /etc/sysconfig/iptables
systemctl start iptables
systemctl enable iptables

touch /etc/sysconfig/ip6tables
systemctl start ip6tables
systemctl enable ip6table
```

安装firewalld和firewall-cmd请参考结尾link

```
检查防火墙状态
firewall-cmd --stat

临时开放ftp服务
firewall-cmd --add-service=ftp

永久开放ftp服务
firewall-cmd --add-service=ftp --permanent

关闭ftp服务
firewall-cmd --remove-service=ftp --permanent

配置防火墙在public区域永久开放http服务
firewall-cmd --permanent --zone=public --add-service=http

加入指定开放端口
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=3306/tcp
firewall-cmd --add-port=1324/tcp

删除指定开放端口
firewall-cmd --remove-port=80/tcp
firewall-cmd --remove-port=3306/tcp
firewall-cmd --remove-port=1324/tcp

为了让之前的设定生效当然要重启服务咯
systemctl restart firewalld

或者使用下面的命令免去重启服务(防火墙策略配置后重新载入)
firewall-cmd --complete-reload
firewall-cmd --reload (这两句功能相同)

检查ftp服务的21端口是否开放
iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW

查询ftp服务启用状态
firewall-cmd --query-service ftp

查看当前规则
firewall-cmd --list-all


仅允许部分IP访问本机服务配置
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" service name="http" accept"

仅允许部分IP访问本机端口配置
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" \
port protocol="tcp" port="8080" accept"	
```

公共配置文件位置:/etc/firewalld/zones/public.xml

更多内容:http://oracle-base.com/articles/linux/linux-firewall-firewalld.php?utm_source=tuicool

志向和热爱是伟大行为的双翼。 —— 歌德

志向是天才的幼苗,经过热爱劳动的双手培育,在肥田沃土里将成长为粗壮的大树。不热爱劳动,不进行自我教育,志向这棵幼苗也会连根枯死。确定个人志向,选好专业,这是幸福的源泉。 —— 苏霍姆林斯基