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訪问本机80port
ftp主动模式(开放20port) client必须#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被动模式(开放'随意'port)(默认)
#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" #设置參数
常见port
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模块 #限制每个clientip的并发连接数
--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
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訪问本机80port
ftp主动模式(开放20port) client必须#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被动模式(开放'随意'port)(默认)
#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" #设置參数
常见port
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模块 #限制每个clientip的并发连接数
--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