马哥教育第五十一至五十四天学习总结

马哥M28-日志管理
sysklogd-1.4.1-44.el5

日志管理
[root@rhel5 ~]# rpm -q sysklogd
sysklogd-1.4.1-44.el5
[root@lamp ~]# rpm -q rsyslog
rsyslog-5.8.10-10.el6_6.x86_64
[root@centos7 ~]# rpm -q rsyslog
rsyslog-8.24.0-12.el7.x86_64

配置日志转发
centos6/7服务器端配置
[root@centos7 ~]# vim /etc/rsyslog.conf
$ModLoad imudp 取消注释
$UDPServerRun 514
[root@centos7 ~]# systemctl restart rsyslog

centos5服务器端配置
在rhel5当中开启日志接收
[root@rhel5 ~]# vim /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0 -r"
[root@rhel5 ~]# service syslog restart

客户端配置
local3.error @192.168.123.7
[root@lamp ~]# service rsyslog restart

[root@lamp ~]# logger -p local2.emerg "This ia a test log from centos6"

1.打印输出结果不带有空白行(^$): cat /etc/sysconfig/iptables-config |egrep -v '^#|^IPTABLES_SAVE_ON' |egrep -v
2.iptables自主学习必须注意的一点:尽量不能设置除哪个网段以外的都不能访问的规则,针对本机服务器上有多张网卡,又同时分属不同的网段,只要拒绝了一个网卡的链接,则远程连接不了服务器,必须以单ip地址设置规则,或者确认好使自己所有ip都能访问自己才可以设计规则!!
【daemon 守护进程; domain 域】

3.小记:服务的配置文件也可以使用 man 5 file 进行查看配置文件帮助信息,实用
4.FTPS是基于ssl实现的安全; sftp是基于ssh安全隧道实现
使用filezilla来进行ftps使用,ftp\lftp不支持ftps加密
5.注意如果启动selinux,必须了解sebool [ftp_conn_db ...] 1 ; restorecon -R /var/ftp ...

实验:将rsyslog日志发送到mysql数据库
[root@centos7 ~]# yum -y install mariadb-server mariadb rsyslog-mysql
[root@centos7 ~]# systemctl restart mariadb.service
[root@centos7 ~]# mysql_secure_installation
[root@centos7 ~]# mysql -uroot -predhat < mysql-createDB.sql
MariaDB [(none)]> grant all on Syslog. to loguser@'%' identified by 'centos';
[root@centos7 ~]# vim /etc/rsyslog.conf
$ModLoad ommysql 增加该行
$ModLoad imudp 取消注释
$UDPServerRun 514 取消注释
. :ommysql:127.0.0.1,Syslog,loguser,centos
[root@centos7 ~]# systemctl restart rsyslog
在日志发送端
[root@centos6 ~]# vim /etc/rsyslog.conf
authpriv.
@192.168.123.7
local2.* @192.168.123.7
[root@centos6 ~]# systemctl restart rsyslog

实验:部署loganalyzer
[root@centos7 ~]# yum -y install httpd php php-mysql php-gd
[root@centos7 ~]# systemctl restart httpd
[root@centos7 ~]# tar xvf loganalyzer-4.1.6.tar.gz -C /var/www/html/
[root@centos7 ~]# cp -r /var/www/html/loganalyzer-4.1.6/src /var/www/html/log
[root@centos7 ~]# cd /var/www/html/log
[root@centos7 ~]# touch config.php ;chmod 666 config.php

马哥M28--网络文件共享

网络文件共享

DAS(Direct-attached Storage) 直连存储
SAN(Storage Area Network) 存储区域网络
NAS(Network Attached Storage)网络附加存储:FTP CIFS NFS

FTP
centos7当中,ftp用户的根目录不能有w权限
listen_port=21 (default 21) 命令通道监听端口
connect_from_port_20=YES (default NO) 是否启用主动传输模式
在启用上一条主动传输模式后添加:ftp_data_port=20 (default 20) 主动模式使用哪一个端口,必须在connect_from_port_20=YES 才有意义。
pasv_min_port=2121 (default 0) 被动模式,服务端开启的随机端口的最小值
pasv_max_port=2121 (default 0) 被动模式,服务端开启的随机端口的最大值
anonymous_enable=YES (default YES) 匿名用户是否开启
no_anon_password=YES (defaults NO) 匿名用户是否输入密码
anon_world_readable_only=NO(default YES) 匿名用户下载文件是否需要文件other上有r权限
anon_upload_enable=YES (default NO) 匿名用户是否可以上传文件
anon_mkdir_write_enable=YES (default NO) 匿名用户是否可以创建目录
anon_other_write_enable=YES (default NO) 匿名用户是否可以删除文件、目录及改名文件
anon_umask=022 (default 077) 匿名用户上传及创建的目录的umask。
chown_uploads=YES (default NO) 匿名用户上传文件的所属人是否进行更改
chown_username=magedu (default NO) 匿名用户上传文件的所属人改成谁,chown_uploads一定为YES才有效
chown_upload_mode (default 600) 匿名用户上传文件的所属人发生修改后,文件权限设定为多少,chown_uploads一定为YES才有效

guest_enable=YES (default NO)所有系统用户都映射成guest用户
guest_username=magedu (default ftp)配合上面选项才生效,指定guest用户
local_enable=YES (default NO) Linux系统用户是否可以登录
write_enable=YES (default NO) Linux系统用户是否可以上传文件、创建目录、删除文件目录及改名
local_umask=022 (default 077) Linux系统用户创建文件及目录的umask
local_root=/app/ftpsite(default none) Linux系统用户登录的家目录改为指定的目录
chroot_local_user=YES(default NO) 将Linux系统用户的根目录设置为家目录(禁锢系统用户在家目录中),注意在centos7中不能有w权限
当为NO时表示所有人都不被限制,如有chroot_list文件,则文件中的人才被限制
当为YES时表示所有人都被限制,如有chroot_list文件,则文件中的人不被限制
chroot_list_enable=YES (default NO) 表示列表功能是否开启,若为YES,一定要指定下一行设置。
chroot_list_file=/etc/vsftpd/chroot_list 列表路径,若设定,一定要将上行设置为YES

xferlog_enable=YES(default NO) 启用记录上传下载日志
xferlog_std_format=YES (default NO) 使用wu-ftp日志格式
xferlog_file=/var/log/xferlog (default /var/log/xferlog) xferlog存放路径
dual_log_enable=YES(default NO) 是否同时启用vsftpd格式日志
vsftpd_log_file=/var/log/vsftpd.log(default /var/log/vsftpd.log) vsftpd日志路径,需上一行开启
ftpd_banner=Welcome to Magedu ftp server. (default none) 登录220代码时显示欢迎信息
banner_file=/etc/vsftpd/banned_emails (default none) 登录220代码时显示欢迎信息,如与上一行同时存在,本行优先.
dirmessage_enable=YES (default none) 表示进入每级目录后,是否显示该目录下的.message作为欢迎信息
message_file=.message (default .message) 表示欢迎信息的隐藏文件名,需上行开启
userlist_enable=YES (default no)表示是否启用userlist功能
/etc/vsftpd/user_list 默认为黑名单,且是在密码验证前拒绝。
/etc/vsftpd/ftpuser 黑名单,在密码验证后拒绝。
若userlist_deny=NO则userlist为白名单,那么
用户如果在两个文件中均出现,则允许输入密码,但仍不可登录
用户如果在两个文件中均未出现,则不可输入密码,也不可登录
用户如果在userlist中出现,而未在ftpuser中出现,则可以登录
max_clients=1(default 2000)允许同时多少个客户端请求数
max_per_ip=0(default 50)相同ip的客户端的最大请求数
nopriv_user=nobody(default nobody)客户端建命令通道时的,服务端与之连接的进程的所属用户
anon_max_rate=0(default 0)匿名用户下载的最大速度,单位Bytes/S
local_max_rate=0(default 0)Linux系统用户下载的最大速度,单位Bytes/S
connect_timeout=60(default 60) 主动模式数据连接超时时长
accept_timeout=60(default 60)被动模式数据连接超时时长
data_connection_timeout=300(default 300)数据连接无数据输超时时长
idle_session_timeout=60(default 300)无命令操作超时时长
ascii_upload_enable=YES(default NO) 默认优先使用ascii模式上传
ascii_download_enable=YES(default NO) 默认优先使用ascii模式下载
listen=YES(default NO)为YES是为独立启动服务,为NO时,为xinetd服务(仅在centos6及之前的系统才有效)

实验:实现FTPS加密 : sftp是基于ssh安全隧道协议; ftps是基于ssl安全协议实现
1.生成证书
[root@station17 ~]# cd /etc/pki/tls/certs/
[root@station17 certs]# make vsftpd.pem
[root@station17 certs]# cp vsftpd.pem /etc/vsftpd/
2.配置vsftpd
[root@station17 ~]# vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
3.重启服务
[root@station17 ~]# systemctl restart vsftpd

4.使用Filezilla等客户端测试 :Filezilla是解决ftp的客户端工具非常实用,是可靠、多站点管理的解决方案

5.使用man 5 vsftpd.conf 或者 man 8 file.等可以进行详细查看学习使用选项

用户子配置文件
user_config_dir=/etc/vsftpd/userconfig.d(default none)

FTP的虚拟用户
两种方式:一种自生成数据文件
另一种使用mysql

第一种方式:
1.编辑用户名密码的明文文件
[root@station17 ~]# cd /etc/vsftpd
[root@station17 vsftpd]# vim ftpvusers
boss
redhat
ceo
redhat
liubei
redhat
guanyu
redhat
2.将文件转成数据文件
db_load -T -t hash -f ftpvusers ftpvusers.db

3.创建本地用户用来将虚拟用户映射
[root@station17 vsftpd]# useradd -d /var/ftpsites -s /sbin/nologin ftpvuser

4.编辑主配置文件
[root@station17 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=ftpvuser
pam_service_name=vsftpd.vuser

5.编辑pam
[root@station17 ~]# vim /etc/pam.d/vsftpd.vuser
auth required pam_userdb.so db=/etc/vsftpd/ftpvusers
account required pam_userdb.so db=/etc/vsftpd/ftpvusers

6.重启服务并测试

7.通过子配置文件,让不同的虚拟用户有不同的权限设定
虚拟用户的设置与匿名用户配置相同,除了root的指定要用local_root
[root@station17 ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconfig.d
[root@station17 ~]# mkdir /etc/vsftpd/userconfig.d/
[root@station17 ~]# cd /etc/vsftpd/userconfig.d/
[root@station17 userconfig.d]# vim boss
local_root=/app/boss
anon_max_rate=0
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@station17 userconfig.d]# vim ceo
local_root=/app/ceo
anon_max_rate=20971520
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@station17 ~]# systemctl restart vsftpd

实验:实现基于MYSQL验证的vsftpd虚拟用户
三台机器
FTP:ftp.magedu.com 192.168.123.17
mysql:db.magedu.com 192.168.123.7
client:client.magedu.com 192.168.123.6

1.编译安装pam_mysql : 编译安装pam_mysql,使其ftp支持mysql,没有yum源二进制,使用源码编译安装:安装前查看 README INSTALL
[root@ftp ~]# yum -y groupinstall "Development tools"
[root@ftp ~]# cd /usr/local/src/
[root@ftp src]# tar xvf pam_mysql-0.7RC1.tar.gz
[root@ftp src]# cd pam_mysql-0.7RC1/
[root@ftp pam_mysql-0.7RC1]# yum -y install mariadb mariadb-devel pam-devel
[root@ftp pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
[root@ftp pam_mysql-0.7RC1]# make && make install
2.配置数据库,建立相关的表,并插入用户密码数据
[root@db ~]# mysql -uroot -predhat
MariaDB [(none)]> create database ftpdb;
MariaDB [(none)]> grant all on ftpdb. to ftpuser@'192.168.123.%' identified by 'centos';
[root@ftp ~]# mysql -uftpuser -pcentos -h 192.168.123.7
MariaDB [(none)]> use ftpdb;
MariaDB [ftpdb]> create table ftpvusers (id int unsigned auto_increment primary key,username char(30),password char(48));
MariaDB [ftpdb]> insert into ftpvusers (username,password) values ('boss',password('centos')),('ceo',password('centos'));
MariaDB [ftpdb]> select
from ftpvusers;
+----+----------+-------------------------------------------+
| id | username | password |
+----+----------+-------------------------------------------+
| 1 | boss | 128977E278358FF80A246B5046F51043A2B1FCED |
| 2 | ceo |
128977E278358FF80A246B5046F51043A2B1FCED |
+----+----------+-------------------------------------------+
3.配置PAM
[root@ftp ~]# vim /etc/pam.d/ftp.mysql
auth required pam_mysql.so user=ftpuser passwd=centos host=192.168.123.7 db=ftpdb table=ftpvusers usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=ftpuser passwd=centos host=192.168.123.7 db=ftpdb table=ftpvusers usercolumn=username passwdcolumn=password crypt=2

• auth 表示认证
• account 验证账号密码正常使用
• required 表示认证要通过
• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路
径而言,也可以写绝对路径;后面为给此模块传递的参数
• user=vsftpd为登录mysql的用户
• passwd=magedu 登录mysql的的密码
• host=mysqlserver mysql服务器的主机名或ip地址
• db=vsftpd 指定连接msyql的数据库名称
• table=users 指定连接数据库中的表名
• usercolumn=name 当做用户名的字段
• passwdcolumn=password 当做用户名字段的密码
• crypt=2 密码的加密方式为mysql password()函数加密

4.安装vsftpd
[root@ftp ~]# yum -y install vsftpd
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftp.mysql
guest_enable=YES
guest_username=ftpvuser
[root@ftp ~]# useradd -s /sbin/nologin -d /app/ftpsite ftpvuser
[root@ftp ~]# chmod 555 /app/ftpsite/
[root@ftp ~]# mkdir /app/ftpsite/upload
[root@ftp ~]# chown ftpvuser /app/ftpsite/upload/
[root@ftp ~]# systemctl restart vsftpd

5.测试

6.配置子配置文件 :扩展子配置文件必须是根据数据库中对应的虚拟用户名一致,单独对特殊虚拟用户进行定制权限与特性,大多使用anon_.. 匿名用户选项
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/config.d
[root@ftp ~]# cd /etc/vsftpd/
[root@ftp vsftpd]# mkdir config.d
[root@ftp vsftpd]# cd config.d/
[root@ftp vsftpd]# vim boss
anon_upload_enable=YES
[root@ftp vsftpd]# systemctl restart vsftpd

7.测试

axel
time axel -n 10 ftp://172.16.0.1/pub/ISOs/CentOS-7-x86_64-NetInstall-1708.iso
4.394s

wget
time wget ftp://172.16.0.1/pub/ISOs/CentOS-7-x86_64-NetInstall-1708.iso
40s

NFS
[详细的配置选项以及具体使用参照PPT进行总结和学习]
[网卡在实际工作中不能随便停止,否则连不上服务器]

exportfs
exportfs -v
exportfs -r 更新设置
exportfs -au 暂停共享
exportfs -a 开启共享

[root@ftp ~]# cat /etc/exports
/app/nfsdir1 *(sync)
[root@ftp ~]# cat /etc/exports.d/dir2.exports
/app/nfsdir2 192.168.123.7(sync)

NFS的开机挂载
【注意:在nfs服务端配置文件如果绑定了固定端口后,一定要在防火墙上开发固定端口,以及111和2049,提示route error以及其他网络不可达的问题一般都是防火墙或者selinux问题】

【做实验前一定要将防火墙和selinux关闭,涉及到学习提升关于防火墙以及selinux策略设计的时候再开启,并学习制定相关策略】

【伪造IP,实际上就是扫描网络上的指定源IP是否在线,自行更改网卡的IP地址或者增加一个虚拟相关的IP来进行访问,从而达到欺骗的效果,可以挂载共享目录】

192.168.123.17:/app/nfsdir1 /mnt/nfs1 nfs defaults 0 0
192.168.123.17:/app/nfsdir2 /mnt/nfs2 nfs vers=3 0 0

root_squash default
no_root_squash
all_squash :一定启用all_squash,即使no_root_squash启用,客户端root身份登录访问nfs依然会被镇压为nfsnobody
no_all_squash default
anonuid=48,anongid=48 default=65534
sync default
async
##重点学习技能:对于没有模板的服务的配置文件,通常自主使用 man 5 [config.filename]来进行学习并使用相关选项

实际需求1:以多台web服务器挂载共享同一台服务器上的网站主站点数据(主目录),为了减轻web服务器压力,以及实现更高的可用性,那么当浏览器通过web服务器访问站点内容的时候,是以具体特定的web服务的用户身份去执行比如apache\nginx等,所以,一旦使用此nfs方式,我们应该保证一定需求下apache身份访问时可读可写等不被阻止,所以应该使用镇压身份更换的方式更改为web服务的用户身份,这样就可以防止比如使用ftp上传文件的时候匿名用户是非web服务用户身份,导致web服务去访问时遇到权限问题
vim /etc/exports
filename *(anonuid=n,anongid=n,all_squash) 指定匿名用户映射为特定的用户id和组id,注意 anonuid,anongid必须是与all_squash配合使用,所有人被镇压!!
nfs服务端必须是与客户端有相同的uid,gid的apache或者nginx用户,方可基于uid映射为相同用户身份

配置不同的客户端有不同的权限
/app/nfsdir2 192.168.123.0/24(ro) 192.168.123.7(rw)

配置NFS服务端伪根
1.在服务端mkdir /data1
2.[可以不开机自启动] vim /etc/fstab : /共享文件 /data1 none bind 0 0
3.vim /etc/exports : /data1(将伪根目录共享) hostname(sync,...)
4.此处实际上相当于使用了 mount --bind方式,镜像挂载,完全镜像遮盖源目录
5.远程挂载共享目录的客户端创建的文件的所属用户的id是与nfs服务器上对应id一致的,即passwd映射基于uid完成的,并不是存在相同的用户,而是相同的uid

配置NFS伪根
[root@nfs ~]# vim /etc/exports
/nfsroot *(rw,fsid=0,crossmnt)

自动挂载 :autofs服务,可以实现按需挂载和卸载,自动触发挂载,间隔一定时间后没有任何指令输入就会自动卸载,用于不经常使用的挂在对象

#自动挂载使用autofs服务必须注意的一点:一旦启用,即使卸载了挂载点,如果此时使用rm去删除目录,会触发自动挂载,毁掉数据,所以必须先 :停掉autofs再删除

相对路径法:
/etc/auto.master
/automnt/f1 /etc/auto.cdrom
/etc/auto.cdrom
f2 -fstype=iso9660 :/dev/sr0
绝对路径法:
/etc/auto.master
/- /etc/auto.cdrom
/etc/auto.cdrom
/automnt/f1/f2 -fstype=iso9660 :/dev/sr0
[root@nfs ~]# yum -y install autofs
[root@nfs ~]# systemctl restart autofs

小记:1.当需要确定是使用什么用户身份执行进程去访问目标的时候,以nfs服务为例,可以在服务端授予可上传(wx)权限,在客户端创建文件从而确定当前访问的用户身份

NIS Network Information Service :用户名、密码、家目录、组信息共享
1.需求提出:不同的客户端即多客户端使用同一个账户登录后可以获取相同的家目录,之间可以动态共享实时相同内容;配合自动化
2.linux下有 openladp可以实现,不过配置复杂; windows下 AD活动目录 (ldap+kerbeos+ca+dns 捆绑实现活动目录)
3.服务端ypserv 客户端ypbind 工具包 yp-tools

[root@nfs ~]# yum -y install ypserv ypbind yp-tools
[root@nfs ~]# vim/etc/sysconfig/network
添加:
NISDOMAIN=abc #开机或者启动NIS相关服务时NIS域名就自己设定了
YPSERV_ARGS="--port 1011" #设定NIS每次都启动在固定的端口 ,考虑到未来使用iptables对nis像使用iptables对nfs管理一样,所以将nis请求rpcbind每次随机开放的端口固定到一个

[root@nfs ~]# nisdomainname nan
[root@nfs ~]# vim /etc/rc.local
nisdomainname nan
[root@nfs ~]# chmod +x /etc/rc.local
[root@nfs ~]# vim /etc/ypserv.conf
127.0.0.1:::none
192.168.123.0/255.255.255.0:::none
::*:deny
[root@nfs ~]# systemctl restart ypserv
rpcinfo -p [> ypserver.txt] #查看关于ypserver服务相关的进程以及监听的端口 ,nis也是rpc远程过程调用依赖服务

[root@nfs ~]# mkdir /app/homedir
[root@nfs ~]# for n in {1..5};do useradd -u 200$n -d /app/homedir/nisuser$n nisuser$n;echo centos |passwd --stdin nisuser$n;done
[root@nfs ~]# useradd -u 2006 -d /app/homedir/liubei liubei #注意复习:useradd -d 区别usermod -d ,前者用户家目录所在目录必须存在,但是同名家目录不存在自动创建,修改用户家目录时指定的家目录必须存在,经常与-m通用

[root@nfs ~]# /usr/lib64/yp/ypinit -m #:此为将账户信息等makefile编译生成到ypserv服务的数据库文件中 /var/yp/nisdomainname
At this point, we have to construct a list of the hosts which will run NIS
servers. nfs.magedu.com is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: nfs.magedu.com
next host to add: 输入ctrl+d
The current list of NIS servers looks like this:

nfs.magedu.com

Is this correct? [y/n: y] y
#最后提示:"ypinit -s 'masternisdomainname'" on all slave nis server
如果有从nis服务器的话

[root@client_v7 ~]# yum -y install ypbind
[root@client_v7 ~]# setup

*注意:如果出现nis客户机不能共享ypserv服务端账号信息时,应该去服务端查看/var/log/messages查看ypserv信息

*实验问题总结:

1.关闭dns功能,内部网络通常不使用dns, 配置好/etc/hosts
2.网络ip以及网段知识认知错误:172.18.252.203/16 -->对应的网段应该是 172.18.0.0/16 ,所以在nis-master服务主配置文件中放行访问源主机时,由于172.18.252.0/16出现网段指定信息错误,所以应该是 172.18.252.0/24 ,最终nis客户机正确访问到nis-master主机共享账户、密码信息
3.类比nfs服务配置,考虑后期使用iptables管理防火墙规则来管理nis服务,所以将ypserv、yppassdd、ypbind端口在/etc/sysconfig/network中固定
vim /etc/sysconfig/network
NISDOMAIN=abc #开机或者启动NIS相关服务时NIS域名就自己设定了
YPSERV_ARGS="--port 1011"

vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012"

client
vim /etc/sysconfig/ypbind

test

yptest

[root@node0 nis]# cd /var/yp/
[root@node0 yp]# make passwd 每次更新账户信息后都要执行的操作

【DNS :tcp端口负责主从和查询,udp协议只负责查询和解析】

samba

两个必须启动的最主要服务 smb(cifs共享实现) nmb [进程:smbd nmbd->netbios解析:IBM开发的协议,支持微软系统在小型局域网中访问目标主机资源时使用广播方式解析求得ip]
1.综合使用:可以考虑openldap和samba组合,用openldap实现Linux下账号信息统一安全认证,samba共享

[客户端 smb-client包, smbclient -L //smbserver ,匿名直接回车登录;]
smbclient //smbserver/具体共享目录名 -U smbusername
testparm -f /etc/samba/smb.conf #
#samba用的必须是Linux本地用户,但是密码是samba独立密码
smbpasswd -a username ; smbpasswd username 表示修改smb用户列表中的用户的密码 /var/lib/samba/private/passdb.tdb
pdbedit –L –v 查看用户列表
[pdbedit -a -u username]
smbpasswd -x username 删除用户和samba对应的独立用户密码
pdbedit -x -u username 同上
smbstatus :c查看samba服务器状态

[共享用的还是客户机挂载方式,结合自动挂载]
workgroup = WORKGROUP 工作组
security = user 只支持user
server string = Windows 7 Ultimate 6.1 服务端版本号
netbios name = magetest 使用nmb服务进行解析
hosts allow = 127. 192.168.123.7 允许哪些客户端可以访问
log file = /var/log/samba/log.%I 日志记录的位置
log level = 2 日志记录的级别
max log size = 50 日志到达50KB进行rotate
[shared] 共享名,客户端使用此名称连接
comment = magedu file server 描述信息
path = /smbshare 共享的真实路径
writeable = yes 所有可登录的用户均可写 等于read only = no,如两行都写,后面的生效。
browseable = no 是否可以浏览
public = yes 是否可以匿名登录 等于guest ok = yes
write list = smb1 @smbgrp 仅允许指定用户或组可写,注意若writeable = yes 则所有用户可写
valid users = smb1, smb2, smb3,smb4, smb5 仅指定用户才可以访问共享
create mask = 0644 创建文件的默认权限
directory mask = 0755 创建目录的默认权限

useradd -s /sbin/nologin username
[root@centos7 ~]# mount //172.18.252.23/shared /mnt/smb -o user=smb1%123

开机挂载
[root@centos7 ~]# vim /etc/smb.txt
username=smb1
password=123
[root@centos7 ~]# chmod 400 /etc/smb.txt
[root@centos7 ~]# vim /etc/fstab
//172.18.252.23/shared /mnt/smb cifs credentials=/etc/smb.txt 0 0
[root@centos7 ~]# mount -a

samba综合练习:
作业:创建liubei,guanyu,zhangfei,caocao,sunquan,king 六个用户
1.要求以上六个用户都可以浏览并访问目标主机的共享目录common,匿名用户可访问但不可浏览。大小3GB,未来可自动在线扩展
2.liubei,guanyu,zhangfei可以在该共享目录下创建及删除文件,且彼此之间创建的文件,相互可以修改,其他用户不可上传; caocao也可以在此共享目录下创建文件,但是仅能自己读写其他人没有权限
3.guanyu,zhangfei 最多能各自创建200M的数据,且不能删除他人创建的文件,liubei不受限制。
4.六个用户各自都有一个以自己名字为名的共享目录,仅自己可见可访问可创建,他人不可见。king对所有目录均有完整的权限。

groupmems -g shuguo -l :查看指定组的所有成员

多用户共享

[root@client_v7 ~]# vim /etc/smb.txt
username=smb4
password=123
[root@client_v7 ~]# mkdir /mnt/smb
[root@client_v7 ~]# vim /etc/fstab
//192.168.123.17/shared /mnt/smb cifs credentials=/etc/smb.txt,multiuser 0 0
[root@client_v7 ~]# mount -a
[root@client_v7 ~]# su - smb1
Last login: Wed May 9 09:45:22 CST 2018 on pts/0
[smb1@client_v7 ~]$ cifscreds add 192.168.123.17
Password:
[smb1@client_v7 ~]$ cd /mnt/smb

马哥M28--防火墙

防火墙

1.修改/etc/sysctl.conf实现本机路由转发
2.伪装Ip,修改抢夺对方Ip,考虑绑定mac

3.非常注意:在生产环境中如果定义防火墙策略,应该为保证不拒绝自己,必须先将本地所有ip放行且放在首位,或者写个at计划任务,每几分钟后清除当前策略等,事先备份
4.压力测试:ab 由httpd-tools提供,记住一些常用的工具包

5.iptables -I INPUT -d 172.16.100.10 -p icmp --icmptype 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
iptables -I INPUT 2 -p icmp -j REJECT #写两条是因为如果达到10条后,之后的请求ping包将会进行接收/发送速率控制 3/minute(相当于于20秒一个,)所以中间请求的包将被拒绝接收,所以达到控制速率效果(如果不拒绝,中间包依然会被第一条策略全部接收)

iptables -t filter 表名,默认即是filter,可以不打
-A 链名 追加
-I 链名 number 插入成为指定行,如不指定number,则成为首行
-D 链名 number

链名 规则
-L 查看规则
-nL 不进行反解域名及不显示端口的服务名
-vnL 详细显示,可显示经过某条规则的数据包流量
-vnxL 详细显示,仅流量部分只显示bytes,不转换成K,G等
--line-numbers 显示行号
iptables -R INPUT 2 -p tcp --dport 21 -j REJECT

条件匹配

基本:
iptables -A INPUT -s 192.168.123.1 -p tcp -j ACCEPT
iptables -I INPUT -s 192.168.123.17 -p icmp -j REJECT
iptables -A FORWARD -s 1.1.1.1 -d 2.2.2.2 -j REJECT
iptables -A INPUT ! -s 192.168.123.0/24 -j REJECT
iptables -A INPUT -i ens34 -p icmp -j REJECT

扩展
隐式扩展
iptables -A INPUT -s 192.168.123.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.123.1 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 192.168.123.17 -p icmp --icmp-type 8 -j REJECT
iptables -A OUTPUT -d 192.168.123.17 -p icmp --icmp-type 0 -j REJECT
iptables -A INPUT -p tcp --syn -j REJECT

显示扩展
iptables -A INPUT -s 192.168.123.17 -p tcp -m multiport --dport 80,22 -j REJECT
iptables -A INPUT -m iprange --src-range 192.168.123.106-192.168.123.110 -p tcp -m multiport --dport 80,22 -j REJECT

mac
iptables -A INPUT -m mac --mac-source 00:0c:29:d9:34:2d -p icmp --icmp-type 8 -j REJECT

string
iptables -A INPUT -m string --algo bm --string "google" -j REJECT 过滤域名
iptables -A OUTPUT -m string --algo bm --string "google" -j REJECT 过滤内容

time
centos6
iptables -A INPUT -m time --timestart 16:00 --timestop 17:00 --weekdays Mon,Wen,Fri -m string --algo bm --string "google" --localtz -j REJECT
--localtz可以不写,默认

centos7
iptables -A INPUT -m time --timestart 8:00 --timestop 9:00 --weekdays Mon,Wen,Fri -m string --algo bm --string "google" --kerneltz -j REJECT
--kerneltz可以不写,默认

并发
iptables -A INPUT -m connlimit --connlimit-above 1 -j REJECT

limit
[root@firewall_v7 ~]# iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 10 -j ACCEPT
[root@firewall_v7 ~]# iptables -A INPUT -p icmp --imcp-type 8 -j REJECT

state
[root@firewall_v7 ~]# iptables -A INPUT -s 192.168.123.17 -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
[root@firewall_v7 ~]# iptables -D INPUT -s 192.168.123.17 -p tcp --dport 22 -j REJECT

iptables -A INPUT -d 172.16.100.10 -p tcp -m multiport --
dports 22,80 -m state --state NEW,ESTABLISHED -j
ACCEPT
iptables -A OUTPUT -s 172.16.100.10 -p tcp -m multiport -
-sports 22,80 -m state --state ESTABLISHED -j ACCEPT
 已经追踪到的并记录下来的连接信息库
/proc/net/nf_conntrack
 调整连接追踪功能所能够容纳的最大连接数量
/proc/sys/net/nf_conntrack_max
 不同的协议的连接追踪时长
/proc/sys/net/netfilter/
 注意: CentOS7 需要加载模块: modprobe nf_conntrack

ftp state

modprobe nf_conntrack_ftp
iptables -A INPUT -s 192.168.123.17 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 192.168.123.17 -m state --state ESTABLISHED,RELATED -j ACCEPT

日志
[root@firewall_v7 ~]# iptables -A INPUT -s 192.168.123.17 -p tcp -m multiport --dports 80,21,22,23 -m state --state NEW -j LOG --log-prefix "net connections:"

自定义链
[root@firewall_v7 ~]# iptables -N deny_icmp_ssh

实验1:内网可ping通外网,外网不可ping通内网
方法一:
[root@firewall_v7 ~]# iptables -A FORWARD -s 192.168.123.0/24 -d 10.10.10.0/24 -p icmp --icmp-type 8 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -s 10.10.10.0/24 -d 192.168.123.0/24 -p icmp --icmp-type 0 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -p icmp -j drop

方法二:
[root@firewall_v7 ~]# iptables -A FORWARD -s 192.168.123.0/24 -d 10.10.10.0/24 -p icmp --icmp-type 8 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -p icmp -j DROP

方法三:
[root@firewall_v7 ~]# iptables -A FORWARD -s 192.168.123.0/24 -d 10.10.10.0/24 -p icmp -m state --state NEW -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -p icmp -j DROP

实验2:内网可访问外网的ssh,httpd服务,外网不可访问
[root@firewall_v7 ~]# iptables -A FORWARD -s 192.168.123.0/24 -p tcp -m multiport --dports 22,80 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -d 192.168.123.0/24 -p tcp -m multiport --sports 22,80 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -j REJECT

实验3:内网可访问外网的ssh,httpd,ftp服务,外网不可访问
[root@firewall_v7 ~]# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -s 192.168.123.0/24 -p tcp -m multiport --dports 21,22,80 -j ACCEPT
[root@firewall_v7 ~]# iptables -A FORWARD -j REJECT
[root@firewall_v7 ~]# modprobe nf_conntrack_ftp

SNAT :因为从本地网卡出去时,在POSTROUTING链上要进行路由表信息检查,所以在此进行源地址转换
[root@firewall_v7 ~]# iptables -t nat -A POSTROUTING -s 192.168.123.0/24 -j SNAT --to-source 10.10.10.7

[root@firewall_v7 ~]# iptables -t nat -A POSTROUTING -s 192.168.123.0/24 -o ens37 -j MASQUERADE

DNAT :因为本地服务器为外部网络的目的主机,从本地服务器网卡进入的数据要先经过PREROUTING,路由表信息检查是在此链上进行的,所以在此做-j DNAT --to-destination

[root@firewall_v7 ~]# iptables -t nat -A PREROUTING -d 10.10.10.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.123.6
改端口
[root@firewall_v7 ~]# iptables -t nat -A PREROUTING -d 10.10.10.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.123.6:8080

本机端口转发
iptables -t nat -A PREROUTING -d 10.10.10.7 -p tcp --dport 9527 -j REDIRECT --to-ports 80

Firewalld
[root@firewall_v7 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

[root@firewall_v7 ~]# firewall-cmd --get-default-zone
public

[root@firewall_v7 ~]# firewall-cmd --list-all 列出默认zone
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33 ens34 ens37
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

[root@firewall_v7 ~]# firewall-cmd --list-all --zone=trusted
trusted
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

[root@firewall_v7 ~]# firewall-cmd --set-default-zone=trusted
success

[root@firewall_v7 ~]# firewall-cmd --add-service=ftp --permanent
[root@firewall_v7 ~]# firewall-cmd --reload
[root@firewall_v7 ~]# firewall-cmd --add-port=8080/tcp
[root@firewall_v7 ~]# firewall-cmd --add-forward-port=port=9527:proto=tcp:toport=8080:toaddr=192.168.123.6
success

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 forward-port port=80 protocol=tcp to-port=8080'

[root@firewall_v7 ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 forward-port port=80 protocol=tcp to-port=8080'

小记:1.常用的内网端口映射,使用iptables防火墙策略进行dnat目标:port进行映射到内网!
2.查看目前编译使用的内核集成了哪些模块功能 cat /boot/config-uname -r |grep xxx

猜你喜欢

转载自blog.51cto.com/12947626/2118928