firewall 防火墙
在CentOS7.0中默认使用firewall代替了iptables service。虽然继续保留了iptables命令,但已经仅是名称相同而已。除非手动删除firewall,再安装iptables,否则不能继续使 用以前的iptables配置方法。以下介绍的是firewall配置方法:
#cd /usr/lib/firewalld/services
这个目录中只定义了一部分通用网络服务。在该目录中没有定义的网络服务,也不必再增加相关xml定义,后续通过管理命令可以直接增加。
#cd /etc/firewalld/services/ //从上面目录中将需要使用的服务的xml文件拷至 这个目录中,如果端口有变化则可以修改文件中的数值。
启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewalld.service 显示一个服务的状态:systemctl status firewalld.service 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $? 查看已启动的服务列表:systemctl list-unit-files|grep enabled在 CentOS 7
暫時開放 ftp 服務
# firewall-cmd --add-service=ftp
永久開放 ftp 服務
# firewall-cmd --add-service=ftp --permanent
永久關閉
# firewall-cmd --remove-service=ftp --permanent
success
讓設定生效
# systemctl restart firewalld
檢視設定是否生效
# iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
檢查防火牆狀態
# firewall-cmd --state
running
关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
# firewall-cmd --state
not running
# firewall-cmd --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
在 FirewallD 的服務名稱
# firewall-cmd --get-service
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
查詢服務的啟用狀態
# firewall-cmd --query-service ftp
yes
# firewall-cmd --query-service ssh
yes
# firewall-cmd --query-service samba
no
# firewall-cmd --query-service http
no
自行加入要開放的 Port
# firewall-cmd --add-port=3128/tcp --permanent
# firewall-cmd --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 3128/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
CentOS6.5查看防火墙的状态:
[zh@localhost ~]$service iptable status
显示结果:
[zh@localhost ~]$service iptable status Redirecting to /bin/systemctl status iptable.service iptable.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) --表示防火墙已经关闭
CentOS 6.5关闭防火墙
[root@localhost ~]#servcie iptables stop --临时关闭防火墙 [root@localhost ~]#chkconfig iptables off --永久关闭防火墙
CentOS 7 以下版本 iptables 命令
如要开放80,22,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
查看打开的端口:
/etc/init.d/iptables status
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
查看防火墙状态: service iptables status
下面说下CentOS7和6的默认防火墙的区别
CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效 systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。
systemctl start iptables.service #打开防火墙 systemctl stop iptables.service #关闭防火墙
CentOS7添加防火墙规则(对指定ip开放指定端口)
(以下红色字体需要根据实际情况修改)
(1) Postgresql端口设置。允许192.168.142.166访问5432端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166"
port protocol="tcp"
port="5432"
accept"
(2)redis端口设置。允许192.168.142.166访问6379端口
firewall-cmd
--permanent --add-rich-rule="rule
family="ipv4" source
address="192.168.142.166"
port protocol="tcp"
port="6379"
accept"
(3)beanstalkd端口设置。允许192.168.142.166访问11300端口
firewall-cmd
--permanent --add-rich-rule="rule
family="ipv4" source
address="192.168.142.166"
port protocol="tcp"
port="11300"
accept"
3. 重启防火墙,使配置生效
systemctl restart
firewalld.service
4. 查看配置结果,验证配置
firewall-cmd
--list-all
5. 删除规则
示例:
firewall-cmd
--permanent --remove-rich-rule="rule
family="ipv4" source
address="192.168.142.166"
port protocol="tcp"
port="11300"
accept" systemctl restart
firewalld.service