天天看点

PHP防火墙代码,防火墙 firewall iptables(示例代码)

firewalld

FirewallD 使用服务service 和区域zone来代替 iptables 的规则rule和链chain,默认情况下,有以下的区域zone可用:

drop – 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。

block — 拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。

public — 只接受被选择的传入网络连接,用于公共区域。

external — 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。

dmz — DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。

work — 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。

home — 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。

internal — 对于处在你内部网络的计算机,只接受被选择的传入网络连接。

trusted — 所有网络连接都接受。

列出默认的区

firewall-cmd --get-default-zone

public

改变默认的区

firewall-cmd --set-default-zone=dmz

为 dmz 区添加持久性的 HTTP 和 HTTPS 规则:

firewall-cmd --zone=dmz --add-service=http --permanent

firewall-cmd --zone=dmz --add-service=https --permanent

为 dmz 区添加持久性的 HTTP 和 HTTPS 规则:

firewall-cmd --zone=dmz --add-service=http --permanent

firewall-cmd --zone=dmz --add-service=https --permanent

开启端口 25 (SMTP) 和端口 465 (SMTPS) :

firewall-cmd --zone=dmz --add-service=smtp --permanent

firewall-cmd --zone=dmz --add-service=smtps --permanent

开启 IMAP、IMAPS、POP3 和 POP3S 端口:

firewall-cmd --zone=dmz --add-service=imap --permanent

firewall-cmd --zone=dmz --add-service=imaps --permanent

firewall-cmd --zone=dmz --add-service=pop3 --permanent

firewall-cmd --zone=dmz --add-service=pop3s --permanent

因为将 SSH 端口改到了 7022,所以要移除 ssh 服务(端口 22),开启端口 7022:

firewall-cmd --remove-service=ssh --permanent

firewall-cmd --add-port=7022/tcp --permanent

重新加载防火墙,列出规则

firewall-cmd --reload

firewall-cmd –list-all

iptables

用如下命令备份及恢复配置文件:

/sbin/iptables-save >/root/iptables-works-`date +%F`

/sbin/iptables-restore

ln–s /root/iptables-works-`date +%F`/root/iptables-works-latest

免在策略顶部使用如下的一些通用规则:

iptables -A INPUT -p tcp --dport 22–s 10.0.0.0/8–d 192.168.100.101-j DROP

这是一个有效地避免封锁自己的设置,在策略规则顶部将你的 IP 列入白名单:

iptables -I INPUT -s -j ACCEPT

限制 IP 地址范围:

iptables -A OUTPUT -p tcp -i eth0 –o eth1 –d 31.13.64.0/18-j DROP

按时间规定做限制 - 场景1

iptables –A OUTPUT -p tcp -mmultiport --dport http,https -i eth0 -o eth1 -m time--timestart 12:00–timestop 13:00–d 31.13.64.0/18-j ACCEPT

按时间规定做限制 - 场景

iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP

iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

限制连接数量

iptables –A INPUT –p tcp –syn -m multiport -–dport http,https –m connlimit -–connlimit-above 20–j REJECT -–reject-with-tcp-reset

查看规则被访问了多少次:

iptables -L -v -n –line-numbers

删除不必要的规则

iptables -nvL |grep-v "0     0"    #注意:两个数字 0 之间不是 Tab 键,而是 5 个空格

将用户完成工作所需的最少量服务设置为允许:

# Set a default policy of DROP*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

# Accept any related or established connections-I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow all traffic on the loopback interface-A INPUT -i lo -j ACCEPT-A OUTPUT -o lo -j ACCEPT

# Allow outbound DHCP request-A OUTPUT –o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Allow inbound SSH-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT

# Allow outbound email-A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT

# Outbound DNS lookups-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

# Outbound PING requests-A OUTPUT –o eth0 -p icmp -j ACCEPT

# Outbound Network Time Protocol (NTP) requests-A OUTPUT –o eth0 -p udp --dport 123 --sport 123 -j ACCEPT

# Outbound HTTP-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT

PS: