[질문]특정포트 접속을 특정 IP 만 접속하도록 하는 쉬운 방법

panda9의 이미지

ipfwadm, ipchains 를 쓰지 않고 tcp wrapper 처럼
간단히 설정파일을 이용해 특정 포트로 오는 ip 중 선택한 것만
접속하도록 하는 방법이 있나요?

ipfwadm, ipchains 를 이용하려 했는데 정확히 이해가
되질 않아 시간을 두고 공부를 할 생각인데 그 전에
위와 같이 하고 싶은데 쉬운 방법은 없을까요?

제어하고자 하는 포트는 1500~1600 대 입니다.

고수님들의 조언 부탁드립니다.

무한포옹의 이미지

힘들겠죠..

tcpwrapper를 쓰면 프로그래밍할때 libwrap을 적용해야하고.

ip{chains,tables}가 가장 간단합니다

-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===

송지석의 이미지

/etc/hosts.allow , hosts.deny

파일을 사용하시면 되실지도... 라고 생각했지만 이게 tcp wrapper를 사용하는 건가보군요.

일단 iptables를 쓰신다면

다음 스크립트가 도움이 될 겁니다. kltp.kldp.org에서 가져왔었는뎅...

#!/bin/sh

# 모듈을 올린다.
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_mangle
# 우선 모든 Rule을 정리한다.

/sbin/iptables -F

/sbin/iptables -A INPUT -m state --state RELATED -j ACCEPT

# localhost에서의 traffic을 받아들인다.

/sbin/iptables -A INPUT -i lo -j ACCEPT

# 119, 118에서의 연결을 모두 받아들인다. 

/sbin/iptables -A INPUT -s 192.168.1.118 -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.119 -j ACCEPT

#donkey를 위해 사용하는 포트들을 열어준다.
/sbin/iptables -A INPUT -p tcp --destination-port 4661 -j ACCEPT #상대편에서 보내는 것 중에 내 4661 포트를 접속하는 패킷을 열어준다.
/sbin/iptables -A INPUT -p tcp --source-port 4661 -j ACCEPT  # 상대편이 보내는 것 중에 그쪽 포트가 4661인 패킷을 받아준다
/sbin/iptables -A INPUT -p tcp --destination-port 4662 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --source-port 4662 -j ACCEPT
/sbin/iptables -A INPUT -p udp --destination-port 4665 -j ACCEPT
/sbin/iptables -A INPUT -p udp --source-port 4665 -j ACCEPT

# x manager port 6000
/sbin/iptables -A INPUT -p tcp --destination-port 6000 -j ACCEPT

# 확립된 연결에 대한 Packet을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -j ACCEPT
# 인증 연결을 거부한다(그렇지 않을 경우 메일서버가 오랫동안 타임아웃 상태가 될 것이다.)
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 113 -j REJECT

# echo나 목적지에 도착 못하거나 시간 초과된 icmp packet들을 받아들인다.

/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 11 -j ACCEPT

# 다음으로 각각에 대한 정책을 세운다.
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

만약에 특정 ip마다 포트를 달리 열어주려면
ACCEPT 부분중에
/sbin/iptables -A INPUT -s 192.168.1.120 -p tcp --destination-port 22 -j ACCEPT
하면 120번에서 내게 ssh 접속하는 것을 열어줄 수 있죠.
/sbin/iptables -A INPUT -s 192.168.1.120 -p tcp --destination-port 1500 -j ACCEPT
해주면 1500 포트를 열어주고요 뭐 기타등등..

이걸 스크립트로 만들어서 루트계정으로 실행시키면 됩니다.

/etc/rc.d/rc.local에 이 스크립트를 실행하게 하면 부팅시에 자동으로 실행됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.