一、默认使用iptables的系统(例如centos6)
1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。下面是命令实现:iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
再用命令iptables -L -n
查看 是否设置好, 好看到全部 DROP 了
这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态还要使用 service iptables save 进行保存service iptables save
看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables
可以打开文件查看 vi /etc/sysconfig/iptables
2、下面我只打开22端口,看我是如何操作的,就是下面2个语句iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
再查看下 iptables -L -n 是否添加上去, 看到添加了
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
二、默认使用firewalld的系统(例如centos7)
1、firewalld的基本使用
启动:systemctl start firewalld
查看状态:systemctl status firewalld
停止:systemctl disable firewalld
禁用:systemctl stop firewalld
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service关闭一个服务:systemctlstop firewalld.service重启一个服务:systemctlrestart firewalld.service显示一个服务的状态:systemctlstatus firewalld.service在开机时启用一个服务:systemctlenable firewalld.service在开机时禁用一个服务:systemctldisable firewalld.service查看服务是否开机启动:systemctlis-enabled firewalld.service查看已启动的服务列表:systemctllist-unit-files|grep enabled查看启动失败的服务列表:systemctl--failed
3.配置firewalld-cmd
查看版本:firewall-cmd --version
查看帮助:firewall-cmd --help
显示状态:firewall-cmd --state
查看所有打开的端口:firewall-cmd--zone=public --list-ports
更新防火墙规则:firewall-cmd --reload
查看区域信息: firewall-cmd--get-active-zones
查看指定接口所属区域:firewall-cmd--get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态:firewall-cmd --panic-off
查看是否拒绝:firewall-cmd --query-panic
那怎么开启一个端口呢
添加
firewall-cmd--zone=public --add-port=80/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd--zone=public --remove-port=80/tcp --permanent
查看firewall是否运行,下面两个命令都可以
systemctl status firewalld.service
firewall-cmd --state
查看当前开了哪些端口
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
firewall-cmd --list-services
查看还有哪些服务可以打开
firewall-cmd --get-services
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
更新防火墙规则:
firewall-cmd --reload