unit 1
一、TCP Wrappers:
判断别种服务支持TCP Wrappers,满足以下两个条件 :
1、服务要支持libwrap.so
2、powerfull for logging and access control
第一种方法 :查看的方法如下:ldd `which vsftpd` | grep libwrap.so 如果有libwrap.so文件,就是支持了。
第二种方法 :查看的方法如下:strings `whick portmap` | grep hosts 显示有/etc/hosts.allow /etc/hosts.deny就行了。
二、xinetd –access control for services under xinetd’s control
三、pluggable authentication modules 也就是PAM
PAM可能控制一些服务 :
time 时间
usage limit 限制
location 地址
例子:vim /etc/security/limits.conf
添加:
username hard as 1000
提供用户可用的内存大小为1000字节
username hard nofile 100
最大打开的文件数 ,当一个用户登录时,会使用到四个文件。/etc/bashrc bash 之类
例子: vim /etc/security/time.conf //哪个终端哪个时间才能登录
vim /etc/pam.d/login
account required pam_time.so
添加:
login;tty1;user1;Mo0000-2400
代码user1在星期一的整天可以在tty1登录
login;tty1;user1;!Mo0000-2400
代码user1在星期一的整天不可以在tty1登录
例子 : vim /etc/security/access.conf 什么时候可以访问哪些资源
+ 号代表允许
– 号代表拒绝
配置如下:
vim /etc/pam.d/login
添加:account required /lib/security/pam_access.so
vim /etc/security/access.conf
添加:-:ALL EXCEPT yeelone:LOCAL
unit 2
一:漏洞:如果拥有一个SSH账号可以登录系统,在RHEL5有这样的漏洞下载攻击代码:wunderbar_emporium
src -r wunderbar_emporium/ linuxidc@192.168.56.2:/home/linuxidc
ssh linuxidc@192.168.56.2
./wunderbar_emporium.sh
这时就可以获得root的权限 了。再进行更改密码。系统 就是你的了。
解决方法:
vim /etc/modprobe.conf
添加:
install pppox /bin/true
install bluetooth /bin/true
install appletalk /bin/true
install ipx /bin/true
install sctp /bin/true
二:tcp wrapper
语法是这样的:deamon list: client list :severity [].pri
想查看options有什么,可以:man hosts.deny
例子一:
sshd : 192.168.56.1:deny
在讲第二个例子之前 , 先学习一下日志的相关知识吧,因所用系统 是RHEL6,所以,相关文件跟RHEL5是有点不一样的
linux的日志 守护进程是rsyslog ,配置文件/etc/rsyslog.conf在linux中,日志分为9个级别,分别为:
emerg 该系统不可用
alert 需要立即被修改的条件
crit 阻止某些工具或子系统功能实现的错误条件
err 阻止工具或某些子系统部分功能实现的错误条件
warning 预警信息
notice 具有重要性的普通条件
info 提供信息的消息
debug 不包含函数条件或问题的其他信息
none 没有重要级,通常用于排错
* 所有级别,除了none
所以第二个例子讲的是,当系统 有ssh登录时,将信息记录到自己指定的文件里
例子二:
#vim /etc/rsyslog.conf
查找:
/authpriv.*
在authpriv* 上面添加一行:
authpriv:info
authpriv是指用户的验证,这是linux日志的类型之一。linux的日志优先级是由类别+级别组成 的。authpriv就是一种类型。
这就意味着,登录信息将被记录到/var/log/info里
接着重启服务:
service rsyslog restart
#vim /etc/hosts.allow
添加如下一行:
sshd : localhost: severity info
:wq
再用ssh登录进来时,就会将登录信息记录到/var/log/info里了
例子三:当用户ssh登录时,运行指定 的命令:
语法:
deamon : client list : spawn command
范例: sshd : localhost : spawn /bin/echo `date`%c %d >>/var/log/wrapper.log
例子四:给别人显示 一个信息:
deamon:client list : twist command
范例:
vim /etc/hosts.deny
vsftpd : 192.168.56.1 : twist /bin/echo “421 连接错误”
功能 是让192.1268.56.1 无法使用本机 vsftpd服务,并且回显一个421 连接错误信息。
不过没有成功,倒是在日志 里出现了这个信息
例子四:显示一段话,前面都是用echo显示一句话。跟这里还是有点不一样。
范例:
语法: deamon : client list : banners directory
#vim /etc/hosts.deny
添加:vsftpd : 192.168.56.1 : banners /var/banners
#cd /var/banners
#vim vsftpd –这里创建一个你的服务的名字的文件,在里面写上内容:
220– 连接失败
221–稍候重新连接
三 xinetd服务
第一个知识点:关于xinetd服务有个跟其它服务不一样的地方值得我们注意 。当我们用chkconfig配置时,指的应该是在下次启动时开启或不开启服务。但是对于xinetd 例外 的。
比如telnet服务。
#yum -y install telnet
#chkconfig telnet on
#netstat -ntlup | grep 23
显示23端口正在监听
#chkconfig telnet off
#netstat -ntlup | grep 23
看得出来,23端口已经关闭了。
第二个知识点:/etc/xinetd.d/telnet
no_access 和only_from 的区别
以IP范围小的为准。
例如:
no_access = 192.168.56.2
only_from=192.168.56.0/24
这个时候 以no_access为准,因为它的IP范围小。
第三个知识点:时间点:access_times
access_times = 9:00 – 19:00
第四个知识点:不同的网卡提供不同的服务拥有不同的IP
实验:
先配置网卡,IP地址信息如下:
eth0 : 192.168.56.2
eth0:0 :172.16.20.1
#vim /etc/xinetd.d/telnet
添加:
bind = 192.168.56.2
:wq
#service xinetd restart
这个时候 :
telnet 192.168.56.2 可以telnet 得上,但是telnet172.16.20.1就上不了。因为这个服务与指定网卡绑定在一起了,在这个例子中,telnet与eth0绑定在一起了。
可是这有什么作用呢?比如说,一个系统中有两个网卡,又有两个服务占用了同样的端口,默认情况下是只能开启其中一个服务的,就是在/etc/xinetd.d/中排列靠前的那个服务可以用。通过 这样子做之后就可以同时开放这两个拥有相同端口的服务了。
第五个知识点:flags
/etc/xinetd.d/telnet 中一个变量 flags
配置如下: flags 有一个值:SENSOR,这个值可以作三个控制:deny_time = forever| nover | #minutes
flags=SENSOR
deny_time = 2
no_access = 192.168.56.2
这个是为了防止 DDOS的攻击所做的设置。例如说,我们拒绝了192.168.56.2来访问我们的telnet服务,同时,我们的系统又提供rsh_login服务,这时,当192.168.56.2来rsh我们的主机时,可以正常访问,再用telnet来访问,就被拒绝了,之后再用rsh来访问,居然不行了,这是为什么呢?这是因为,我们明明不允许192.168.56.2来telnet我们,但是192.168.56.2还是不断的尝试,这时我们认为是对方在做尝试攻击 ,为了安全,我们设置了在2分钟之内 ,它不能再使用我们主机所提供的任何由xinetd守护进程所管理 的服务。
也设置为:deny_time=nover | forever
第六个知识点:顺序
三个安全的级别,分别如下:
iptables — > tcp wrapper —> 服务自己安全配置(例如vsftpd,apache)
那什么时候要用哪些来做访问控制呢?因为有些服务是不支持tcp wrapper的,所以,这个需要考虑。而有时候我们的apache可以提供多域名,同样的IP,同样的端口,根据不同的域名来访问不同的网页。如果通过IPTABLES来做控制,限制了这个IP的访问,那么将是整个服务的所有网站都不能使用。而我们只是想控制其中一个域名的网站而已。所以这个时候就需要用apache自身的安全策略来做控制了。