내성의 둘레 약 5㎞, 외성의 둘레 약 2㎞, 이구산(犛邱山)의 자연지세를 잘 이용하여 쌓은 돌성으로 고려 성종 13년(994)에 서희(徐熙)가 거란의 침략을 막아내기 위해 구축하였고, 1702년(숙종 28)에 개축하였다.
내성에는 동·서·남·북에 4개의 문과 외성으로 통하는 자하문(紫霞門)이 있다. 그 중 남문은 잘 보존되어 있었으나 6·25전쟁 때 소실되어 최근에 복원하였다.
또 779곳의 여장(女墻 : 성 위에 낮게 쌓은 담)과 4개소의 망루(望樓) 등 여러 성곽시설이 갖추어져 있으며, 수문은 내성에 남수구문(南水口門), 외성에 서수구문(西水口門)이 있다. 내성에는 또한 북장대(北將臺)·서장대·남장대 등이 있는데 그 전망이 매우 좋다.
성 안에는 물원천이 풍부하여 50여개의 샘물과 우물이 있었고 9개의 못이 있었다. 이 성은 굴곡이 많은 지형에 의지해 성벽을 쌓았기 때문에 성벽 또한 굴곡이 심하여 적과 대적하기에 매우 유리하다.
특히 땅 밑을 파서 전투시에 외부와 연락을 취할 수 있게 되어 있다고 한다. 이러한 까닭으로 이 성이 축성된 이래 적에게 단 한번도 점령당한 바 없을뿐더러 오히려 배후를 역습하여 적에게 타격을 주는 전과를 올릴 수 있었다.
그 예로 고려시대 거란의 제3차 침입시인 1018년(현종 9)에는 당시의 명장 강감찬(姜邯贊)에 의해 역사적인 구주대첩을 이루었으며, 1231년(고종 18)에 몽고가 침입해왔을 때에도 삭주·의주 등지의 백성들이 식량과 무기를 가지로 이 성으로 몰려와 성을 지키기도 하였다.