@mrz1
2018-01-11T14:39:56.000000Z
字数 11879
阅读 1555
笔记
ldd /PATH/TO/PROGRAM | grep libwrap.sostrings PATH/TO/PROGRAM | grep libwrap.soll /etc/hosts.allow /etc/hosts.denytail /var/log/secure查看日志记录/etc/hosts.allow, /etc/hosts.denyman 5 hosts_access,man 5 hosts_optionshosts.allow,hosts.deny(默认允许)注意:一旦前面规则匹配,直接生效,将不再继续daemon_list@host: client_list[ :options:option... ]
拒绝用户ip访问 即时生效[root@centos7 ~]#vim /etc/hosts.denyin.telnetd:172.18.0.6 //添加这一行意思是不允许这个IP用telnet服务登陆sshd:172.18.0.6 //添加这一行意思是不允许这个IP用ssh服务登陆可以在/var/log/secure 日志中可以看到 (多个ip空格隔开)/etc/hosts.allow /etc/hosts.deny 如果这两个文件都有的话先看/etc/hosts.allow有的话就不会看/etc/hosts.deny
客户端Client_list格式
内置ACL:ALL(所有主机),LOCAL(主机名不带点),KNOWN(ip找到对应DNS解析并对应),UNKNOWN(ip找不到对应DNS解析并对应),PARANOID(ip解析成名字,但是名字不能解析成刚才的ip)
EXCEPT用法:(排除)
示例:
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
实例:
示例:只允许192.168.1.0/24的主机访问sshd/etc/hosts.allowsshd: 192.168.1./etc/hosts.denysshd:ALL示例:只允许192.168.1.0/24的主机访问telnet和vsftpd服务/etc/hosts.allowvsftpd,in.telnetd: 192.168.1./etc/host.denyvsftpd,in.telnetd: ALL示例:不允许sshd172.18.101.118公网访问/etc/host.denysshd@172.18.101.118:ALL示例:拒绝所有172.18.101.118访问/etc/host.denyALL@172.18.101.118:ALL示例:拒绝172.18.101.网段但172.18.101.7允许/etc/hosts.allowsshd: 192.168.1.7/etc/hosts.denysshd:172.18.101.或者/etc/hosts.denysshd:172.18.101. EXCEPT 172.18.101.7 //这样写也可以
[:options]选项:
[:options]选项:帮助:man 5 hosts_optionsdeny 主要用在/etc/hosts.allow定义“拒绝”规则如:vsftpd: 172.16. :denyallow 主要用在/etc/hosts.deny定义“允许”规则如:vsftpd:172.16. :allowspawn 启动一个外部程序完成执行的操作(在服务器上执行)twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null测试工具:tcpdmatch [-d] daemon[@host] client例:-d 测试当前目录下的hosts.allow和hosts.deny[root@centos7 app]#cat hosts.denysshd: 172.18.27.7[root@centos7 app]#tcpdmatch -d sshd 172.18.27.7client: address 172.18.27.7server: process sshdaccess: denied[root@centos7 app]#tcpdmatch -d sshd 172.18.27.5client: address 172.18.27.5server: process sshdaccess: granted
示例:spawn启动一个外部程序完成执行的操作
sshd: ALL :spawn echo "$(date +"%%F %%T") login attempt from %c to %s,%d" >>/var/log/sshd.log说明:在/etc/hosts.allow中添加,允许登录,并记录日志在/etc/hosts.deny中添加,拒绝登录,并记录日志%c 客户端信息%s 服务器端信息%d 服务名%p 守护进程的PID%% 表示%in.telnet,sshd: 172.18. :twist /bin/echo “connection failed”说明:当sshd访问时“connection failed”错误提示会出现在ssh -v 172.18.101.93当in.telnet访问时“connection failed”提示到当前屏幕实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null

/lib64/security/*.so/etc/pam.conf,默认不存在/etc/pam.d/APP_NAME/etc/pam.d存在,`/etc/pam.conf将失效/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
通用配置文件/etc/pam.conf格式
| 服务名 | 类型 | 控制 | 模块路径 | 参数 |
|---|---|---|---|---|
| application | type | control | module-path | argument |
专用配置文件/etc/pam.d/*格式
| 类型 | 控制 | 模块路径 | 参数 |
|---|---|---|---|
| type | control | module-path | arguments |
说明:
模块类型(module-type)
控制(Control)
Control:PAM库如何处理与该服务相关的PAM模块成功或失败情况
复杂详细实现:使用一个或多个“status=action”[status1=action1 status2=action ...]Status:检查结果的返回状态Action:采取行为ok,done,die,bad,ignore,resetok 模块通过,继续检查done 模块通过,返回最后结果给应用bad 结果失败,继续检查die 结果失败,返回失败结果给应用ignore 结果忽略,不影响最后结果reset 忽略已经得到的结果
module-path: 模块路径
相对路径:/lib64/security目录下的模块可使用相对路径如:pam_shells.so、pam_limits.so绝对路径:模块通过读取配置文件完成用户对系统资源的使用控制/etc/security/*.conf注意:修改PAM配置文件将马上生效建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误Arguments 用来传递给该模块的参数
/user/share/doc/pam-*
rpm -qd pam
man –k pam_各个PAM模块说明
man 模块名如man rootok
《The Linux-PAM System Administrators' Guide》说明书链接
模块:pam_shells功能:检查有效shell帮助:man pam_shells示例:不允许使用/bin/csh的用户本地登录vim /etc/pam.d/loginauth required pam_shells.sovim /etc/shells去掉/bin/cshuseradd –s /bin/csh testuser(用户)或者chsh -s /bin/csh wang //给wang切换为/bin/csh shelltestuser(用户)将不可登录tail /var/log/secure 日志文件可查看失败的原因
模块:pam_securetty.so功能:只允许root用户在/etc/securetty列出的安全终端上登陆示例:允许root在telnet登陆vi /etc/pam.d/remote#auth required pam_securetty.so #将这一行加上注释或者/etc/securetty文件中加入pts/0,pts/1...pts/n
模块:pam_nologin.so功能:如果/etc/nologin文件存在,将导致非root用户不能登陆如果用户shell是/sbin/nologin 时,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
模块:pam_limits.so功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间修改限制的实现方式:(1) ulimit命令,立即生效,但无法保存(内部命令)-n 最多的打开的文件描述符个数-u 最大用户进程数-S 使用soft(软)资源限制-H 使用hard(硬)资源限制-a 报告所有当前的限制(2) 配置文件:/etc/security/limits.conf/etc/security/limits.d/*.conf配置文件:每行一个定义;/etc/security/limits.conf这个文件有说明<domain> <type> <item> <value>
ulimit -a
[root@centos7 pam.d]#ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 4086max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 4086virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
<domain> 应用于哪些对象Username 单个用户@group 组内所有用户* 所有用户<type> 限制的类型Soft 软限制,普通用户自己可以修改Hard 硬限制,由root用户设定,且通过kernel强制生效- 二者同时限定<item> 限制的资源nofile 所能够同时打开的最大文件数量,默认为1024nproc 所能够同时运行的进程的最大数量,默认为1024<value> 指定具体值
示例:pam_limits.so
限制用户最多打开的文件数和运行进程数/etc/pam.d/system-authsession required pam_limits.sovim /etc/security/limits.confapache –nofile 10240 apache 用户可打开10240个文件student hard nproc20 不能运行超过20个进程
1、限制centos用户只能够在工作时间通过ssh远程连接本机
2、限制只有admins组内的用户可ssh到本机

MBR:isolinux/boot.catstage2: isolinux/isolinux.bin配置文件:isolinux/isolinux.cfg每个对应的菜单选项:加载内核:isolinuz/vmlinuz向内核传递参数:append initrd=initrd.img...装载根文件系统,并启动anaconda默认启动GUI接口若是显式指定使用TUI接口:向内核传递text参数即可(1)按tab键,在后面增加text(2)按ESC键:boot: linux text
Anaconda安装系统分成三个阶段:安装前配置阶段安装过程使用的语言键盘类型安装目标存储设备Basic Storage:本地磁盘特殊设备:iSCSI设定主机名配置网络接口时区管理员密码设定分区方式及MBR的安装位置创建一个普通用户选定要安装的程序包安装阶段在目标磁盘创建分区,执行格式化操作等将选定的程序包安装至目标位置安装bootloader和initramfs图形模式首次启动iptablesselinuxcore dump
启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式:本地光盘本地硬盘NFSURL:ftp server: yum repositoryhttp server: yum repostory如果想手动指定安装源:boot: linux askmethodanaconda的配置方式:(1) 交互式配置方式(2) 通过读取事先给定的配置文件自动完成配置按特定语法给出的配置选项kickstart文件安装boot引导选项:boot:text: 文本安装方式askmethod: 手动指定使用的安装方法与网络相关的引导选项:ip=IPADDRnetmask=MASKgateway=GWdns=DNS_SERVER_IPifname=NAME:MAC_ADDR与远程访问功能相关的引导选项:vncvncpassword='PASSWORD'指明kickstart文件的位置:ks=DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILEHard drive: ks=hd:device:/directory/KICKSTART_FILEHTTP server: ks=http://host:port/path/to/KICKSTART_FILEFTP server: ks=ftp://host:port/path/to/KICKSTART_FILEHTTPS server: ks=https://host:port/path/to/KICKSTART_FILENFS server:ks=nfs:host:/path/to/KICKSTART_FILE启动紧急救援模式:rescue官方文档:《Installation Guide》[参考](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/)
命令段:指明各种安装前配置,如键盘类型等程序包段:指明要安装的程序包组或程序包,不安装的程序包等%packages@group_namepackage-package%end脚本段:%pre: 安装前脚本运行环境:运行于安装介质上的微型Linux环境%post: 安装后脚本运行环境:安装完成的系统命令段中的命令:必备命令authconfig: 认证方式配置authconfig--useshadow--passalgo=sha512bootloader:bootloader的安装位置及相关配置bootloader --location=mbr--driveorder=sda–append="crashkernel=auto rhgbquiet"keyboard: 设定键盘类型lang: 语言类型part: 创建分区rootpw: 指明root的密码timezone: 时区可选命令install OR upgradetext: 文本安装界面networkfirewallselinuxhaltpoweroffrebootrepouser:安装完成后为系统创建新用户url: 指明安装源key –skip 跳过安装号码,适用于rhel版本创建kickstart文件的方式直接手动编辑依据某模板修改可使用创建工具:system-config-kickstart依据某模板修改并生成新配置/root/anaconda-ks.cfg检查ks文件的语法错误:ksvalidatorksvalidator /PATH/TO/KICKSTART_FILE
centos7.cfg 文件参考 下载
1. yum install system-config-kickstart //图形配置anaconda-ks.cfg 文件(准备这个文件)
2. system-config-kickstart //图形配置
3. centou7 Pachage selection 有一个bug 解决:/etc/yum.repos.d/base.repo 中的第一个[bash]修改为[development] 完成
4. 手动修改(anaconda-ks.cfg)·ksvalidator anaconda-ks.cfg检查语法错误
centos6.cfg 文件参考 下载
1. yum install system-config-kickstart //图形配置anaconda-ks.cfg 文件(准备这个文件)
2. system-config-kickstart //图形配置
3. 开启ftp服务
4. 启动 centos tab键 后面补ks=ftp://172.18.101.93/pub/ks6-mini.cfg ip=172.18.0.109 netmask=255.255.0.0
创建引导光盘:mkdir –pv /app/myisocp -r /misc/cd/isolinux/ /app/myiso/vim /app/myiso/isolinux/isolinux.cfginitrd=initrd.imgtext ks=cdrom:/myks.cfgcp /root/myks.cfg /app/myiso/mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso/app/myiso/注意:以上相对路径都是相对于光盘的根,和工作目录无关创建U盘启动盘dd if=/dev/sr0 of=/dev/sdb
-o 指定映像文件的名称。-b 指定在制作可开机光盘时所需的开机映像文件。-c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog 全部内容作成一个文件。-no-emul-boot 非模拟模式启动。-boot-load-size 4 设置载入部分的数量-boot-info-table 在启动的图像中现实信息-R 或-rock 使用Rock RidgeExtensions-J 或-joliet 使用Joliet 格式的目录与文件名称-v 或-verbose 执行时显示详细的信息-T 或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions 的系统上
cp -rv /misc/cd/ /app/centos6/find /app/centos6 -name TRANS.TBL -exec rm {} \;rm /app/centos6/repodata/* -fcp /misc/cd/repodata/43······7d-c6-x86_64-comps.xml /app/centos6/repodata/ //复制回来的文件是包组信息cd /app/centos6/;createrepo -g repodata/43······7d-c6-x86_64-comps.xml ./ //创建仓库tree repodata //生成元数据mkdir ksdir/yum install system-config-kickstart //图形配置anaconda-ks.cfg文件(准备这个文件)system-config-kickstart //图形配置vim isolinux.cfg 修改菜单mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso/app/centos6/mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso/app/myiso/
注意:以上相对路径都是相对于光盘的根,和工作目录无关
创建U盘启动盘
dd if=/dev/sr0 of=/dev/sdb