Linux学习 防火墙

来源:互联网 发布:淘宝订单体检在哪里 编辑:程序博客网 时间:2024/06/05 13:31

防火墙--firewalld

一、防火墙:限制数据包

数据包类型:INPUT及OUTPUT表示本机接收的数据包;FORWARD是路由的数据包

二、Iptables

1.iptables:在firewalld的最底层,3张表5条链

  其中,3张表5条链:

 filter --经内核处理的表:INPUT;OUTPUT;FORWARD

  nat--不经内核处理:POSTROUTING(SNAT);PREROUTING(DNAT)【链】,INPUT;OUTPUT

 monge --用来作附加说明,不常用

2.systemctl stop  firewalld    ##一定要关闭火墙

 systemctl  disabled  firewalld

 systemctl  start  iptables

 systemctl  enable  iptbales

3.iptables的常用命令

  iptables      -t    ##指定表名称,若不指定时,默认为filter表

              -n    ##不作解析

              -L   ##列出指定表中的策略

-F    ##刷掉所有策略

            -A    ##增加策略

                 -p   ##网络协议

            --dport    ##端口

                  -s     ##数据来源

                 -j     ##动作(ACCEPT--允许,REJECT--拒绝)

                 -N     ##增加链

                 -E  原名  新名称    ##修改名称

                 -X     ##删除指定链

                 -D     ##删除指定策略

                 -I      ##插入策略

三、iptables的filter表--经内核的

1.iptables -t  filter  -nL     ##查看filter表中的策略,并不作解析

  iptables  -nL       ##默认查看filter表中的策略

Chain INPUT (policy ACCEPT)

target    prot opt source              destination        

ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0          

ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          

ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22

REJECT    all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination        

REJECT    all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination 

    

2.iptables -F     ##刷掉内存中的内容,但只是暂时

 service iptables  save    ##保存动作默认文件中/etc/sysconfig/iptables中,开机时自动读取

也可以手动保存:iptables-save> >  /etc/sysconfig/iptables

3.添加策略

  iptables  -A  INPUT -i  lo  -j ACCEPT     ##允许访问lo--回环接口

  iptables  -A  INPUT -p  tcp  --dport 22  -j  ACCEPT  ##允许tcp协议访问22端口--sshd服务

  iptables  -A  INPUT -s  IP地址 -j  ACCEPT  ##允许指定IP访问本机所有端口

  iptables  -A  INPUT -j  REJECT      ##拒绝所有主机的数据来源

  注意:以上命令在实际执行时,并不是按照顺序全部执行,而是按顺序逐条执行,若与命令匹配成功,则不再执行后序命令。


4.测试:在指定的IP主机上,远程连接服务端:ssh  root@172.25.254.109

在其他IP的主机上远程连接该主机:

  在指定IP主机打开firefox,访问:172.25.254.109

在其他主机打开firefox访问:172.25.254.109

也可以在本机通过links命令打开其他IP主机的firewox来访问本机

(1)yum  install links  -y

(2)links  http://172.25.254.90

5.iptables增加链

iptables -N  redhat       ##增加新链

iptables -E  redhat  linux     ##将redhat链更名为linux

iptables -X  名称          ##删除指定链


6.iptables -t  filter  -D INPUT  条数

  ##删除tilter表中INPUT链的指定策略

 iptables -t  filter  -R  链名 第几条  策略

  ##修改filter表中的指定策略

7.iptables的INPUT链的两种状态

(1)ACCEPT:内部默认接受

(2)DROP:丢弃,不直接拒绝,会一直尝试连接

iptabes -t  filter  -P INPUT  DROP 

##修改INPUT链的默认策略为DROP

iptabes -t  filter  -P INPUT  ACCEPT

##修改INPUT链的默认策略为ACCEPT

8.如图示:拒绝所有用户的策略在前,则当有命令执行时将先与该条策略匹配,其后序的允许策略将不再被执行

先允许22端口,再拒绝所有,则匹配到允许22端口后,将不再匹配后序策略,因此可以远程登录172.25.254.109主机--sshd服务;

又因为拒绝所有的策略先于允许172.25.254.90这条策略,所以172.25.254.109主机不能访问访问除22、80外的其他端口

现作如下更改,使得先允许所有接口,再拒绝172.25.254.90访问所有


因为先匹配到允许所有这条策略,因此时可以访问http服务的

9.以上策略在匹配时时按照顺序逐条匹配,其效率低,现使用以下策略,将验证通过的数据包变成RELATED--下次连接时无需匹配验证,直接通过

iptables  -A  INPUT -p  tcp  --dport 22  -m  state --state  NEW  -j  ACCEPT

##指定数据包的状态,若为NEW时,通过验证后变成RELATED或ESTABLESHED

iptables  -A  INPUT  -m state  --state  RELATED  -j  ACCEPT

##指定数据包状态为RELATED时,无需验证直接通过

四、NAT表

<1>、出站地址伪装--内核处理后的策略

1.设置客户端IP=172.25.9.11

  网关=172.25.9.10      ##则172.25.9.10所在主机可以作为路由

  子网掩码=24

2.在服务器端--有两块网卡,且不在同一网段,更改内核路由功能状态

 sysctl  -a  | grep  forward     ##查看内核路由状态

 echo  "net.ipv4.ip_forward =1" >>/etc/sysctl.conf   

  ##开启内核路由功能,永久设定(一定使用追加的方式进行更改)

 sysctl  -p     ##使修改文件生效

 iptables  -t  nat  -A       POSTROUTING  -o eth1  -j  SNAT --to-source  172.25.254.109

   ##出站地址伪装成172.25.254.109

 

3.在客户端测试

(1)ping 172.25.254.9    ##若能ping通,则更改成功

(2)ping 不通时先检查icmp_echo_ignore_all的状态,为开启状态即=1时,可使用ping命令。

 cd  /proc/sys/net/ipv4

 sysctl  -a  | grep icmp_echo_ignore_all          ##查看状态

 echo  1  >  icmp_echo_ignore_all               ##更改状态

  再使用ping命令

(3)使用浏览器访文与客户端不在同一网段的主机

<2>、入站地址伪装--内核处理前的策略

1.在服务器端,更改内核路由,见上述过程中的2;

2.在DNAT链中添加策略

 Iptables  -t  nat -A  PREROUTING  -i  eth0 -j  DNAT  --to-dest  172.25.9.10

  ##先经内核将从eht0口接收的数据包封装成172.25.9.10,再路由给eth1端口

3.测试

172.25.254.90主机远程连接172.25.9.11客户端,显示内容中实际连接的时172.25.9.10--路由端口

 

原创粉丝点击