Linux防火墙配置
<p>[TOC]</p>
<h5>Firewalld防火墙</h5>
<ul>
<li>添加策略</li>
</ul>
<pre><code class="language-bash">firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.4" port protocol="tcp" port="20208" accept" # 限制ip访问
firewall-cmd --permanent --zone=public --add-rich-rule="rule port protocol="tcp" port="8000" accept" # 不限制IP
firewall-cmd --reload
firewall-cmd --list-rich-rules
firewall-cmd --list-all --zone=public</code></pre>
<ul>
<li>删除策略</li>
</ul>
<pre><code class="language-bash">firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.0.0.4" port protocol="tcp" port="20208" accept"
firewall-cmd --reload
firewall-cmd --list-rich-rules
firewall-cmd --list-all --zone=public</code></pre>
<h5>iptables使用</h5>
<pre><code class="language-bash">iptables-save > /etc/iptables-script # 保存规则
iptables-restore >/etc/sysconfig/iptables # 恢复规则
iptables -F # 清除所有规则
iptables -L -n # 查看规则
iptables -L -n --line-number # 查看规则并显示规则的序号
iptables -D INPUT 3 # 根据序号删除规则,入删除第3条规则
iptables -D INPUT -p tcp --dport 22:25 -j ACCEPT # 删除指定规则
iptables -P INPUT DROP # 设置默认链规则,默认是ACCEPT
iptables -P FORWARD DROP # 设置FORWARD链
iptables -A INPUT -s 10.0.0.100 -j DROP # 拦截一个IP
iptables -A INPUT -p tcp -i eth0 -s 10.0.0.100 -j DROP # 拦截ip在某个网卡上的TCP连接
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT # 允许ssh连接1,入方向
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT # 允许ssh连接2,出方向
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISH -j ACCEPT # 允许访问80 http服务,入方向
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISH -j ACCEPT # 允许访问80 http服务,出方向
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISH -j ACCEPT # 允许多个端口访问,入方向
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISH -j ACCEPT # 允许多个端口访问,出方向
iptables -A INPUT -i eth0 -s 10.0.2.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISH -j ACCEPT # 仅允许某个网段访问
iptables -A INPIT -p icmp --icmp-type echo-request -j ACCEPT # 允许外部ping,入方向
iptables -A OUTPUT -p icmp --icmp-type echo-relay -j ACCPT # 允许响应ping,出方向
iptables -A OUTPUT -p udp -s eth0 --dport 53 -j ACCEPT # 向外请求dns,出方向
iptables -A INPUT -p udp -d eth0 --sport 53 -j ACCEPT # 向外请求dns,允许dns响应,入方向
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT # 防dos,-limit 每分钟请求数,-limit-burst 总请求数达到多少开始限流
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -j REJECT # 限制并发连接数,超过30个拒绝
iptables -I INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT # 限制每个IP每秒并发连接数最大3个(1)
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT # 限制每个IP每秒并发连接数最大3个(2)
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22 # 端口转发,将访问端口442的连接路由至端口22</code></pre>