form1.cn
Make a little progress every day

CentOS 7.0中iptables的安装与使用

17th of March 2020 Linux Command 1734

iptables也叫netfilter,是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,他的功能十分强大,使用也非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。但是iptables在CentOS7的版本上已经被阉割掉了,我们需要自行安装,以下是在CentOS7下安装iptables和使用方式。


CentOS 7.0默认使用的是firewall作为防火墙


关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)


centos设置iptables防火墙


查看是否安装成功

命令:systemctl status iptables

Redirecting to /bin/systemctl status iptables.service

Unit iptables.service could not be found.

输出结果表示没有iptables的相关服务,我们需要安装


安装iptables

命令:yum install iptables-services


查看安装情况

[root@localhost ~]# rpm -qa|grep iptables

iptables-1.4.21-24.1.el7_5.x86_64

iptables-services-1.4.21-24.1.el7_5.x86_64


安装后在次检查

systemctl status iptables

● iptables.service - IPv4 firewall with iptables

   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)

   Active: inactive (dead)

输出说明安装成功,但是没有启动


注:默认情况下,firewalld 处于运行状态,并拒绝所有传入流量,但有几个例外,如 SSH 22


启动iptables

systemctl start iptables.service


在次查看状态

systemctl status iptables

● iptables.service - IPv4 firewall with iptables

   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)

   Active: active (exited) since Mon 2020-03-16 23:24:23 CST; 5min ago

  Process: 28171 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)

  Process: 28189 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)

 Main PID: 28189 (code=exited, status=0/SUCCESS)

   CGroup: /system.slice/iptables.service


Mar 16 23:24:23 izm5e0dgv0zpedpxrqer62z systemd[1]: Starting IPv4 firewall with iptables...

Mar 16 23:24:23 izm5e0dgv0zpedpxrqer62z iptables.init[28189]: iptables: Applying firewall rules: [  OK  ]

Mar 16 23:24:23 izm5e0dgv0zpedpxrqer62z systemd[1]: Started IPv4 firewall with iptables.

再次查看状态,输出结果表示已经成功启动iptables



系统命令

systemctl start iptables #启动

systemctl status iptables #查看运行状态

systemctl restart iptables.service #重启

systemctl stop iptables.service #停止

systemctl enable iptables.service #设置开机启动

systemctl disable iptables.service #禁止开机启动



常用命令

iptables -h #查询帮助

iptables -L -n #列出(filter表)所有规则

iptables -L -n --line-number #列出(filter表)所有规则,带编号

iptables -L -n -t nat #列出(nat表)所有规则

iptables -F #清除(filter表)中所有规则

iptables -F -t nat #清除(nat表)中所有规则

service iptables save #保存配置(保存配置后必须重启iptables)

systemctl restart iptables.service #重启



修改配置文件

[root@localhost ~]# vim /etc/sysconfig/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 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT


filter表解析

filter表是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链,分别是:INPUT、OUTPUT、FORWARD

INPUT:过滤进入主机的数据包

OUTPUT:处理从本机出去的数据包

FORWARD:负责转发流经本机但不进入本机的数据包,起到转发作用