admin 发布的文章

#查看所有80端口的连接数
netstat -nat|grep -i "80"|wc -l
#对连接的IP按连接数量进行排序
netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
netstat -ntu | awk '{print $5}' | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sort | uniq -c | sort -nr
#查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
#查看80端口连接数最多的20个IP
cat /www/web_logs/waitalone.cn_access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -100
tail -n 10000 /www/web_logs/waitalone.cn_access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -100
cat /www/web_logs/waitalone.cn_access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -100
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20
#用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
#查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
#查找较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
#linux下实用iptables封ip段的一些常见命令:
#封单个IP的命令是:
iptables -I INPUT -s 211.1.0.0 -j DROP
#封IP段的命令是:
iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP
#封整个段的命令是:
iptables -I INPUT -s 211.0.0.0/8 -j DROP
#封几个段的命令是:
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
#想在服务器启动自运行的话有三个方法:
#1、把它加到/etc/rc.local中
#2、iptables-save >/etc/sysconfig/iptables可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行。
#3、service iptables save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时#自动执行。
#后两种更好此,一般iptables服务会在network服务之前启来,更安全。
#解封的话:
iptables -D INPUT -s IP地址 -j REJECT
iptables -F #全清掉了

iftop

介绍

iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。

实例

默认是监控第一块网卡的流量

iftop

监控eth1

iftop -i eth1

直接显示IP, 不进行DNS反解析

iftop -n

直接显示连接埠编号, 不显示服务名称:

iftop -N

显示某个网段进出封包流量

iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0

基于实例讲解输出含义

执行iftop -N -n -i eth1后界面为

19.1Mb            38.1Mb              57.2Mb               76.3Mb             95.4Mb
+-----------------+-----------------+--------------------+--------------------+---------------------
192.168.1.11                                  => 192.168.1.66                  5.3Mb  3.22Mb  3.20Mb
                                              <=                               219kb  45.7kb  49.3kb
192.168.1.11                                   => 192.168.1.29                 144kb  30.8kb  29.6kb
                                              <=                               11.3Mb  2.38Mb  2.74Mb
192.168.1.11                                  => 12.2.11.71                    0b   6.40kb  6.66kb
                                              <=                               0b      0b      0b
192.168.1.11                                  => 192.168.1.8                   2.63kb  1.43kb   932b
                                              <=                               1.31kb  1.05kb   893b
192.168.1.11                                   => 192.168.2.78                 2.53kb  1.54kb  2.15kb
                                               <=                              160b    160b    187b
192.168.1.11                                   => 111.126.195.69               0b    166b     69b
                                               <=                              0b      0b      0b
------------------------------------------------------------------------------------------------------
TX:             cum:   9.70MB   peak:   15.6Mb                          rates:   15.4Mb  3.26Mb  3.23Mb
RX:                    8.38MB           14.9Mb                                   11.5Mb  2.42Mb  2.79Mb
TOTAL:                 18.1MB           30.5Mb                                   27.0Mb  5.69Mb  6.03Mb

iftop界面含义如下

第一行:带宽显示

中间部分:外部连接列表,即记录了哪些ip正在和本机的网络连接

中间部分右边:实时参数分别是该访问ip连接到本机2秒,10秒和40秒的平均流量

=>代表发送数据,<= 代表接收数据

底部三行:表示发送,接收和全部的流量

底部三行第二列:为你运行iftop到目前流量

底部三行第三列:为高峰值

底部三行第四列:为平均值

通过iftop的界面很容易找到哪个ip在霸占网络流量,这个是ifstat做不到的。不过iftop的流量显示单位是Mb,这个b是bit,是位,不是字节,而ifstat的KB,这个B就是字节了,byte是bit的8倍。初学者容易被误导。

进入iftop的命令

进入iftop画面后的一些操作命令(注意大小写)

按h切换是否显示帮助;

按n切换显示本机的IP或主机名;

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

按N切换显示端口号或端口服务名称;

按S切换是否显示本机的端口信息;

按D切换是否显示远端目标主机的端口信息;

按p切换是否显示端口信息;

按P切换暂停/继续显示;

按b切换是否显示平均流量图形条;

按B切换计算2秒或10秒或40秒内的平均流量;

按T切换是否显示每个连接的总流量;

按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

按j或按k可以向上或向下滚动屏幕显示的连接记录;

按1或2或3可以根据右侧显示的三列流量数据进行排序;

按<根据左边的本机名或IP排序;

按>根据远端目标主机的主机名或IP排序;

按o切换是否固定只显示当前的连接;

按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!

按q退出监控。

参考:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858923.html

一、临时修改

$ sudo hostname weedhost
# 查看主机名
$ hostname
weedhost

临时修改在重启后会恢复原样

二、永久修改

# 查看当前主机名
$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=192.168.10.1

# HOSTNAME就是主机名了,vi /etc/sysconfig/network 修改保存即可

应用环境可以是安全要求比较高的VPS或者独立服务器,一般允许内网IP登入,或者VPN进去。

vi /etc/hosts.allow
sshd:192.168.0.100:allow          //允许IP 192.168.0.100 登录
sshd:192.168.0.:allow            //允许IP 192.168.0.  网段登录 
sshd:all:deny                     //禁止其他的所有IP登录
或者
sshd:223.227.223.*:allow              //允许IP 223.227.223.*   网段登录
sshd:192.168.0.*:allow                //允许IP 192.168.0.*  网段登录 
sshd:all:deny                                //禁止其他的所有IP

Vi checkload.sh 创建脚本

#!/bin/sh  
TOP_SYS_LOAD_NUM=20
SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`  
  
echo $(date +"%y-%m-%d") `uptime`  
if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]  
then  
    echo "##" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l`  
    pkill httpd  
    sleep 10  
    for i in 1 2 3  
    do  
        if [ `pgrep httpd | wc -l` -le 0 ]  
        then  
            /usr/local/apache2/bin/apachectl start  
            sleep 30  
            echo "##" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`  
        fi  
    done  
else  
    if [ `pgrep httpd | wc -l` -le 0 ]  
    then  
        /usr/local/apache2/bin/apachectl start  
        sleep 30  
        echo "##" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`  
    fi  
fi  

然后在/etc/crontab里增加定时执行的命令:

*/2 * * * * root /root/checkload.sh >>/root/checkload.log

注意 chmod 755 /root/checkload.sh 设置脚本权限

安装依赖和Git

yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel openssl zlib curl autoconf tk
wget http://git-core.googlecode.com/files/git-1.7.10.tar.gz
tar xzvf git-latest.tar.gz
cd git-2011-11-30 #你的目录可能不是这个
autoconf
./configure
make
sudo make install

检查版本

git --version

增加 Pure-FTPD 的支持

unified_ftp_password_file 选项必须为 1 和所有 passwords 要转换:
参考:http://www.directadmin.com/features.php?id=1134

pureftp=1

该选项也要设置为 1.

After any change to the /etc/proftpd.passwd file, DA will add a task.queue entry:
action=rewrite&value=pureftp_db

and the dataskq will call:
/usr/bin/pure-pw mkdb /etc/pureftpd.pdb -f /etc/proftpd.passwd

安装方式:
使用custombuild安装:

cd /usr/local/directadmin/custombuild
./build set proftpd no
./build set pureftpd yes
./build pureftpd

请记住,这是在测试阶段,可能会发生错误。

如果你发现proftpd仍然在运行,运行以下命令

chkconfig proftpd off
service proftpd stop

需要提醒,Pure-FTPD可能会面临被爆破扫描的危险,DA目前无法屏蔽Pure-FTPD穷举的IP,CSF也是。
如果需要转换回来,在安装方式那替换下开启proftpd,关闭pureftpd,然后编译proftpd。

参考:http://www.directadmin.com/features.php?id=1143

比方你现在运行PHP 5.2.11,希望降级/升级到5.2.2。你可以通过编辑versions.txt文件来实现。

cd /usr/local/directadmin/custombuild
./build set autover no
vi versions.txt

在文件中查找这两行

php5:5.2.11:0223d71f0d6987c06c54b7557ff47f1d
php5-mail:5.2.11:85a62ef3d069403c29604730e02da9c8

替换为

php5:5.2.2:
php5-mail:5.2.2:

保存文件退出,输入以下命令

./build update_data
./build php n

通常情况下,我会尽量推荐使用SCP客户端(via a client such as WinSCP),但难免有客户不喜欢使用或不会,或出于某种原因坚持使用FTP在线访问文件。正如他们所说的 - 顾客永远是正确的!

无论如何,在CentOS 6.x中yum命令安装的,目前已经出正式版得到认可的3个主流的FTP服务器 pureftpd,ProFTPD以及vsftpd,哪个是最好的?我进行了总结

ProFTPd

ProFTPd 是出世很久的模块化的FTP服务器。从很早开始,流行的大型控制面板(例如cPanel,DirectAdmin)都支持ProFTPd。

功能最丰富的,肯定是ProFTPd。它有一堆可用的插件,并且是免费的,跟Apache一样,也使用了GPL许可。

ProFTPd的配置相当简单,示例配置文件比比皆是,谷歌搜索可以找到很多。

ProFTPd支持多种系统架构和操作系统。

ProFTPd的安全性

Of the bunch,ProFTPd是其中有CVE漏洞最多的。但ProFTPd的使用很普遍,这使得它很容易成为黑客的攻击目标。

ProFTPd CVE Entries: 40
Shodan ProFTPd entries: 127

pureftpd

pureftpd的招牌是“安全第一”,这是显而易见的,CVE Entries的数量很少(见下文)。

BSD许可证授权,pureftpd也兼容很多操作系统(但不支持Windows)。

pureftpd的配置很简单,Google有配置实例。

pureftpd的安全性

pureftpd的漏洞很少,安全还不错。

PureFTPd CVE Entries: 4
Shodan Pure-FTPd Entries: 12

vsftpd

vsftpd是基于GPL许可的FTP服务器,它的全称是“Very Security FTP daemon.”(非常安全的FTP)。vsftpd是基于安全考虑编写的FTP服务器。

其轻量的特性使得它的用户可观,而且很多大型网站(ftp.redhat.com,ftp.debian.org,ftp.freebsd.org)目前都是使用vsftpd。

vsftpd的安全性

vsftpd CVE列出的漏洞比ProFTPd少很多,超过pureftpd。因为它的名字就暗示它是一个安全的FTP服务,或因为它是被那么多的大型网站使用,有比别的软件更多的审查。

PureFTPd CVE Entries: 4
Shodan Pure-FTPd Entries: 12

总结与FTP服务器的建议

考虑到上述的评估,任何服务器将工作中的情况,但一般来讲:

如果您想要有灵活的配置选项、大量的外部模块的服务器:ProFTPd
如果您只有少量用户,并想要一个简单,安全的FTP服务器:pureftpd
如果要用于大量用户的FTP服务器:vsftpd

当然,每个人的要求都不同,所以请务必根据自己的需要来选择。

我的意见不同?请让我知道是什么原因!

- See more at: http://systembash.com/content/evaluating-ftp-servers-proftpd-vs-pureftpd-vs-vsftpd/#sthash.siQpdjL4.dpuf

下载地址:http://www.custombuild.eu/plugin/custombuild.tar.gz
登入 DirectAdmin 管理员,插件管理,增加插件,输入下载地址以及DA管理员密码,点击安装。

完成后登入SSH执行以下命令

cd /usr/local/directadmin
wget -O custombuild.tar.gz http://files1.directadmin.com/services/custombuild/2.0/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build

登入DA控制面板,进入CustomBuild配置。首次需要进入SSH执行以下命令:

cd /usr/local/directadmin
cd custombuild
./build all d

更多详细介绍以及注意事项:
http://forum.directadmin.com/showthread.php?t=44743
http://forum.directadmin.com/showthread.php?t=48989

2015年1月13日更新!

在DirectAdmin管理员面板的Brute Force Monitor(穷举监视器)里,我们可以看到proftpd、sshd、exim等一直被暴力猜解,系统消息一封又一封的发过来遭到暴力猜解成百上千次都是同一个IP的行为,这是非常危险的,但我们不可能时刻关注消息手动一个一个的去封锁。我们可以结合CSF来实现自动封锁穷举IP!

cd /usr/local/directadmin/scripts/custom/
cp block_ip.sh block_ip.sh.bak
cp unblock_ip.sh unblock_ip.sh.bak

如果你没有 block_ip.sh 和 unblock_ip.sh 文件,会提示如下警告:

cp: cannot stat `block_ip.sh': No such file or directory
cp: cannot stat `unblock_ip.sh': No such file or directory

现在获取文件:

cd /usr/local/directadmin/scripts/custom/
wget -O block_ip.sh http://files.plugins-da.net/dl/csf_block_ip.sh.txt
wget -O unblock_ip.sh http://files.plugins-da.net/dl/csf_unblock_ip.sh.txt
wget -O show_blocked_ips.sh http://files.plugins-da.net/dl/csf_show_blocked_ips.sh.txt
chmod 700 block_ip.sh show_blocked_ips.sh unblock_ip.sh

创建白名单和黑名单文件

touch /root/blocked_ips.txt
touch /root/exempt_ips.txt

这时候你已经可以从 Brute Force Monitor 里手动选择IP地址禁止,但不会自动封锁。如果你想自动封锁,安装以下脚本

cd /usr/local/directadmin/scripts/custom
wget -O brute_force_notice_ip.sh http://files.directadmin.com/services/all/brute_force_notice_ip.sh
chmod 700 brute_force_notice_ip.sh

如果没有意外,这时候应该可以自动封锁穷举IP了。