CentOS 防火墙配置
##iptables规则 1. 规则从上向下匹配,如果匹配成功一条规则,则不向下进行匹配(重要) 2. 没有匹配的规则时,执行默认动作 3. 规则存储在内存中,不会自动存储到磁盘,因此重启之后规则就失效了,所以需要使用初始化脚本来保存规则 4. 如果远程管理服务器,比如使用SSH,那么配置规则之前首先添加允许SSH的规则,不然iptables会把你自己阻止在外
##iptable链与处理方式 ###iptable链 * INPUT链 进站数据包的规则 * OUTPUT链 出站数据包的规则 ###处理方式 * ACCEPT 数据包允许通过其到达目的地 * DROP 数据包被拒绝不返回任何信息
查看防火墙
iptables -L
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
清空防火墙
iptables -F
##实例:
###禁止192.168.1.100通过SSH的22端口了解服务器
iptables -A INPUT -s 192.168.1.100 -p TCP--dport 22 -j DROP
|参数|(参数区分大小写)|
|:–:|:–:|
|-A|追加规则链到底部|
|-I|插入规则链到头部|
|-s|来源IP|
|-d|目的地址(即服务器的IP)|
|-D|删除规则|
|-p|通信协议(TCP,UDP)|
|–dport|目的端口(SSH服务默认使用22)|
|–sprot|来源端口|
|-j|操作方式(ACCEPT,DROP)|
|-i|数据包进入的网卡|
|-o|流出数据包的网卡|
|-L|查看防火墙规则|
|–line-number|带行号显示|
|-P|默认规则|
|-n|以数字形式显示
默认数据包为允许
iptables -P INPUT ACCEPT
不接收来自192.168.1.100的数据包
iptables -I INPUT -s 192.168.1.100 -j DROP
将来自192.168.100的SSH服务放行
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
允许连接localhost的数据包
iptables -I INPUT -i lo -J ACCEPT
禁止192.168.1.100的ping操作
iptables -A INPUT -s 192.168.1.106 -p icmp -j DROP
> 注:–sport –dport必须配合参数-p使用
##数据包状态
NEW
第一服务器发送个第二服务器一个SYN数据包来新建一个连接
RELATED
第二服务器接受SYN数据包并发送给第一服务器一个SYB-ACk数据包来确定连接正常
ESTABLISHED
第一服务器接收到SYN-ACK数据包来做最后的确认,至此连接建立
保存iptables规则
service iptables save
##附:WEB服务器防火墙规则脚本
IPT="/sbin/iptables"
#删除所有规则
$IPT -F
#默认规则为全部禁⽌
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
#设置当连接状态为RELATED和ESTABLISHED时,允许数据进⼊服务器
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#设置外部客户端连接服务器端⼝80,22,21
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
#允许外部ping服务器
$IPT -A INPUT -p icmp -j ACCEPT
#允许内部数据循回
$IPT -A INPUT -i lo -j ACCEPT
#设置状态为RELATED和ESTABLISHED的数据可以从服务器发送到外部
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许访问外部dns服务器
$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#允许内部数据循回
$IPT -A OUTPUT -o lo -j ACCEPT
#访问外部服务器80, 22, 21端⼝
$IPT -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp --dport 20 -j ACCEPT
#允许ping操作的数据输出
$IPT -A OUTPUT -p icmp -j ACCEPT
#保存重起iptables服务⽣效
service iptables save
service iptables restart