海运的博客

用knockd远程管理iptables防火墙SSH端口

发布时间:June 28, 2012 // 分类:网络安全 // No Comments

之前有介绍Iptables模块recent通过暗语来开启SSH端口,knockd也可实现此功能。
knockd监听3个自定义端口,如果收到客户端请求符合要求即执行设置的指令,让iptables开启SSH端口允许客户IP连接。
安装所需组件,不然编译会提示错误。

yum install libpcap-devel

knockd源码编译安装:

wget http://www.zeroflux.org/proj/knock/files/knock-0.5.tar.gz
tar zxvf knock-0.5.tar.gz 
cd knock-0.5
./configure 
make
make install

下载knock rpm包安装:

wget http://pkgs.repoforge.org/knock/knock-0.5-1.el5.rf.i386.rpm
rpm -ivh knock-0.5-1.el5.rf.i386.rpm 

knockd配置:

cat /etc/knockd.conf
  [options]
        logfile = /var/log/knockd.log #日志记录目录
        interface = eth0  #监听网卡

  [opencloseSSH]
        sequence      = 6000:udp,5000:tcp,4000:udp #knock侦听端口协议
        seq_timeout   = 15 #单位时间内连续触发上面的端口规则
        tcpflags      = syn #封包标志,syn/ack/fin
        start_command = iptables -I INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
        #如果触发规则执行的iptables操作
        cmd_timeout   = 10 #规则触发后未连接超时时间        
        stop_command  = iptables -D INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
        #如超时未连接或断开连接执行iptalbes操作

knock init启动管理脚本:

#!/bin/sh
# chkconfig: - 99 00
# description: Start and stop knockd

# Check that config file exist
[ -f /etc/knockd.conf ] || exit 0

# Source function library
. /etc/rc.d/init.d/functions

# Source networking configuration
. /etc/sysconfig/network

# Check that networking is up
[ "$NETWORKING" = "no" ] && exit 0

start() {
  echo "Starting knockd ..."
  /usr/local/sbin/knockd -d
  }

stop() {
  echo "Shutting down knockd ..."
  pkill knockd
  }

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0

客户端连接SSH需先使用telnet依次连接knock设定端口,或使用knock客户端连接。

knock -v www.haiyun.me 6000:udp 5000:tcp 4000:udp

查看knock日志:

cat /var/log/knockd.log 
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 1
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 2
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 3
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: OPEN SESAME
[2012-08-31 10:41] opencloseSSH: running command: iptables -I INPUT -s 192.168.1.16 -p tcp --syn --dport 22 -j ACCEPT

[2012-08-31 10:41] 192.168.1.16: opencloseSSH: command timeout
[2012-08-31 10:41] opencloseSSH: running command: iptables -D INPUT -s 192.168.1.16 -p tcp --syn --dport 22 -j ACCEPT

备注:如果网络较差,且同时使用tcp和udp进行验证可能会导致数据包到达顺序不一致或某个包丢失导致验证失败。

此内容被密码保护

发布时间:June 19, 2012 // 分类:Xshell // No Comments

请输入密码访问

Centos5/Centos6服务器安装SSH蜜罐Kippo

发布时间:May 28, 2012 // 分类:网络安全 // No Comments

Kippo是一个虚拟的交互式的SSH环境模拟,以Python 语言编写,攻击者连接ssh时会被欺骗到蜜罐中,攻击者的口令
猜测记录、执行命令、下载文件和IP地址都会被记录下来。
安装要求:

# Python 2.5+
# Twisted 8.0+
# PyCrypto
# Zope Interface 

yum安装Python26,rpm安装请参考:http://www.geekymedia.com/tech-articles/rhel5-centos5-rpms-for-python-2-5-and-2-6/

yum -y install python26 python26-devel

安装Twisted:

cd /usr/local/src/
wget http://twistedmatrix.com/Releases/Twisted/10.2/Twisted-10.2.0.tar.bz2
tar -xvf Twisted-10.2.0.tar.bz2
cd Twisted-10.2.0
python26 setup.py build
python26 setup.py install 
cd ../

安装zope:

wget http://www.zope.org/Products/ZopeInterface/3.3.0/zope.interface-3.3.0.tar.gz
tar -xvf zope.interface-3.3.0.tar.gz
cd zope.interface-3.3.0
python26 setup.py build
python26 setup.py install 
cd ../

安装pycrypto:

wget https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.0.1.tar.gz
tar zxvf pycrypto-2.0.1.tar.gz 
cd pycrypto-2.0.1
python26 setup.py build
python26 setup.py install 
cd ../

安装pyasn1:

 wget http://sourceforge.net/projects/pyasn1/files/pyasn1/0.0.13/pyasn1-0.0.13.tar.gz
tar zxvf pyasn1-0.0.13.tar.gz 
cd pyasn1-0.0.13
python26 setup.py build
python26 setup.py install
cd ../

Centos6安装以上环境比较简单:

yum install twisted python-zope-interface python-pyasn1

Kippo安装,以非root用户运行:

useradd kippo
su -l kippo
wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz  
tar zxvf kippo-0.5.tar.gz 
cd kippo-0.5
./start.sh 

kippo默认监听2222端口,可以更改ssh端口为非22,利用iptables重定向端口2222到22:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j REDIRECT --to-port 2222

kippo配置文件:

kippo.cfg 

登录及命令记录日志:

kippo.log  

Putty小工具Plink妙用

发布时间:May 1, 2012 // 分类:Windows // No Comments

提及Putty大家都不陌生,Putty自带的工具Plink同样强大,本文就简单介绍下几种用法。
Plink使用参数:

Usage: plink [options] [user@]host [command]
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -ssh -telnet -rlogin -raw -serial
            force use of a particular protocol
  -P port   connect to specified port
  -l user   connect with specified username
  -batch    disable all interactive prompts
The following options only apply to SSH connections:
  -pw passw login with specified password
  -D [listen-IP:]listen-port
            Dynamic SOCKS-based port forwarding
  -L [listen-IP:]listen-port:host:port
            Forward local port to remote address
  -R [listen-IP:]listen-port:host:port
            Forward remote port to local address
  -X -x     enable / disable X11 forwarding
  -A -a     enable / disable agent forwarding
  -t -T     enable / disable pty allocation
  -1 -2     force use of particular protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -m file   read remote command(s) from file
  -s        remote command is an SSH subsystem (SSH-2 only)
  -N        don't start a shell/command (SSH-2 only)
  -nc host:port
            open tunnel in place of session (SSH-2 only)
  -sercfg configuration-string (e.g. 19200,8,n,1,X)
            Specify the serial configuration (serial only)

1.动态转发端口,可用于代*理上网哦。

plink -N -D 127.0.0.1:7070 root@192.168.1.2 -pw passwd

2.转发本地端口到远程服务器

plink -N -L 127.0.0.1:2222:google.com:80 root@haiyun.me -pw passwd
#通过haiyun.me将本地2222端口转发google.com 80端口,浏览器打开127.0.0.1:2222就是谷歌网站

3.登录ssh服务器并依次执行文件内的命令。

plink -m cmd.txt root@www.haiyun.me -pw passwd

4.内网穿透,转发远程服务器端口到本地端口,远程监听指定地址查看:https://www.haiyun.me/archives/1010.html

plink -N -R 0.0.0.0:2222:localhost:3389 root@haiyun.me -pw passwd
#转发haiyun.me 2222端口到本地3389端口

Linux/Centos服务器ssh安全设置

发布时间:April 28, 2012 // 分类:网络安全 // 2 Comments

互联网很危险,SSH做为服务器的大门一定要做好安全设置,我曾经做过测试,一台VPS开启ssh服务监听默认端口22,几天后secure日记分割了10多个,统计最新几小时的恶意登录失败的IP数据如下:
ssh恶意登录统计.png
真是个恐怖的次数,蛋痛的人太多了,如果密码稍简单就被破解了,如需自动封IP请参考:iptables自动封IP防SSH被暴力破解
1.更改默认端口,网上很多针对22端口扫描的软件,这样不会被误伤。

#https://www.haiyun.me
sed -i 's/#Port 22/Port 33333/g' /etc/ssh/sshd_config 
#更改ssh端口为3333

2.禁止root登录,新建普通用户登录,登录后可su -转入root账户,让恶意登录者无法猜测用户名。

useradd onovps #新建用户名
passwd onovps #设置密码
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
#禁止root登录
service sshd restart #重启ssh服务生效

3.限制登录失败次数并锁定

vim /etc/pam.d/login

在#%PAM-1.0下面添加:

auth required pam_tally2.so deny=5 unlock_time=180 #登录失败5次锁定180秒,不包含root
auth required pam_tally2.so deny=5 unlock_time=180 even_deny_root root_unlock_time=180 #包含root

4.允许特定的用户登录,编辑ssh配置文件:

vim /etc/ssh/sshd_config 
AllowUsers user 
#默认允许全部,多个用户以空格隔开,也可拒绝特定用户登录。
DenyUsers user

5.设置重复验证次数,默认3次:

MaxAuthTries 0
#错误一次即断开连接

6.直接用Iptables封闭ssh端口,为ssh服务器设置开门钥匙,有此其它都是浮云啦。。。。
一般做这些设置就足够了,也可设置为禁用密码用密钥登录,不同客户端方法不同,以后再写吧。

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...