1. 压力测试
ab
host1 ab -n 100000 -c 40 http://192.168.1.112/
host2 netstat -an|grep 80|grep 192.168.1.114 |grep EST -c
w
2. netfilter
linux核心层内部的一个数据包处理模块
3. hook point(INPUT OUTPUT FORWARD PREROUTING POSTROUTING)
数据包在netfilter的挂载点
4. iptables
四张表(filter nat mangle raw)+五条链(hook point)+规则
规则
数据包访问控制 ACCEPT DROP REJECT
数据包改写 SNAT DNAT
信息记录 LOG
table command chain params target
-t filter -A INPUT -p tcp -j ACCEPT
nat -D FORWARD -s DROP
-L OUTPUT -d REJECT
-F PREROUTING -m tcp DNAT
-P POSTROUTING state SNAT
-I multiport
-R
-n
5. iptables配置
iptables -L #列出规则
-F 清除已有规则
-n 不显示主机名
iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #允许访问22到80端口
iptables -I INPUT -p icmp -j ACCEPT #允许ICMP
iptables -A INPUT -j REJECT #屏蔽其它访问
iptables -D INPUT -p tcp --dport 80 -j ACCEPT #先删除
iptables -I INPUT -p tcp --dport 80 -j REJECT #后拒绝
iptables -nL #不显示主机名列出规则
iptables -I INPUT -i lo -j ACCEPT #本机可以访问自己
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#本机可以访问其它主机
iptables -D INPUT -p tcp --dport 80 -j ACCEPT #先删除
iptables -I INPUT -p tcp -s 192.168.1.112 --dport 80 -j ACCEPT
#只允许指定ip访问本机80端口
ftp主动模式(开放20端口) 客户端必须#iptables -F
#vim /etc/vsftpd/vsftpd.conf #配置文件
port_enable=yes
connect_from_port_20=YES
#iptables -I INPUT -p tcp --dport 21 -j ACCEPT #允许访问21端口
ftp被动模式(开放‘任意‘端口)(默认)
#vim /etc/vsftpd/vsftpd.conf
port_enable=NO
pasv_min_port=50000
pasv_max_port=60000
#iptables -I INPUT -p tcp --dport 21 -j ACCEPT #打开21号端口
#iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT
#modprobe nf_conntrack_ftp #临时建立ftp被动
#modprobe -l #查看内核模块
#vim /etc/sysconfig/iptables-config #永久建立ftp被动
IPTABLES_MODULES="nf_conntrack_ftp" #设置参数
常见端口
http 80/tcp
https 443/tcp
smtp 25/tcp
smtps 465/tcp
pop3 110/tcp
nfs 123/udp
samba 137,138,139/tcp 445/tcp
ftp 20/tcp,21/tcp
ssh 22/tcp
mysql 3306/tcp
oracle 1521/tcp
规则设置
iptables -F
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT #指定网段
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT
/etc/sysconfig/iptables #配置文件
/etc/init.d/iptables save #执行以保存iptables设置
nat表规则配置
SNAT 源地址转换 出口POSTROUTING
DNAT 目标地址转换 进口PREROUTING
iptables -t nat -F
iptables -t nat -A PREROUTING -d 192.168.1.112 -p tcp --dport 80 -j DNAT
--to 192.168.2.112:80
iptables -t nat -L
6. 利用iptables防CC攻击
connlimit模块 #限制每一个客户端ip的并发连接数
--connlimit-above n #限制并发个数
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit
--connlimit-above 100 -j REJECT
iptables -I INPUT -p tcp --dport 80 -s 192.168.1.112 -m connlimit
--connmlimit-above 10 -j REJECT
Limit模快 #限速,控制流量
iptables -A INPUT -m limit --limit 3/hour #--limit-burst默认值为5
iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
7. 实例脚本
详见 ./iptables.sh
版权声明:本文为博主原创文章,未经博主允许不得转载。