System/OS
2003.04.23 10:33
[linux] ipfwadm를 이용한 패킷필터링(구버전)
Views 13082 Comment 0
1. 기존 정책을 부인으로 하는 예
ipfwadm -F -p deny
# 전달, 입력, 출력에 대하여 규칙을 비운다.
ipfwadm -F -f
ipfwadm -I -f
ipfwadm -O -f
# 전자우편을 여러분의 서버로 전달
ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 - D 192.1.2.10 25
# 외부 전자우편 서버로의 접속요청을 전달
ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535
# 웹 접속 요청을 여러분의 웹 서버로 전달
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0 /0 1024:65535 -D 196.1.2.11 80
# 외부 웹 서버에 대한 요청을 전달
/sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2. * 80 -D 0.0.0.0/0 1024:65535
# DNS 패킷을 전달
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0 /0 53 -D 196.1.2.0/24
# 현재의 분석 규칙을 비운다
ipfwadm -A -f
# 회계 분석(Accounting)
/sbin/ipfwadm -A -f
/sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
/sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
2. 기본정책을 허가(accept)로 하는 예
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
# .. 이번에는 '들어오는' 패킷에 대하여
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept
# 우선 PPP 인터페이스를 봉쇄한다.
# 개인적으로는 '-a reject -y' 대신 '-a deny'를 사용하고 싶지만 그
# 렇게하면 인터페이스 접속 자체가 불가능하게 된다.
# -o 는 거부된 데이터그램을 기록해두도록 한다.설정 실수에 대한 어떤 공
# 격이 있었는가를 알 수 있으나 디스크 공간을 필요로 한다.
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30/sbin/ipfwadm -I -p accept
# 위조된 패킷은 그 즉시 버린다:
# 멀티캐스트/애니캐스트/브로드캐스트 주소로부터 어떠한 것도 와서는 안된다.
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
# 루프백 네트워크의 패킷은 회선 상을 돌아다니면 안된다.
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24
# 외부로부터 오는 SMTP, DNS 접속은 받아들이지만 오로지 메일/네임 서버에게만 전달한다.
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37. 19 25 53
# DNS는 TCP 뿐 아니라 UDP도 사용한다. 따라서 네임 서버에 대해서는 UDP도 허용해야 한다.
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37. 19 53
# 하지만 NFS 또는 Larry McVoy의 NSF 확장 기능 등 위험한 포트로부터
# 나오는 답변은 전달하지 못하게 한다. squid를 실행하고 있다면 그 포트 또한 추가하기 바란다.
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 -D 172.16.37.0/24 2049 2050
# 그 외의 포트에 대해서는 괜찮다.
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 -D 172.16.37.0/24 53 1024:65535
# identd에 대한 접속 요청은 거절(reject)
# 우리는 여기서 'reject'를 사용함으로써 접속하는 호스트에게 즉시 접속
# 해도 소용없다는 반응을 보내준다. 그렇지 않으면 ident가 타임아웃 걸리
# 는 동안 지연이 생긴다.
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113
# 192.168.64 그리고 192.168.65 네트워크는 우리가 믿는 친구들이므로
# 몇 가지 일반적인 서비스를 허가한다.
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 -D 172.16.37.0/24 20:23
# 내부에서 발생하는 일에 대해서는 허가하고 통과시킨다.
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0
# 다른 대부분의 TCP 접속 요청은 거부하고 기록해둔다.
# (만약 ftp가 제대로 작동하지 않는다면 1:1023 을 추가하라)
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24
# UDP도 마찬가지이다.
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24
No. | Category | Subject | Author | Date | Views |
---|---|---|---|---|---|
1101 | Develop | [ios] NSString, RegularExpression Find/Replace | hooni | 2017.04.14 | 925 |
1100 | Develop | [android] 초간단 얼럿 (AlertDialog) | hooni | 2016.10.21 | 928 |
1099 | Develop | [android] Android N requires the IDE to be running with Java 1.8 or later 오류 | hooni | 2016.08.30 | 933 |
1098 | Develop | [ios] iOS 앱 아이콘을 만드는 유틸 | hooni | 2015.01.03 | 935 |
1097 | Develop | Aspect Oriented Programming in Objective-C | hooni | 2015.05.18 | 935 |
1096 | Develop | [git] 쉬운 버전관리 Git 설명 | hooni | 2015.08.18 | 943 |
1095 | Develop | [c] 이진 탐색 두 가지 코드 (재귀/반복) | hooni | 2015.06.26 | 947 |
1094 | Develop | [android] N-Puzzle 게임 | hooni | 2015.07.09 | 947 |
1093 | Develop | [c] 기막힌 정렬 코드 ㅋㄷ | hooni | 2015.10.13 | 947 |
1092 | PPT | [ppt] Information Security 발표 자료 (@Team Study 2012.11.15) | hooni | 2015.07.22 | 953 |
1091 | Develop | [ios] 아이폰 앱 이름 및 버전 정보 | hooni | 2015.03.24 | 954 |
1090 | PPT | [ppt] iOS 플라랩#02(2015.03.19) 발표 자료 | hooni | 2015.04.24 | 961 |