隐藏和伪装端口banner
?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的服務器不止一臺,所以需要對它所在網段進行轉發欺騙處理。
轉載于:https://blog.51cto.com/missuniverse110/398676
總結
以上是生活随笔為你收集整理的隐藏和伪装端口banner的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [美文欣赏]清华胡宇迪教授谈
- 下一篇: 双机热备技术1