2016年12月17日星期六

编译shadowsocks-libev出现 error: Cannot find pcre library

编译shadowsocks-libev 出现error: Cannot find pcre library

错误解决办法

Centos执行下面的命令 注意需要root权限

sudo yum -y install pcre-devel

2016年12月13日星期二

安装 libsodium

安装 libsodium,它是chacha20加密的
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar zxf LATEST.tar.gz
cd libsodium*
./configure
make && make install

# 修复关联
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig

2016年12月8日星期四

Linux管理员应该了解的20条IPTables防火墙规则用法

Linux管理员应该了解的20条IPTables防火墙规则用法

2016-03-04 阅读(2427) 评论(1)

管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击。

很多用户把 Linux 中的 IPTables 当成一个防火墙,从严格意见上来说 IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具。它只是帮助管理员配置网络流量的传入、传出规则列表,具体的实现其实是在 Linux 内核当中。

IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加各种数据包处理规则。

FILTER 默认过滤表,内建的链有:INPUT:处理流入本地的数据包FORWARD:处理通过系统路由的数据包OUTPUT:处理本地流出的数据包NAT 实现网络地址转换的表,内建的链有:PREROUTING:处理即将接收的数据包OUTPUT:处理本地产生的数据包POSTROUTING:处理即将传出的数据包MANGLE 此表用于改变数据包,共 5 条链:PREROUTING:处理传入连接OUTPUT:处理本地生成的数据包INPUT:处理报文POSTROUTING:处理即将传出数据包FORWARD:处理通过本机转发的数据包

接下来我们将由简入难介绍 25 条 Linux 管理员最常会用到的 IPTables 规则。

1、启动、停止和重启IPTables

虽然 IPTables 并不是一项服务,但在 Linux 中还是可以像服务一样对其状态进行管理。

基于SystemD的系统

systemctl start iptables systemctl stop iptables systemctl restart iptables

基于SysVinit的系统

/etc/init.d/iptables start /etc/init.d/iptables stop /etc/init.d/iptables restart

2、查看IPtables防火墙策略

你可以使用如下命令来查看 IPtables 防火墙策略:

iptables -L -n -v

以上命令应该返回数据下图的输出:

以上命令是查看默认的 FILTER 表,如果你只希望查看特定的表,可以在 -t 参数后跟上要单独查看的表名。例如只查看 NAT 表中的规则,可以使用如下命令:

iptables -t nat -L -v –n

3、屏蔽某个IP地址

如果你发布有某个 IP 向服务器导入攻击或非正常流量,可以使用如下规则屏蔽其 IP 地址:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

注意需要将上述的 XXX 改成要屏蔽的实际 IP 地址,其中的 -A 参数表示在 INPUT 链的最后追加本条规则。(IPTables 中的规则是从上到下匹配的,一旦匹配成功就不再继续往下匹配)

如果你只想屏蔽 TCP 流量,可以使用 -p 参数的指定协议,例如:

iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

4、解封某个IP地址

要解封对 IP 地址的屏蔽,可以使用如下命令进行删除:

iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

其中 -D 参数表示从链中删除一条或多条规则。

5、使用IPtables关闭特定端口

很多时候,我们需要阻止某个特定端口的网络连接,可以使用 IPtables 关闭特定端口。

阻止特定的传出连接:

iptables -A OUTPUT -p tcp --dport xxx -j DROP

阻止特定的传入连接:

iptables -A INPUT -p tcp --dport xxx -j ACCEPT

6、使用Multiport控制多端口

使用 multiport 我们可以一次性在单条规则中写入多个端口,例如:

iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

7、在规则中使用 IP 地址范围

在 IPtables 中 IP 地址范围是可以直接使用 CIDR 进行表示的,例如:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

8、配置端口转发

有时我们需要将 Linux 服务器的某个服务流量转发到另一端口,此时可以使用如下命令:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上述命令会将所有到达 eth0 网卡 25 端口的流量重定向转发到 2525 端口。

9、屏蔽HTTP服务Flood攻击

有时会有用户在某个服务,例如 HTTP 80 上发起大量连接请求,此时我们可以启用如下规则:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上述命令会将连接限制到每分钟 100 个,上限设定为 200。

10、禁止PING

对 Linux 禁 PING 可以使用如下规则屏蔽 ICMP 传入连接:

iptables -A INPUT -p icmp -i eth0 -j DROP

11、允许访问回环网卡

环回访问(127.0.0.1)是比较重要的,建议大家都开放:

iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT

12、屏蔽指定MAC地址

使用如下规则可以屏蔽指定的 MAC 地址:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

13、限制并发连接数

如果你不希望来自特定端口的过多并发连接,可以使用如下规则:

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

以上规则限制每客户端不超过 3 个连接。

14、清空IPtables规则

要清空 IPtables 链可以使用如下命令:

iptables -F

要清空特定的表可以使用 -t 参数进行指定,例如:

iptables -t nat –F

15、保存IPtables规则

默认情况下,管理员对 IPtables 规则的操作会立即生效。但由于规则都是保存在内存当中的,所以重启系统会造成配置丢失,要永久保存 IPtables 规则可以使用 iptables-save 命令:

iptables-save > ~/iptables.rules

保存的名称大家可以自己改。

16、还原IPtables规则

有保存自然就对应有还原,大家可以使用 iptables-restore 命令还原已保存的规则:

iptables-restore < ~/iptables.rules

17、允许建立相关连接

随着网络流量的进出分离,要允许建立传入相关连接,可以使用如下规则:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

允许建立传出相关连接的规则:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

18、丢弃无效数据包

很多网络攻击都会尝试用黑客自定义的非法数据包进行尝试,我们可以使用如下命令来丢弃无效数据包:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

19、IPtables屏蔽邮件发送规则

如果你的系统不会用于邮件发送,我们可以在规则中屏蔽 SMTP 传出端口:

iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

20、阻止连接到某块网卡

如果你的系统有多块网卡,我们可以限制 IP 范围访问某块网卡:

iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

源地址可以是 IP 或 CIDR。

iptables设置指定IP或IP段访问服务器开放端口

在有些应用中,我们需要设置白名单,只有白名单的IP才能访问服务器的资源,比如,设置服务器的22、80端口只允许某一段IP访问。

当然这个需求使用H3C、深信服、锐捷等市场上常见的防火墙都可以实现,因为这些设备的防火墙原理也是借鉴了iptables的原理,只不过这些市面上的设备开发了图形化的web界面。

为了学习,我们这里在Linux下配置iptables来实现需求。

实例需求:

服务器开放22、80、8080、6700、6701、6702、6703、6704几个端口,并且只有指定的IP段才能访问这些端口,未指定的IP,无法访问这些端口的应用。

例如,要求白名单的IP段是10.1.108.1――10.1.111.254,那么写法如下:

1

-A INPUT -s 10.1.108.0/22 -p tcp -m multiport --dport 22,80,8080,6700:6704 -j ACCEPT

单个端口用逗号隔开,一段范围端口,使用冒号连接。IP段根据子网掩码形式填写。如图所示,添加其他的IP或者IP段即可。


网络分析shell脚本(实时流量+连接统计)

Linux运维日志

系统管理网络WWW安全监控Shell备份Email技术支持更多

网络分析shell脚本(实时流量+连接统计)

朱 茂海 发布于 2014-06-12 分类:Shell 阅读(5383)评论(31) 

有服务器方面的问题无法解决?点击这里寻求帮助。


介绍一个强大的分析网络的shell脚本,此脚本是从EZHTTP拆分出来的,觉得有必要单独介绍下。
脚本运行效果截图:


此脚本包含的功能有:

1、实时监控任意网卡的流量2、统计10秒内平均流量3、统计每个端口在10秒内的平均流量,基于客户端和服务端端口统计。可以看出哪些端口占流量比较大,对于web服务器,一般是80端口。其它端口受到攻击时,也有可能其它端口流量比较大。所以此功能可以帮助我们端口流量是否正常。4、统计在10s内占用带宽最大的前10个ip。此项功能可以帮助我们来查出是否有恶意占用带宽的ip。5、统计连接状态。此项功能可以让我们看出哪些连接状态比较大。如果SYN-RECV状态比较多的话,有可以受到半连接攻击。如果ESTABLISED非常大,但通过日志发现没有那么多请求,或者通过tcpdump发现大量ip只建立连接不请求数据的话,可能是受到了全连接攻击,这时候如果你使用的是nginx服务器,可以在配置文件增加listen 80 deferred来防止。6、统计各端口连接状态。当可能受到攻击时,此项功能可以帮助我们发现是哪个端口受到攻击。7、统计端口为80且状态为ESTAB连接数最多的前10个IP。此项功能可以帮助我们来找出创建连接过多的Ip,进而屏蔽。8、统计端口为80且状态为SYN-RECV连接数最多的前10个IP。当受到半连接攻击时,此项功能可以帮助我们找到恶意ip。

用到的网络分析工具:

1、tcpdump:此脚本用tcpdump来统计基于ip或基于端口的流量。2、ss: 此脚本用ss命令来统计连接状态,实际使用发现ss比netstat高效得多。3、/proc/net/dev,用来统计指定网卡的流量。

脚本下载地址:https://www.centos.bz/wp-content/uploads/2014/06/network-analysis.sh
下面贴出完整的脚本:

https://github.com/hilllinux/conf/blob/master/network-analysis.sh

脚本中如有不明白的地方,可以留言咨询。

转载请保留原文链接:Linux运维日志 » 网络分析shell脚本(实时流量+连接统计)

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^

相关推荐

借助tcpdump统计http请求使用shell脚本结合innobackupex自动备份mysql innodb数据库Bash Shell字符串操作小结使用sed对nginx配置文件进行删除和列出虚拟主机操作sed高级应用示例shell脚本制作俄罗斯方块游戏如何在Linux终端里用Shell和C输出带颜色的文字shell采集系统cpu 内存 磁盘 网络信息

评论 31

提交评论

情朗大神,我执行此脚本的2) traffic and connection overview.功能时,系统报错(167行), line 167: : command not found2年前 (2014-06-13)回复

朱 茂海@情朗 167是哪一行2年前 (2014-06-13)回复

情朗@朱 茂海 awk -F'[ .:]' -v regTcpdump=$regTcpdump '{if ($0 ~ regTcpdump){line="clients > "$8"."$9"."$10"."$11":"$12}else{line=$2"."$3"."$4"."$5":"$6" > clients"};sum[line]+=$NF*8/10}END{for (line in sum){printf "%s %d\n",line,sum[line]}}' /tmp/tcpdump | \2年前 (2014-06-14)回复

朱 茂海@情朗 不知道什么原因,你可以使用如下命令来运行下。 wget https://www.centos.bz/wp-content/uploads/2014/06/network-analysis.sh chmod +x network-analysis.sh ./network-analysis.sh2年前 (2014-06-14)回复

watchsky@朱 茂海 挺好的,收藏了,不过如果网卡做了bond呢?2年前 (2014-06-18)回复

朱 茂海@watchsky 这个没考虑到bond2年前 (2014-06-18)回复

cody如何查看 80 端口被占用的 ip 对应的 进程 呢?发现有些奇怪的ip,不知道是不是恶意的。2年前 (2014-06-19)回复

朱 茂海@cody 你这句话说得好绕,不明白你说什么2年前 (2014-06-19)回复

kkk@朱 茂海 用lsof -i:80 这样可以看到使用80端口的进程2年前 (2014-10-25)回复

学徒真是好东西尼。2年前 (2014-06-25)回复

Mallux:razz: 很强大的脚本,分析研究下~~2年前 (2014-07-11)回复

rocdk890大神,我想请问下为什么我执行脚本后,会出现下面的错误呢? please input your select(ie 1): 2 kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]2年前 (2014-07-24)回复

朱 茂海@rocdk890 编辑脚本,在第一行后面加-x,如#!/bin/bash -x,然后执行脚本,把输出贴出来才能找出问题。2年前 (2014-07-24)回复

ryan博主你好,运行时有错误。错误如下 11: network-analysis.sh: Syntax error: "(" unexpected (expecting "}") 有点疑惑2年前 (2014-12-09)回复

snom群主, #统计端口为80且状态为ESTAB连接数最多的前10个IP #统计端口为80且状态为SYN-RECV连接数最多的前10个IP 这里貌似没有用来判断是否是80端口,这里统计的是全部的端口2年前 (2014-12-23)回复

朱 茂海@snom 嗯,注释有错2年前 (2014-12-23)回复

心碎随风请教一下,怎么样把脚本的菜单的1 和2 分开?这样就可以直接用定时任务调了。另外关于top 10 统计出来的ip流量,能不能把公网和私网的ip分开列出,比较好观察。1年前 (2015-07-13)回复

朱 茂海@心碎随风 菜单1和2是根据机器网卡数量生成的,如果只有一个网卡,就不会有菜单;公网和私网ip统计分开,假如你这两种流量是分布在不同网卡,就可以分别统计不同网卡的流量1年前 (2015-07-13)回复

心碎随风问题是公网和私网的ip都是走同一块网卡。@朱 茂海1年前 (2015-07-14)回复

心碎随风脚本执行后的结果中,server 和client分别指的是什么?1年前 (2015-07-13)回复

朱 茂海server就是你运行脚本的机器,client是其它连接server的机器1年前 (2015-07-13)回复

2

© 2016 Linux运维日志   网站地图

解决ssh终端CentOS后中文显示乱码

 今天,帮我们同学处理一下中文显示乱码的问题。这个是个国内Linux用户烦恼的问题,由于大部分的Linux发行版都是以英语为主体的,而且英文在通用性和稳定性上都比中文要好一些,各种奇怪的BUG也要少一点。所以,强烈建议使用英文的系统。

    我们知道我们的操作系统是无所谓中文版和英文版的,无论是windows还是Linux,系统发行的时候全世界都是一样的内核,系统呈现给我们是英文还是中文,完全取决于你选择的语言包。不同国家的人在安装使用的时候选择属于自己国家的语言包,应用程序中的语言也不是写死的,它根据系统的设置来调用相关的语言,所以,一个应用程序写出来不经过修改,全世界不同国家的用户都可以以母语界面使用它,这就事所谓的internationalization(国际化),简称 i18n。这也是未来软件的发展趋势。 

    那么,如果我在系统中安装了不同的语言包和不同的字体,系统是如何判断我所要的语言界面并调用相关的字体的呢?系统中那些文件和变量在控制这些呢? 

可以使用locale命令,查看当前系统默认采用的字符集

 

# locale

    在redHat/CentOS系统下,记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下: 

 

LANG="zh_CN.UTF-8"

SYSFONT="latarcyrheb-sun16"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

    其中LANG变量是language的简称,稍微有英语基础的用户一看就看出来这个变量是决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等。SYSFONT是system font的简称,决定系统默认用哪一种字体。SUPPORTED变量决定系统支持的语言,即系统能够显示的语言。需要说明的是,由于计算机起源于英语国家,因此,不管你把这些变量设置成什么,英语总是默认支持的,而且不管用什么字体,英文字体总包含在其中。 

 

那么如何显示中文呢?

1、系统必须安装中文语言包才行

 

# yum -y groupinstall chinese-support

2、仅仅有语言包还不行,我们得设置相应的字符集

 

## 临时生效

# export LANG="zh_CN.UTF-8"    # 设置为中文

# export LANG="en_US.UTF-8"    # 设置为英文,我比较喜欢这样 export LANG=C

 

## 永久生效, 编辑/etc/sysconfig/i18n(最好reboot一下)

LANG="zh_CN.UTF-8"

 

## 或者,编辑 /etc/profile配置文件,添加如下一行

export LANG="zh_CN.UTF-8"

# 重新载入

# . /etc/profile

 

## 查看当前的字符集

# echo $LANG

    好了,经过上面的设置,在终端上应该能够显示中文了。

3、ssh远程终端乱码

    如果SSH终端还是乱码,那么我们也需要对终端软件的编码进行设置。

Xshell:

SecureCRT:

4、如果终端还是中文乱码肿么办?

    对SSH软件进行设置,选择一个支持中文的字体。

 

Linux <---> Windows 之间相互需要修改文件,然后乱码。

    拷贝上去后经常发现中文显示乱码。。原因是Windows中默认的文件格式是 GBK(gb2312),而Linux一般都是UTF-8。比较繁琐的方法是在windows下用程序把内容转换为utf-8编码格式的,但是相当麻烦, 而且遇到一个文件转一回。下面介绍一下,在Linux中如何一劳永逸的解决这个问题,查看文件的编码及如何进行对文件进行编码转换。

    为了避免这些问题,最好的方式就是统一编码。对于文本文件,都统一保存为UTF8格式,windows下面不要使用word,记事本,推荐Sublime text, 或者notepad++。

(转)使用iptraf查看TCP/UDP某个特定端口的带宽与流量


28

(原创)使用iptraf查看TCP/UDP某个特定端口的带宽与流量

发表于: LinuxToolsUNIX个人日记原创总结 | 作者: 博客教主

标签: iptraf,TCP,UDP,原创,带宽,查看,流量,端口

PS:今天有个做Linux开发的哥们问我怎么查看某个端口的流量,我之前还真很少查看某个端口的流量,都习惯查看某个网卡的流量。不过想了一下,这个肯定是可以的。马上想起我经常使用的iptraf工具,折腾了几分钟,方法如下,很简单:

1、终端里打开iptraf(没安装的自己安装,官方源有),选择 Configure —— Additional ports,然后输入端口范围,如果查看22,就输入22 —— 22,之后退出iptraf,如图所示:

2、重新打开iptraf,选择 Statistical breakdowns —— By TCP/UDP port —— eth0,这样就可以查看eth0网卡的某个指定端口的带宽占用和流量了。如图所示:

永久链接 : http://www.ha97.com/4806.html