什么是防火墙?
在计算中,防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。计算机的所有流入流出的网络通信都要经过防火墙,防火墙对流经他的网络通信进行扫描,这样就能过滤掉一些攻击。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它所设置的规则是存放在内核空间内,而iptables是一个应用层的应用程序,它通过Netfilter放出的接口来对存放在内核空间的XXtables进行修改。
链:
iptables开启后,数据报文从进入服务器到出来会经过
Pre-routing(路由前)
Input(输入)
Output(输出)
Forward(转发)
Post-routing(路由后):
centos7默认没有iptables所以要安装iptables:
sudo yum -y install iptables ##安装iptables防火墙
sudo yum -y install iptables-service ##安装iptables的service启动工具
systemctl status iptables ##查看iptables状态
systemctl reload iptables ##重载iptables
iptables常用命令:
iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I 将在指定链的指定编号位置插入一个规则
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链
iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)
设置参数介绍:
--dport 指定目标TCP/IP端口 如 –dport 80
--sport 指定源TCP/IP端口 如 –sport 80
-p tcp 指定协议为tcp
-p icmp 指定协议为ICMP
-p udp 指定协议为UDP
-j DROP 拒绝
-j ACCEPT 允许
-j REJECT 拒绝并向发出消息的计算机发一个消息
-j LOG 在/var/log/messages中登记分组匹配的记录
-m mac –mac 绑定MAC地址
-m limit –limit 1/s 1/m 设置时间策列
-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
iptables配置文件
配置文件位置:/etc/sysconfig/iptables
配置filter表防火墙
1.查看iptables的配置信息
[root@master ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
设置预设规则
请求接入包丢弃:
[root@master ~]# iptables -p INPUT DROP
接受响应数据包:
[root@matser ~]# iptables -p OUTPUT ACCEPT
转发数据包丢弃:
[root@master ~]# iptables -p FORWARD DROP
添加防火墙规则
首先添加INPUT链(必须大写),INPUT链的默认规则是DROP,所以我就写需要ACCEPT(通过)的链。
1.开启SSH服务端口
[root@master ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -nvL
Chain INPUT (policy ACCEPT 3 packets, 228 bytes)
pkts bytes target prot opt in out source destinatio n
50 2916 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destinatio n
Chain OUTPUT (policy ACCEPT 30 packets, 2392 bytes)
pkts bytes target prot opt in out source destinatio n
2.开启Web服务端口
[root@master ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
[root@master ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
3.开启DNS服务的53端口
[root@matser ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
4.只允许某台主机或者某个网段进行SSH连接
[root@master ~]# iptables -A INPUT -s 192.168.231.3 -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- master anywhere tcp dpt:ssh
如果允许或者限制一段IP地址可用192.168.231.0/24表示192.168.231.1-255的所有ip。
[root@master ~]# iptables -A INPUT -s 192.168.231.0/24 -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- master anywhere tcp dpt:ssh
ACCEPT tcp -- 192.168.231.0/24 anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
删除iptables的记录
1.直接清空
[root@master ~]# iptables -t filter -F INPUT
2.根据编号删除
[root@master ~]# iptables -t filter -D INPUT 2
3.根据条件删除
[root@master ~]# iptables -t filter -D INPUT -s 192.168.231.3 -j DROP
保存规则
[root@master ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]