大家好,博主现在学习LINUX服务和集群管理还有ORACLE 管理。我在博客中写出详细的学习成果!和大家一起分享,文中有不足之处请大家帮忙指出!谢谢!
分类: LINUX
2013-06-09 10:44:48
项目需求:服务器上对外提供网页服务,由apache搭建而成,有数据库服务器!现在客户提出要求,对外只提供必要的端口号,对内部门管理人员只限制某个IP可以远程管理服务器。
下面这是小宁我写的脚本,模拟测试通过,并且通过流光扫描后只开启了相应的服务端口,其他端口全部封死。
脚本内容:
[root@dba Desktop]# cat iptables.sh
#!/bin/bash
IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
#######SET DEFAUTL RULES ############
$IPTABLES -F 解释:清除全部规则
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -P INPUT DROP 解释:将input output forwared 默认规则全部设置为drop
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
### load connection-tracking modules######
$MODPROBE ip_conntrack 解释:加载模块
### lookback ruels########################################
$IPTABLES -A INPUT -i lo -j ACCEPT 解释:本地环回放通,否则会出问题。
$IPTABLES -A OUTPUT -o lo -j ACCEPT
###permit hosts access###############################
$IPTABLES -A INPUT -p tcp --dport 22 -s 192.168.1.100 -d 192.168.1.54 -j ACCEPT 解释:只允许源是192.168.1.100 的服务器访问目的地址为192.168.1.254的 22端口(ssh)
$IPTABLES -A INPUT -p tcp --dport 22 -d 192.168.1.54 -j DROP 解释:将其他访问192.168.1.54的主机22端口的数据包全部丢弃
### icmp rules#############################################
$IPTABLES -A OUTPUT -p icmp -j ACCEPT 解释:允许ping
$IPTABLES -A INPUT -p icmp -j ACCEPT
### icmp safe setting#######################################
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT 解释:ping的安全策略,防止来自外部的ping攻击
###anti synflood###########################################
$IPTABLES -N synflood 解释:此小节是防止洪水攻击
$IPTABLES -A synflood -m limit --limit 10/s --limit-burst 100 -j RETURN
$IPTABLES -A synflood -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p tcp -m state --state NEW -j synflood
########prevent scan tools############## 解释:探测防攻击
$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT
### httpd rule (80) ###################################### 解释: 对访问80的数据包做安全放通
$IPTABLES -t filter -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j ACCEPT
############################sshd 22###################
$IPTABLES -t filter -A INPUT -p tcp --syn --dport 22 -m state --state NEW -j ACCEPT 解释:对访问目的端口为22的端口做数据包状态过虑
#########################limit client (httpd) connents time############# 解释:以下三句话是对客户端做出限制连接,防止非法客户端做大量连接请求,使服务器宕机
$IPTABLES -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --name web --set
$IPTABLES -A INPUT -m recent --update --name web --seconds 60 --hitcount 20 -j LOG --log-prefix 'HTTP attack :'
$IPTABLES -A INPUT -m recent --update --name web --seconds 60 --hitcount 20 -j DROP
###############close ports#################### 解释:封死200端口
$IPTABLES -I INPUT -p udp --dport 200 -j DROP
$IPTABLES -I INPUT -p tcp --dport 200 -j DROP
### invalid packet drop and logging ############## 解释:对数据包做状态过虑,对错误包进行丢弃和做日志记录
$IPTABLES -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT