欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

web服务器iptables配置脚本实现代码

程序员文章站 2023-11-03 10:07:04
web服务器iptables配置脚本 欢迎一起改进  实现代码: #!/bin/bash # id 201510192126 # author...

web服务器iptables配置脚本 欢迎一起改进

 实现代码:

#!/bin/bash
# id 201510192126
# author ricky
# e-mail 564001002@qq.com it运维管理技术交流群 16548318
# centos 6 系统初始优化脚本
# version 1.0.0

#add iptables
yum -y install iptables

#iptables conf bak
if [ ! -e "/etc/sysconfig/iptables.bak" ]; then
  cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak > /dev/null 2>&1
fi

#add config
cat > /etc/sysconfig/iptables << eof
# firewall configuration written by system-config-securitylevel
# manual customization of this file is not recommended.
# 防火墙规则有先后顺序,修改前请测试确定后更改
# e-mail:564001002@qq.com
*filter
:input drop [0:0]
:forward accept [0:0]
:output accept [0:0]
:syn-flood - [0:0]

#related,established
-a input -m state --state related,established -j accept

#io
-a input -i lo -j accept

#ping
-a input -p icmp -j accept

#redis
#-a input -p tcp -m tcp --dport 6379 -j accept
#-a input -s 127.0.0.1/32 -p tcp -m tcp --dport 6379 -j accept

#mysql
#-a input -p tcp -m tcp --dport 3306 -j accept
#-a input -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j accept

#memcache
#-a input -p tcp -m tcp --dport 11211 -j accept
#-a input -s 127.0.0.1/32 -p tcp -m tcp --dport 11211 -j accept

#php
#-a input -p tcp -m tcp --dport 9000 -j accept
#-a input -s 127.0.0.1/32 -p tcp -m tcp --dport 9000 -j accept

#ssh
-a input -p tcp -m state --state new -m tcp --dport 22 -j accept
#-a input -p tcp -m tcp --dport 22 -m state --state new -m recent --update --seconds 60 --hitcount 10 --name ssh --rsource -j drop
#-a input -p tcp -m tcp --dport 22 -m state --state new -m recent --set --name ssh --rsource -j accept

#http 500 * 90% 需要限制情况下可以取消第一行注释
#-a input -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 500 --connlimit-mask 32 -j reject --reject-with icmp-port-unreachable
-a input -p tcp -m state --state new -m tcp --dport 80 -j accept

#https 500 * 90% 需要限制情况下可以取消第一行注释
#-a input -p tcp -m tcp --dport 443 -m connlimit --connlimit-above 500 --connlimit-mask 32 -j reject --reject-with icmp-port-unreachable
-a input -p tcp -m state --state new -m tcp --dport 443 -j accept

#---service--------------------------------------------------
#dns 安装dns服务器后需要打开
#-a input -p udp --sport 53 -j accept

#ntp 配置ntp服务器时候需要打开
#-a input -p udp --sport 123 -j accept

#对外访问,比如api接口 需要结合output drop 全部关闭情况下才需要打开,这种限制非常严格情况下才配置
#-a output -p tcp --dport 80 -j accept
#-a output -p tcp --dport 443 -j accept

######################################################################################
#以下#号部分未测试或为成功,并可能有错误开启之前请先测试,并保证能与你的环境匹配
#syn-flood
#-a syn-flood -p tcp -m limit --limit 500/sec --limit-burst 10000 -j return

#------fin syn rst ack syn-----------------
#-a input -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -m limit --limit 1/sec -j accept
#-a input -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -m limit --limit 10/sec --limit-burst 100 -j accept
######################################################################################

#portsan 端口扫描拒绝,缺少工具没能测试好,请慎用。
#-a input -p tcp --syn -m recent --name portscan --rcheck --seconds 60 --hitcount 10 -j log
#-a input -p tcp --syn -m recent --name portscan --set -j drop

-a input -j reject --reject-with icmp-host-prohibited
-a syn-flood -j reject --reject-with icmp-port-unreachable
-a forward -j reject --reject-with icmp-host-prohibited

commit
eof
/sbin/service iptables restart
source /etc/profile
chkconfig iptables on
/sbin/iptables -l -v
chkconfig | grep iptables
echo -e "\033[31m iptables ok \033[0m"


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!