- iptables放行sshd服务对于本机的访问
- 首先查看
filter
的规则
[root@server23 ~]# iptables -t filter -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
- 上面是没有默认的规则的,接下来添加,放行的规则,这里放行的是
172.25.23.0/24
这个网段来进行访问,首先在INPUT
链上面进行添加
[root@server23 ~]# iptables -t filter -A INPUT -s 172.25.23.0/24 \
-d 172.25.23.23 -p tcp --dport 22 -j ACCEPT
- 上面只是放行了进入本机的请求,接下来放行
sshd
出去的数据,这里需要更改源地址和目标地址以及源端口;
[root@server23 ~]# iptables -t filter -A OUTPUT -s 172.25.23.23 -d 172.25.23.0/24 -p tcp --sport 22 -j ACCEPT
- 查看
filter
表添加的规则
- 添加
-v
选项,查看匹配到的报文数量
- 检测打开默认策略为DROP服务的访问状态
- 因为这个表的默认规则是
ACCEPT
的,所以sshd
服务并没有断开链接,接下来尝试更改默认的策略为DROP
,因为INPUT OUTPUT FORWARD
的默认规则不能够修改为REJECT
; - 这里打开几个服务
httpd:80 mysql-server:3306 vsftpd:21
,来检测规则是否生效,对于filter
修改规则需要修改三个链INPUT OUTPUT FORWARD
上面的默认规则
[root@server23 ~]# iptables -P INPUT DROP
[root@server23 ~]# iptables -P OUTPUT DROP
[root@server23 ~]# iptables -P FORWARD DROP
- 接下来查看规则
[root@server23 ~]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.25.23.0/24 172.25.23.23 tcp dpt:22
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.25.23.23 172.25.23.0/24 tcp spt:22
- 因为添加了允许
22/tcp
端口的访问,所以ssh
的连接是正常的; - 对于
sshd
之外的服务都是不能够正常访问的
- 对于
ping /icmp
协议的服务访问也是不能够访问的
- 接下来放行httpd服务
- 首先需要了解
httpd
服务使用的端口信息,在INPUT OUTPUT
链上面放行这个服务请求
[root@server23 ~]# iptables -I INPUT -d 172.25.23.23 -p tcp --dport 80 -j ACCEPT
[root@server23 ~]# iptables -I OUTPUT -s 172.25.23.23 -p tcp --sport 80 -j ACCEPT
httpd
服务访问正常
放行本机对于本机的ping请求
- 更改默认的策略之后,对于本机对于本机的
ping
请求默认也是拒绝的,这里添加规则,来允许本机对于本机的ping
请求
- 添加规则,同样需要两条规则,应为数据的流向是双向的
[root@server23 ~]# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i[数据流入流出的接口] lo -j ACCEPT
[root@server23 ~]# iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT
- 查看添加的规则
ping
服务已经是正常的了
- 对于外部的
ping
请求,来说,包括两种状态echo-request
,使用数字8
来进行表示,echo-replay
使用数字0
来进行表示,对于外部的ping
请求进行放行,就包括两种情况,使用自己来ping
外部的主机,或者使用外部的主机来ping
自己,这两种放行的规则是不一样的; - 首先实现自己
ping
外部主机的过程
[root@server23 ~]# iptables -A OUTPUT -s 172.25.23.23 -p icmp --icmp-type 8 -j ACCEPT
[root@server23 ~]# iptables -A INPUT -d 172.25.23.23 -p icmp --icmp-type 0 -j ACCEPT
* 如果需要实现外部主几ping
内部主机
[root@server23 ~]# iptables -A OUTPUT -s 172.25.23.23 -p icmp --icmp-type 0 -j ACCEPT
[root@server23 ~]# iptables -A INPUT -d 172.25.23.23 -p icmp --icmp-type 8
-j ACCEPT
外部主机的
ping
请求就会正常
DNS服务器的防火墙配置
- 仅仅对于
UDP
协议来说,就需要四条规则,首先DNS
服务器首先需要作为server
接收用户请求,返回对应的数据,这就需要两条,其次,DNS
服务器还需要作为client
向上层DNS
服务器发起请求,还需要两条,这就需要四条规则;
[root@server23 ~]# iptables -A INPUT -d 172.25.23.23 -p udp --dport 53 -j ACCEPT
[root@server23 ~]# iptables -A OUTPUT -s 172.25.23.23 -p udp --sport 53 -j ACCEPT
[root@server23 ~]# iptables -A OUTPUT -s 172.25.23.23 -p udp --dport 53 -j ACCEPT
[root@server23 ~]# iptables -A INPUT -d 172.25.23.23 -p udp --sport 53 -j ACCEPT
- 仅仅对于
udp
就需要上面四条规则,对于tcp
来说同样还需要四条规则;