linux中的安全防护firewalld和iptable。

#########################################防火墙##########################
我们的操作与系统内核时有交互的。内核能完成我们的任务。但是如果人们直接和内核交换信息,对于系统来说过于危险,这样就需要了解我们的防火墙,他是内核与人们操作之间的管道和保护者。
firewalld:
trusted 可接受所有的网络连接
home 由于仅接受家庭网络、ssh、mdns、ipp-client、samba-client、或dhcpv6-client
internal 与home差别在只能连接内部网络
work 工作区,只接受ssh,ipp-client、dhcpv6-client
public 在公共区域内使用
external 只接受ssh服务连接
dmz 仅接受ssh连接
block 拒绝网络连接,有回复
drop 没有回复,所有宝被丢弃firewall使用命令行借口查看防火墙所载那个区域。

[root@foundation38 Desktop]# firewall-cmd --state                             ##查看防火墙状态
running
[root@foundation38 Desktop]# firewall-cmd --get-active-zones                  ##查看活动的区域和端口
trusted
  interfaces: enp0s25 br0
[root@foundation38 Desktop]# firewall-cmd --get-default-zone                  ##查看默认区域
trusted
[root@foundation38 Desktop]# firewall-cmd --get-zones                          ##查看所拥有的区域
work drop internal external trusted home dmz public block
[root@foundation38 Desktop]# firewall-cmd --zone=public --list-all            ##查看指定区域的使用情况
[root@foundation38 Desktop]# firewall-cmd --list-all-zones			##查看所有区域使用情况

实验:
###将网络接口转移到其他区域:

[root@desktop ~]# firewall-cmd --remove-interface=eth1 --zone=public            ##把网络接口从public区域移开       
[root@desktop ~]# firewall-cmd --list-all                                      ##已经移动,查看默认区域
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@desktop ~]# firewall-cmd --add-interface=eth1 --zone=trusted                   ##添加eth1都trust区域
success	
[root@desktop ~]# firewall-cmd --zone=trusted --list-all                             ##查看指定区域   
trusted (active)
  interfaces: eth1
  sources: 172.25.254.38
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@desktop ~]# firewall-cmd --change-interface=eth1 --zone=public                   ##将eth1更该岛public
[root@desktop ~]# firewall-cmd --zone=public --list-all                                ##查看指定区域情况
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

####现在起两台虚拟机,一台中有两个网卡(desktop),另一台只有一个(server),还有真机。
1…desktop ip 172.25.254.138 与172.25.25.138
2…server ip 172.25.25.238
3.真机ip 172.25.254.38
在这里插入图片描述
#######reload与complete-reload
reload ssh 可以连接
complete reload 不能连接
########

#####手动配置软件在防火墙中放的配置文件

[root@desktop ~]# cd /usr/lib/firewalld       ##进入防火墙放软件配置数据的文件    
[root@desktop firewalld]# cd services/             ###服务配置在防火墙中文件
[root@desktop services]# pwd
/usr/lib/firewalld/services
[root@desktop services]# ls                                    ##已有的文件内有部分
amanda-client.xml      ipp-client.xml   mysql.xml       rpc-bind.xml
[root@desktop services]# cp -p http.xml iscsi.xml     ##复制一份已有的
[root@desktop services]# vim iscsi.xml                ##进行更改   
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>ISCSI</short>
  <description>iscsi srvice</description>
  <port protocol="tcp" port="3260"/>                     ##端口信息更改完毕
</service>
~                                        ~                                       
[root@desktop services]# systemctl restart firewalld
[root@desktop services]# systemctl restart iscsi              ##重起iscsi
[root@desktop services]# systemctl restart firewalld          ##重起防火墙
[root@desktop services]# firewall-cmd --get-service           ##得到所有服务iscsi已经打开
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec iscsi kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
[root@desktop services]# firewall-cmd --permanent --add-service=iscsi           ##防火墙将iscsi打开
[root@desktop services]# firewall-cmd --reload                                    ##重起后可以看到
success
[root@desktop services]# firewall-cmd --list-all                                 ##查看默认信息
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client iscsi ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
	

##############我们手动添加软件信息到默认的信息中去相当permanent的手动版本

[root@desktop services]# cd /etc/firewalld/zones      ####在防火墙中添加服务,
[root@desktop zones]# firewall-cmd --get-default-zone          ##防火墙默认的区域
public
[root@desktop zones]# vim public.xml                            ##进入配置文件
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <service name="iscsi"/>                              
  <service name="http"/>                                            ###http加入到防火墙开启状态
</zone>[root@desktop zones]# firewall-cmd --list-all                         ##没有重起之前
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client iscsi ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
[root@desktop zones]# firewall-cmd --reload                         ##防火墙重起之后
success
[root@desktop zones]# firewall-cmd --list-all                       ##http已经台添加完毕
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client http iscsi ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 	

#####################用命令添加firewall的端口

[root@desktop zones]# firewall-cmd --list-ports 
[root@desktop zones]# firewall-cmd --add-port=8080/tcp    ####端口的添加
success
[root@desktop zones]# firewall-cmd --list-ports 
8080/tcp
[root@desktop zones]# firewall-cmd --remove-port=8080/tcp  ###端口的remove
success
[root@desktop zones]# firewall-cmd --list-ports 
[root@desktop zones]# 
firewall-cmd --permanent --remove-service=ssh          ##移开ssh
firewall-cmd --reload                                 ##reload后在其他ssh连接的上边可以看没有短掉
firewall-cmd --permanent --add-service=ssh           
firewall-cmd --permanent --remove-service=ssh          ##remove ssh
firewall-cmd --complete-reload                         ##reload 但是ssh 连接的断掉了
```#


[root@desktop ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.57 -p tcp --dport 22 -j REJECT 
success
[root@desktop ~]# firewall-cmd --reload
success
[root@desktop ~]# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 1 -s 172.25.254.55 -p tcp --dport 22 -j REJECT
ipv4 filter INPUT 1 -s 172.25.254.57 -p tcp --dport 22 -j REJECT
[root@desktop ~]# ipv4 filter INPUT 1 -s 172.25.254.38 -p tcp --dport 80 -j REJECT

######################filter表

[root@desktop ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.57 -p tcp --dport 22 -j REJECT          ###    从左至右direct目录,添加规则,ipv4的 fileter表,的输入。第一张表,ip,tcp的端口                    
success
[root@desktop ~]# firewall-cmd --reload                                                       #  ##重启后
success
[root@desktop ~]# firewall-cmd --direct --get-all-rules                                 ##查看所添加的规则
ipv4 filter INPUT 1 -s 172.25.254.55 -p tcp --dport 22 -j REJECT
ipv4 filter INPUT 1 -s 172.25.254.57 -p tcp --dport 22 -j REJECT
[root@desktop ~]# ipv4 filter INPUT 1 -s 172.25.254.38 -p tcp --dport 80 -j REJECT

####添加从端口22进来的直接转到172.25.254.38

[root@desktop ~]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.38

###172.25.25.238的网络配置,要改网关到中间的172.25.254.138上面去
在这里插入图片描述
之后可以在server上ping 172.25.254.138看是否会转到172.25.254.38上去

########################iptable另外一种管理安全的方式#############
###############准备阶段

[root@desktop ~]# yum list iptables-service              ##下载程序
[root@desktop ~]# yum install iptables-services          
[root@desktop ~]# systemctl stop firewalld                 ##与防火墙冲突所以停止防火墙[root@desktop ~]# systemctl disable firewalld                   ##防火墙不自启动
[root@desktop ~]# systemctl mask firewalld                       ##锁定防火墙不能启动
ln -s '/dev/null' '/etc/systemd/system/firewalld.service'
[root@desktop ~]# systemctl start iptables.service                ##开启iptable
[root@desktop ~]# systemctl enable iptables.service               ##可以自启动
ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service'


####查看nat表的规则,用iptable

[root@desktop ~]# iptables -nL                      ##查看已经写好的命令
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-prohibitedChain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@desktop ~]# iptables -t filter -nl                        ##指定查看那个表[root@desktop ~]# iptables -t nat -nL                          ##指定查看nat表
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         Chain POSTROUTING (policy ACCEPT)

#########通过的已有设置,可以快速的通过检查: 用iptable实现

[root@desktop ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   ##快速通过的命令
[root@desktop ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT             ##本机的全通过
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@desktop ~]# iptables -A INPUT -j ACCEPT
[root@desktop ~]# iptables -nl
[root@desktop ~]# netstat -tnlp | grep squid                                    ##查看squid的端口
tcp6       0      0 :::3128                 :::*                    LISTEN      10499/(squid-1)     
[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 3128 -j ACCEPT
[root@desktop services]# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ##添加dns的端口
[root@desktop services]# iptables -nL
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     all  --  0.0.0.0/0            0.0.0.0/0            state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22           ##sshd
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
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:3128         ##squid
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:53           ##dnsChain FORWARD (policy ACCEPT)

####iptable怎么保存我们设定的规则使开机后不丢失

[root@desktop services]# iptables-save > /etc/sysconfig/iptables             ##以重定向的方式保存规则
[root@desktop services]# iptables -F                          ####清空
[root@desktop services]# systemctl restart iptables           ##重起服务
[root@desktop services]# iptables -S                          ##查看信息

#####################实现ip地址的转换功能,除了firewalld可以实现我们的iptable也可以实现
##另外要注意我们设置实在desktop上,充当中间链接的虚拟机上设置

[root@desktop services]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.138   ##eth0后端的连接,是漏油器的eth0ip
[root@desktop services]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 172.25.25.238:22   ###是虚拟机另一端口的ip

在这里插入图片描述
########用iptable改变端口后,怎么使端口加如到iptable中,iptable上有服务可使用的端口号,怎么吧IP table中服务没有的号加到服务中去

[root@desktop ~]# vim /etc/httpd/conf/httpd.conf                      ###进入httpd的配置文件中更改端口号为8888,Listen 80 那一行。使用“/Listen”搜索
[root@desktop ~]# systemctl start httpd                                    ###重启httpd会发现报错,解决办法
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
[root@desktop ~]# semanage port -a -t http_port_t -p tcp 8888             ###发送安全上下文
[root@desktop ~]# semanage port -l | grep http                                     ###通过过滤手段可看出端口上添加了8888端口
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      8888, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
####在这时我哦们重启httpd时是不会报错的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值