亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? firewall.c

?? 簡(jiǎn)單的Linux包過(guò)濾防火墻設(shè)計(jì),RedHat Linux 9.0上編譯運(yùn)行。
?? C
字號(hào):
/*		基于netfilter包過(guò)濾防火墻		*//*		作者:	胡辛遙			*//*		作者: 胡辛遙			*//*		Data: 2004.11.23			*//*		Version: 1.01			*//*		Email: MontagueHu@Hotmail	.com	*/		#include <linux/kernel.h>#include <linux/ip.h>#include <linux/module.h>#include <linux/netdevice.h>#include <linux/netfilter.h>#include <linux/netfilter_ipv4.h>#include <linux/skbuff.h>#include <linux/tcp.h>#if LINUX_VERSION_CODE>=KERNEL_VERSION(2,4,9)MODULE_LICENSE("GPL");MODULE_AUTHOR("XXX@hotmail.com");#endifconst int DEV_NUMBER=100;	/* 設(shè)備號(hào), 用來(lái)mknod */const int FTP_PORT=5376;		/* 設(shè)默認(rèn)端口號(hào)碼為21 */static int in_use=0;static int major=0;		/*用來(lái)判定注冊(cè)設(shè)備是否成功 */static unsigned int defaultFTPPort;	/* 用戶設(shè)置的FTP端口, 默認(rèn)21 */static unsigned int deny_ip[1000];	/* 被拒絕的IP列表 */static unsigned int deny_port[1000];	/* 被拒絕的port列表 */static unsigned int deny_ftp_ip[1000];	/* 被FTP拒絕的IP列表 */unsigned int current_deny_ip=0;	/* 當(dāng)前有多少個(gè)被拒絕的IP列表 */unsigned int current_deny_port=0;	/* 當(dāng)前有多少個(gè)被拒絕的port列表 */unsigned int current_deny_ftp_ip=0;	/* 當(dāng)前有多少個(gè)被FTP拒絕的IP列表 *//* IP */static int add_ip(unsigned int ip);	/* 增加一個(gè)IP到列表 */ static int release_ip(unsigned int ip);	/* 取消列表中的一個(gè)IP */static int check_ip(struct sk_buff* sb); 	/* 檢查IP的函數(shù) */static void show_current_ip_list();	/* 顯示當(dāng)前的IP列表 *//* port */static int add_port(unsigned int port);		/* 增加一個(gè)port到列表 */static int release_port(unsigned int port);	/* 取消列表中的一個(gè)port */static int check_port(struct sk_buff* sb);	/* 檢查port的函數(shù) */static void show_current_port_list();		/* 顯示當(dāng)前的port列表 *//* ftp */static int add_ftp_ip(unsigned int ip);		/* 增加一個(gè)IP到FTP列表 */static int release_ftp_ip(unsigned int ip);	/* 取消FTP列表中的一個(gè)IP */static int check_ftp_ip(struct sk_buff* sb);	/* 檢查FTP的函數(shù) */static void show_current_ftp_ip_list();		/* 顯示當(dāng)前的FTP拒絕列表 */static void show_current_ftp_port();		/* 顯示當(dāng)前的FTP端口 */static void set_ftp_port(unsigned int port);	/* 改變默認(rèn)的FTP端口 *//* 其他 */static int	fw_ioctl(struct inode*,struct file* file,	/* 給外部調(diào)用的函數(shù) */	unsigned int cmd,unsigned long arg);static int fw_open(struct inode* inode,struct file* file);	/* 設(shè)備開啟時(shí)調(diào)用的函數(shù) */static int fw_release(struct inode* inode,struct file* file);	/* 設(shè)備關(guān)閉時(shí)調(diào)用的函數(shù) */unsigned int hook_func(unsigned int hooknum,	/* 鉤子函數(shù),核心函數(shù) */		struct sk_buff** skb,		const struct net_device* in,		const struct net_device* out,		int(*okfn)(struct sk_buff*));/* 用于注冊(cè)我們的函數(shù)的數(shù)據(jù)結(jié)構(gòu) */static struct nf_hook_ops nfho;/* 設(shè)備驅(qū)動(dòng)接口 file_operations */struct file_operations fw_fops={	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	fw_ioctl,	NULL,	fw_open,	NULL,	fw_release,	NULL};/* 增加一個(gè)IP到列表 */static int add_ip(unsigned int ip){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_ip;++i)	{		if (ip==deny_ip[i])		{			printk("This ip is already in the ip list\n");			return 0;		}	}	deny_ip[current_deny_ip++]=ip;	printk("Add ip %d.%d.%d.%d to the ip list successfully\n",ip&0x000000FF,		(ip&0x0000FF00)>>8,(ip&0x00FF0000)>>16,(ip&0xFF000000)>>24);		return 1;}/* 取消列表中的一個(gè)IP */static int release_ip(unsigned int ip){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_ip;++i)	{		if (ip==deny_ip[i])		{			printk("Remove ip %d.%d.%d.%d from the ip list successfully\n",ip&0x000000FF,				(ip&0x0000FF00)>>8,(ip&0x00FF0000)>>16,				(ip&0xFF000000)>>24);			deny_ip[i]=deny_ip[--current_deny_ip];			return 1;		}	}	printk("This ip is not in the ip list\n");	return 0;}/* 顯示當(dāng)前的IP列表 */static void show_current_ip_list(){	printk("----------------------\n");	int i;	printk("Here are the deny_ips!\nPlease check them!\n");	for (i=0;i<current_deny_ip;++i)	{		printk("%d:  %d.%d.%d.%d\n",i+1,			deny_ip[i]&0x000000FF,(deny_ip[i]&0x0000FF00)>>8,			(deny_ip[i]&0x00FF0000)>>16,(deny_ip[i]&0xFF000000)>>24);	}}		/* 檢查IP的函數(shù) */static int check_ip(struct sk_buff* sb){	if(!sb) return NF_ACCEPT;	if(!(sb->nh.iph)) return NF_ACCEPT;	int i;	for (i=0;i<current_deny_ip;++i)	{		if (sb->nh.iph->saddr==deny_ip[i])		{			printk("Firewall: Dropped packet from IP: %d.%d.%d.%d\n",			deny_ip[i]&0x000000FF,(deny_ip[i]&0x0000FF00)>>8,			(deny_ip[i]&0x00FF0000)>>16,(deny_ip[i]&0xFF000000)>>24);			return NF_DROP;		}	}	return NF_ACCEPT;}/* 增加一個(gè)port到列表 */static int add_port(unsigned int port){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_port;++i)	{		if (port==deny_port[i])		{			printk("This port is already in the port list\n");			return 0;		}	}	printk("Add port %d to the port list successfully\n",((port&0xFF00)>>8|(port&0x00FF)<<8));	deny_port[current_deny_port++]=port;	return 1;}/* 取消列表中的一個(gè)port */static int release_port(unsigned int port){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_port;++i)	{		if (port==deny_port[i])		{			printk("Remove port %d from the port list successfully\n",((port&0xFF00)>>8|(port&0x00FF)<<8));			deny_port[i]=deny_port[--current_deny_port];			return 1;		}	}	printk("This port is not in the port list\n");	return 0;}/* 顯示當(dāng)前的port列表 */static void show_current_port_list(){	printk("----------------------\n");	printk("Here are the deny_ports!\nPlease check them!\n");	int i;	for (i=0;i<current_deny_port;++i)	{		printk("%d: %d\n",i+1,		((deny_port[i]&0xFF00)>>8|(deny_port[i]&0x00FF)<<8));	}}/* 檢查port的函數(shù) */static int check_port(struct sk_buff* sb){	if(!sb) return NF_ACCEPT;	if(!(sb->nh.iph)) return NF_ACCEPT;	struct tcphdr* thread=(struct tcphdr*)(sb->data+(sb->nh.iph->ihl*4));		int i;		for (i=0;i<current_deny_port;++i)	{		if (thread->dest==deny_port[i])		{			printk("Firewall: Dropped packet from TCP port: %d\n",				((deny_port[i]&0xFF00)>>8|(deny_port[i]&0x00FF)<<8));			return NF_DROP;		}	}		return NF_ACCEPT;}/* 增加一個(gè)IP到FTP列表 */static int add_ftp_ip(unsigned int ip){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_ftp_ip;++i)	{		if (ip==deny_ftp_ip[i])		{			printk("This ip is already in the ftp ip list\n");			return 0;		}	}	deny_ftp_ip[current_deny_ftp_ip++]=ip;	printk("Add ip %d.%d.%d.%d to the ftp ip list successfully\n",ip&0x000000FF,		(ip&0x0000FF00)>>8,(ip&0x00FF0000)>>16,(ip&0xFF000000)>>24);		return 1;}/* 取消FTP列表中的一個(gè)IP */static int release_ftp_ip(unsigned int ip){	printk("----------------------\n");	int i;	for (i=0;i<current_deny_ftp_ip;++i)	{		if (ip==deny_ftp_ip[i])		{			printk("Remove ip %d.%d.%d.%d from the ftp ip list successfully\n",ip&0x000000FF,				(ip&0x0000FF00)>>8,(ip&0x00FF0000)>>16,				(ip&0xFF000000)>>24);			deny_ftp_ip[i]=deny_ftp_ip[--current_deny_ftp_ip];			return 1;		}	}	printk("This ip is not in the ftp ip list\n");	return 0;}/* 檢查FTP的函數(shù) */static int check_ftp_ip(struct sk_buff* sb){	if(!sb) return NF_ACCEPT;	if(!(sb->nh.iph)) return NF_ACCEPT;	struct tcphdr* thread=(struct tcphdr*)(sb->data+(sb->nh.iph->ihl*4));		int i;		for (i=0;i<current_deny_ftp_ip;++i)	{		if (thread->dest==defaultFTPPort && sb->nh.iph->saddr==deny_ftp_ip[i])		{			printk("Firewall: Dropped packet from IP: %d.%d.%d.%d\n",			deny_ftp_ip[i]&0x000000FF,(deny_ftp_ip[i]&0x0000FF00)>>8,			(deny_ftp_ip[i]&0x00FF0000)>>16,(deny_ftp_ip[i]&0xFF000000)>>24);			return NF_DROP;		}	}		return NF_ACCEPT;}/* 顯示當(dāng)前的FTP拒絕列表 */static void show_current_ftp_ip_list(){	printk("----------------------\n");	int i;	printk("Here are the deny_ftp_ips!\nPlease check them!\n");	for (i=0;i<current_deny_ftp_ip;++i)	{		printk("%d:  %d.%d.%d.%d\n",i+1,			deny_ftp_ip[i]&0x000000FF,(deny_ftp_ip[i]&0x0000FF00)>>8,			(deny_ftp_ip[i]&0x00FF0000)>>16,(deny_ftp_ip[i]&0xFF000000)>>24);	}}/* 改變默認(rèn)的FTP端口 */static void set_ftp_port(unsigned int port){	defaultFTPPort=port;}/* 顯示當(dāng)前的FTP端口 */static void show_current_ftp_port(){	printk("----------------------\n");	printk("The current ftp port is %d\n",((defaultFTPPort&0xFF00)>>8|(defaultFTPPort&0x00FF)<<8));}/* 設(shè)備開啟打開的函數(shù) */static int fw_open(struct inode* inode,struct file* file){	if (in_use)	{		return -EBUSY;	}	else	{		MOD_INC_USE_COUNT;		++in_use;	}	return 0;}/* 設(shè)備關(guān)閉打開的函數(shù) */static int fw_release(struct inode* inode,struct file* file){	in_use^=in_use;	MOD_DEC_USE_COUNT;	return 0;}/* 給外部調(diào)用的函數(shù),開給外部的接口 */static int fw_ioctl(struct inode* inode,struct file* file,	unsigned int cmd,unsigned long arg){	int ret=0;	switch(cmd)	{		case 1:		{			/* 增加一個(gè)IP到屏蔽列表		*/			add_ip((unsigned int)arg);			break;		}		case 2:		{			/* 釋放屏蔽列表中的一個(gè)IP	*/			release_ip((unsigned int)arg);			break;		}		case 3:		{			/* 顯示當(dāng)前被屏蔽的IP列表	*/			show_current_ip_list();			break;		}		case 4:		{			/* 增加一個(gè)端口到屏蔽列表	*/			add_port((unsigned short)arg);			break;		}		case 5:		{			/* 釋放屏蔽列表中的一個(gè)端口	*/			release_port((unsigned short)arg);			break;		}		case 6:		{			/* 顯示當(dāng)前被屏蔽的服務(wù)端的端口	*/			show_current_port_list();			break;		}		case 7:		{			/* 增加一個(gè)IP到FTP屏蔽列表	*/			add_ftp_ip((unsigned int)arg);			break;		}		case 8:		{			/* 釋放FTP屏蔽列表中的一個(gè)IP	*/			release_ftp_ip((unsigned int)arg);			break;		}		case 9:		{			/* 顯示FTP屏蔽列表	*/			show_current_ftp_ip_list();			break;		}		case 10:		{			/* 顯示當(dāng)前設(shè)置的FTP端口	*/			show_current_ftp_port();			break;		}		case 11:		{			/* 設(shè)置當(dāng)前的FTP端口, 默認(rèn)21	*/			set_ftp_port((unsigned short)arg);			break;		}								default:			ret=-EBADRQC;	}	return ret;}/* 注冊(cè)的hook函數(shù)的實(shí)現(xiàn) */unsigned int hook_func(unsigned int hooknum,		struct sk_buff** skb,		const struct net_device* in,		const struct net_device* out,		int(*okfn)(struct sk_buff*)){	struct sk_buff* sb=*skb;		/* 檢查 ip */	if (check_ip(sb)==NF_DROP)	{		return NF_DROP;	}	else	{		/* 檢查 port */		if (check_port(sb)==NF_DROP)		{			return NF_DROP;		}		else		{			/* 檢查被FTP拒絕的IP列表 */			if (check_ftp_ip(sb)==NF_DROP)			{				return NF_DROP;			}		}	}	return NF_ACCEPT;}int init_module(){	SET_MODULE_OWNER(&fw_fops);	/* 注冊(cè)這個(gè)設(shè)備 */	printk("----------------------\n");	if ((major=register_chrdev(DEV_NUMBER,"firewall",&fw_fops))<0)	{			/* 注冊(cè)設(shè)備失敗, 打印錯(cuò)誤消息, 返回 */		printk("Firewall: Failed registering control device!\n");		printk("Firewall: Module installation aborted\n");		return 0;	}	/* 注冊(cè)成功 */	in_use^=in_use;	printk("Firewall: Control device successfully registered.\n");	printk("Author: MontagueHu.\n");	/* 填充我們的hook數(shù)據(jù)結(jié)構(gòu) */	nfho.hook=hook_func;	/* 處理函數(shù) */	nfho.hooknum=NF_IP_PRE_ROUTING;	/* 使用IPV4的第一個(gè)hook */	nfho.pf=PF_INET;	/*IPV4*/	nfho.priority=NF_IP_PRI_FIRST;	/* 讓我們的函數(shù)首先執(zhí)行 */		nf_register_hook(&nfho);	/* 注冊(cè) */		/* 初始化FTP的端口 */	defaultFTPPort=FTP_PORT;		return 0;}void cleanup_module(){		nf_unregister_hook(&nfho);	/* 注消 */	int ret;		printk("----------------------\n");	/* 注消設(shè)備 */	if((ret=unregister_chrdev(DEV_NUMBER,"firewall"))!=0)	{		/* 注消設(shè)備失敗 */		printk("Firewall: Removal of module failed!\n");	}	/* 注消設(shè)備成功 */	printk("Firewall: Removal of module successfule\n");}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩 欧美一区二区三区| 美女任你摸久久| 日韩一区二区精品| 92国产精品观看| 国产做a爰片久久毛片| 亚洲一区电影777| 国产精品网友自拍| 欧美一区二区三区精品| 色丁香久综合在线久综合在线观看| 久久99久久精品欧美| 一个色妞综合视频在线观看| 国产蜜臀av在线一区二区三区| 欧美视频你懂的| 96av麻豆蜜桃一区二区| 粉嫩久久99精品久久久久久夜| 日韩va欧美va亚洲va久久| 亚洲靠逼com| 国产精品免费久久久久| 精品剧情在线观看| 日韩欧美综合在线| 欧美性xxxxxx少妇| 91视频.com| 成人一级片在线观看| 91麻豆精品国产综合久久久久久| 成人午夜视频福利| 国产精品一品视频| 国产麻豆9l精品三级站| 捆绑紧缚一区二区三区视频| 婷婷成人综合网| 亚洲成人精品一区二区| 亚洲综合男人的天堂| 亚洲私人影院在线观看| 中文字幕一区二区在线观看| 国产欧美日韩久久| 中文字幕va一区二区三区| 久久久久高清精品| 国产欧美一区二区三区网站| 久久久精品蜜桃| 国产亚洲欧美日韩俺去了| 亚洲精品一线二线三线| 久久久久9999亚洲精品| 欧美激情资源网| 欧美激情资源网| 中文字幕中文乱码欧美一区二区 | 精品国一区二区三区| 欧美成人一区二区| 精品少妇一区二区三区免费观看 | 美女一区二区三区| 捆绑调教美女网站视频一区| 欧美高清激情brazzers| 欧美精品在线视频| 日韩一区二区三区免费看| 欧美大片国产精品| 久久嫩草精品久久久精品| 久久精品夜色噜噜亚洲a∨| 中文欧美字幕免费| 亚洲女爱视频在线| 午夜视频在线观看一区二区| 美国三级日本三级久久99| 国产精品一区二区三区四区| 成人美女在线视频| 欧洲中文字幕精品| 欧美一二三区在线| 国产亚洲美州欧州综合国| 亚洲欧洲av一区二区三区久久| 一区二区三区在线观看国产| 五月激情综合色| 国产毛片精品国产一区二区三区| 99re亚洲国产精品| 制服丝袜成人动漫| 国产日韩欧美电影| 一区二区三区资源| 久久爱另类一区二区小说| 成人免费观看视频| 欧美群妇大交群中文字幕| 精品成人一区二区| 中文字幕色av一区二区三区| 午夜精品免费在线观看| 国产麻豆精品视频| 欧亚洲嫩模精品一区三区| 欧美大胆一级视频| 亚洲三级免费观看| 精品无码三级在线观看视频| 99免费精品视频| 91精品国产黑色紧身裤美女| 国产精品女人毛片| 日韩成人伦理电影在线观看| 东方aⅴ免费观看久久av| 欧美人牲a欧美精品| 国产人成一区二区三区影院| 亚洲国产三级在线| 高清国产一区二区| 欧美一区二区三区在线看| 国产精品毛片久久久久久久| 日产国产高清一区二区三区| 99久久国产免费看| 久久综合狠狠综合久久综合88 | 欧美成人vr18sexvr| 亚洲欧美另类在线| 国产精品一区二区三区四区| 欧美福利视频一区| 18欧美乱大交hd1984| 国模无码大尺度一区二区三区| 欧美亚洲国产怡红院影院| 国产亚洲欧美一区在线观看| 日本大胆欧美人术艺术动态| 91国产福利在线| 国产精品家庭影院| 国产精品18久久久久久vr| 在线成人免费视频| 亚洲免费观看在线视频| 成人蜜臀av电影| 久久九九久久九九| 蜜臀a∨国产成人精品| 欧美日韩国产另类一区| 亚洲欧洲日韩av| 国产a精品视频| 精品国产3级a| 久久精品久久99精品久久| 欧美日韩国产另类不卡| 亚洲在线一区二区三区| 色综合天天综合色综合av | 久久99深爱久久99精品| 欧美日韩国产精品成人| 怡红院av一区二区三区| 97aⅴ精品视频一二三区| 国产精品久久久一区麻豆最新章节| 国产一区二区三区视频在线播放| 欧美一区二区三区性视频| 日韩一区精品视频| 在线播放日韩导航| 午夜成人免费视频| 欧美日韩高清在线播放| 亚洲成av人在线观看| 欧美日韩国产片| 天堂一区二区在线| 欧美一二三四在线| 国产一区欧美日韩| 久久久不卡网国产精品一区| 国产精品综合一区二区| 国产亚洲欧美激情| 成人免费观看视频| 亚洲欧美日本在线| 欧美系列日韩一区| 丝袜诱惑亚洲看片| 欧美一区二区三区人| 国产在线国偷精品产拍免费yy| 久久久久久久久免费| 成人av资源网站| 一区二区免费在线| 88在线观看91蜜桃国自产| 久久精品国产免费看久久精品| 欧美成人a∨高清免费观看| 国产毛片精品视频| 亚洲日本在线天堂| 欧美视频第二页| 蜜桃视频在线观看一区二区| 久久精品人人做人人综合| 99re这里只有精品6| 亚洲国产日日夜夜| 欧美精品一区二区三区一线天视频| 国产精品资源在线看| 亚洲日本电影在线| 884aa四虎影成人精品一区| 久久不见久久见中文字幕免费| 国产亚洲va综合人人澡精品| 91麻豆免费观看| 日日欢夜夜爽一区| 国产人妖乱国产精品人妖| 欧美综合一区二区| 国产又黄又大久久| 一区二区日韩av| 精品奇米国产一区二区三区| 99久久综合狠狠综合久久| 天天操天天干天天综合网| 精品国产自在久精品国产| 99国产精品久| 久久不见久久见免费视频1| 一区精品在线播放| 日韩精品一区二区三区视频在线观看 | 中文文精品字幕一区二区| 欧美在线你懂得| 国产美女久久久久| 亚洲va欧美va国产va天堂影院| 国产人伦精品一区二区| 在线电影一区二区三区| www.日韩大片| 精品一区二区综合| 夜夜精品视频一区二区| 久久久99久久| 欧美电影在哪看比较好| 波多野结衣欧美| 激情小说亚洲一区| 一区二区三区鲁丝不卡| 久久精品网站免费观看| 欧美老人xxxx18| 91年精品国产| 国产**成人网毛片九色| 久久爱www久久做| 在线免费不卡视频|