iptables防火墙,一般关闭两项功能

1.selinux(生产中也是关闭的),ids入侵检测

2.iptables(生产中看情况,内网关闭,外网打开)

大并发的情况,不能开iptables,影响性能,一般用硬件防火墙

net.ipv4.ip_forward=0



一、容器:包含或者说属于的关系


二、Netfilter/iptables 的表又是链的容器

表(tables):

1.filter

2.NAT

3.MANGLE

4.RAW


三、链(chains):

1.INPUT        进

2.OUTPUT        出

3.FORWARD        转发

4.PREROUTING    预路由,改目的地址,端口等,可以把80端口转发到内网9000端口

5.POSTROUTING    出去的路由改源地址,源端口等,应用:局域网共享上网。


四、链是规则容器(Policy)

五、一条条过滤的语句

1111.png

查看表规则

iptables -L -n

iptables -L -n -v -x   显示进出方向

iptables -L -n --line-numbers  显示序号

默认加载的内核模块

lsmod | egrep "nat|filter|ipt"

加载如下到内核:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state


清楚默认规则

iptables -F  //清除所有规则,不会处理默认的规则。

iptables -X  //删除用户自定义的链。

iptables -Z  //链的记数器清零。

禁止端口规则

语法:
iptables -t [table] -[AD] chain rule-specification [options]

iptables -t filter -A INPUT -p tcp --dport 22 -j DROP   //添加到链尾,最后一条

iptables -t filter -I INPUT -p tcp --dport 22 -j DROP   //添加到链头,第一条

iptables -t filter -I INPUT -p tcp --dport 18:80 -j DROP   //封端口范围
iptables -t filter -I INPUT -p tcp -m multiport --dport 18,19,20,21,50 -j DROP   //封端口范围

ACCEPT(接受)
DROP(丢弃)
REJECT(拒绝)

禁止网络状态

匹配网络状态
-m state --state
    NEW:已经或将启动新的连接
    ESTABLISHED:已建立的连接
    RELATED:正在启动新连接
INVALID:非法或无法识别的
FTP服务是特殊的,需要配状态连接。
●7.允许关联的状态包通过(web服务不要使用FTP服务)
#others RELATED ftp协议
#允许关联的状态包
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-m limit
--limit n/{second/minute/hour}:指定时间内的请求速率"n"为速率,后面为时间分别为:秒、分、时    
--limit-burst [n]:在同一时间内允许通过的请求"n"为数字,不指定默认为5
fg:本机地址:172.16.14.1,允许172.16.0.0/16网络ping本机,但限制每分钟请求不能超过20,每次并发不能超过6个

iptables -A INPUT -s 172.16.0.0/16 -d 172.16.14.1 -p icmp --icmp-type 8 -m limit --limit 20/min --limit-burst 6 -j ACCEPT
ptables -A OUTPUT -s 172.16.14.1 -d 172.16.0.0/16 -p icmp --icmp-type 0 -j ACCEPT

删除端口规则

iptables -t filter -D INPUT -p tcp --dport 22 -j DROP

iptables -t filter -D INPUT 1


禁止IP规则

iptables -t filter -I INPUT -p tcp -s 10.10.0.100 -dprot 80 -j DROP   //添加到链头,第一条

iptables -t filter -I INPUT 520 -p tcp -s 10.10.0.100 -dprot 80 -j DROP   //添加到链头,第520条上

iptables -t filter -A INPUT  -i eth0 -s 10.10.0.0/24 -dprot 80 -j DROP   //禁止整个网段

iptables -t filter -A INPUT  -i eth0 -s 10.10.0.100 -j DROP   //禁止IP

iptables -t filter -A INPUT  -i eth0 ! -s 10.10.0.100 -j DROP   //此IP以外的IP,全禁止

iptables -t filter -A INPUT  -p icmp --icmp-type 8 -i eth0 -s 10.10.0.0/24 -j DRO //此网段的icmp协议访问,全禁止



生产环境防火墙配置

iptables -F
iptables -X
iptables -Z
iptables -A INPUT -p tcp  --dport 22 -s 10.0.0.0/24  -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -o lo -j ACCEPT  
iptables -A OUTPUT -o lo -j ACCEPT

#允许合法的进入
iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT 
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT    
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT 
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT 

iptables -A INPUT -p icmp --icmp-type 8  -j ACCEPT

#others RELATED ftp协议
#允许关联的状态包
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#默认规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#对外开放服务
iptables -A INPUT -p tcp  --dport 80 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8  -j ACCEPT
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

/etc/init.d/iptables save    //保存配置


企业iptables面试题:自定义链处理syn攻击

iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP

linux运维实战培训-iptables脚本.zip


cente7 

#查看firewall的状态
firewall-cmd --state

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

#查看防火墙规则
firewall-cmd --list-all