linux centos 防火墙iptables命令介绍使用

半腔热情 提交于 2020-03-16 19:47:03

一:安装iptables

安装命令:iptables:yum install -y iptables-services

二:启动iptables

启动命令:systemctl start iptables

三:查看当前iptables状态

运行iptables启动命令后,可以查看下iptables是否启动成功,确保iptables启动成功
查看状态:systemctl status iptables
如果提示绿色的“active (exited)”,则iptables已经启动成功。

四:查看iptables默认规则

查看默认规则命令:iptables -L
安装iptables后,可以查看下当前系统下的iptables规则,熟悉一下。

五:备份iptables规则

安全起见,可以先备份下当前的iptables规则,然后再修改/添加规则
备份命令:cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

六:添加或修改规则(放行或禁用端口)

放行80号端口为例:
1、添加以下规则可以放行80端口命令:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
2、查看规则是否生效,命令:
iptables -L
3、生效后保存添加的规则,命令:
iptables-save > /etc/sysconfig/iptables
4、设置iptables开启启动,命令:
systemctl enable iptables.service

七、iptables命令选项

iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

7.1、命令选项

-A 在指定链的末尾添加(append)一条新的规则
-D  删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I  在指定链中插入(insert)一条新的规则,默认在第一行添加
-R  修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L  列出(list)指定链中所有的规则进行查看
-E  重命名用户定义的链,不改变链本身
-F  清空(flush)
-N  新建(new-chain)一条用户自己定义的规则链
-X  删除指定表中用户自定义的规则链(delete-chain)
-P  设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n  使用数字形式(numeric)显示输出结果
-v  查看规则表详细信息(verbose)的信息
-V  查看版本(version)
-h  获取帮助(help)

7.2、常用指令说明

-A:指定链名
-p:指定协议类型
-d:指定目标地址
–dport:指定目标端口(destination port 目的端口)
–sport:指定源端口(source port 源端口)
-j:指定动作类型
-m:指定要使用的匹配项,即测试特定属性的扩展模块

7.3、目标动作

防火墙处理数据包的四种方式
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给任何回应信息
REJECT拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

7.4 创建iptables文件

初始操作系统没有iptables文件,可以通过vim /etc/sysconfig/iptables的方式创建iptables文件,然后调用重启指令使其生效。 指令和相关配置文件:

  • 启动指令:
    service iptables start
  • 重启指令:
    service iptables restart
  • 关闭指令:
    service iptables stop
    不想通过修改文件,可以直接打命令;例如我给SSH加放行的语句:
  • 添加input记录:
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 添加output记录:
    iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  • 最后注意需要再执行一下
    /etc/init.d/iptables save
    这样这两条语句就保存到刚才那个/etc/sysconfig/iptables文件中了;

7.5 具体开放端口

以下是centos 6.9原始的iptables文件内容:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#针对某IP进行单独开放端口配置-开放mysql端口,应该如下配置:
iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT   
iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT
#彻底禁止某IP访问:屏蔽单个IP的命令  
iptables -I INPUT -s 123.45.6.7 -j DROP   
#封整个段即从123.0.0.1到123.255.255.254的命令   
iptables -I INPUT -s 123.0.0.0/8 -j DROP   
#封IP段即从123.45.0.1到123.45.255.254的命令   
iptables -I INPUT -s 124.45.0.0/16 -j DROP   
#封IP段即从123.45.6.1到123.45.6.254的命令是   
iptables -I INPUT -s 123.45.6.0/24 -j DROP

指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!