⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 298.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="289.htm">上一层</a>][<a href="299.htm">下一篇</a>]
<hr><p align="left"><small>发信人: lisuke (smart), 信区: Security <br>

标  题: 一个简单的telnetd防护程序(1) <br>

发信站: BBS 水木清华站 (Wed Oct 25 00:26:16 2000) <br>

  <br>

本文和一下是转载一个在solaris下实现一个小的telnetd防火墙类防护程序。 <br>

程序内容本身很简单,只供入门者阅读。 <br>

需求: <br>

        1.加入文件/etc/telnet.allow,里面包含允许telnet的IP地址 <br>

    和网段(为简单起见,网段格式只支持XXX.XXX.XXX.0) <br>

        telnet.allow格式如下: <br>

        172.18.85.0 (网段) <br>

        172.18.89.22 <br>

        ... <br>

        2.加入文件/etc/telnet.log,记录位授权IP失败的telnet记录, <br>

包括时间和IP。 <br>

首先改inetd.conf,用自己的程序接管in.telnetd,该程序定名为 <br>

in.telnetd.firewall,比较长呵呵。 <br>

相应inetd.conf中telnet那一行变为: <br>

telnet  stream  tcp     nowait  root    /usr/sbin/in.telnetd.firewall <br>

in.telnetd.firewall <br>

然后写in.telnetd.firewall.c,原理:先初始化授权地址表(函数InitAuthIP), <br>

然后检查对方地址(函数getpeername)是否与表中地址匹配(函数IPIsAuthed), <br>

若不匹配记下时间和对方地址并警告对方,否则将处理移交(系统调用execl)给 <br>



真实服务进程,即/usr/bin/in.telnetd。 <br>

# include       <stdio.h> <br>

# include       <sys/types.h> <br>

# include       <sys/socket.h> <br>

# include       <netinet/in.h> <br>

# include       <netdb.h> <br>

# include       <unistd.h> <br>

# include       <unistd.h> <br>

# include       <errno.h> <br>

# define        TRUE            0 <br>

# define        FALSE           -1 <br>

main( ) <br>

{ <br>

        struct  sockaddr_in it; <br>

        int     itlen; <br>

        itlen = sizeof(struct sockaddr_in); <br>

        InitAuthIP("/etc/telnet.allow");        /* read authorized IPs */ <br>

        /* check the source ip */ <br>

        if (getpeername(0, (struct sockaddr *)&it, &itlen) < 0) { <br>

                perror("getpeername"); <br>

                exit(-1); <br>

        } <br>

        } <br>

        if (IPIsAuthed(it.sin_addr.s_addr) == FALSE) { <br>

                InitLog("/etc/telnet.log"); <br>

                PrLog("%s", inet_ntoa(it.sin_addr)); <br>

                EndLog( ); <br>

        if (getpeername(0, (struct sockaddr *)&it, &itlen) < 0) { <br>

                perror("getpeername"); <br>

                exit(-1); <br>

        } <br>

        if (IPIsAuthed(it.sin_addr.s_addr) == FALSE) { <br>

                InitLog("/etc/telnet.log"); <br>

                PrLog("%s", inet_ntoa(it.sin_addr)); <br>

        }       EndLog( ); <br>

        if (IPIsAuthed(it.sin_addr.s_addr) == FALSE) { <br>

                InitLog("/etc/telnet.log"); <br>

                PrLog("%s", inet_ntoa(it.sin_addr)); <br>

                printf("Not on console, u have been loged, xixi...;)\n"); <br>

                close(0); <br>

                exit(0); <br>

        } <br>

        execl("/usr/sbin/in.telnetd", "in.telnetd", (char *)0); <br>

} <br>

-- <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="289.htm">上一层</a>][<a href="299.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -