科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道隐藏和伪装端口banner

隐藏和伪装端口banner

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

隐藏和伪装端口banner

来源:zdnet整理 2011年7月3日

关键字: 系统安全 linux安全

  • 评论
  • 分享微博
  • 分享邮件

  OpenSSH

  修改openssh-3.x/version.h

  找到#define SSH_VERSION "OpenSSH_3.x"

  修改后编译安装

  修改SSH-2.0 (不建议)

  proto-mismatch.sh

  proto-version.sh

  SSH

  版本号:

  修改apps/ssh/ssh2version.h

  #define SSH2_VERSION "3.2.9.1"

  banner名:

  修改apps/ssh/ssh2includes.h

  #define SSH2_VERSION_STRING "SSH Secure Shell " SSH2_VERSION \

  " (non-commercial version)"

  #define SSH2_PROTOCOL_VERSION_STRING SSH2_VERSION \

  " SSH Secure Shell (non-commercial)"

  修改SSH-2.0 (不建议)

  apps/ssh/sshd2.c

  apps/ssh/lib/sshproto/trcommon.h

  apps/ssh/sshstdiofilter.c

  exim4

  配置文件:/etc/exim4/exim4.conf.template

  找到#smtp_banner = $smtp_active_hostname ESMTP Exim $version_number $tod_full

  去掉注释并修改

  postfix

  配置文件/etc /postfix/main.cf

  修改 smtpd_banner=$myhostname ESMTP "Version not Available"

  Proftd

  配置文件:

  伪装登入欢迎信息

  修改 ServerIdent on "Serv-U FTP Server v5.0 for WinSock ready...\"

  或ServerIdent off

  telnet会显示:220 ::ffff:192.168.2.3 FTP server ready

  伪装banner信 息

  DisplayLogin [msgfile] DisplayConnect [msgfile]

  Vsftpd

  配置文件:vsftpd.conf

  修改 ftpd_banner=welcome to this FTP server

  Apache

  配置文件:/etc/apache2/apache2.conf 或/etc/apache2/httpd.conf

  找到 ServerSignature on 改为 ServerSignature off

  找到ServerTokens Full 改为 ServerTokens prod

  经过以上修改,可以隐藏一些 banner

  但是用wget -S和curl -I还是可以看到apache字样

  彻底伪装的话需要修改源文件

  编辑ap_release.h文 件,修改"#define AP_SERVER_BASEPRODUCT\"Apache\""为"#define AP_SERVER_BASEPRODUCT\"Microsoft-IIS/5.0\"

  编辑os/unix/os.h文 件修改"#define PLATFORM\"Unix\""为"#define PLATFORM\'Win32"

  重新编译apache

  PHP

  配置文件php.ini

  修改expose_php On ——> expose_php = Off

  Nginx

  在nginx.conf 的 http { 里头加入 server_tokens 的参数

  server_tokens off;

  http {

  include mime.types;

  default_type application/octet-stream;

  server_tokens off;

  client_header_timeout 3m;

  client_body_timeout 3m;

  send_timeout 3m;

  彻底屏敝需要修改源码

  src/core/nginx.h

  找到

  #define NGINX_VERSION "0.6.35"

  #define NGINX_VER "nginx/" NGINX_VERSION

  #define NGINX_VAR "NGINX"

  修改后编译

  TTL

  用以下命令修改Red Hat Linux的TTL基数为128(默认为64):

  echo 128 > /proc/sys/net/ipv4/ip_default_ttl

  用以下命令修改Red Hat Linux的TTL基数为128(默认为64):

  net.ipv4.ip_default_ttl = 128

  iptables

  利用iptables来限制22端口的 SSH登录,让非授权的IP扫描不到TCP 22端口的存在:

  #iptables -I INPUT -s ! xx.xx.xx.xx -p tcp --dport 22 -j DROP

  利用iptables,将本机的TCP 3389端口转移到其它开有3389端口的计算机上,给Linux系统伪装出一个提供服务的TCP 3389端口。命令如下:

  #echo 1 > /proc/sys/net/ipv4/ip_forward

  #iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to xx.xx.xx.xx

  #iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE

  第一条命令表示允许数据包转发;第二条命令表示转发TCP 3389到xx.xx.xx.xx;第三条命令表示使转发数据包实现“双向通路”,给数据包设置一个正确的返回通道。若想使转发永久生效,可以把以上命令 添加到/etc/rc.local文件中。

  这样,当黑客扫描服务器所开端口的时候,就找不到22号端口,而是看到一个伪装的3389端口,从而不能正确判断出操作系统的类型。

  针对netcraft

  netcraft是一个很厉害的扫描引擎,它通过简单的TCP 80,就可以知道所测服务器的操作系统、Web服务程序和服务器开机时间(Uptime)等信息。

  上面介绍的几种方法对netcraft来说,均不奏效。针对netcraft,可利用iptables进行系统伪装,使netcraft错误判断操作系 统:

  #iptables -t nat -I PREROUTING -s 195.92.95.0/24

  -p tcp --dport 80 -j DNAT --to xx.xx.xx.xx

  #iptables -t nat -I POSTROUTING -s 195.92.95.0/24

  -p tcp --dport 80 -j MASQUERADE

  由于通过抓包发现,netcraft的服务器不止一台,所以需要对它所在网段进行转发欺骗处理。

    • 评论
    • 分享微博
    • 分享邮件