全称是Transmission Control Protocol (TCP) Wrappers ,它是一个基于主机的网络访问控制列表系统。最初代码由Wietse Venema在1990年编写(比Linux的出现要早一点),2001年以类BSD的许可发布。
TCP Wrappers工作在TCP/IP模型的第4层(传输层),对有状态连接的特定服务进行安全检测并实现访问控制。
核心配置文件是:
TCP Wrappers有一个TCP守护进程:tcpd
。
可以在 wrappers 下进行访问控制的通常有 :
TCP Wrappers核心是libwrap
库,可以通过命令查看系统是否支持:
sudo ldd /usr/sbin/sshd | grep libwrap
/etc/hosts.allow
中是否允许,有允许就放行;/etc/hosts.deny
是否禁止,如果存在就禁止连接;另外tcp_wrappers可以设置调用外部程序,如记录日志等。
服 务 列 表 @ h o s t : 主 机 列 表 : 选 项 服务列表@host:主机列表:选项 服务列表@host:主机列表:选项
要支持的服务名,如:telnet,vsftpd等
@host 是指定本机网卡,如果不写就代表全部。
受控制的机器,可以是机器名、IP,支持通配符*
?
ALL
EXECPT
内置ACL: ALL, LOCAL, KNOWN, UNKNOWN,PARANOID
vim /etc/hosts.allow
in.telnetd: 192.168.0.2
vim /etc/hosts.deny
in.telnetd: 192.168.
vim /etc/hosts.deny
# 自己的IP是192.168.1.2
[email protected]:192.168.1.4
vim /etc/hosts.deny
# 自己ip192.168.1.2
[email protected]:192.168.1.
vim /etc/hosts.allow
# 可以用EXCEPT排除某个IP
[email protected]:192.168.1. EXCEPT 192.168.1.4
vim /etc/deny
sshd: ALL
vim /etc/hosts.allow
sshd:192.168.1.4:deny
# 也可以在deny中使用allow
vim /etc/hosts.deny
sshd:192.168.1.4:allow
tcpdmatch [-d] daemon[@host] client
-d 测试当前目录下的 hosts.allow和hosts.deny
由Phil Schwartz编写,使用Python开发。它是通过监控系统安全日志来分析是否有对OpenSSH的暴力破解行为。如果发现有暴力破解,就分析IP并加到etc/hosts.deny
来禁止连接。
官网地址: http://denyhosts.sourceforge.net/
yum install -y denyhosts
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
tar zxvf DenyHosts-2.6.tar.gz -C /usr/local/bin
cd DenyHosts-2.6
python setup.py install
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
设置开机启动:
cd /etc/rc.d/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig daemon-control on
chkconfig --list denyhosts
# 启动
/etc/init.d/daemon-control start
或
vim /etc/rc.local
# 添加
/usr/share/denyhosts/daemon-control start
vim denyhosts.cfg
SECURE_LOG = /var/log/secure #ssh日志文件
# format is: i[dhwmy]
# Where i is an integer (eg. 7)
# m = minutes
# h = hours
# d = days
# w = weeks
# y = years
#
# never purge:
PURGE_DENY = 50m #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny
BLOCK_SERVICE = sshd #阻止服务名
PURGE_THRESHOLD = #定义了某一IP最多被解封多少次。某IP暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;
DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数
WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO #是否做域名反解
ADMIN_EMAIL = #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts日志位置
如果有ssh的攻击记录,可以在文件 /etc/hosts.deny
查看。