《白帽子讲WEB安全》学习笔记之第15章 web server配置安全

第15章 web server配置安全

15.1 apache安全

linux部署安装web Server时候一定主要要使用“最小权限原则”。尽量不要使用root部署。

15.2 nginx安全

Nginx 安全配置指南技术手册 PDF 下载

免费下载地址在http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /pub/服务器相关教程/Nginx/Nginx 安全配置指南技术手册/

 

参考资料:http://my.oschina.net/jsan/blog/125838

 

 

15.3 Jboss远程命令执行

 

15.4 Tomcat远程命令执行

安装Tomcat后初始化配置

Tomcat完成安装后你首先要做的事情如下:

首次安装完成后立即删除webapps下面的所有代码

rm -rf /srv/apache-tomcat/webapps/*

注释或删除tomcat-users.xml 所有用户权限,看上去如下:

# cat conf/tomcat-users.xml

1
2
3
<? xml  version = '1.0'  encoding = 'utf-8' ?>
< tomcat-users >
</ tomcat-users >

隐藏Tomcat版本信息

vim $CATALINA_HOME/conf/server.xml

1
2
3
4
5
6
7
8
9
< Connector  port = "80" protocol = "HTTP/1.1"
           connectionTimeout = "20000"
           redirectPort = "8443"
                             maxThreads = "8192"
                             minSpareThreads = "64"
                             maxSpareThreads = "128"
                             acceptCount = "128"
                             enableLookups = "false"
            server = "Neo App Srv 1.0" />

结果:

1
2
3
4
5
6
# curl -I http://localhost:8080/
HTTP /1 .1 400 Bad Request
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2011 09:51:55 GMT
Connection: close
Server: Neo App Srv 1.0

服务器信息已经被改为Server: Neo App Srv 1.0

 

启动用户与端口

不要使用root用户启动tomcatJava程序与C程序不同。nginx,httpd使用root用户启动守护80端口,子进程/线程会通过setuid(),setgid()两个函数切换到普通用户。即父进程所有者是root用户,子进程与多线程所有者是一个非root用户,这个用户没有shell,无法通过ssh与控制台登陆系统,Java JVM 是与系统无关的,是建立在OS之上的,你使用什么用户启动Tomcat,那麽Tomcat 就会继承该所有者的权限。

这造成了一个问题,Linux系统小于1024的端口只有root可以使用,这也是为什么Tomcat默认端口是8080。如果你想使用80端口只能使用root启动Tomcat。这有带来了很多安全问题。

解决方案是创建一个不同用户,如:

groupadd -g 80 daemon

adduser -o --home /daemon --shell /sbin/nologin--uid 80 --gid 80 -c "Web Server" daemon

注意 /sbin/nologin , 意味着该用户不能登录,同时我也没有给它指定密码,这个用户只能用于启动tomcat

chown daemon:daemon -R /srv/*

su - daemon -c"/srv/apache-tomcat/bin/startup.sh"

接下来解决80端口问题思路就是80去调用8080,或者映射端口。

下面是影射方案,80 跳转 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -jREDIRECT --to-port 8080

取消跳转

iptables -t nat -D PREROUTING -p tcp --dport 80 -jREDIRECT --to-port 8080

查看规则

iptables -t nat -L

另一个就是从80请求去调用8080的方案

这个方案可以在 Tomcat前段增加反向代理,例如:Nginx,Apache,Squid,Varnish或者F5 Array这类设备等等

 

应用程序安全

关闭war自动部署 unpackWARs="false"autoDeploy="false"。防止被植入木马等恶意程序

应用程序部署与tomcat启动,不能使用同一个用户。

我的tomcat 安装在 /srv目录下,Tomcat启动用户为daemon; 应用程序放在/www目录下www所有者是www用户。这样的目的是一旦tomcat被植入web shell程序,它将不能创建或编辑/www目录下面的任何内容。

adduser --home /www -c "Web Application"www

JSESSIONID

修改 Cookie 变量 JSESSIONID 这个cookie 是用于维持Session关系。建议你改为PHPSESSID

 

15.5 Http Parameter Pollution

提交两个相同的参数,不同的服务器会有不同的处理。

wKioL1f4-fXhU3PrAAI8C1cED3M649.jpg



本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1859565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值