包过滤的防火墙
安装iptables管理器:
yum install -y iptables-services
有四个表
1.filter表:包过滤
2.net表:nat转换(网络地址转换)
3.mangle表:包重构(修改)
4.raw表:数据跟踪处理
五条链:
1.INPUT:数据进入
2.OUTPUT: 出去的
3.FORWARD:路过
4.PREROUTING:
5.POSTROUTING
pre ....之前
post ....之后
#iptables命令参数
-t:选表
-L:列出
-n:显示行号
-A:添加规则
-j:添加处理方式(dorp 丢弃)
-p:指定协议(tcp udp)
-D:删除
-d:目的ip
-I:插在第一条
-s:源ip#iptables命令参数
-t:选表
-L:列出
-n:显示行号
-A:添加规则
-j:添加处理方式(dorp 丢弃 DNAT地址转换)
-p:指定协议(tcp udp)
-D:删除
-d:目的ip
-I:插在第一条
-s:源ip
-F:清楚所有规则
一.filter表:包过滤
1.查看表
iptables -t filter -L -n
2.拒绝访问8080
iptables -t filter -A INPUT -j DROP -p tcp --dport 8080
3.删除表的第一条数据
iptables -t filter -D INPUT -j DROP 1
4.拒绝访问某个ip的包(某个网卡)
iptables -t filter -A INPUT -j DROP -p tcp -d 47.121.131.108
5.屏蔽某个ip访问
iptables -t filter -I INPUT -j DROP -s 123.56.227.79
或
iptables -t filter -I INPUT -j REJECT -s 123.56.227.79 (REJECT,拒绝,对方能知道)
删除这个规则
iptables -t filter -D INPUT 1
6.屏蔽某个ip网段
iptables -t filter -I INPUT -j DROP -s 123.56.227.0/24
7.只允许指定网段的访问
方法1:(! ,取反)
iptables -t filter -I INPUT ! -j DROP -s 123.56.227.0/24
方法2:(默认全拒绝,设置允许的网段)
考虑的多:ssh等要允许,见11
8.拒绝访问多个端口
-m multiport -p tcp --dport 80,443,3308 :使用模块
iptables -t filter -I INPUT -j DROP -m multiport -p tcp --dport 80,443,3308
iptables -t filter -I INPUT -j DROP -p tcp --dport 34:1000 (:, 从34到1000端口)
9.禁ping
iptables -t filter -I INPUT -j DROP -p ICMP
iptables -t filter -I INPUT -j DROP -p ICMP --icmp-type 8
把/proc/sys/net/ipv4/icmp_echo_ignore_all设置成1 (临时)
或
设置/etc/sysctl.conf中net.ipv4.icmp_echo_ignore_all = 1 (永久)
sysctl -p 生效
10.防火墙规则保存与恢复
1.) iptables-save 打印在屏幕上
2.) iptables-save >/etc/sysconfig/iptables 保存到文件
3.)iptables-restore </etc/sysconfig/iptables 恢复
11.设置默认拒绝
要先配置允许的东西
iptables -F
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT (回环地址允许)
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m multiport -p tcp --dport 80,443,3308 -j ACCERT
iptables -A INPUT -s 10.0.0.0/24 -j ACCERT
iptables -A INPUT -s 192.168.254.0/24 -j ACCERT (内网连接允许)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCERT (连接状态允许)
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCERT
iptables -P INPUT DROP (设置默认为拒绝)
二.net表:nat转换
#iptables命令参数
-pre:修改目的地址
-post:修改源地址
-j DNAT:地址转换
--to:转换到
-j MASQERADE:转发到出口网卡
1.查看表
iptables -t nat -nvL
2.共享上网
1)配置防火墙SNAT规则
iptables -t nat -A POSTROUTING -s 123.56.227.0/24 -j SNAT --to-source 123.56.227.79
或者
iptables -t nat -A POSTROUTING -s 123.56.227.0/24 -j MASQUERADE (伪装成自己的ip,如果自己ip变化)
2)开启内核转发功能
修改/etc/sysctl.conf中net.ipv4.ip_forward = 1
sysctl -p 生效
3)客户端网关指向防火墙
修改客户端的/etc/sysconfig/network-scripts/ifcfg-eth1中的网关
GETWAY=47.121.131.108
DSN1=8.8.8.8
systemctl restart network
2.端口转发
iptables -t nat -A PREROUTING -d 47.121.131.108 -p tcp --dport 20000 -j DNAT --to-destination 39.103.150.37:22
iptables -t nat -A PREROUTING -p tcp --dport 20000 -j DNAT --to-destination 39.103.150.37:22
iptables -t nat -A POSTROUTING -p tcp -d 39.103.150.37 --dport 22 -j SNAT --to-source 47.121.131.108
3.端口转发:
iptables -t nat -A PREROUTING -p tcp --dport 22222 -j DNAT --to-destination 39.103.150.37:22
iptables -t nat -A POSTROUTING -j MASQUERADE (添加一条 POSTROUTING 规则来允许转发的数据包从本地系统发出)