1、 查看本机防火墙的预设规则
- iptables -L -n 输出格式化的防火墙规则,在里面可以看到简单的封包过滤规则
- iptables-save 输出详细的防火墙规则设定,有针对各个防火墙细部的各项设定。使用此项命令查看到的信息都是在/etc/sysconfig/iptables里面,因为iptables是内核自带的机制,所以在sysconfig里面无可厚非
/etc/sysconfig/iptables文件内的信息并不是随着系统防火墙的规则更新而更新的,我猜是使用某个命令可以直接读取此文件内的防火墙设定,然后更新系统的防火墙设定,系统防火墙设定应该是有一个特定的地方来存储防火墙设定的,使用/etc/init.d/iptables save之后才能写入到配置文件中去
- iptables -F -X -Z 分别是清除所有已经制定的规则 清除所有使用者自定义的chain 将所有的chain的计数与流量统计归零
- iptables -P INPUT DROP 设定所有的输入封包都被丢弃,若在远端进行此项操作会导致远端无法登入,所以务必在主机前面进行操作,其余项如FORWARD OUTPUT等项可以仿照此项进行设定,并且使用此命令默认修改的是filter的设定,若要改变其余的,如nat或者mangle可以使用iptables -t nat -P PREROUTING DROP
2、 iptables
target | 作用 | 例子 |
---|---|---|
-A | 添加规则链 | 例:-A INPUT -t nat -A OUTPUT |
-I | 插入规则链 | 例:-I INPUT 1 -i lo -j ACCEPT 在第一条规则前面插入一条INPUT规则 |
-D | 删除规则链 | 例:-D INPUT 删除INPUT规则链,要完全匹配才可以 |
-C | 检测规则链 | 例:-C INPUT 确定INPUT规则链是否存在,要完全匹配 |
-R | 取代规则链 | 例:-R INPUT 1 -i lo -j DROP 用现设的INPUT规则链取代第一条规则链 |
3、 规则链内部
target | 作用 | 例子 |
---|---|---|
-p protocol | 协定 | 例:-A INPUT -p tcp 针对tcp封包 |
-s source | 源 | 例:— -s 192.168.0.102/24,针对源为192.168.0.102的封包 |
-d destination | 目的 | 例:— -d 192.168.0.102/24,针对目的为192.168.0.102的封包 |
-j target | 目标 | 例:— -j ACCEPT 接受该项目封包 此外还有REJECT(拒绝) DROP(丢弃) LOG(记录)可在/var/log/messages中记录 |
-g chain | 规则链 | |
-i name | 输入接口名 | 例:— -i lo 针对内部lo环回测试的输入 |
-o name | 输出接口名 | 例:— -o lo 针对内部lo环回测试的输出 |
–dport 21 | 目的端口 | 例:— -p tcp –sport 22 开放来源为22端口发来的tcp封包 后面的-j [target]控制接受与否 |
–sport 21 | 源端口 | 例:— -p tcp –dport 23 开放目的端口为23的输出tcp封包 后面的-j [target]控制发送与否 |
dport为本机的端口 –syn 主动联机信号
4、 外挂规则
-m
state 状态
- –state
- INVALID :无效的封包,例如数据破损的封包状态
ESTABLISHED:已经联机成功的联机状态;
NEW :想要新建立联机的封包状态;
RELATED :表示这个封包是与我们主机发送出去的封包有关
- INVALID :无效的封包,例如数据破损的封包状态
- –state
mac mac地址
- –mac-source
ee:fe:32:34:e2:45 mac地址
- –mac-source
例:
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 只要是已成功建立的连接发来的封包或者与主机发送出去的封包都予以接受
iptables -A INPUT -m mac –mac-source ee:fe:32:34:e2:45 -j REJECT 只要是来自ee:fe:32:34:e2:45的封包都予以丢弃
icmp(封包规则比对)
iptables -A INPUT -i eht0 -p icmp –icmp-type 0/3/5/8/11/12/13/14/15 -j ACCEPT
部分type对照表
0 回显应答
8 回显请求 外部主机ping本机无回应 iptables -A INPUT -i eht0 -p icmp –icmp-type 8 -j DROP 使用REJECT不行
5、 /proc/sys/net/ipv4/XXX
- tcp_syncookies
- 用来抵挡SYN flood attack,就是利用SYN三向交握特点,在短时间之内在主机上开启很多的半连接,由此造成主机端口资源大量占用,从而系统无法接受更多的外来访问,失去作用。本模块的抵挡机制是在主机1024-65535端口即将用完的时候自动开启,然后在客户端发过来一个连接之后主机不会立马进行连接,而是先给客户端回一个确认信息,要求客户端在短时间内回复一条带有上条封包信息的封包,若无回应或者是没有回复正确的封包信息,主机便放弃本次连接,从而大大降低了这种攻击所造成的影响
- icmp_echo_ignore_broadcasts
- 用来设定是否要忽略ping broadcasts的封包信息,由于在局域网内ping 广播地址,发出ping命令的主机会向局域网所有的机子发送ping网络封包,因此若开放此项,有可能造成本机当机等现象(恶意攻击)。而且ping 255.255.255.255是网络上所有主机的广播地址,若有很多的机子同时ping 255.255.255.255,是会造成很大的网络问题的,所以默认机子上都不开启回显广播请求,并且ping 255.255.255.255会被锁定到局域网内,不可透过局域网ping到网络上的主机。
- 当在局域网进行ping广播地址的时候,本机显示的回应信息是本机接收到的第一条回应封包来源的IP发来的回应封包,但是若使用抓包工具查看
的话会看到所有能够回应ping广播地址的IP发来的回应封包
windows上面貌似并不支持ping广播地址的回应,经由网友试验,使用高级网络防火墙进阶功能,自定义入站规则等等一系列操作也都不可行,所以可能这个功能在windows上面并不可用,但是在linux上面是可用的,并且从linux上面ping的时候总是得到本机上的IP地址的回应,因为本机上的IP肯定会最早回应并最早到达本机 - 若要开放某些功能,可以参照/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/ip-sysctl.txt文档进行设定
例:echo “1” > /proc/sys/net/ipv4/tcp_syncookies