首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux服务器保险

2013-07-01 
linux服务器安全linux服务器安全??1 服务器账号口令的安全1.1 服务器账号安全服务器系统的账号、应用服务的

linux服务器安全

linux服务器安全??

1 服务器账号口令的安全
1.1 服务器账号安全
服务器系统的账号、应用服务的账号要尽量少,删除一些不必要的账号和应用服务的账号, # 允许IP masquerade(变换)
echo 1 > /proc/sys/net/ipv4/ip_forward
# 忽视ping的broadcast
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# 检查源IP
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f; done
# 记录不可能的(虚假)IP
for f in /proc/sys/net/ipv4/conf/*/log_martians; do echo "1" > $f; done
# 忽视ICMP redirect message
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 1 > $f; done
##########################################################################
# 初始化规则
##########################################################################
$IPTABLES -P INPUT DROP?? # 清空INPUT原始定义
$IPTABLES -P OUTPUT DROP # 清空OUPUT原始定义
$IPTABLES -P FORWARD DROP # 清空FORWARD原始定义
$IPTABLES -F??? # flash chain
$IPTABLES -F -t nat
$IPTABLES -X??? # 删除用户定义的Chain
##########################################################################
# 用户定义的chain
##########################################################################
#
# 记录并丢弃非法的包
#
$IPTABLES -N DROPPACKET?? # DROPPACKT chain的生成
$IPTABLES -A DROPPACKET -j LOG --log-prefix "INVALID_PACKET: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10
$IPTABLES -A DROPPACKET -j DROP
#
# 检查SYNFlood攻击的chain
#
$IPTABLES -N SYNFLOOD?? # SYNFLOOD chain的生成
# 没有超过限定值的话返回
$IPTABLES -A SYNFLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
# 超过限定值,就视为SYNFLOOD攻击,记录并丢弃
$IPTABLES -A SYNFLOOD -m limit --limit 1/s --limit-burst 10 -j LOG \
--log-level=1 --log-prefix "SYNFLOOD: "
$IPTABLES -A SYNFLOOD -j DROP
#
# 记录非法的Flag TCP,并丢弃
#
$IPTABLES -N DROPFLAGS?? # DROPFLAGS chain的生成
$IPTABLES -A DROPFLAGS -j LOG --log-prefix "INVALID_FLAGS: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10
$IPTABLES -A DROPFLAGS -j DROP
#
# 检查TCP Flag的非法组合
#
$IPTABLES -N CHKFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,FIN FIN -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,PSH PSH -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ACK,URG URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags FIN,RST FIN,RST -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags SYN,RST SYN,RST -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL ALL -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL NONE -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL FIN,PSH,URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROPFLAGS
$IPTABLES -A CHKFLAGS -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROPFLAGS
#
# 拒绝 Microsoft 网络相关的FORWARD
#
$IPTABLES -N CHKMSNET
$IPTABLES -A CHKMSNET -p tcp --dport 42 -j DROP?? # wins dup
$IPTABLES -A CHKMSNET -p tcp --dport 135 -j DROP # MS-RPC
$IPTABLES -A CHKMSNET -p udp --dport 135 -j DROP # MS-RPC
$IPTABLES -A CHKMSNET -p udp --dport 137:138 -j DROP # MS browse
$IPTABLES -A CHKMSNET -p udp --dport 137:138 -j DROP # MS browse
$IPTABLES -A CHKMSNET -p tcp --dport 139 -j DROP # SMB
$IPTABLES -A CHKMSNET -p tcp --dport 445 -j DROP # DHSMB

##########################################################################
# INPUT Chain
##########################################################################
# Localhost的话,全部许可
$IPTABLES -A INPUT -i lo -j ACCEPT
# 检查包的正确性
$IPTABLES -A INPUT -m state --state INVALID -j DROPPACKET
# 检查包是否是SYN攻击
$IPTABLES -A INPUT -p tcp --syn -j SYNFLOOD
# TCP FLAG的检查
$IPTABLES -A INPUT -p tcp -j CHKFLAGS
# 许可LAN内的连接
$IPTABLES -A INPUT -i $INNER_PORT -s $INNER_NET -j ACCEPT
# 许可已经建立的连接
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 检查是否是IP伪装
#$IPTABLES -A INPUT -i $OUTER_PORT -s $INNER_NET -j DROP
#
# 许可的服务(对外部公开的服务,在下面记述)
#
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # ssh
$IPTABLES -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT # HTTP
$IPTABLES -A INPUT -p tcp --dport 9090 -m state --state NEW -j ACCEPT # JManage
$IPTABLES -A INPUT -p tcp --dport 81 -m state --state NEW -j ACCEPT # HTTP
#$IPTABLES -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT # HTTPS
#$IPTABLES -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT # DOMAIN(DNS)
{DNS}
# 拒绝AUTH请求
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# icmp (IN)
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -s $INNER_NET -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -s $INNER_NET -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
# 除了上面以外所有的包,都记录下来,并通过Default Policy丢弃
$IPTABLES -A INPUT -j LOG --log-prefix "UNDEFIND_INPUT: " \
--log-level=6 -m limit --limit 1/s --limit-burst 10

##########################################################################
# OUTPUT Chain
##########################################################################
# 许可由localhost出来的包
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# TCP FLAG的检查
$IPTABLES -A OUTPUT -p tcp -j CHKFLAGS
# 许可从服务器到Lan的连接
$IPTABLES -A OUTPUT -o $INNER_PORT -s $FWALL_IP -j ACCEPT
# 检查Microsoft网络
$IPTABLES -A OUTPUT -j CHKMSNET
# 许可已经连接的包
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 许可由服务器到互联网的新加连接
$IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT
# icmp(OUT)
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT
# 除了上面以外所有的包,都记录下来,并通过Default Policy丢弃
$IPTABLES -A OUTPUT -j LOG --log-prefix "UNDEFIND_ICMP: " --log-level=6 \
-m limit --limit 1/s --limit-burst 10

##########################################################################
# IP变换
##########################################################################
# 检查Microsoft网络
$IPTABLES -A FORWARD -j CHKMSNET
# 许可Lan内机器的IP变换
#$IPTABLES -t nat -A POSTROUTING -o $OUTER_PORT -s $INNER_NET -j MASQUERADE
# 从外部到Lan的连接,许可已经连接的FROWARD
#$IPTABLES -A FORWARD -i $OUTER_PORT -o $INNER_PORT -d $INNER_NET -m state \
# --state ESTABLISHED,RELATED -j ACCEPT
# 许可LAN到外部的连接
#$IPTABLES -A FORWARD -i $INNER_PORT -o $OUTER_PORT -s $INNER_NET -m state \
# --state NEW,ESTABLISHED,RELATED -j ACCEPT
exit 0


5 常用的服务器安全诊断工具
5.1 防范Rootkit病毒
rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统
5.2 部署chkrootkit??? 入侵监测系统
安装:
wget [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
rm -f $TMPLOG
chmod 700 chkrootkit
mv chkrootkit /etc/cron.daily/  ( 将脚本移动到每天自动运行的目录中)
为了防止被入侵后chkrootkit命令被黑客更改将命令备份
cd ~
mkdir /root/commands
cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` /root/commands/
/usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED (测试用备份命令运行)
为了安全,将命令打包压缩之后下载到本地,再将服务器端删除
cd ~
tar cvf commands.tar commands
gzip commands.tar
将commands.tar.gz 下载到本机后
rm-rf commands
若服务器端被更改,将本机commands.tar.gz上传到服务器解压
/usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED
chkrootkit的参数

Usage: ./chkrootkit [options] [testname ...]
Options:
???????? -h??????????????? show this help and exit
???????? -V??????????????? show version information and exit
???????? -l??????????????? show available tests
???????? -d??????????????? debug
???????? -q??????????????? quiet mode
???????? -x??????????????? expert mode
???????? -r dir??????????? use dir as the root directory
???????? -p dir1:dir2:dirN path for the external commands used by chkrootkit
???????? -n??????????????? skip NFS mounted dirs
5.3 Iptraf的使用
5.3.1 软件下载?

?

热点排行