四.linux防火墙
防火墙类别:硬件防火墙、网络层防火墙 主机防火墙、网络放火墙
规则链(Chain)
用途:存放一条条防火墙规则
分类依据:处理数据包的不同时机
5条规则链: INPUT 处理入站数据包
OUTPUT 处理出站数据包
FORWARD 处理转发的数据包
POSTROUTING 路由选择之后处理
PREROUTING 路由选择之前处理
规则表(Table)
用途:存放不同的规则链
分类依据:防火墙规则的作用相似
4个规则表: raw表 确定是否对数据包进行状态跟踪
mangle表 为数据包设置标记
nat表 修改数据包的源/目标地址或端口
filter表 确定是否放行该数据包
规则表之间的顺序
raw---mangle---nat---filter
规则链之间的顺序
入站: PREROUTING---INPUT
出站: OUPPUT---POSTROUTING
转发: PREROUTING---FORWARD---POSTROUTING
规则链内的匹配顺序
--顺序比对,匹配即停止(LOG除外)
--若无任何匹配,则按该链的默认策略处理
iptables用法:
iptables -t 表名 选项 链名 匹配条件 -j 处理动作
处理动作:
ACCEPT、REJECT、DROP、LOG
管理选项:
-A、-I
-D 链名 序号
-F
-L、-n、--line-numbers
-P 链名 ACCEPT|DROP
匹配条件(通用/显式) ――
-p 协议名 【/etc/protocols】
-s 源IP/网段地址、-d 目标IP/网段地址
-i 数据包进入的网卡、-o 数据包出去的网卡
匹配条件(隐含)
--sport 源端口、--dport 目标端口
--icmp-type ICMP数据包类型
--tcp-flags 检查哪些标志位 值为1的标志位
匹配条件(扩展)
-m state --state 数据包的状态值
常见的状态:
NEW、ESTABLISHED、RELATED
INVALID、UNTRACKED
编写防火墙规则的基本思路 ――
任务目标:
1. 禁止从192.168.10.0/24访问本机的Web服务
2. 禁止从外部网络(eth1)访问局域网(eth 3. 禁止别的主机访问本机的Web服务,但是允许本机访问别的主机的Web服务
转化成防火墙规则:
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 80 -j DROP
iptables -I FORWARD -i eth1 -o eth0 -j DROP
iptables -I INPUT -p tcp --dport 80 -j DROP
iptables -I OUTPUT -p tcp --dport 80 -j ACCEPT
严格程度:
方式1(严格):仅允许
方式2(宽松):仅拒绝
以filter表为例:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT ........ -j ACCEPT
iptables -A FORWARD -s 192.168.4.0/24 -o eth1 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -i eth1 -m state --state ESTABLISED,RELATED -j ACCEPT
Linux网关/防火墙实验环境:
企业局域网 svr5 ――
eth0:192.168.4.5/24 【private1】
默认网关设为 192.168.4.1
gw1(网关/防火墙/路由器) ―― 开启 ip_forward
eth0:192.168.4.1/24 【private1】
eth1:174.16.16.1/24 【private2】
互联网 pc205 ――
eth0:禁用(ONBOOT=no) 【private1】
eth1:174.16.16.120/24 【private2】
不要设默认网关
基于NAT表的应用
练习1:使局域网客户机能通过网关访问互联网―― SNAT
# iptables -t nat -APOSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1
iptables -t nat -A POSTROUTING-s 局域网网段地址 -o 外网接口 -j SNAT --to-source 外网接口的IP地址 //地址伪装
iptables -t nat -APOSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE
练习2: 使互联网客户机能通过企业网关访问内网的服务器 ―― DNAT
1)发布内网的Web服务
# iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination192.168.4.5
iptables -t nat -APREROUTING -i 外网接口 -d 外网接口的IP地址 -p 协议 --dport 目标端口 -j DNAT --to-destination 内网服务器IP地址
2)发布内网的DNS服务
# iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p udp --dport 53 -j DNAT --to-destination192.168.4.5
练习3:发布内网的其他服务器
1)SSH服务(使用2345端口)
# iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination192.168.4.5:22
2)FTP服务(加载必要的模块)
# iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination192.168.4.5
# modprobe -anf_nat_ftp nf_conntrack_ftp
3)邮件服务器(TCP 25/110/143、DNS解析)
# iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp -m multiport --dport 25,110,143 -jDNAT --to-destination 192.168.4.5
iptables规则的导入和导出 ――
备份/导出:iptables-save > /root/ipfw.rule
还原/导入:iptables-restore < /root/ipfw.rule
使用iptables系统服务 ――
iptables-save > /etc/sysconfig/iptables
或者
service iptables save
service iptables restart
chkconfig iptables on
五.DHCP服务
1. 分配IP地址相关参数
2. 告知客户机TFTP服务器的地址、引导文件名
协议和端口:DHCP(UDP 67/68)
软件包(S):dhcp
软件包(C):dhclient
系统服务/进程:dhcpd
配置文件:/etc/dhcp/dhcpd.conf
语法检查:service dhcpd configtest
常见的配置:
default-lease-time 默认租期;
max-lease-time 最大租期;
subnet 网络地址 netmask 子网掩码 {
range 起始IP 结束IP;
option routers 默认网关IP地址;
option domain-name-servers DNS1,DNS2;
next-server TFTP服务器的IP地址;
filename "网卡启动文件的名称";
}
DHCP四次会话:
1. (客户机)请求 DISCOVER
2. (服务器)提供 OFFER
3. (客户机)选择 REQUEST
4. (服务器)确认 ACK
实验拓扑:
RHEL6.5_1
-----CentOS6.5(vmnet1)----------(vmnet1)
RHEL6.5_2
实验一:搭建DHCP服务器
公司要求将闲置的一台Linux 主机配置为DHCP服务器,以便为局域网内员工的办公用机提供自动分配IP地址的服务,以提高网络管理和维护的效率。需要满足的基本要求如下所述。
为192.168.4.0/24网段的客户机自动配置网络参数。用来给客户机自动分配的IP地址范围是:
192.168.4.28-192.168.4.54
192.168.4.128-192.168.4.200。
客户机的默认网关地址设为192.168.4.1。
客户机所使用的DNS服务器设为8.8.8.8、202.106.0.20,
默认搜索域后缀为tarena.com。
将默认租约时间设为2小时,最大租约时间4小时
验证DHCP服务器的IP分配情况、客户机的租约信息
1.安装软件包
[root@srv5 ~]# rpm -q dhcp
[root@srv5 ~]# yum list dhcp
[root@srv5 ~]# yum -y install dhcp
2.修改主配置文件
[root@srv5 ~]# vim/etc/dhcp/dhcpd.conf
option domain-name"tarena.com";
option domain-name-servers202.106.0.20, 8.8.8.8;
default-lease-time 7200;
max-lease-time 14400;
subnet 192.168.4.0 netmask255.255.255.0 {
range 192.168.4.28 192.168.4.54;
range 192.168.4.128 192.168.4.200;
option routers 192.168.4.1;
}
3.启动服务
[root@srv5 ~]# service dhcpd restart
[root@srv5 ~]# chkconfig dhcpd on
[root@srv5 ~]# netstat -anptu | grepdhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 1585/dhcpd
4.测试
[root@pc205 ~]# dhclient -d eth0 //可测试DHCP通信过程
[root@pc205 ~]# vim/etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp //把IPADDR和NETMASK注释掉
[root@pc205 ~]# service networkrestart
[root@pc205 ~]# ifconfig
-------------------------------------------------
查看IP租约信息
服务器端,查看地址分配情况
/var/lib/dhcpd/dhcpd.leases
客户机端,查看已获取的IP租约
/var/lib/dhclient/dhclient-ethN.leases
-------------------------------------------------
六.KVM应用
快速搭建一台KVM服务器 ――
# yum -y groupinstall 虚拟化 虚拟化平台 虚拟化客户端 虚拟化工具
# service libvirtd restart
如何管理KVM虚拟化 ――
# yum -y groupinstall 虚拟化客户端
# virt-manager
如何添加一个桥接网络(虚拟<-->真实) ――
1. 拷贝 ifcfg-eth0成 ifcfg-br0
2. 修改桥接网卡ifcfg-br0配置
DEVICE="br0"
TYPE=Bridge
NM_CONTROLLED=no
.. ..
3. 修改真实网卡ifcfg-eth0配置
.. ..
BRIDGE=br0
4. 重启network服务
KVM虚拟化(命令行管理、快建)
virsh nodeinfo
virsh list、virsh list --all
virsh dominfo 虚拟机名
virsh start 虚拟机名
virsh shutdown 虚拟机名
virsh reboot 虚拟机名
virsh destroy 虚拟机名
virsh autostart 虚拟机名
virsh autostart --disable 虚拟机名
问题:virsh的shutdown或reboot指令无效
解决:在虚拟机里执行 yum -y install acpid ; reboot
问题:右键菜单没有“在终端中显示”
解决:yum -y install nautilus-open-terminal
1. 导出虚拟机配置
# virsh dumpxml 虚拟机名 > /root/new.xml
2. 修改导出之后的文件
# vim /root/new.xml 【sed】
――给虚拟机改名【name、uuid】
――复制虚拟机【name、uuid、disk、mac】
3. 导入新的虚拟机配置
# virsh define /root/new.xml
4. 善后工作
――给虚拟机改名:virsh undefine 旧虚拟机
――复制虚拟机:cp 旧磁盘 新磁盘
0. virsh edit 虚拟机名
直接查看虚拟机的显示器界面
virt-viewer 虚拟机名
克隆一台虚拟机(自动建新磁盘、自动改MAC)
virt-clone -o 旧虚拟机 -n 新虚拟机 -f 新磁盘路径
qemu-img 新建虚拟磁盘
1)新建raw类型的磁盘(独立)
qemu-img create -f raw 磁盘路径 大小
2)新建qcow2类型的磁盘(独立)
qemu-img create -f qcow2 磁盘路径 大小
3)磁盘格式转换(独立raw盘<-->独立qcow2盘)
qemu-imgconvert -O 格式 旧磁盘 新磁盘
4)新建qcow2类型的磁盘(增量)
qemu-img create -f qcow2 -b 后端盘 磁盘路径 [大小]
练习:基于qcow2增量盘快建新虚拟机、制作备份
1. 快建新虚拟机的磁盘
# cd /data/images
# qemu-img create -f qcow2 -bnode1.qcow2 vh1.qcow2
2. 为新的虚拟机准备配置文件
# virsh edit 模板虚拟机名 .. .. 【name、uuid、disk、mac】
3. 为新虚拟机建立快照
# qemu-img snapshot -c snap1 vh1.qcow2
模板虚拟机的处理 ――
1. 从命令行创建及安装新虚拟机
1)为虚拟机准备磁盘
# qemu-img create -f qcow2muban1.qcow2 20G
2)为虚拟机准备配置文件、安装系统
virt-install --name muban1--vcpus=1 --ram=1024 --disk path=/data/images/muban1.qcow2,format=qcow2 --network network=network1 --pxe
2. 模板虚拟机的出厂设置
1)预装设置/软件处理
提前装需要的软件
提前清理网卡配置文件
# > /etc/udev/rules.d/70-persistent-net.rules
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
.. .. 删除 HWADDR、UUID这两行
NM_CONTROLLED="no"
2)出厂初始化
# touch /.unconfigured
# shutdown -h now
3)善后处理
备份模板机的配置文件
# virsh dumpxml rh6_n1 >/root/muban1.xml
删除模板机(保留磁盘)
# virsh undefine rh6_n1
3. 虚拟机磁盘的离线访问
# mkdir /opt/kdisk
# guestmount -a /data/images/svr5 -i /opt/kdisk/
# cd /opt/kdisk 【chroot /opt/kdisk】
# vim /opt/kdisk/etc/sysconfig/network
HOSTNAME=svr5.tedu.cn
.. .. 【exit】
七.电子邮件系统
软件包(S):postfix、dovecot、cyrus-sasl
软件包(C):mail或mailx、thunderbird
系统服务:postfix、dovecot、saslauthd
配置文件(S):
/etc/postfix/main.cf
/etc/dovecot/conf.d/*.conf
/etc/sasl2/smtpd.conf
配置文件(C):
~/.mailrc 或者 /etc/mail.rc
快速构建postfix发信服务 ――
1. 装包
# yum -y install postfix
2. 配置
# vim /etc/postfix/main.cf 【postconf -n】
inet_interfaces = all
mydomain = tedu.cn
myhostname = mail.tedu.cn
myorigin = $mydomain
mydestination = $mydomain,localhost
home_mailbox = 邮箱名/
3. 起服务
# service postfix restart
# netstat -anpt | grep :25
启用SMTP认证 ――
1. 装包
# yum -y install cyrus-sasl
2. 配置
# vim /etc/postfix/main.cf
.. ..
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,reject_unauth_destination
3. 起服务
# service saslauthd restart
# service postfix restart
mail命令发信配置:
# vim ~/.mailrc
set smtp=smtp://mail.tedu.cn
set from=hunter@tedu.cn
set smtp-auth-user="hunter@tedu.cn"
setsmtp-auth-password="1234567"
使用mail命令发信:
# echo 'AAAAA' | mail -s 'AAAAA' hunter@tedu.cn
八.rsync同步
支持本地复制(完全拷贝源到目标),或与其他SSH、rsync主机同步(增量拷贝)
基础操作 ――
本地同步:rsync 目录1 目录2
远程同步(上行):rsync 目录1 主机2的目录2
远程同步(下行):rsync 主机1的目录1 目录2
rsync同步操作的常用选项:
-a(归档模式)、-v显示同步过程详细信息)、-z(传输过程中启用压缩) 、--delete(删除目标文件夹多余的文档)
-A(保留文件的ACL属性信息)、-n(测试同步过程,不做实际修改)
rsync+SSH同步――
rsync user@host:/目录路径
rsync -avz user@host:/目录路径/ 本地目录
rsync -avz 本地目录 user@host:/目录路径/
rsync+rsync同步 ――
rsync user@host::
rsync user@host::共享名/
rsync -avz user@host::共享名/ 本地目录
rsync -avz 本地目录 user@host::共享名/
配置rsync服务端
1.手动建立rsync帐号文件(若是匿名共享,则不需要此文件)
# vim /etc/rsyncd_users.db
ruser:pwd123
othername:123456
......
# chmod 600 /etc/rsyncd_userdb
2.创建rsyncd.conf共享配置文件
# vim /etc/rsyncd.conf
[tools]
path = /usr/src
comment = Rsync Share Test
read only = yes
dont compress = *.gz *.bz2*.zip
auth users = ruser //许可的用户
secret file =/etc/rsyncd_users.db //帐号文件
3.启用rsync共享服务
# yum -y isntall xinted
# chkconfig rsync on
关于SSH访问缓慢的问题 ――
原因:sshd服务会尝试解析客户机的主机名
解决办法:
1. 为双方添加/etc/hosts映射记录
2. vim /etc/ssh/sshd_config
UseDNS no
rsync -avz --password-file=/root/pass.txt user@host::共享名/本地目录
rsync+inotify实时同步/触发同步
用途:当目录1中的文档发生变更的时候,立即执行同步操作
工具:inotify-tools-3.13.tar.gz
源码包编译安装(gcc、make……):
1)解包 tar xf 软件名-版本.tar.gz
2)配置 cd 软件名-版本/ ; ./configure
3)编译 make
4)安装 make install
# yum -y groupinstall "开发工具"
基本用法:inotifywait [选项] 目标文件夹
常用命令选项 -m(启用监控)、-r(递归)、-q(减少输出信息)、-e(限制要监视的事件类型)
编写监控脚本
# vim /root/isync.sh
#!/bin/bash
DIR1="/var/www/html" //指定监控目录
RSYNC_CMD="rsync -az --delete$DIR1/ root@192.168.4.205:/var/www/html" //指定同步操作
while inotifywait -mrqemodify,delete,move,attrib,create $DIR1 | read x y z
do
$RSYNC_CMD
done &
本文出自 “310987274” 博客,请务必保留此出处http://310987274.blog.51cto.com/11140905/1874675