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"

Pure-FTPD

vi src/ftpd.c

 # ifdef BORING_MODE
 addreply_noformat(0, MSG_WELCOME_TO " Pure-FTPd.");
 # else
 addreply_noformat(0, "--------- " MSG_WELCOME_TO
 " Pure-FTPd" VERSION_PRIVSEP VERSION_TLS " ----------");
 # endif

将Pure-FPD改为自定义的名称,比如:IPADDR-FTPD

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

Wu-ftp

用十六进制文本编辑器修改/usr/sbin/in.ftpd文件,找到如下几行:

    /var/log/lastlog
    Could not write %.100s:%.100s
    Version wu-2.6.1-16

改成自己所需要显示的信息就可以了

Apache 2.x

配置文件:/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

Apache 1.x

在安装Apache前,在源文件/src/include目录下找到httpd.h头文件。此文件定义了Apache的版本信息,Apache安装时需要调用它。编辑http.h文件,找到如下几行:

#define Server_BASEVENDOR   “Apache Group”
#define Server_BASEPRODUCT   “Apache”
#define Server_BASEREVISION “1.3.20”

可以根据自己的意愿改成其他信息,笔者改的是Microsoft-IIS/5.0。

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"

修改后编译

还需修改php-fpm

编辑php-fpm配置文件,如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):

找到:

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

改为:

fastcgi_param SERVER_SOFTWARE nginx;

06/19/2012补充
刚安装最新的nginx,发现通过以上方法修改的nginx,通过curl或者其他一些方法检测的时候仍然会显示nginx
彻底屏蔽方法如下:

修改src/http/下的两个文件

ngx_http_header_filter_module.c:static char ngx_http_server_string[] = "Server: nginx" CRLF;
ngx_http_special_response.c:"<hr><center>nginx</center>" CRLF

把其中的nginx替换掉,这样通过任何方式都无法去到nginx的名称了,当然,你也可以把它改成IIS,不过我觉得这纯粹是自找麻烦了

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端口,从而不能正确判断出操作系统的类型。

Sendmail

在sendmail.mc文件中去掉$v、$z这两个宏,并包含下面的内容:

define(confSMTP_LOGIN_MSG’,$j Sendmail Sencure/Recure/Rabid;$b)

然后生成sendmail.cf文件

#m4/etc/mail/sendmail.mc>/etc/sendmail.cf

如果sendmail.mc中没有include(‘/usr/share/sendmail.cf/m4/cf.m4’)这一行就需要和Sendmail 提供的预设的配置文件cf.m4一起使用来生成文件sendmail.cf:

#m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc>/etc/sendmail.cf

通过上面的方法有效的对sendmail服务的banner进行修改

参考:

http://hi.baidu.com/ubuntu2me/blog/item/f181fc139d0840c2c2fd78f7.html

http://sookk8.blog.51cto.com/